TCP IP通訊中資料報處理

2021-09-25 21:54:14 字數 2104 閱讀 6719

參考:宋勁杉 的 linux c

1、目的主機收到資料報,處理各層協議棧最後達到應用程式的過程。

乙太網驅動程式首先根據乙太網首部中的「上層協議」字段確定該資料幀的有效載荷(payload,指除去協議首部之外實際傳輸的資料)是ip、arp還是rarp協議的資料報,然後交給相應的協議處理。假如是ip資料報,ip協議再根據ip首部中的「上層協議」字段確定該資料報的有效載荷是tcp、udp、icmp還是igmp,然後交給相應的協議處理。假如是tcp段或udp段,tcp或udp協議再根據tcp首部或udp首部的「埠號」字段確定應該將應用層資料交給哪個使用者程序。ip位址是標識網路中不同主機的位址,而埠號就是同一臺主機上標識不同程序的位址,ip位址和埠號合起來標識網路中唯一的程序。

注意,雖然ip、arp和rarp資料報都需要乙太網驅動程式來封裝成幀,但是從功能上劃分,arp和rarp屬於鏈路層,ip屬於網路層。雖然icmp、igmp、tcp、udp的資料都需要ip協議來封裝成資料報,但是從功能上劃分,icmp、igmp與ip同屬於網路層,tcp和udp屬於傳輸層。

2、乙太網幀格式

其中的源位址和目的位址是指網絡卡的硬體位址(也叫mac位址),長度是48位,是在網絡卡出廠時固化的。用ifconfig命令看一下,「hwaddr 00:15:f2:14:9e:3f」部分就是硬體位址。協議欄位有三種值,分別對應ip、arp、rarp。幀末尾是crc校驗碼。

乙太網幀中的資料長度規定最小46位元組,最大1500位元組,arp和rarp資料報的長度不夠46位元組,要在後面補填充位。最大值1500稱為乙太網的最大傳輸單元(mtu),不同的網路型別有不的mtu,如果乙個資料報從乙太網路由到撥號鏈路上,資料報長度大於撥號鏈路的mtu了,則需要對資料報進行分片(fragmentation)。ifconfig命令的輸出中也有「mtu:1500」。注意,mtu這個概念指資料幀中有效載荷的最大長度,不包括幀首部的長度。

3、arp資料報格式

注意到源mac位址、目的mac位址在乙太網首部和arp請求中各出現一次,對於鏈路層為乙太網的情況是多餘的,但如果鏈路層是其它型別的網路則有可能是必要的。硬體型別指鏈路層網路型別,1為乙太網,協議型別指要轉換的位址型別,0x0800為ip位址,後面兩個位址長度對於乙太網位址和ip位址分別為6和4(位元組),op欄位為1表示arp請求,op欄位為2表示arp應答。

如果源主機和目的主機不在同一網段,arp請求的廣播幀無法穿過路由器。在跨網段訪問時,當發現目的位址不是本網段ip時,將會把資料報傳送給閘道器處理(一般閘道器就是路由器來做的),路由器此時就發揮他的路由功能進行ip路由.當到達目的網段後,再在目的網段使用arp解析出目的主機的mac位址,實現通訊。

4、ip資料報格式

ip資料報的首部長度和資料長度都是可變長的,但總是4位元組的整數倍。對於ipv4,4位版本欄位是4。4位首部長度的數值是以4位元組為單位的,最小值為5,也就是說首部長度最小是4x5=20位元組,也就是不帶任何選項的ip首部,4位能表示的最大值是15,也就是說首部長度最大是60位元組。

8位tos欄位有3個位用來指定ip資料報的優先順序(目前已經廢棄不用),還有4個位表示可選的服務型別(最小延遲、最大呑吐量、最大可靠性、最小成本),還有乙個位總是0。

總長度是整個資料報(包括ip首部和ip層payload)的位元組數。每傳乙個ip資料報,16位的標識加1,可用於分片和重新組裝資料報。3位標誌和13位片偏移用於分片。

ttl(time to live)是這樣用的:源主機為資料報設定乙個生存時間,比如64,每過乙個路由器就把該值減1,如果減到0就表示路由已經太長了仍然找不到目的主機的網路,就丟棄該包,因此這個生存時間的單位不是秒,而是跳(hop)。協議字段指示上層協議是tcp、udp、icmp還是igmp。然後是校驗和,只校驗ip首部,資料的校驗由更高層協議負責。ipv4的ip位址長度為32位。選項欄位的解釋從略。

SOCKET通訊中TCP資料報大小的確定

mss maximun segment size 最大分段大小,tcp有乙個最大分段大小,用於通告對端每個分段中能傳送的最大tcp資料量。mss的目的是告訴對端其重組緩衝區大小的實際值,從而避免分片。mss經常設計成mtu減去ip和tcp首部的固定長度。乙太網中使用ipv4mss值為1460,使用i...

串列埠通訊中垃圾資料的處理

在雙機串列埠通訊中,開關機 串列埠開閉 期間傳送方有時候會發一些無效的垃圾資料,同時因為有的協議解析只有接收到一定數量才能解析。這就會出現乙個現象 如果開頭的資料是錯誤的,又沒有及時丟棄,後面正確的資料接著位置儲存,最終造成解析失敗。現象就是有時候資料互動正確,有時候錯誤 冷啟動第一次出現錯誤的機率...

TCP IP資料報結構詳解

tcp ip 資料報 結構 詳解 網路 協議 一般來說,網路程式設計我們只需要呼叫一些封裝好的函式或者元件就能完成大部分的工作,但是一些特殊的情況下,就需要深入的理解 網路資料報的結構,以及協議分析。如 網路監控,故障排查等 ip包是不安全的,但是它是網際網路的基礎,在各方面都有廣泛的應用。由ip協...