第三次实验报告:使用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报文合在一起。因此此次试验的释放连接看起来是三次握手。

posted @ 2019-10-15 19:19  浅释微凉丶  阅读(307)  评论(0编辑  收藏  举报