第三次实验报告:使用Packet Tracer分析TCP连接建立过程
- 姓名:韩博
- 学号:20821121115
- 班级:计算1814
1 实验目的
- 使用路由器连接不同的网络
- 使用命令行操作路由器
- 通过抓取HTTP报文,分析TCP连接建立的过程
2 实验内容
使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程。
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3. 实验报告
3.1 建立网络拓扑结构
网络拓扑图如下图所示:
一台客户端PC连接路由器,路由器再连接服务器server
3.2 配置参数
- 客户端的IP地址为
192.168.1.115,默认网关为192.168.1.116。
- 服务端的IP地址为
192.168.2.115,默认网关为192.168.2.116。
-
路由器参数配置
进入特权模式,清除路由器的现有配置,并且禁用DNS查找;
给路由器命名,配置并激活端口;
把G0/0/0端口的地址设置为192.168.116,把G0/0/1端口的地址设置谁为192.168.2.116。
配置路由算法;
连接192.168.1.0和192.168.2.0两个网络。
验证参数设置;
R#show ip interface brief :检验IP地址正确且接口处于激活状态
R#show ip toute :查看路由表
3.3 抓包,分析TCP连接建立过程
通过抓取HTTP数据包得到的TCP报文如下
(1)画出TCP连接建立示意图
如下图所示:
(2)分析序号和确认号的变化
- 首先由客户端发送请求连接,即SYN=1,ACK=0。TCP规定,在SYN=1时不能携带数据,但是要消耗一个序号,所以申明自己的序号seq=x。
- 然后Server进行回复确认,即SYN=1,ACK=1,seq=y,ack=x+1。
- 然后客户端再次确认,但不用SYN=1,即ACK=1,seq=x+1,ack=y+1。(SYN=1时,表明这是一个请求连接或接受连接报文)
(3)解答:为什么连接建立需要第三次握手
采用三次握手是为了防止失效的请求报文又发送到Server,从而产生错误。
有这样一种特殊情况,客户端向服务端发送连接请求,但是由于网络节点导致延迟到达服务端,服务端认为客户端发了新的连接请求,因此向客户端回复确认,但客户端不会回复,而服务端一直等待客户端发送数据,这样会浪费服务端的资源。
4. 拓展 (不作要求,但属于加分项)
(1)分析TCP连接释放
- 在数据传输完成后,客户端先向服务端发送释放连接报文,即FIN=1,序号seq=u,u等于前面已传输过的数据的最后一字节的序号加1。
- 服务端在收到释放请求后立即发送确认,确认号ack=u+1,序号seq=v,v等于服务端前面已传输过的数据的最后一字节的序号加1。此时客户端的连接关闭,不再发送数据,但可以接受数据。TCP进入半关闭状态,这个状态会持续一段时间。
- 服务器发送完数据后,向客户端发送释放报文,FIN=1,并且ack=u+1。
- 客户端收到后,发送确认,ACK=1,seq=u+1。然后客户端进入时间等待状态,经过2MSL后,才真正释放连接。
(2)解答:为什么释放连接要四次握手?
因为TCP有个半关闭状态。TCP连接是全双工的,即数据可以在两个方向上同时传输,所以进行关闭时每个方向要进行单独关闭。单方向的关闭就叫半关闭。当一方的数据传输完成后,会发送一个FIN来告诉另一方要终止这一方向的连接。
所以当客户端传输完数据后,向服务器发送FIN的报文,服务器回应。这是两次握手。同样的服务器传输完数据后,也向客户端发送一个FIN报文,客户端回应。所以释放连接是四次握手。
(3)解答:为什么释放连接的图和书上的不同?
可能是因为在此次试验中,服务器并没有数据可以向客户端发送,所以在释放连接时,服务器将对客户端的回应报文和发送FIN报文合在一起。因此此次试验的释放连接看起来是三次握手。