实验4-TCP数据包及连接建立过程分析

更新时间:2023-09-15 00:47:01 阅读量: 资格考试认证 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验4 TCP数据包及连接建立过程分析

1.实验目的

1. 学习并分析TCP数据包的结构、含义

2.分析TCP连接的建立过程和数据传输过程。

2.实验设备与环境

1.Wireshark网络分析软件

2.实验文件“计算机网络-实验文件.cap”

3.相关知识

3.1 TCP 数据报结构

? 一个 TCP 数据报由首部和数据两部分组成。

? 首部的前一部分是固定长度,共 20 字节,是所有TCP数据报必须具有的。 ? 在首部的固定部分的后面是一些可选字段,其长度是可变的。

32 bit比特0 8 16 源端口序号TCP首部确数据偏移保留检验和选项(长度可变)认号窗口紧急指针填充20 字节的固定首部24 31目的端口UAPRSFRCSSYIGKHTNNTCP 报文段发送在前IP 首部TCP 首部TCP 数据部分IP 数据部分TCP 报文段首部 3.2 TCP 连接的建立过程

? A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择

序号 x (为了防止TCP syn 攻击,分组选择的是经过较复杂运算后得到的初始化序号,当然其相对序号应该视作是1),表明传送数据时的第一个数据字节的序号是 x。 ? B 的 TCP 收到连接请求报文段后,如同意,则发回确认。

? B 在确认报文段中应将 SYN 置为 1,其确认号应为 x ? 1,同时也为自己选择序号

y(为了防止TCP syn 攻击,分组选择的是经过较复杂运算后得到的初始化序号,当然其相对序号应该视作是1)。

? A 收到此报文段后,向 B 给出确认,其确认号应为 y ? 1。 ? A 的 TCP 通知上层应用进程,连接已经建立。

? 当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,

连接已经建立。

4.实验内容

4.1 TCP数据包的结构和含义分析

打开文件“计算机网络-实验文件.cap”,这是一个包括204个分组的网络通信记录,详细记录了分组的序号、相对时间、源地址、目标地址、协议类型、内容,如图1是对第29个分组的详细信息。

图1 第29个分组的TCP数据包的解析

观察文件内第29个分组的TCP数据包详细信息,见图1。

? 它的前16位是1668,表示源端口是1668,是客户端的一般端口,(本机是客户端) ? 它的目的端口是0050(H)=8080,表明是访问服务器端的HTTP应用。

? 当前发送的数据首字节是0(相对值),表示为首发字节。它携带的数据包长度是0字

节,64(IP包全长,见IP包头的长度字段值)-20(IP首部长度)-44(TCP首部长度)=0字节,该TCP数据包未携带数据。

? 确认号字段为0,结合后面的ACK ? 0,表明未携带确认信息。

? TCP首部的固定长度部分是20字节; b002(H)=1011 0000 0000 0010 (B),其中表示TCP

首部长度长度.是前4位,即1011(B)=11,以4个字节为1个单位,因此该TCP首部总长度是11×4字节=44字节,其中包含选项字段24字节。 ? 同步比特SYN=1,表明它是一个TCP连接相关的数据包 ? 其它:ACK ? 0,确认比特 ACK —— 只有当 ACK ? 1 时确认号字段才有效。当 ACK

? 0 时,确认号无效。

? 推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给

接收应用进程,而不再等到整个缓存都填满了后再向上交付。 ? 窗口字段大小524280字节,当前可以接收对方发送524280字节。 ? 校验和=a4ff,正确。

? 紧急指针字段=0,因为紧急URG=0

? 头部选项字段:给出了最大报文段长度MMX=1460字节,注意MAC帧携带的数据范

围是46-1500字节,1500-20(IP头长)-20(TCP长)=1460。

观察文件内第34个分组的TCP数据包详细信息,见图2。

图2 第34个分组的TCP数据包的解析

? 它的源端口是0050(H)=80,是服务器端的HTTP应用服务。 ? 它的目的端口是1668,是客户端的一般端口号。

? 当前发送的数据首字节是1449(相对值)。它携带的数据包长度是357字节,409(IP

包全长,见IP包头的长度字段值)-20(IP首部长度)-32(TCP首部长度)=357字节,该TCP数据包携带357字节数据,因此下一个TCP数据包携带数据的首字节是1449+357=1806。

