TCP头部结构
源端口(source port)
16位的字段,定义了发送这个报文段的主机中的应用程序的端口号。
目的端口(destination port)
16位的字段,定义了接收这个报文段的主机中的应用程序的端口号。
序列号(sequence number)
32位的字段,定义了指派给本报文段第一个数据字节的编号。为了保证连接性,要发送的每一个字节都要编上号。序号可以告诉终点,报文段中的第一个字节是这个序列中的哪一个字节。在建立连接是,双方使用各自的随机数生成器生产一个初始序号(inital squence number,ISN),通常两个方向上的ISN是不同的。
确认号(acknowledgment nimber)
32位字段定义了报文段的接收方期望从对方接收的字节编码。如果报文段的接收方成功地接收了对方发来的编号为x的字节,那么它就返回x+1作为确认号,确认可以和数据捎带在一起发送。
头部长度(Hlen)(header length)
这个4字节字段指出TCP段的头部长度,以32位字段来衡量,头部长度并不规定并可以根据选项字段中设置的参数面改变。
保留(reserved)
这个保留字段占用6位,它被保留以提供将来使用。
编码位(code bits)
URG 紧急数据(urgent data)---这是一条紧急信息
ACK 确认已收到段
PSH 请求在缓冲区尚未填满时发送消息,注意TCP可以等待缓冲区填满之后再发送段,如果需要立即传送,应用程序必须利用push参数来通知协议。
RST 申请重置连接
SYN 此消息用于在建立连接时同步传输数据的计时器。
FIN 该属性申明发送端已经发送出被传输数据的最后一个字节。
窗口大小(window)
16位字段,这个字段定义的是发送TCP的窗口大小,以字节为单位。窗口最大长度是65535字节,这个值通常被称为接收窗口(rwnd),并由接收方来决定。这种情况下,发送方必须服从接收方的指示。
校验和(checksum)
16位字段包含的是检验和,检验和是差错控制的手段之一。
紧急指针(urgent point)
该字段占用2字节,与URG代码位一起使用并且申明及时使存在着缓冲区溢出也必须紧急接收的数据末端。因此,如果有些数据需要不按照顺序被送往目的应用程序,那么发送端的应用程序必须利用紧急数据参数通知TCP。
选项(option)
该字段为变长且可以忽略。他的最大长度为3字节,用于解决一些辅助任务----比如,选择最大段长。选项可以位于TCP头部的末端,其长度必须是8的倍数。
填充(padding)
该字段长度不固定,这是个用于补充头部字段使得它的长度为32位字的整数倍的一个伪字段。