目录
- 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)分析序号和确认号的变化
- 首先由Server先创建传输控制模块TCB,等待连接请求。PC端也是先建立TCB,同时向Server发送连接请求报文端,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x(0),PC进程进入SYN_SENT状态。
- 然后Server接受到请求报文段后,同意建立的话,就对pc端回复确认。在确认报文段中把SYN位和ACK位都置1,ack=x+1(1),seq=y(0),Server进程进入SYN_RCVD状态。
- 然后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开始。
第三次实验报告:网络层的畅游
原文:https://www.cnblogs.com/xhnhm211117/p/11700725.html