第三次实验报告:使用Packet Tracer分析TCP连接建立过程

1.个人信息

  • 陈韵
  • 201821121053
  • 计算1812

2.实验目的

  • 使用路由器连接不同的网络
  • 使用命令行操作路由器
  • 通过抓取HTTP报文,分析TCP连接建立的过程

3.实验内容

使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程。

  • 建立网络拓扑结构
  • 配置参数
  • 抓包
  • 分析数据包

4. 实验报告

4.1 建立网络拓扑结构

   

4.2 配置参数

4.2.1 配置客户端

  客户端的参数配置如下:

  

4.2.2 配置服务端

  服务端的参数配置如下:

  

 

 

4.2.3 配置路由器

  (1)激活路由器

  

 

 

  解释:   

  Router>enable # 进入特权执行模式 

  Router#configure terminal # 进入全局配置模式 

  Router(config)# no ip domain-lookup # 禁用DNS查找

  Router(config)#hostname R # 将路由器名称配置为R 

 

  (2)配置端口 Fa0/0与Fa0/1

   

 

 

   解释:

  R(config)#interface Fa0/0 

  R(config-if)#ip address 192.168.1.80 255.255.255.0 

  R(config-if)#no shutdown # 激活接口 

 

  (3)配置路由器协议

  

 

 

   解释: 

  R(config)#router rip                       # 进入配置路由协议的模式

  R(config-router)#version 2               # 使用rip2版本

  R(config-router)#no auto-summary    # 关闭自动路由总结

  R(config-router)#network 192.168.1.0  # 设置参与配置协议的网络地址

 

  (4)查看是否配置完成

  

 

 

 

4.3 抓包,分析TCP连接建立过程

4.3.1用客户端的Web Browser访问服务器:

 

 

4.3.2 仿真界面完成抓包

   

 

 

   

 

 

4.3.3画出TCP连接建立示意图

 

4.3.4分析序列号和确认号的变化

     (1)第一次握手:Client将标志位SYN置为1,随机产生一个序列号值seq=x,并将该数据包发送给Serve,PC进入SYN_SENT状态,等待Serve确认

  (2)第二次握手:Serve收到数据包后由标志位SYN=1知道Client请求建立连接,Serve将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

  (3)第三次握手:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

4.3.5解答:为什么连接建立需要第三次握手

  3次握手完成两个重要的功能,既要双方做好发送数据的准备工作,也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。目的是为了解决网络中存在延迟的重复分组问题。

  只有2 次握手很可能造成“死锁”:假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。导致死锁的造成。

5. 拓展

(1)分析TCP连接释放

 

(2)图为什么会跟课本不一样

  在半关闭状态,服务器很可能又发送了一些数据。而客户端收到服务器的连接释放报文后,必须发出确认。此时的TCP连接还没有释放。

(3)为什么需要第四次握手 

  关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

 (4)疑问

  如果连接已经建立,但客户端突然出现故障的话,服务端会马上终止交易还是傻傻等下去?又或者机制比较聪明先试探一下确认客户端真的崩溃后才断开连接??

posted @ 2019-10-18 20:43  韵韵韵  阅读(344)  评论(0编辑  收藏  举报