2017.05.03 初稿,
回头继续补充
2017.05.21 修正MTU,MSS的描述
----------------------------
TCP 协议
TCP 报头总长度=固定部分长度 + 可选部分长度,其中固定部分的长度为 5x4=20 Byte,可选长度若不满足 4 字节对齐则补零。
各个字段解释如下:
源端口: 16 bit,取值范围 0~65535
目标端口:16 bit,取值范围 0~65535
注:0-1023 为系统端口或特权端口(仅管理员可用)
客户端程序随机使用的端口 ,其范围的定义:/proc/sys/net/ipv4/ip_local_port_range
---------------------------------------
序号:32bit,表示本报文段所发送数据的第一个字节的编号。在TCP连接
中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始
确认序号:32bit,表示接收方期望收到发送方下一个报文段的第一个字节数据
的编号
------------------------------------------------------------------------------------
数据偏移:4bit,也成为 TCP Head Length( TCP 头长度 ),以 4 Byte 为单位计,若 TCP 头无选项字段,则其值为 5,即 TCP 头长 20 Byte
保留:6bit
FLAG:6bit
--URG 表示报文段是否包含紧急数据,置位时需配合后面的 紧急指针 字段使用
--ACK 表示前面的 确认序号 字段是否有效,连接建立后,ACK必须为1