TCP,IP,UDP,幀的報文格式

2021-05-27 21:22:48 字數 4114 閱讀 6506

1,tcp協議和udp協議的區別

1,tcp協議面向連線,udp協議面向非連線

2,tcp協議傳輸速度慢,udp協議傳輸速度快

3,tcp協議保證資料順序,udp協議不保證

4,tcp協議保證資料正確性,udp協議可能丟包

5,tcp協議對系統資源要求多,udp協議要求少

2,i p分片:

ip層接收到乙份要傳送的ip資料報時,它要判斷向本地哪個介面傳送資料(選路),並查詢該介面獲得其mtu。ip把mtu與資料報長度進行比較,如果需要則進行分片。分片可以發生在原始傳送端主機上,也可以發生在中間路由器上。

把乙份i p資料報分片以後,只有到達目的地才進行重新組裝(這裡的重新組裝與其他網路協議不同,它們要求在下一站就進行進行重新組裝,而不是在最終的目的地)。重新組裝由目的端的i p層來完成,其目的是使分片和重新組裝過程對運輸層( t c p和u d p)是透明的,除了某些可能的越級操作外。已經分片過的資料報有可能會再次進行分片(可能不止一次)。i p首部中包含的資料為分片和重新組裝提供了足夠的資訊

3,資料報的封裝

上三層:     資料

傳輸層:     資料  tcp/ip(head) 段

網路層:     資料  tcp/ip(head) ip(head) 包

資料鏈路層: 資料  tcp/ip(head) ip(head) 幀

物理層:     111111111111000000000000000011  位元

4,tcp段格式

要想對tcp有著較為詳細的了解的話,那tcp的包格式是一定要了解,有了結構的清楚認識才能真正的理解它的工作過程和各種機制的原理,以下就是tcp的結構圖:

tcp資料報可分為tcp包頭和來自應用層的資料兩部分

urg、ack、psh、rst、syn、fin。

urg表示緊急指標字段有效;

ack置位表示確認號字段有效;

psh表示當前報文需要請求推(push)操作;

rst置位表示復位tcp連線;

syn用於建立tcp連線時同步序號;

fin用於釋放tcp連線時標識傳送方位元流結束

源埠和目的埠:各為16位元,用於表示應用層的連線。源埠表示產生資料報的應用層程序,而目的埠則表示資料報所要到達的目的程序。

序列號:為32位元,表示資料流中的位元組數。序列號為首位元組在整個資料流中的位置。初始序列號隨機產生,並在連線建立階段予以同步。

頭部資訊:4位元,用於指示資料起始位置。由於tcp包頭中可選項的長度可變,因此整個包頭的長度不固定。如果沒有附加字段,則tcp資料報基本長度為20位元組。

視窗:16位,表示源端主機在請求接收端等待確認之前需要接收的位元組數。它用於流量控制,視窗大小根據網路擁塞情況和資源可用性進行增減。

校驗位:16位。用於檢查tcp資料報頭和資料的一致性。

緊急指標:16位。當urg碼有效時只向緊急資料位元組。

可選項:存在時表示tcp包頭後還有另外的4位元組資料。tcp常用的選項為最大資料報(並非整個tcp報文)mss。每乙個tcp段都包含乙個固定的20位元組的段頭。tcp段頭由20位元組固定頭和一些可選項組成。實際資料部分最多可以有65495(65535-20-20=65495)位元組。

5,udp段格式

6,ip包格式

ipv4首部一般是20位元組長。在乙太網幀中,ipv4包首部緊跟著乙太網幀首部,同時乙太網幀首部中的協議型別值設定為080016。 ipv4提供不同,大部分是很少用的選項,使得ipv4包首部最長可擴充套件到60位元組(總是4個位元組4個位元組的擴充套件)04

8121619

2431

版本首部長度

服務型別

長度認證

標誌段偏移量

ttl協議

校驗和源ip位址

目的ip位址

選項 ...

版本:4位,指定ip協議的版本號。

包頭長度(ihl):4位,ip協議包頭的長度,指明ipv4協議包頭長度的位元組數包含多少個32位。由於ipv4的包頭可能包含可變數量的可選項,所以這個字段可以用來確定ipv4資料報中資料部分的偏移位置。ipv4包頭的最小長度是20個位元組,因此ihl這個欄位的最小值用十進位制表示就是5 (5x4 = 20位元組)。就是說,它表示的是包頭的總位元組數是4位元組的倍數。

服務型別:定義ip協議包的處理方法,它包含如下子欄位

過程字段:3位,設定了資料報的重要性,取值越大資料越重要,取值範圍為:0(正常)~ 7(網路控制)

延遲字段:1位,取值:0(正常)、1(期特低的延遲)

