當前位置:編程學習大全網 - 編程語言 - android socket udp 怎麽封裝ip+報頭+協議

android socket udp 怎麽封裝ip+報頭+協議

CP包

每個tcp都包含源端口號和目標端口號,加上ip頭中的源ip和目的ip,唯壹確定壹個tcp連接。序號用來標識從tcp發端向tcp收端發送的數據字節流,它表示在這個報文段中的第壹個數據字節。序號字段包含由這個主機選擇的該連接的初始序號isn(Initial Sequence Number)。該主機要發送數據的第壹個字節,序號為isn+1,因為syn占用了壹個序號。

IP包

IPV4報頭有12個必需的字段和可選IP選項字段,位於要發送的數據之前。如果使用IP層已有的庫或其他組件,壹般不必考慮報頭中的大多數字段,但程序代碼需要提供源端和目的端地址。

1、版本(4比特)

IP協議版本已經經過多次修訂,1981年的RFC0791描述了IPV4,RCF2460中介紹了IPV6。

2、報頭長度(4比特)

報頭長度是報頭數據的長度,以4字節表示,也就是以32字節為單位。報頭長度是可變的。必需的字段使用20字節(報頭長度為5,IP選項字段最多有40個附加字節(報頭長度為15)。

3、服務類型(8比特)

該字段給出發送進程建議路由器如何處理報片的方法。可選擇最大可靠性、最小延遲、最大吞吐量和最小開銷。路由器可以忽略這部分。

4、數據報長度(16比特)

該字段是報頭長度和數據字節的總和,以字節為單位。最大長度為65535字節。

5、標識符(16比特)

原是數據的主機為數據報分配壹個唯壹的數據報標識符。在數據報傳向目的地址時,如果路由器將數據報分為報片,那麽每個報片都有相同的數據標識符。

6、標誌(3比特)

標誌字段中有2為與報片有關。

位0:未用。

位1:不是報片。如果這位是1,則路由器就不會把數據報分片。路由器會盡可能把數據報傳給可壹次接收整個數據報的網絡;否則,路由器會放棄數據報,並返回 差錯報文,表示目的地址不可達。IP標準要求主機可以接收576字節以內的數據報,因此,如果想把數據報傳給未知的主機,並想確認數據報沒有因為大小的原 因而被放棄,那麽就使用少於或等於576字節的數據。

位2:更多的報片。如果該位為1,則數據報是壹個報片,但不是該分片數據報的最後壹個報片;如果該位為0,則數據報沒有分片,或者是最後壹個報片。

7、報片偏移(13比特)

該字段標識報片在分片數據報中的位置。其值以8字節為單位,最大為8191字節,對應65528字節的偏移。

例如,將要發送的1024字節分為576和424字節兩個報片。首片的偏移是0,第二片的偏移是72(因為72×8=576)。

8、生存時間(8比特)

如果數據報在合理時間內沒有到達目的地,則網絡就會放棄它。生存時間字段確定放棄數據報的時間。

生存時間表示數據報剩余的時間,每個路由器都會將其值減壹,或遞減需要數理和傳遞數據報的時間。實際上,路由器處理和傳遞數據報的時間壹般都小於1S,因此該值沒有測量時間,而是測量路由器之間跳躍次數或網段的個數。發送數據報的計算機設置初始生存時間。

9、協議(8比特)

該字段指定數據報的數據部分所使用的協議,因此IP層知道將接收到的數據報傳向何處。TCP協議為6,UDP協議為17。

10、報頭檢驗和(16比特)

該字端使數據報的接收方只需要檢驗IP報頭中的

  • 上一篇:新媒體廣告營銷案例研究
  • 下一篇:關於成語故事活動課展示的教案?
  • copyright 2024編程學習大全網