tcp協議間交換的資料單元稱為「tcp段」,包括兩部分:首部和資料。標準首部長20位元組,帶有選項的首部會更長。
1.源埠和目的埠
各佔2位元組,埠號加上ip位址,共同構成socket。互相通訊的程序使用一對socket,包括協議、源ip、源埠、目的ip、目的埠,這五個元素唯一確定乙個tcp連線。
2.序號
佔4位元組,是tcp段所傳送的資料部分第乙個位元組的序號。在tcp傳送的資料流中,每乙個位元組都有乙個序號。建立連線時,傳送方將初始序號(initial sequence number, isn)填寫到第乙個傳送的tcp段序號中。
3.確認號
佔4位元組,是期望收到對方下次傳送的資料的第乙個位元組的序號,也就是期望收到的下乙個tcp段的首部中的序號,等於已經成功收到的tcp段的最後乙個位元組序號加1。確認號在ack標誌為1時有意義,除了主動發起連線的第乙個tcp段不設定ack標誌外,其後傳送的tcp段都會設定ack標誌。
4.資料偏移
佔4位元,表示資料開始的地方離tcp段的起始處有多遠。實際上就是tcp段首部的長度。由於首部長度不固定,因此資料偏移欄位是必要的。資料偏移以32位為長度單位,因此tcp首部的最大長度是60(15*4)個位元組。
5.控制位
一共6個,佔6位元,設定為1時有效。按順序依次為:urg、ack、psh、rst、syn、fin。
urg緊急位,為1時,首部中的緊急指標有效
ack確認位,為1時,首部中的確認號有效
psh推位,為1時,要求把資料盡快交給應用程式
rst復位標誌,為1時,復位連線,一般在出錯或關閉連線時使用
syn同步位,在建立連線時使用,當syn=1而ack=0時,表明這是乙個連線請求報文段。對方若同意建立連線,在發回的報文段中使syn=1和ack=1
fin結束位,為1時,表示傳送方完成了資料傳送
6.視窗
佔2位元組,表示報文段傳送方期望接收的位元組數,可接收的序號範圍是從接收方的確認號開始到確認號加上視窗大小之間的資料。
7.校驗和
校驗和包含了偽首部、tcp首部和資料,校驗和是tcp強制要求的,由傳送方計算,接收方驗證。
8.緊急指標
urg標誌為1時,緊急指標有效,表示資料需要優先處理。緊急指標指出在tcp段中的緊急資料的最後乙個位元組的序號,使接收方可以知道緊急資料共有多長。
9.選項
最常用的選項是最大段大小(maximum segment size,mss),向對方通知本機可以接收的最大tcp段長度。mss選項只在建立連線的請求中傳送。
USB 協議資料格式
前面已經轉了一篇類似的文章,這篇和那篇其實很相似,只是按我的習慣編寫而成。內容和圖表基本 於www.usb.org。lsb bit first 1.域 fields sync 所有包開始都必須有的,1位元組在 low full speed,4 位元組在high speed pid packet id...
modbus協議資料格式
說明 modbus協議一般適用於乙個主裝置訪問多個從裝置的硬體開發環境,類似於zigbee網路中的乙個路由器多個協調器的一對多模型。modbus常用的暫存器型別為 3x 輸入暫存器和 4x保持暫存器 從機3x 輸入暫存器對主機來說是可讀不可寫狀態,從機4x 保持暫存器對主機來說是可讀可寫狀態 功能碼...
滑鼠 鍵盤 協議 資料格式
滑鼠 鍵盤 協議 資料格式 滑鼠傳送給pc的資料每次4個位元組 byte1 byte2 byte3 byte4 定義分別是 byte1 bit7 1 表示 y 座標的變化量超出 256 255的範圍,0表示沒有溢位 bit6 1 表示 x 座標的變化量超出 256 255的範圍,0表示沒有溢位 bi...