第九讲实验报告

一.TCP包基础

TCP报文首部格式

第九讲实验报告_第1张图片 

TCP抓包实例

以发送报文为例,确认报文格式是一样的

第九讲实验报告_第2张图片

首先根据TCP前的IPv4可以知道源IP地址和目的IP地址分别是192.168.1.102和128.119.245.12 

TCP报文分析

源端口号(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):示例报文该字段为空(通常都为空)

二.三次握手建立连接 

第九讲实验报告_第3张图片  

第一次握手 

客户端将标志位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状态

抓包示例分析 

用于建立连接的三条报文

第一条报文 

第九讲实验报告_第4张图片

可以看到,SYN位为1,并且产生了随机序列号232129012 

第二条报文 

第九讲实验报告_第5张图片

可以看到,SYN和ACK位被置1,并产生了确认号为 232129012 + 1 = 232129013,以及随机的序列号883061785

第三条报文 

第九讲实验报告_第6张图片

可以看到,ACK位被置1,并产生了确认号为 883061785 + 1 = 883061786

三.拥塞控制 

第九讲实验报告_第7张图片

查看所有发送报文的时间序列图,序列号一直在增大,故没有重传区段 

按照提示查找到数据大小为 164090 bytes ,所用时间为 5.297341 s ,故吞吐量为

164090/1000/5.297341 = 30 kbytes/s(向下取整)

四.UDP包分析 

UDP报文格式 

第九讲实验报告_第8张图片 

UDP抓包实例

第九讲实验报告_第9张图片

首先根据UDP前的IPv4可以知道UDP的协议号为17

UDP报文分析 

源端口号(Source Port):占2字节

目的端口号(Destination Port):占2字节

报文长度(Length):占2字节

校验和(Checksum):提供差错检测功能,占2字节

数据部分

你可能感兴趣的:(计算机网络,网络,服务器,tcp/ip)