在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合起來,電腦才會發揮出它最大的潛力。於是人們就想方設法的用電線把電腦連線到了一起。
但是簡單的連到一起是遠遠不夠的,就好像語言不同的兩個人互相見了面,完全不能交流資訊。因而他們需要定義一些共通的東西來進行交流,tcp/ip就是為此而生。tcp/ip不是乙個協議,而是乙個協議族的統稱。裡面包括了ip協議,imcp協議,tcp協議,以及我們更加熟悉的http、ftp、pop3協議等等。電腦有了這些,就好像學會了外語一樣,就可以和其他的計算機終端做自由的交流了。
提到協議分層,我們很容易聯想到iso-osi的七層協議經典架構,但是tcp/ip協議族的結構則稍有不同。如圖所示
tcp/ip協議族按照層次由上到下,層層包裝。最上面的就是應用層了,這裡面有http,ftp,等等我們熟悉的協議。而第二層則是傳輸層,著名的tcp和udp協議就在這個層次(不要告訴我你沒用過udp玩星際)。第三層是網路層,ip協議就在這裡,它負責對資料加上ip位址和其他的資料(後面會講到)以確定傳輸的目標。第四層是叫資料鏈路層,這個層次為待傳送的資料加入乙個乙太網協議頭,並進行crc編碼,為最後的資料傳輸做準備。再往下則是硬體層次了,負責網路的傳輸,這個層次的定義包括網線的制式,網絡卡的定義等等(這些我們就不用關心了,我們也不做網絡卡),所以有些書並不把這個層次放在tcp/ip協議族裡面,因為它幾乎和tcp/ip協議的編寫者沒有任何的關係。傳送協議的主機從上自下將資料按照協議封裝,而接收資料的主機則按照協議從得到的資料報解開,最後拿到需要的資料。這種結構非常有棧的味道,所以某些文章也把tcp/ip協議族稱為tcp/ip協議棧。
在學習協議之前,我們應該具備一些基本知識。
資料鏈路層有三個目的:
ip大家都聽說過。至於arp和rarp,arp叫做位址解析協議,是用ip位址換mac位址的一種協議,而rarp則叫做逆位址解析協議,在tcp/ip協議的後面章節會介紹它們(在區域網裡面用arp協議可以很容易的搞癱瘓網路哦)
資料鏈路層的協議還是很多的,有我們最常用的乙太網(就是平時我們用的網絡卡)協議,也有不太常見的令牌環,還有fddi,當然,還有國內現在相當普及的ppp協議(就是adsl寬頻),以及乙個loopback協議。
聯絡linux裡面的ifconfig -a命令,這個命令通常會得到如下的結果
eth0 link encap:ethernet hwaddr 00:01:4a:03:5b:ed
inet addr:192.168.11.2 bcast:192.168.11.255 mask:255.255.255.0
inet6 addr: fe80::201:4aff:fe03:5bed/64 scope:link
up broadcast running multicast mtu:1500 metric:1
rx packets:2819 errors:0 dropped:0 overruns:0 frame:0
tx packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
rx bytes:241609 (235.9 kib) tx bytes:9596 (9.3 kib)
lo link encap:local loopback
inet addr:127.0.0.1 mask:255.0.0.0
inet6 addr: ::1/128 scope:host
up loopback running mtu:16436 metric:1
rx packets:2713 errors:0 dropped:0 overruns:0 frame:0
tx packets:2713 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
rx bytes:3516032 (3.3 mib) tx bytes:3516032 (3.3 mib)
其中,eth0就是乙太網介面,而lo則是loopback介面。這也說明這個主機在網路鏈路層上至少支援loopback協議和乙太網協議。
乙太網(ether-net)的定是指數字裝置公司( digital equipment corp.)、英特爾公司(intel corp.)和xerox公司在2023年聯合公布的乙個標準,這個標準裡面使用了一種稱作csma/cd的接入方法。而ieee802提供的標準集802.3(還有一部分定義到了802.2中)也提供了乙個csma/cd的標準。這兩個標準稍有不同,tcp/ip協議對這種情況的處理方式如下:
可見,rfc1042在tcp/ip裡面處於乙個配角的地位。這兩種不同的資料報格式請參考教材。
ppp(點對點協議)是從slip的替代品。他們都提供了一種低速接入的解決方案。而每一種資料鏈路層協議,都有乙個mtu(最大傳輸單元)定義,在這個定義下面,如果ip資料報過大,則要進行分片(fragmentation),使得每片都小於mtu,注意ppp的mtu並不是乙個物理定義,而是指乙個邏輯定義(個人認為就是用程式控制)。可以用netstat來列印出mtu的結果,比如鍵入netstat -in
kernel inte***ce table
iface mtu met rx-ok rx-err rx-drp rx-ovr tx-ok tx-err tx-drp tx-ovr ***
eth0 1500 0 1774 0 0 0 587 0 0 0 bmru
lo 16436 0 2667 0 0 0 2667 0 0 0 lru
就可以觀察到eth0的mtu是1500。而lo(環迴介面)的mtu則是16436。
最後說說那個環迴介面(loopback)。平時我們用127.0.0.1來嘗試自己的機器伺服器好使不好使。走的就是這個loopback介面。對於環迴介面,有如下三點值得注意:
這一章還是很簡單的,一般作為了解知識也就足夠了,沒必要摳的那麼詳細。
TCP IP詳解學習筆記 1 基本概念
在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合起來,電腦才會發揮出它最大的潛力。於是人們就想方設法...
TCP IP詳解學習筆記 1 基本概念
在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合起來,電腦才會發揮出它最大的潛力。於是人們就想方設法...
TCP IP詳解學習筆記 1 基本概念
在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合起來,電腦才會發揮出它最大的潛力。於是人們就想方設法...