第三次作业:使用Packet Tracer分析TCP连接的建立与释放过程
0 个人信息
- 张樱姿
- 201821121038
- 计算1812
1 实验目的
- 使用路由器连接不同的网络
- 使用命令行操作路由器
- 通过抓取HTTP报文,分析TCP连接建立的过程
2 实验内容
使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程。
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3 实验报告
本实验使用Cisco Packet Tracer这个平台来对网络环境进行模拟。
3.1 建立网络拓扑结构
网络拓扑图如下图所示:

分析:由于客户端和服务器不在同一网段,因此需要配置路由器将这两者联系起来才能互相通信。
3.2 配置参数
3.2.1 配置客户端
客户端的IP地址为192.168.1.38 , 子网掩码为255.255.255.0 , 默认网关为192.168.1.100

3.2.2 配置客户端
服务端的IP地址为192.168.2.38 , 子网掩码为255.255.255.0 , 默认网关为192.168.2.100

3.2.3 配置路由器
- 路由器激活配置:

配置命令解释:
Router> (处于用户模式下)
Router>enable (进入特权模式)
Router# (特权模式)
Router#configure terminal (进入全局配置模式)
Router(config) # (全局配置模式)
Router(config)# no ip domain-lookup(禁用DNS查找)
Router(config)#hostname R (设置路由器主机名)
- G0/0/0及G0/0/1端口配置:


配置命令解释:
R(config)#interface G0/0/0 (进入端口配置模式)
R(config-if)#ip address 192.168.1.100 255.255.255.0 (配置端口)
R(config-if)#no shutdown (激活端口)
- 路由协议配置:

配置命令解释:
R(config)#router rip (进入rip路由协议配置模式)
R(config-router)# (rip路由协议配置模式)
R(config-router)#version 2 (使用rip2版本)
R(config-router)#no auto-summary (关闭自动路由汇总)
R(config-router)#network 192.168.1.0 (设置参与RIP协议的网络地址)
- 查看已配置参数:


配置命令解释:
R#show ip interface brief (查看ip地址和端口状态)
R#show ip route (查看路由表)
- 测试客户端与服务器间能否正常通信:
在客户端上ping服务器:

在服务器上ping客户端:

3.3 抓包并分析TCP连接建立过程
3.3.1 开启仿真模式,用客户端的浏览器访问服务器:

3.3.2 抓到的包:


3.3.3 画TCP连接建立示意图(三次握手):

3.3.4 分析序号和确认号的变化:
(1)第一次握手:客户端发送一个TCP的SYN标志位为1的包表明客户打算连接服务器的端口,以及初始序号X,保存在包头的序列号 (Sequence Number)字段里,此处seq=0即X=0。
(2)第二次握手:服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的ISN加1,即X+1,此处ack为1。
(3)第三次握手:客户端再次发送确认包(ACK) ,SYN标志位为0,ACK标志位为1。并且把服务器发来ACK的序号字段+1,即seq=1,放在确定字段中发送给对方。
3.3.5 TCP连接建立需要第三次握手的原因:
这主要是防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。
如果使用的是两次握手建立连接,当客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费。
如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接。
3.4 分析TCP连接释放过程
3.4.1 画TCP连接释放示意图(四次挥手):