流量字段:1位,取值:0(正常)、1(期特高的流量)

可靠性字段:1位,取值:0(正常)、1(期特高的可靠性)

成本字段:1位,取值:0(正常)、1(期特最小成本)

未使用:1位

長度:ip包的總長

認證:標誌:是乙個3位的控制字段,包含:

保留位:1位

不分段位:1位,取值:0(允許資料報分段)、1(資料報不能分段)

ttl:表示資料報在網路上生存多久,每通過乙個路由器該值減一,為0時將被路由器丟棄。ttl<64 128< ttl<256表示linux作業系統,64協議:8位,這個字段定義了ip資料報的資料部分使用的協議型別。常用的協議及其十進位制數值包括icmp(1)、tcp(6)、udp(17)。

校驗和:16位,是ipv4資料報包頭的校驗和。

7,幀結構:

da  |  sa         , type   ,load        ,  fcs

目標/源mac    ,  幀型別  ,幀封裝資料  , 幀校驗序列

各6bytes       , 2bytes ,46-1500bytes ,   4bytes

在tcp/ip的頭域部分,就能知道傳送的是乙個資料報文,還是乙個確認報文

【經驗之談

】由於該字段長

16位元,所以

ip資料報最長可達

65535

位元組。儘管可以傳送乙個長達

65535

位元組的ip

資料報,但是大多數的鏈路層都會對它進行分段。而且,主機也要求不能接收超過

576位元組的資料報。由於

tcp把使用者資料分成若干段,因此一般來說這個限制不會影響

tcp。

udp的應用(如

rip、

tftp

、bootp

、dns

、snmp

等),都限制使用者資料報長度為

512位元組,小於

576位元組。但是,事實上現在大多數的實現允許超過

8192

位元組的ip

資料報。

總長度欄位是

ip首部中必要的內容,因為一些資料鏈路(如

乙太網)需要填充一些資料以達到最小長度。儘管

乙太網的最小幀長為

46個位元組(將在本章後面介紹),但是

ip資料可能會更短。如果沒有總長度字段,那麼

ip層就不知道

46位元組中有多少是

ip資料報的內容。

【經驗之談

】首部檢驗和字段是根據

ip首部計算的檢驗和碼,不對首部後面的資料進行計算。

icmp

、igmp

、udp

和tcp

協議在它們各自的首部中均含有同時覆蓋首部和資料檢驗和碼。

為了計算乙份資料報的

ip檢驗和,首先把檢驗和字段置為

0。然後,對首部中每個

16位進行二進位制反碼求和(整個首部看成是由一串

16位的字組成),結果存在檢驗和字段中。當接收端收到乙份

ip資料報後,同樣對首部中每個

16 位進行二進位制反碼的求和。由於接收方在計算過程中包含了傳送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該為全

1。如果結果不是全

1(即檢驗和錯誤),那麼

ip就丟棄收到的資料報。但是不生成差錯訊息,由上層去發現丟失的資料報並進行重傳。

icmp

、igmp

、udp

和tcp

都採用相同的檢驗和演算法,儘管

tcp和

udp除了本身的首部和資料外,在

ip首部中還包含不同的字段。由於路由器經常只修改

ttl欄位(減

1),因此當路由器**乙份訊息時可以增加它的檢驗和,而不需要對

ip整個首部進行重新計算。

TCP報文格式 UDP報文格式 MAC幀格式

tcp和udp的區別 1 tcp是面向連線的,而udp是無連線的 2 tcp提供可靠服務,而udp不提供可靠服務,只是盡最大努力交付報文 3 tcp面向位元組流,tcp把資料看成一串無結構的位元組流,而udp是面向報文的 udp資料報 ip頭部 ip資料報 4 tcp有擁塞控制,udp沒有擁塞控制 ...

can幀格式 dlc CAN報文格式

can協議的報文傳輸過程中有 資料幀 遠端幀 錯誤幀 過載幀和幀間隔。1.資料幀 用於傳送節點向接收節點傳送資料的幀。2.遠端幀 用於接收節點向具有相同id的傳送節點傳送資料的幀。3.錯誤幀 用於當檢測出錯誤時向其他節點通知錯誤的幀。4.過載幀 用於接收節點通知其尚未做好準備的幀。5.幀間隔 用於將...

mysql報文格式 Mysql 報文格式

mysql client和server端之間的的資料根據不同的協議規則的進行組織傳送。每包資料在傳送的時候都要新增上協議頭。mysql原始碼採用5.7.10版本 協議頭 每個協議頭共4個位元組 包資料長度 前三個位元組表示資料部分的長度 不包括協議頭 三位元組能表示的最大長度是16m 1 2 24 ...