1. 程式人生 > >tcp、udp協議棧

tcp、udp協議棧

tcp
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
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,時間戳選項