第三次实验报告:运输层的畅游

目录

  • 0 个人信息
  • 1 实验目的
  • 2 实验内容
  • 3. 实验报告
    • 3.1 建立网络拓扑结构
    • 3.2 配置参数
    • 3.3 抓包,分析TCP连接建立过程
  • 4. 拓展 (不作要求,但属于加分项)

0 个人信息

  • 姓名:周圣博
  • 学号:201821121117
  • 班级:计算1814

1 实验目的

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

2 实验内容

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

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

3. 实验报告

3.1 建立网络拓扑结构

网络拓扑图如下图所示:

3.2 配置参数

  • 客户端的IP地址为192.168.1.117,默认网关的地址是192.168.1.118,如下图:

  • 服务端的IP地址为192.168.2.117,默认网关的地址是192.168.2.118,如下图:

路由器参数配置:

 配置完成结果如图三show ip interface brief内容后所示。

各指令意思:

• Router>enable # 进入特权执行模式
• Router#erase startup-config # 清除路由器上的现有配置
• Router#configure terminal # 进入全局配置模式
• Router(config)#no ip domain-lookup # 禁用DNS查找(目的:提高操作响应时间)
• Router(config)#interface f0/0 # 选择f0/0接口进行操作
• Router(config-if)#ip address 192.168.1.118 255.255.255.0 # 对接口ip进行修改
• Router(config-if)#no shutdown # 激活接口
• Router(config-if)#exit # 退回上一步
• Router(config)#interface f0/1 # 选择f0/1接口进行操作
• Router(config-if)#ip address 192.168.2.118 255.255.255.0 # 对接口ip进行修改
• Router(config-if)#no shutdown # 激活接口
• Router(config-if)# 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 # 指定网络
• Router(config-router)#end # 结束操作
• Router#show ip interface brief # 检验IP地址正确并且接口处于激活状态

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

抓取的包如下:

通过抓取HTTP数据包得到的TCP报文,抓到的报文与上图对比,完成如下事情:

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

如下图所示:

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

  1. 首先由Server先创建传输控制模块TCB,等待连接请求。PC端也是先建立TCB,同时向Server发送连接请求报文端,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x(0),PC进程进入SYN_SENT状态。
  2. 然后Server接受到请求报文段后,同意建立的话,就对pc端回复确认。在确认报文段中把SYN位和ACK位都置1,ack=x+1(1),seq=y(0),Server进程进入SYN_RCVD状态。
  3. 然后PC端收到确认后再给Server发送确认,ACK=1,ack值为y+1(1),seq为x+1(1)。PC和Server进程都进入ESTABLISHED状态。

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

主要是为了防止以及PC失效的连接请求报文段突然又传送到了Server,因而产生错误(Server的许多资源会被失效的连接端口所浪费)

4. 拓展 (不作要求,但属于加分项)

(1)分析TCP连接释放

TCP连接释放示意图:

 

 

1、在数据传输完成后,客户端先向服务端发送释放连接报文,并停止发送数据主动关闭连接,主动关闭TCP连接,将终止控制位FIN置1,序号seq=u(103)(等于前面已传输的数据的最后一个字节的序号加一),pc端进入FIN-WAIT-1状态。

2、服务端在收到释放请求后立即发送确认,确认号ack=u+1(104),序号seq=v(472)(等于前面已传输的数据的最后一个字节的序号加一)。此时客户端进入CLOSE-WAIT状态。TCP连接进入半关闭状态(服务端可以继续给PC发送数据,PC不再发送)。

3、如果服务端没有数据传输,则发送FIN=1,seq=w+1(472)(等于前面已传输的数据的最后一个字节的序号加一), ack=u+1(104)的报文。服务器进入LAST-ACK状态,此过程PC端处于FIN-WAIT-2状态。

4、PC端收到服务器释放连接的请求后,发送确认,ACK=1,seq=u+1(104),ack=w+1(472)。然后PC端进入TIME-WAIT状态,经过2MSL后,才真正释放连接,进入CLOSED状态。

1.图为什么会跟课本不一样?

因为当pc需要释放连接时服务器已经没有要发送的数据了,所以2、3步骤并在了一起。

2.为什么连接释放需要四次握手?

因为TCP有个半关闭状态。TCP连接是全双工的,即数据可以在两个方向上同时传输,所以进行关闭时每个方向要进行单独关闭。单方向的关闭就叫半关闭。当一方的数据传输完成后,会发送一个FIN来告诉另一方要终止这一方向的连接。

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

为什么建立连接时x=0?

序列号一般等于前面发送数据的最后一个字节加一,但是因为之前没有数据传输,所以之前的为空,所以从0开始。

posted @ 2019-10-19 22:47  xhnhm  阅读(302)  评论(0编辑  收藏  举报