才半页

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

个人信息:

     •  姓名:李微微

      •  班级:计算1811

      •  学号:201821121001

 

一、摘要

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

 

二、建立网络拓扑结构

      

        PC0、Router0、Server0分别是配置好的客户端、路由器、服务器。

 

三、配置参数

         3.1  配置客户端IP地址:192.168.1.01;

        3.2  服务器IP地址:192.168.1.02。

                分别在客户端和服务器的“Default Gateway”输入对应接口的地址,设置默认网关。

                 

 

        3.3  配置路由器参数步骤如下:

                

                3.3.1 命令的功能:       

                   清除路由器上的现有配置:
                     Router>enable #进入特权执行模式
                     Router>config t #进入全局配置模式

                   配置Fa0/0接口:
                     Router(config)#interface Fa0/0
                     Router(config-if)#ip address 192.168.1.2 255.255.255.0
                     Router(config-if)#no shutdown              #激活接口

                   配置Fa0/1接口:
                     Router(config)#interface Fa0/1
                     Router(config-if)#ip address 192.168.2.2 255.255.255.0
                     Router(config-if)#no shutdown               #激活接口

                   启动动态路由:
                     Router(config)#router rip
                     Router(config-router)#version 2               #使用rip 2版本
                     Router(config-router)#no auto-summary          #关闭自动路由汇总

                   指定网络:
                     Router(config-router)#network 192.168.1.0
                     Router(config-router)#network 192.168.2.0

 

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

        4.1 通过客户端访问服务器后抓到的HTTP数据包:

               

 

       4.2(1)画出TCP连接建立示意图

                   

 

         4.2(2)分析序号和确认号的变化    

                 第一次握手:客户端向服务器发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个

                                      初始序号seq=x(本次x=0),确认号ack=1。

                 第二次握手:服务器收到连接请求报文段后,如同意建立连接,则向客户端发送确认。在确认报

                                      文段中SYN=1,ACK=1,初始号seq=0,确认号是ack=x+1,同时

                                      也为自己选择一个初始序号seq=y(本次y=0)。

                 第三次握手:客户端收到服务器的确认后,还要向服务器给出确认。确认报文段中SYN=1,ACK=1,

                                       确认号ack=y+1,而自己的序号seq=x+1。

 

          4.2(3)解答:为什么连接建立需要第三次握手

                解答:主要是为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误。

                              所谓“已失效的连接请求报文段”是这样产生的。考虑种正常情况 A发出连接请求,但因连接请求报文丢
                              失而未收到确认。于是A再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释
                              放了连接。A共发送了两个连接请求报文段,其中第一个丢失,第二个到达了B,没有“已失效的连接请求报文段”。

                              现假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,
                              以致延误到连接释放以后的某个时间才到达B.本来这是一个早已失效的报文段。但B收到此失效的连接请求报文
                              段后,就误认为是A又发出一次新的连接请求。于是就向A发出确认报文段,同意建立连接。假定不采用报文握
                              手,那么只要B发出确认,新的连接就建立了。由于现在A并没有发出建立连接的请求,因此不会理睬B的确认,
                              也不会向B发送数器。但B却以为新的运输连接已经建立了,并直等待A发来数据。B的许多资源就这样白白浪费了。

  

五、拓展 (不作要求,但属于加分项)

        5.1(1)分析TCP连接释放

                           TCP连接释放示意图:    

                   

 

                   结合课本内容,解释图为什么会跟课本不一样。解答为什么连接释放需要四次握手。

                 解答:如果将回应客户端的确认报文和FIN报文合并到一起,那么这实际上也就是一个三次握手的过程;

                               之所以要将确认报文和FIN报文分离形成四次挥手,是因为服务端需要将所有的数据发送完毕。

                               在这两个报文发送的间隔,服务端还需要发送的数据全部送出,该连接就已经没有存在的必要了。

       

         5.2(2)通过该实验如果有产生新的疑问,可以写出来,并尝试自己解决问题

                  疑问:为什么建立连接的时候只需要三次握手?释放连接只需要四次?而不是因为不能确定对方是否确认,而陷入死循环?

参考资料:

           《计算机网络》(第七版)谢希仁编著

posted on 2019-10-19 01:02  才半页  阅读(246)  评论(0编辑  收藏  举报