3.4.2 分析示意图为何与课本不一样的原因:
示意图中,最后一次挥手的ack值应该为第三次的seq值加1,但是却没有。个人认为是此时FIN=0,即使确认号不加一,此时也能达到释放连接的效果。另一方面是,此时TCP连接处于半关闭状态,因为数据仍可以从被动关闭一方向主动关闭方发送。
3.5 Q&A
Q:为什么连接的时候是三次握手,关闭的时候却是四次挥手?
A:因为当服务器端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,"你发的FIN报文我收到了"。只有等到服务器端所有的报文都发送完了,才能发送FIN报文,因此不能一起发送。故需要四次挥手。
4 Reference
- 路由器配置命令——百度文库(https://wenku.baidu.com/view/4454b9c271fe910ef12df878.html)
- TCP的三次握手(建立连接)和四次挥手(关闭连接)(https://www.cnblogs.com/Jessy/p/3535612.html)
- TCP协议中的三次握手和四次挥手(图解)(https://zhuanlan.zhihu.com/p/43838752)
第三次作业:使用Packet Tracer分析TCP连接的建立与释放过程的更多相关文章
- 简述TCP连接的建立与释放(三次握手、四次挥手)
在介绍TCP连接的建立与释放之前,先回顾一下相关知识. TCP是面向连接的运输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,H ...
- TCP连接的建立与释放(三次握手与四次挥手)
TCP连接的建立与释放(三次握手与四次挥手) TCP是面向连接的运输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,HTTP协议 ...
- 利用tcpdump分析工具来验证tcp连接的建立和关闭过程
本文要求读者在阅读之前应该对TCP通过三次握手建立和关闭连接有一定的了解,本文并没有详细讲解三次握手,只是通过一个实例对三次握手进行了一下验证. tcp连接的建立和关闭想必大家都已经非常熟悉了!通过三 ...
- 第三次实验报告:使用Packet Tracer分析TCP连接建立过程
目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 3.2 配置参数 3.3 抓包,分析TCP连接建立过程 4. 拓展 (不作要求,但属于加分项) 1 实验目的 使用路由器连接 ...
- tcpdump分析tcp连接的建立、传输和关闭
http://note.youdao.com/noteshare?id=2aa0379d1e4b3bcddc26174861ffe09a
- Wireshark-TCP协议分析(包结构以及连接的建立和释放)
原文:http://blog.csdn.net/ahafg/article/details/51039584 TCP:传输控制协议 TCP是一种面向连接的.可靠的.基于字节流的传输层通信协议. 面向 ...
- 第一次实验报告:使用Packet Tracer分析HTTP数据包
目录 1 实验目的 2 实验内容 3. 实验报告 第一次实验报告:使用Packet Tracer分析HTTP数据包 1 实验目的 熟练使用Packet Tracer工具.分析抓到的HTTP数据包,深入 ...
- TCP连接的建立以及利用tcpdump分析连接建立的过程(转)
原文地址:http://www.cnblogs.com/coser/archive/2010/12/05/1968812.html 一.实验目的 实验1_1: 使用Freebsd/Linux操作系统下 ...
- TCP连接的建立(三次握手和四次挥手)
写到最后发现我描述的挺水的,这个老哥的用语比较专业一点https://blog.csdn.net/qq_38950316/article/details/81087809 (老哥这篇有些许错别字 大 ...
随机推荐
- Redo与Undo的理解
本文概要本文的原意是一篇个人学习笔记,为了避免成为草草记录一下的流水账,尝试从给人介绍的角度开写.但在整理的过程中,越来越感觉力不从心,一是细节太多了,原以为足够了解的一个小知识点下可能隐藏了很多细节 ...
- flask 中的 werkzeug Local,LocalStack 和 LocalProxy 技术应用
什么是 Local wsgi 每次请求,会把过程进行抽离无状态话,过程数据存储在本次请求的全局变量中,使用到了Local. Local 作为每次请求的全局命令空间,属于每次请求的私有 LocalSta ...
- zabbix配置企业微信报警
+++++++++++++++++++++++++++++++++++++++++ 1. 工作中最长使用的就是微信,普及,开源,而且免费!!! 2. 在企业微信中要记录的值: · 部门id · 企业i ...
- docker-网桥
使用桥接网络 在网络方面,桥接网络是链路层设备,它在网络段之间转发流量. 网桥可以是硬件设备或在主机内核中运行的软件设备. Docker而言,桥接网络使用软件桥接器,该软件桥接器允许连接到同一桥接网络 ...
- 傅立叶变换—DFT
背景:最近看到实验室其他同学在用傅立叶变换解决问题,我也想通过并行来解决这个问题,所以看了一下傅立叶变换的东西,感觉涵盖的东西还能多,我只是初步做了一下了解(一定很片面,但是我主要是为了应用它,主要了 ...
- Arduino_URO端口与AtMega328p引脚对应图
Arduino微控制器的数字端口和模拟端口与ATMEGA 328芯片引脚的对应关系图如下.标有0~13标号的引脚对应的是数字端口,在0~13前面有符号“~”的引脚对应的端口具有PWM输出功能.标有A0 ...
- C++ | C++ 基础知识 | 指针、数组与引用
1.指针 在 C++ 语言中存放及使用内存地址是通过指针和引用完成的. char c = 'a'; // 声明 c 变量,c 变量存储的是 'a' 的值. char* p = &c; // 声 ...
- ConcurrentHashMap源码解析 JDK8
一.简介 上篇文章详细介绍了HashMap的源码及原理,本文趁热打铁继续分析ConcurrentHashMap的原理. 首先在看本文之前,希望对HashMap有一个详细的了解.不然看直接看Concur ...
- 跟着知识追寻者学BeautifulSoup,你学不会打不还口,骂不还手
一 前言 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库:其强大的提取能力让知识追寻者放弃了使用正则匹配查找HTML节点:Beautifu Soup 其能直接 ...
- 《深入浅出话数据结构》系列之什么是B树、B+树?为什么二叉查找树不行?
本文将为大家介绍B树和B+树,首先介绍了B树的应用场景,为什么需要B树:然后介绍了B树的查询和插入过程:最后谈了B+树针对B树的改进. 在谈B树之前,先说一下B树所针对的应用场景.那么B树是用来做什么 ...