2023-6-15 12:19:41
以下内容源自《【实验】【计算机网络】》
仅供学习交流使用
Wireshark的安装及基本使用【计算机网络】
4端到端协议-4.2【实验】【计算机网络】
各位同学,大家好,本次实验的内容为TCP的连接管理。
本次实验我们分成四个部分来介绍。我们先介绍实验目的,其次介绍实验内容及环境,再次介绍实验原理,最后演示实验过程。
知识目标:
1)了解TCP连接管理的过程;
2)理解TCP的三次握手和四次挥手。
能力训练目标:
1)能够掌握TCP连接管理的过程;
2)能够分析TCP的三次握手和四次挥手。
实验内容
1)启动Wireshark捕获当前活动网络连接;
2)使用某种工具创建TCP连接,并进行释放。
3)分析TCP连接管理的过程。
实验环境
1)可运行 Windows 操作系统的 PC 一台。
2)每台 PC 具有以太网卡一块,通过双绞线与局域网相连,并可接入因特网;
3)Wireshark 程序(可以从 http://www.wireshark.org/下载)
TCP连接管理的三个阶段。
本实验的实验原理是TCP连接管理的三个阶段
TCP的连接管理有三个阶段,即:连接建立、数据传送和连接释放。连接管理的目的是使运输连接的建立和释放都能正常地进行。
双方通信采用客户/服务器方式,客户(client)主动发起连接建立请求,服务器(server)被动等待接收连接建立请求。
连接管理的目的是使运输连接的建立和释放都能正常地进行。
连接建立过程中要解决以下三个问题:
我们先分析TCP的连接建立过程。现假定客户A要与服务器B进行通信,在通信前需要建立连接,客户端主动发起连接请求,服务器端被动的接收请求,图中方框内显示的是TCP的连接状态,最初两端都处于CLOSED状态。TCP采用三次握手(three-way handshake)来建立连接。具体步骤如下:
客户端A的TCP 向服务器 B发送连接请求报文段,其首部中的同步位 SYN = 1,指明客户端期望连接的服务器端口并选择一个初始序号seq= x,表明传送数据时的第一个数据字节的序号是 x。TCP规定,该请求报文段不能携带数据,但需消耗掉一个序号。此时,TCP客户进程进入SYN-SENT状态。
服务器端B收到连接请求后,若同意建立连接,则回送确认报文。
在确认报文段中要求SYN=1和ACK=1,确认号ack= x+1,同时选择一个初始序号seq= y。该确认报文也不能携带数据,但同样需消耗一个序号。此时TCP服务器进程进入SYN-RCVD状态。
此时,报文段中置ACK=1,确认号ack= y+1,序号seq= x+1。客户 A 的 TCP 通知上层应用进程,连接已经建立。此时,客户端进入ESTABLISHED状态。
TCP规定,此报文段可携带数据,若不携带数据则不消耗序号,即下一个数据报文段的序号依然是seq= x+1。
服务器B 的 TCP 收到客户 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。
,此时进入ESTABLISHED状态,双方可以开始传送数据,进入TCP数据传送阶段。
现在,我们把TCP连接建立时各个状态也加上,大家可以观察一下在TCP连接建立的三次握手过程中客户A和服务器B的状态变化。
当TCP连接建立成功完成后,通信的客户机与服务器双方就行进入数据传输阶段,进行数据的双方就可以向对端进行数据发送。
下面我们将介绍TCP的连接释放过程。
当数据传输结束后,通信的双方都可以主动释放连接。
主动发起释放连接报文段的一边为客户端,另一端为服务器端。
现假定现在客户 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。
最初两端都处于ESTABLISHED状态,释放连接要经过两个二次握手,具体步骤如下:
客户A发送连接释放报文,并停止再发送数据。该报文置FIN=1,并选择一个初始序号seq= u,其值为已传送过的数据最后一个字节的序号加1。此时,客户端进入FIN-WAIT-1状态。TCP规定,FIN报文段即使不携带数据,也需消耗掉一个序号。
服务器B收到连接释放请求报文后,回送确认报文。
确认报文中确认号是ack= u+1,报文段自己的序号是v,即服务器端已传送过的数据的最后一个字节的序号加1,服务器端进入CLOSE-WAIT状态。此时,从客户端到服务器的TCP连接已经释放,客户不会再给服务器发送数据。但是,服务器若有数据要发送,客户仍需要接收,该状态称为半关闭(half-close)状态。客户收到服务器的确认报文后,进入FIN-WAIT-2状态。
若服务器B没有数据传送,其应用进程就通知 TCP 释放连接,则向客户端A发送连接释放报文段。
该报文置FIN=1,序号为w,重复上次已发送过的确认号ack= u+1,服务器端进入到LAST-ACK状态。
确认报文中置ACK=1,确认号ack= w+1,而自己的序号是seq= u+1,客户端进入到TIME-WAIT状态。但是,现在TCP连接还没有释放掉
客户端必须经过等待计时器设置的时间2MSL(最长报文段寿命,Maximum Segment Lifetime)之后,客户端才进入到CLOSED状态。
此时,双方的TCP连接最终释放。
现在,我们把TCP连接释放时各个状态也加上,大家可以观察一下在TCP连接释放的四次握手过程中客户A和服务器B的状态变化。
第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。
第二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。
2023-6-15 12:31:32
以下介绍实验过程,主要展示使用Wireshark捕获TCP连接SMTP服务器的过程,分析其中TCP连接建立和连接释放的过程。
使用Wireshark捕获TCP连接SMTP服务器的过程,分析其中TCP连接建立和连接释放的过程。
2023-6-15 12:41:46
使用上篇的结果进行分析
4端到端协议-4.2:实验过程演示
提前使用ipconfig
命令查询本机IP地址
查看我们想要连接的远程主机的地址
网易邮箱服务器103.74.29.40
打开WireShark
捕获WLAN
使用telnet命令
连接远程主机25端口
SMTP工作在TCP的25号端口
telnet smtp.163.com 25
连接成功后
断开连接
QUIT
打开WireShark
过滤
SMTP
过滤
ip.addr==103.74.29.40
可以看到
三次握手(18 19 20)、数据通信、四次挥手(37 38 39 40)
分析TCP连接中的第一次握手
双击NO.18的包
TCP部分
可以看到
源 23157
目的 25
TCP段长度 0
序列号 0 3158929752
确认号 0 0
头部大小 32 bytes
标志位 SYN
窗口信息 64240=64240
选项信息 MSS、Window scale、SACK permitted
分析TCP连接中的第二次握手
双击NO.19的包
TCP部分
可以看到
源 25
目的 23157
TCP段长度 0
序列号 0 2876780709
确认号 1 3158929753
头部大小 32 bytes
标志位 SYN,ACK
窗口信息 29200=29200
选项信息 MSS、Window scale、SACK permitted
分析TCP连接中的第三次握手
双击NO.20的包
TCP部分
可以看到
源 23157
目的 25
TCP段长度 0
序列号 1 3158929753
确认号 1 2876780710
头部大小 20 bytes
标志位 ACK
窗口信息 138096=516*256
选项信息 无
分析TCP连接中的第一次挥手
双击NO.37的包
TCP部分
可以看到
源 25
目的 23157
TCP段长度 0
序列号 75 2876780784
确认号 7 3158929759
头部大小 20 bytes
标志位 FIN,ACK
窗口信息 29312=229*128
选项信息 无
分析TCP连接中的第二次挥手
双击NO.38的包
TCP部分
可以看到
源 23157
目的 25
TCP段长度 0
序列号 7 3158929759
确认号 76 2876780785
头部大小 20 bytes
标志位 ACK
窗口信息 131840=515*356
选项信息 无
分析TCP连接中的第三次挥手
双击NO.39的包
TCP部分
可以看到
源 23157
目的 25
TCP段长度 0
序列号 7 3158929759
确认号 76 2876780785
头部大小 20 bytes
标志位 FIN,ACK
窗口信息 131840=515*356
选项信息 无
分析TCP连接中的第四次挥手
双击NO.40的包
TCP部分
可以看到
源 25
目的 23157
TCP段长度 0
序列号 76 2876780785
确认号 8 3158929760
头部大小 20 bytes
标志位 ACK
窗口信息 29312=229*128
选项信息 无
2023-6-15 13:15:29
4.3 实验小测已完成本次成绩:100
最高成绩:100重做 还可以重做1次 查看作答记录
截止时间:2023-07-08 22:55:00
1【单选题】主机甲向主机乙发送一个(SYN=1,seq=11220)的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP段可能是( )(5.0分)
A、(SYN=0,ACK=0,seq=11221,ack=11221)
B、(SYN=1,ACK=1,seq=11220,ack=11220)
C、(SYN=1,ACK=1,seq=12345,ack=11221)
D、(SYN=0,ACK=0,seq=11220,ack=11220)
我的答案:C:
(SYN=1,ACK=1,seq=12345,ack=11221)
;得分: 5.0分
2【单选题】主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了3个连续的TCP段,分别包含300字节、400字节和500字节的有效载荷,第3个段的序号为900。若主机乙仅正确接收到第1和第3个段,则主机乙发送给主机甲的确认序号是( )(5.0分)
A、300
B、500
C、1200
D、1400
我的答案:B:
500
;得分: 5.0分
3【单选题】TCP协议的连接建立需要( )次握手?(5.0分)
A、二
B、三
C、四
D、五
我的答案:B:
三
;得分: 5.0分
4【单选题】通常情况,TCP协议的连接释放需要( )次挥手?(5.0分)
A、二
B、三
C、四
D、五
我的答案:C:
四
;得分: 5.0分
5【单选题】已知TCP通信双方是A和B, A发起建立连接过程, A的初始序号为100,B的初始序号为200,请问,第三次握手中报文段的确认号是( )。(5.0分)
A、100
B、199
C、200
D、201
我的答案:D:
201
;得分: 5.0分
6【单选题】已知TCP通信双方是A和B, A发起建立连接过程, A的初始序号为100,B的初始序号为200,第三次握手没携带数据,请问数据传送阶段中A给B发送的第一个报文段的序号是( )。(5.0分)
A、101
B、100
C、200
D、99
我的答案:A:
101
;得分: 5.0分
7【单选题】已知TCP通信双方是A和B,A发送给B的最后一个报文段的序号为7000,数据部分长度为1000字节,此刻假设A主动发起连接释放请求,请问第一次挥手的报文段序号为( ),第二次挥手的报文段确认号为( )。(5.0分)
A、8000,8001
B、7999,8000
C、8001,8000
D、8001,8002
我的答案:A:
8000,8001
;得分: 5.0分
1【多选题】TCP协议的连接管理过程包含三个阶段:( )、( )和( )?(6.0分)
A、 连接建立
B、数据传送
C、连接释放
D、连接管理
我的答案:ABC:
A; 连接建立;
B;数据传送;
C;连接释放;
得分: 6.0分
2【多选题】TCP连接建立过程中 不会 涉及到下面哪些TCP报文段?( )(6.0分)
A、SYN
B、SYN+ACK
C、ACK
D、FIN
E、FIN+ACK
我的答案:DE:
D;FIN;
E;FIN+ACK;
得分: 6.0分
1【填空题】主机A向主机B发送了三个TCP报文段,序号分别为30、100、180,请回答以下问题。(所有空只填写数字)
(1)第一个报文段携带了 (1) 字节的数据。
(2)主机B收到第一个报文段后发给A的确认号是 (2) 。
(3)主机B收到第二个报文段后发回的确认号是 (3) 。
(4)主机B收到第三个报文段后,发回的确认号是280,窗口字段为300,试问:A发送的第三个报文段携带了 (4) 字节数据,A接下来可以发送的起始字节为 (5) ,结束字节为 (6) 。(36.0分)
我的答案:得分: 36.0分
第一空: 70
第二空: 100
第三空: 180
第四空: 100
第五空: 280
第六空: 579
请问该TCP报文段的实际窗口值为 (1) ,窗口扩大移位值为 (2) (12.0分)
我的答案:得分: 12.0分
第一空: 132352
第二空: 8
log2(256)
1【判断题】TCP通信双方通过三次握手建立连接,前两次握手的报文段都不携带数据(有效载荷),第三次握手的报文段可以带数据,也可以不带数据。(5.0分)
我的答案:√
得分: 5.0分
2023-6-15 13:21:33
2023-6-15 13:25:41
你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。
祝大家逢考必过
点赞收藏关注哦