以发送报文为例,确认报文格式是一样的
首先根据TCP前的IPv4可以知道源IP地址和目的IP地址分别是192.168.1.102和128.119.245.12
源端口号(Source Port):占2字节
目的端口号(Destination Port):占2字节
序号(Sequence Number):该报文段首字节的字节流编号,占4字节
确认号(Acknowledgement Number):源机期望从目的机收到的下一字节的编号,占4字节
首部长度(Header Length):示例中选项字段为空,因此首部长20字节(通常也是这样的),占4比特
标志字段(Flag): 示例中占12比特,重点是后6个:
URG:指示报文段里存在着被发送方的上层实体置为“紧急”的数据,紧急数据的最后一个字节由占据4个字节的紧急数据指针字段指出(见下)
ACK:指示确认字段的有效性
PSH:被置位时,指示接收方应立即将数据交给上层
RST、SYN和FIN:用于连接的建立和拆除
接收窗口大小(Windows size value):知识接收方接受缓冲区的大小,用于流量控制(但注意这不一定是真正的值,还受收缩因子影响),占2字节
校验和(Checksum): 提供差错检测功能,占2字节
紧急数据指针(Urgent pointer):功能见上,占2字节
选项字段(Option):示例报文该字段为空(通常都为空)
客户端将标志位SYN置1,随机产生一个序列号seq=x,将该数据包发送给服务器,客户机进入SYN_SENT状态,等待服务器确认
服务器收到数据包后查看SYN标志为1,就知道客户端请求建立连接,服务器将SYN和ACK位都置1,产生一个确认号ACK=x+1,同时也随机产生一个序列号seq=y,并将该数据包发送给客户端以确认连接请求,服务器进入SYN_RCVD状态
客户端收到确认后,查看ACK标志为1并且收到值为x+1的确认号,于是将ACK位置1,并产生一个确认号ACK=y+1,将该数据包发送给服务器。服务器接收后检查ACK标志是否为1以及确认号是否为y+1,若满足则连接建立成功,两边都进入ESTABLISHED状态
可以看到,SYN位为1,并且产生了随机序列号232129012
可以看到,SYN和ACK位被置1,并产生了确认号为 232129012 + 1 = 232129013,以及随机的序列号883061785
可以看到,ACK位被置1,并产生了确认号为 883061785 + 1 = 883061786
查看所有发送报文的时间序列图,序列号一直在增大,故没有重传区段
按照提示查找到数据大小为 164090 bytes ,所用时间为 5.297341 s ,故吞吐量为
164090/1000/5.297341 = 30 kbytes/s(向下取整)
首先根据UDP前的IPv4可以知道UDP的协议号为17
源端口号(Source Port):占2字节
目的端口号(Destination Port):占2字节
报文长度(Length):占2字节
校验和(Checksum):提供差错检测功能,占2字节
数据部分