tcp报文格式小结
2017-04-16 20:42
316 查看
对应linux中的实现
struct tcphdr { __be16 source; //16位源端口号 __be16 dest; //16位目的端口号 __be32 seq; //此次发送的数据在整个报文段中的起始字节数。为了安全起见,它的初始值是一个随机生成的数,它到达2的32次方-1后又从零开始。 __be32 ack_seq; //是下一个期望接收的字节,确认序号应当是上次已成功接收的序号+1,只有ack标志为1时确认序号字段才有效。一旦一个连接已经建立了,ack总是=1 #if defined(__LITTLE_ENDIAN_BITFIELD) //小端 __u16 res1:4, // 保留位 doff:4, //tcp头部长度,指明了在tcp头部中包含了多少个32位的字。由于options域的长度是可变的,所以整个tcp头部的长度也是变化的. fin:1, //发端完成发送任务 syn:1, //同步序号用来发起一个连接 rst:1, //重建连接 psh:1, //接收方应该尽快将这个报文段交给应用层 ack: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; //窗口大小,单位字节数,指接收端正期望接受的字节,16bit,故窗口大小最大为16bit=1111 1111 1111 1111(二进制)=65535(十进制)字节 __sum16 check; //校验和校验的是整个tcp报文段,包括tcp首部和tcp数据,这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。 __be16 urg_ptr; };
相关文章推荐
- 第四天:第一个基于NetBIOS over TCP/IP报文格式的Name Query程序发送
- tcp报文格式及解释
- TCP/IP–http协议(http报文格式) .
- TCP报文格式详解
- tcp/ip报文格式
- IP TCP UDP 报文格式
- TCP报文格式讲解
- 传输控制协议TCP(Transmission Control Protocol)报文格式
- 简析TCP 报文格式
- TCP报文格式
- TCP,IP,UDP,帧的报文格式
- tcp报文格式udp报文格式详解
- TCP报文格式详解
- 自己动手学TCP/IP–http协议(http报文格式)
- tcp报文格式
- 深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手+四次挥手实例)
- IP数据报、TCP报文、UDP报文格式
- 22、TCP 报文的格式,字段的意义
- TCP的特点及报文格式
- 【转】TCP/IP报文格式