tcp、udp協議棧
阿新 • • 發佈:2019-02-18
tcp
struct tcphdr {
__be16 source; //源埠
__be16 dest; //目的埠
__be32 seq; //序列號
__be32 ack_seq; //確認號
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u16 res1:4,
doff:4, //頭長度
fin:1,
syn:1,
rst:1,
psh:1,
ack:1,
urg:1 ,
ece:1,
cwr:1;
#elif defined(__BIG_ENDIAN_BITFIELD)
__u16 doff:4,
res1:4,
cwr:1,
ece:1,
urg:1,
ack:1,
psh:1,
rst:1,
syn:1,
fin:1;
#else
#error "Adjust your <asm/byteorder.h> defines"
#endif
__be16 window; //視窗大小
__sum16 check; //檢驗和
__be16 urg_ptr; //緊急指標
};
udp
struct udphdr {
__be16 source;
__be16 dest;
__be16 len; //資料報長度
__sum16 check;
};
MSS (Maximum Segment Size)
最大報文長度。是TCP協議定義的一個選項,用於在TCP連線建立時,收發雙方協商通訊時每一個報文段所能承載的最大資料長度
這個值TCP協議在實現的時候往往用MTU值代替(需要減去IP資料包包頭的大小20Bytes和TCP資料段的包頭20Bytes)所以一般MSS值1460
TCP選項
選項欄位是一個選項的列表,可包含多個選項
選項型別0,單位元組選項,表示選項列表的結束
選項型別1,單位元組選項,無操作,該選項可用在兩個選項之間,用於選項結構的對齊
選項型別2,最大報文段長度選項
選項型別3,視窗擴大因子選項
選項型別8,時間戳選項