? 确认号字段为875,结合后面的ACK ?1,表明已经正确接收对方发送的875字节前的

数据。

? TCP首部固定字段长度是20字节; 8018(H)=1000 0000 0001 1000 (B),其中表示TCP

首部长度长度是前4位,即1000(B)=8,因此该TCP首部长度是8×4字节=32字节,包含选项字段12字节。

? 同步比特SYN=0,表明它不是一个TCP连接相关的数据包

? 确认比特ACK ? 1 ,确认号字段才有效。当 ACK ? 0 时,确认号无效。

? 推送比特 PSH (PuSH)=1,接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给

接收应用进程,而不再等到整个缓存都填满了后再向上交付。 ? 窗口字段大小64661字节,当前可以接收对方发送64661字节。 ? 校验和=d169,正确。

? 紧急指针字段=0,因为紧急URG=0

? 头部选项字段:给出了时间戳Time stamp。

数据被分片,1805字节的数据被分为第33个分组的1448字节和第34个分组的357字节.

4.2 TCP连接的建立和释放过程

选择“flow graph” 观察TCP连接的建立过程。

图3 选择“flow graph” 观察TCP连接的建立过程

图4 选择“flow graph”参数 观察TCP流

图5 TCP流

客户端进程(IP地址:219.222.170.14,端口1668)与服务器端进程(IP地址:172.30.0.19 端口80)建立连接的3次握手过程,对应的分别是第29、30、31数据分组。它们分别完成的是:

第29数据分组:客户端 的 TCP( 序號=8a42cdc9,这是客户端为了防范某些安全性攻击而选择的起始序号,相对序号是1)向服务器端发出连接请求报文段;注意该分组的Option字段内容,给出了MSS=1460字节,Sack Permitted 等协商内容。该连接请求报文不

携带数据(Len=0),但消耗一个序号。为了防止TCP syn 攻击,该分组选择的初始化序号是8a42cdc9,当然相对序号是1。

第30数据分组:服务器端 的 TCP收到连接请求报文段后,同意,发回确认(确认报文段中将 SYN 置为 1,ACK=1);注意该分组的Option字段内容,给出了MSS=1460字节. 该连接请求确认报文不携带数据(Len=0),但消耗一个序号。同时初始窗口值为32768字节。为了防止TCP syn 攻击,该分组选择的初始化序号是27f5bf03,当然相对序号是1, 对29数据分组的确认是8a42cdca(8a42cdc9+1).

第31数据分组:客户端收到此报文段后,向服务器端 给出确认(ACK=1)。连接建立完成。

客户端进程(IP地址:219.222.170.14,端口1669)与服务器端进程(IP地址:172.30.0.19 端口80)释放连接的过程,对应的分别是第47、48、49、50数据分组。它们分别完成的是:

第47数据分组:219.222.170.14端 的 TCP(FIN置为 1)向172.30.0.19端发出连接释放请求报文段,该释放请求报文未携带数据(Len=0),但消耗一个序号。

第48数据分组:服务器端的 TCP收到连接释放请求报文段后,发回确认(确认报文段中将ACK置为 1);窗口值为64167字节;注意该分组的Option字段内容,时间戳Time stamp。

第49数据分组:172.30.0.19端也不再需要发送数据,发出连接释放请求报文段(FIN置为 1),未携带数据(Len=0)。

第50数据分组:收到第49数据分组后,219.222.170.14端发出确认(ACK=1)。 至此,连接释放的协商过程完毕,收到第50数据分组后,172.30.0.19会释放与219.222.170.14端1669的连接;219.222.170.14端在2MSL后,释放连接。

5.实验问题

问题一:什么是TCP协议?TCP数据包的结构和含义是怎样的?

问题二: TCP协议建立连接的过程是怎样的?

问题三:根据文件“计算机网络-实验文件.cap”,参照实验4.1 回答以下问题: 1、 分析第44个分组TCP数据包的结构和含义? 2、 分析第127个分组TCP数据包的结构和含义? 3、 分析第75个分组TCP数据包的结构和含义?

问题四:根据文件“计算机网络-实验文件.cap”,参照实验4.2 回答以下问题:

1、 219.222.170.14端进程(端口1672)与服务器端进程(端口80)建立连接的3次握手过

程?该服务器的IP地址是?

本文来源:https://www.bwwdw.com/article/vo2h.html

Top