盡管通過I P地址可以識別主機上的網(wǎng)絡(luò)接口, 進而訪問主機, 但是人們最喜歡使用的還 是主機名。在 T C P / I P領(lǐng)域中,域名系統(tǒng)( D N S)是一個分布的數(shù)據(jù)庫,由它來提供 I P地址和 主機名之間的映射信息。關(guān)于DNS,我在之后還會有詳細的介紹。
現(xiàn)在,我們必須理解,任何應(yīng)用程序都可以調(diào)用一個標準的庫函數(shù)來查看給定名字的主機 的IP地址。類似地,系統(tǒng)還提供一個逆函數(shù) —給定主機的IP地址,查看它所對應(yīng)的主機名。
大多數(shù)使用主機名作為參數(shù)的應(yīng)用程序也可以把 I P地址作為參數(shù)。們用Telnet進行遠程登錄時,既可以指定一個主機名,也可以指定一個 IP地址。
當應(yīng)用程序用 T C P傳送數(shù)據(jù)時, 數(shù)據(jù)被送入?yún)f(xié)議棧中, 然后逐個通過每一層直到被當作 一串比特流送入網(wǎng)絡(luò)。 其中每一層對收到的數(shù)據(jù)都要增加一些首部信息(有時還要增加尾部 信息),該過程如圖 1所示。 T C P傳給I P的數(shù)據(jù)單元稱作 T C P報文段或簡稱為 T C P段(T C P segment)。IP傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作 IP數(shù)據(jù)報(IP datagram)。通過以太網(wǎng)傳輸?shù)谋忍?流稱作幀(Frame)。

U D P數(shù)據(jù)與 T C P數(shù)據(jù)基本一致。 唯一的不同是 U D P傳給I P的信息單元稱作 U D P數(shù)據(jù)報 (UDP datagram),而且UDP的首部長為8字節(jié)。
由于T C P、U D P、I C M P和I G M P都要向I P傳送數(shù)據(jù),因此I P必須在 生成的I P首部中加入某種標識,以表明數(shù)據(jù)屬于哪一層。為此, I P在首部中存入一個長度為 8 b i t的數(shù)值,稱作協(xié)議域。 1表示為I C M P協(xié)議, 2表示為I G M P協(xié)議, 6表示為T C P協(xié)議, 1 7表 示為UDP協(xié)議。
類似地,許多應(yīng)用程序都可以使用 T C P或U D P來傳送數(shù)據(jù)。 運輸層協(xié)議在生成報文首部 時要存入一個應(yīng)用程序的標識符。 T C P和U D P都用一個1 6 b i t的端口號來表示不同的應(yīng)用程序。 TCP和UDP把源端口號和目的端口號分別存入報文首部中。網(wǎng)絡(luò)接口分別要發(fā)送和接收 I P、A R P和R A R P數(shù)據(jù), 因此也必須在以太網(wǎng)的幀首部中加入某種形式的標識,以指明生成數(shù)據(jù)的網(wǎng)絡(luò)層協(xié)議。為此,以太網(wǎng)的幀首部也有一個 16 bit的幀 類型域。
協(xié)議加上的報文首部。 每層協(xié)議盒都要去檢查報文首部中的協(xié)議標識, 以確定接收數(shù)據(jù)的 上層協(xié)議。這個過程稱作分用( Demultiplexing),圖2顯示了該過程是如何發(fā)生的。

為協(xié)議ICMP和IGMP定位一直是一件很棘手的事情。在圖2中,把它們與IP放在 同一層上,那是因為事實上它們是IP的附屬協(xié)議。但是在這里,我們又把它們放在IP層 的上面,這是因為ICMP和IGMP報文都被封裝在IP數(shù)據(jù)報中。
對于ARP和RARP,我們也遇到類似的難題。在這里把它們放在以太網(wǎng)設(shè)備驅(qū)動程 序的上方,這是因為它們和IP數(shù)據(jù)報一樣,都有各自的以太網(wǎng)數(shù)據(jù)幀類型。但在圖 2中,我們又把ARP作為以太網(wǎng)設(shè)備驅(qū)動程序的一部分,放在 IP層的下面,其原因在邏 輯上是合理的。 這些分層協(xié)議盒并不都是完美的。
當進一步描述TCP的細節(jié)時,我們將看到協(xié)議確實是通過目的端口號、源 IP地址和源端口 號進行解包的。