使用tcp/ip五層模型:

1 封裝
當我們應用程式用TCP傳輸資料的時候,資料被送入協定棧中,然後逐個通過每一層,知道最後到實體層資料轉換成比特流,送入網絡。而再這個過程中,每一層都會對要發送的資料加一些首部資訊。整個過程如下圖。
如圖可以看出,每一層資料是由上一層資料+本層首部資訊組成的,其中每一層的資料 ,稱為本層的協定資料單元,即PDU。
應用層資料在傳輸層添加TCP報頭後得到的PDU被稱為 Segment(資料段 ),圖示為TCP段。
傳輸層的資料(TCP段)傳給網絡層,網絡層添加IP報頭得到的PDU被稱為Packet(資料包), 圖示為IP資料包
網絡層資料報(IP資料包)被傳遞到資料鍊路層,封裝資料鍊路層報頭得到的PDU被稱為Frame(資料幀),圖示為以太網幀。
最後,幀被轉換為比特,通過網絡媒體傳輸。
這種協定棧逐層向下傳遞資料,并添加報頭和報尾的過程稱為封裝。
假設主機A發送資料給主機B,一般流程是這樣:A應用層資料-》A的傳輸層-》A的網絡層-》A的鍊路層 -》 網絡上找到B,并發送給B的鍊路層 -》 B的網絡層 -》 B的傳輸層 -》 B的應用層。如下圖:
- 封裝(Encapsulation):從上到下。将資料打上一定的頭部。應用程式用TCP傳輸資料的時候,資料被送入協定棧中,然後逐個通過每一層,直到最後到實體層資料轉換成比特流,送入網絡。在這個過程中,每一層都會對要發送的資料加一些首部資訊。
- 分用(解封(Demultiplexing)):從下到上,将資料頭部進行拆開。從下網上時再逐一将對應層的頭部去掉,一層一層剝離。直到應用層。
2 資料格式
需要注意的是,這裡所說的以太網幀,與我們常說的以太網是不一樣的。下面我們就來介紹每一層資料的首部資訊内容。
首先我們知道世界上有個協會叫作IEEE,即電子工程師協會,裡面有個分會,叫作IEEE802委員會,是專門來制定區域網路各種标準的。而802下面還有個分部,叫作802.3.就是我們經常提到的 IEEE802.3,這個部門制定的規範叫以太網規範,這個以太網規範中就定義了上面提到的“以太網首部”,這個以太網規範,實際隻定義了資料鍊路層中的MAC層和實體層規範。(注意資料鍊路層包括MAC子層和LLC子層兩個子層,而LLC子層是在IEEE802.2中規範的)。
2.1 以太網幀格式
以太網常用幀格式有兩種,一種是Ethernet II,另一種是IEEE 802.3 格式。這兩種格式差別是:Ethernet II中包含一個Type字 段,。而IEEE 802.3格式中,此位置是長度字段。 其中Type字段描述了,以太網首部 後面所跟資料包的類型,例如Type為0x8000時為IP協定包,Type為8060時,後面為ARP協定包。以太網中多數資料幀使用的是Ethernet II幀格式。
a、Ethernet II幀格式
b、IEEE 802.3 幀格式
前導碼:Ethernet II是由8個8‘b10101010構成,IEEE802.3由7個8‘b10101010+1個位元組SFD..
目的位址:目的裝置的MAC實體位址。
源 位址 :發送裝置的MAC實體位址。
類型(Ethernet II):以太網首部 後面所跟資料包的類型,例如Type為0x8000時為IP協定包,Type為8060時,後面為ARP協定包。
長度(IEEE802.3):當長度小于1500時,說明該幀為IEEE802.3幀格式,大于1500時,說明該幀為Ethernet II幀格式。
資料:資料長度最小為46位元組,不足46位元組時,填充至46位元組。因為最小幀長度是64位元組,是以,46+6+6+2+4=64。(不算前導碼)
FCS: 就是CRC校驗值
以太網首部就是:
2.2 IP資料包格式
IP資料包格式如下圖。IP首部,如圖也表示出來了。
2.3 TCP資料段格式
如圖所示為TCP首部和TCP資料段格式
2.4 UDP資料段格式--傳輸層的
其中UDP首部如上圖所示。
5、ARP資料包格式(摘自:來源: http://blog.sina.com.cn/s/blog_9c5d29f70101dwgk.html)
(1)硬體類型字段指明了發送方想知道的硬體接口類型,以太網的值為1;
(2)協定類型字段指明了發送方提供的高層協定類型,IP為0800(16進制);
(3)硬體位址長度和協定長度指明了硬體位址和高層協定位址的長度,這樣ARP封包就可以在任意硬體和任意協定的網絡中使用;
(4)操作字段用來表示這個封包的類型,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4;
(5)發送方的硬體位址(0-3位元組):源主機硬體位址的前3個位元組;
(6)發送方的硬體位址(4-5位元組):源主機硬體位址的後3個位元組;
(7)發送方IP(0-1位元組):源主機硬體位址的前2個位元組;
(8)發送方IP(2-3位元組):源主機硬體位址的後2個位元組;
(9)目的硬體位址(0-1位元組):目的主機硬體位址的前2個位元組;
(10)目的硬體位址(2-5位元組):目的主機硬體位址的後4個位元組;
(11)目的IP(0-3位元組):目的主機的IP位址。