姓名:黄思婷
学号:201821121065
班级:计算1813
1 实验目的
使用路由器连接不同的网络
- 使用命令行操作路由器
- 通过抓取HTTP报文,分析TCP连接建立的过程
2 实验内容
使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程。
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3 实验报告
此次实验报告主要是通过建立客户端、路由器与服务器之间的连接,分析TCP运输的连接建立中的三次握手与连接释放的四次握手,借此了解运输层是如何达到可靠传输的。
3.1 建立网络拓扑结构
3.2 配置参数
3.2.1 客户端IP地址的设置
3.2.2 服务器IP地址的设置
3.2.3 路由器参数的设置
清除路由器上的现有配置:
使用命令erase startup-config清除路由器上的现有配置:
• Router>enable # 进入特权执行模式
• Router#erase startup-config # 清除路由器上的现有配 置
• Router#configure terminal # 进入全局配置模式
• Router(config)#no ip domain-lookup # 禁用DNS查找
在实验环境中禁用DNS查找的目的是提高操作响应时间,因为键 入错误的命令,路由器会把错误命令当成域名进行查找。
配置并激活端口:
• Router(config)#hostname R # 将路由器名称配置为R
• 配置G0/0/0和G0/0/1接口:
• R(config)#interface G0/0/0
• R(config-if)#ip address 192.168.1.67 255.255.255.0
• R(config-if)#no shutdown # 激活接口
• R(config)#interface G0/0/1
• R(config-if)#ip address 192.168.2.67 255.255.255.0
• R(config-if)#no shutdown# 激活接口
配置路由算法
• 启用动态路由
• R(conf)# router rip
• R(conf)#version 2 使用rip 2版本
• R(conf)#no auto-summary 关闭自动路由汇总
• 指定网络
• R(conf)#network 192.168.1.0
• R(conf)#network 192.168.2.0
3.3 抓包,分析TCP连接建立过程
3.3.1 打开客户端的浏览器,对服务器进行访问
3.3.2 在仿真过程中,获取的数据包如下图,我们将会得到TCP包与HTTP包
3.3.3 画出TCP连接建立示意图
3.3.3 画出TCP连接建立示意图
3.3.4 分析序号和确认号的变化
1)上图第一个箭头表示客户端与服务器之间的第一次握手,在该次握手中,同步位SYN的值为1,表示PC向Server发出了连接请求,在发出连接请求时,设置了一个初始序号,即seq=0,并对确认号设置一个初值;
2)第二个箭头表示客户端与服务器之间的第二次握手,此次握手是Server向PC发送的确认报文,因此报文中的ACK与SYN均为1,并将改变ack的值,即ack=上一个报文中seq值+1,表示上一个报文中传输的数据全都正确收到,除此之外,还要再设置一个起始序号值,即seq值;
3)第三个箭头表示客户端与服务器之间的第三次握手,该次握手是发生在PC收到来自Server返回的确认包后,再次向Server发送一个确认包,该数据包中的起始序号值来源于Server发送回来的确认包中的确认号,即seq=上一个报文中ack的值,而对于确认号的设置则根据上一个报文中的序号进行设置,即ack=上一个报文中的seq值+1.
3.3.5 解答连接建立为什么要第三次握手
采用三次握手是为了防止失效的请求报文又发送到Server,从而产生错误。
有这样一种特殊情况,客户端向服务端发送连接请求,但是由于网络节点导致延迟到达服务端,服务端认为客户端发了新的连接请求,因此向客户端回复确认,但客户端不会回复,而服务端一直等待客户端发送数据,这样会浪费服务端的资源。
所以进行第三次的握手只要是为了防止客户端中发送的已失效的连接请求报文段突然又传送到服务器中,导致服务器认为又重新建立了运输连接,为新的连接开辟资源,造成资源的浪费。
解答连接释放为什么需要四次握手
当客户端中的数据都传送给了服务器时,客户端发送连接释放请求,服务器收到该请求后并不会马上就关闭SOCKET,服务器只能先发送一个ACK报文告诉客户端它发送的连接释放请求已收到。当服务器中的报文都发送完后,服务器才会向客户端发送FIN报文,因此服务器的ACK报文与FIN报文不会同时发送,需要四次握手才可以释放TCP运输连接。