SourcePort(源端口)和DestinationPort(目的端口):各占2个字节,端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现。
注:TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。
SequenceNumber(序号):占4个字节,TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
AcknowledgmentNumber(确认号):占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
DataOffset(数据偏移(即首部长度)):占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字,即以4字节为计算单位。
Reserved(保留字段):占6位,保留为今后使用,但目前应置为0。
TCPFlag(标志位):占6位,分别表示6个标志:紧急URG,确认ACK,推送PSH(PuSH),复位RST(ReSeT),同步SYN,终止FIN(FINis):
URG—— 当URG= 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
ACK—— 当ACK= 1 时确认号字段有效,当ACK= 0 时,确认号无效。
PSH(PuSH) ——接收TCP收到PSH=
1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
RST(ReSeT)—— 当RST= 1 时,表明TCP连接需要释放连接,然后再重新建立运输连接。
SYN—— 同步SYN= 1 表示这是一个连接请求或连接接受报文。
FIN(FINis) ——用来释放一个连接。FIN= 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
Window(窗口字段):占2字节,用来让对方设置发送窗口的依据,单位为字节。表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。
Checksum(检验和):占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
UrgentPointers(紧急指针字段):占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
options(选项字段):长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”在TCP的MSS选项中,MSS值是一个16位的字段,最大值为65535.
MSS是TCP报文段数据部分的最长长度,不是总长度.MSS太小,首部20字节,有效数据1个字节,网络效率太低.MSS太大,IP要分层,浪费时间.