4端到端协议-4.2【实验】【计算机网络】
- 前言
- 推荐
- 4端到端协议
- 4.2 TCP协议流捕获与TCP协议分析
- 实验目的
- 实验内容及实验环境
- 实验原理
- 实验过程
- 实验过程演示
- 4.2.1实验章节测验
- 一.单选题(共5题,25.0分)
- 二.阅读理解(共1题,70.0分)
- 三.填空题(共1题,5.0分)
- 最后
前言
2023-6-15 10:24:44
以下内容源自《【实验】【计算机网络】》
仅供学习交流使用
推荐
Wireshark的安装及基本使用【计算机网络】
3网络互联-3.5【实验】【计算机网络】
4端到端协议
4.2 TCP协议流捕获与TCP协议分析
各位同学,大家好,本次实验的内容为TCP协议流捕获与TCP协议分析。
本次实验我们分成四个部分来介绍。我们先介绍实验目的,其次介绍实验内容及环境,再次介绍实验原理,最后演示实验过程。
实验目的
1.理解TCP协议的工作机制;
2.理解TCP协议的报文格式。
实验内容及实验环境
1.实验内容
1)启动Wireshark捕获当前活动网络连接;
2)使用某种工具创建TCP连接,并进行释放。
3)分析TCP的报文格式。
2.实验环境
1)可运行 Windows 操作系统的 PC 一台。
2)每台 PC 具有以太网卡一块,通过双绞线与局域网相连,并可接入因特网;
3)Wireshark 程序(可以从 http://www.wireshark.org/下载)
实验原理
TCP协议的报文格式
TCP协议简介
- TCP (Transmission Control Protocol传输控制协议)是一个面向连接的、端到端的、提供高可靠性服务的传输层通信协议,由IETF的RFC 793所定义。
- 因特网上的大多数应用都把TCP作为传输层的首选协议。
和UDP协议不同,TCP提供面向连接的服务。在传输数据前必须先建立连接,数据传输结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。TCP报文段是在传输层抽象的端到端逻辑信道中传送,该信道是可靠的全双工信道,但该信道不知道其究竟通过了哪些路由器,而这些路由器也不知道其上的传输层是否建立了TCP连接。
TCP协议的特点
- TCP是面向连接的协议
和UDP的工作原理不同,TCP协议的工作原理要复杂的多。在不同节点之间传输数据前,必须先建立TCP连接;数据传输完毕后,需要释放已建立的连接。 - TCP提供面向字节流的可靠交付的服务
TCP协议数据按字节流的方式进行传输。虽然每一个TCP报文段传输的数据大小不同,但每个报文段都包含起始字节数和窗口数量。当数据到达接收端时,可能存在差错、乱序或者重复。为了避免这些错误,接收端先进行校验,然后接收缓存按字节流的顺序将接收到的数据顺序排列,提交到高层,从而提供可靠的交付。 - TCP提供全双工通信
TCP允许通信双方在任何时候都可以发送数据,在任一端都包含发送缓存和接收缓存,既能发送又能接收数据。
TCP报文段的组成
- 首部(header)
- 数据(data)
TCP报文段由首部(header)和数据(data)部分组成,TCP报文段首部的前20个字节是固定的,其后是根据需要而增加的选项。下面这个图给出了RFC793定义的TCP报文段结构。
从当前展示图的下面部分,我们可以看到,发送方应用进程交付给TCP的报文,在添加首部后构造成TCP报文段,然后就向下交付给IP 层。在TCP协议中数据按字节流的方式进行传输。虽然每一个TCP报文段传输的数据大小不同,但每个报文段都包含起始字节数和窗口大小。当数据到达接收端时,可能存在差错、乱序或者重复。为了避免这些错误,接收端先进行校验,然后接收缓存按字节流的顺序将接收到的数据顺序排列,提交到高层,从而提供可靠的交付。
从图的上部我们可以看到
TCP报文段由首部(header)和数据(data)部分组成,TCP报文段首部的前20个字节是固定的,其后是根据需要而增加的选项
下面对TCP首部的各个字段进行介绍。
最前面的两个字段是源端口字段和目的端口字段——各占 2 字节。用于标识应用程序的TCP端口号。
端口是运输层与应用层的服务接口。
端口的作用就是让应用层的各种应用进程,都能将其数据通过端口向下交付给运输层,以及让运输层将其收到的报文段中的数据,向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。
运输层的复用和分用功能都要通过端口才能实现。
下一个字段是序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节我们都会对其编上一个序号。
序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据 的第一个字节的序号。 用于通知对方期望接收下一个报文段的序号。实际上,序号和确认号是 发送方和接收方用来对数据字节计数(非报文段计数)。
数据偏移字段占 4 位,它用于度量从报文段开始位置到数据开始位置的偏移量,即TCP报文段首部长度,因此也称为首部长度字段。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
保留字段——占 6 位,保留为今后使用,但目前固定为0。
URG字段为紧急比特字段,占1比特。 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
ACK字段为确认比特字段,占1位。—— 只有当 ACK置为1 时,标识本报文段携带有确认信息,确认号字段才有效。当 ACK置为0 时,确认号字段无效。
*PSH字段为推送比特字段,占1比特, 接收端 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。 *
RST字段为复位比特字段,占1比特。当 RST置为1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。此外也用于拒绝非法报文段和拒绝打开连接。
SYN字段为同步比特字段,占1比特,同步 SYN置为1 表示这是一个连接请求或连接接受报文,通常需与ACK结合使用。
FIN字段为终止比特字段,占1比特。用来释放一个连接。FIN置为1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段,用于控制对方发送的数据量,进行流量控制,本字段占2字节,单位为字节。
检验和字段,用于TCP报文段的检错,占 2 字节。检验和字段检验的范围包括首部和数据这两部分。同UDP用户数据报一样在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部
紧急指针字段 —— 占 16 位,通常与URG字段配合使用,用于标识在本报文段中紧急数据的最后一个字节序号,即指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
以上介绍了TCP首部的固定部分,其后为选项字段 ,该字段长度可变。通常只使用3个选项,即MSS,SACK,WSopt。
MSS(Maximum Segment Size)指的是最大报文段长度选项、
SACK(Selective Acknowledgment)指的是选择性确认选项
选择确认选项用于下面的情况:
TCP通信时,如果发送序列中间某个数据包丢失,TCP会重传最后一个确认的包 后面的包,这样原先已经正确传输的包也可能重复发送,急剧降低了TCP性能。为改善这种情况,可以使用SACK(Selective Acknowledgment, 选择性确认)技术,使TCP只重新发送丢失的包,不用发送后续所有的包,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据重发了,哪些数据已经提前收到。
WSopt(TCP Window Scale Option)指的是窗口扩大选项
窗口扩大选项 ——占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于把窗口值向左移动 S 位后获得实际的窗口大小。
填充字段,用于保证TCP报文段首部结束和数据部分的起始在32比特的边界上,即使整个首部长度是 4 字节的整数倍。该字段长度不定。
2023-6-15 10:55:40
实验过程
2023-6-15 10:55:44
下面介绍实验过程,主要展示使用Wireshark捕获TCP连接SMTP服务器的过程,分析其中TCP报文段的格式。
使用Wireshark捕获TCP连接SMTP服务器的过程,分析其中TCP报文段的格式。
实验过程演示
提前使用ipconfig
命令查询本机IP地址
查看我们想要连接的远程主机的地址
网易邮箱服务器103.74.29.40
打开WireShark
捕获WLAN
使用telnet命令
连接远程主机25端口
telnet smtp.163.com 25
连接成功后
断开连接
QUIT
打开WireShark
过滤
SMTP
过滤
ip.addr==103.74.29.40
我们可以使用右键菜单中的追踪流->追踪TCP流
查看实际通信的过程
分析TCP连接中的第一次握手
双击NO.18的包
MAC帧部分
可以看到
源 目的 协议类型
IP部分
可以看到
源 目的
TCP部分
可以看到
源 目的 序列号 确认号 头部大小 标志位 窗口信息 选项信息
分析TCP传输的第一个数据包
双击NO.21的包
MAC帧部分
IP部分
TCP部分
分析TCP释放的第一次挥手
双击NO.37的包
MAC帧部分
IP部分
TCP部分
2023-6-15 12:03:00
4.2.1实验章节测验
本次成绩:100
最高成绩:100
重做 还可以重做2次
一.单选题(共5题,25.0分)
1【单选题】
下列关于TCP协议的叙述中,正确的是( )
I.提供无连接服务
II.提供复用/分用服务
III.提供可靠数据传输
(5.0分)
A、仅I
B、仅I、II
C、仅II、III
D、I、II、III
我的答案:C:
仅II、III
;得分: 5.0分
2【单选题】TCP的正式规范是RFC( )?(5.0分)
A、792
B、793
C、794
D、795
我的答案:B:
793
;得分: 5.0分
3【单选题】TCP报文段首部中固定部分的长度是( )个字节?(5.0分)
A、12
B、16
C、20
D、24
我的答案:C:
20
;得分: 5.0分
4【单选题】当TCP的目的端口号为25时,说明应用层可能使用的是( )协议?(5.0分)
A、HTTP
B、FTP
C、TELNET
D、SMTP
我的答案:D:
SMTP
;得分: 5.0分
5【单选题】主机甲与主机乙之间已建立一个TCP连接,双方持续有数据传输,且数据无差错与丢失。若甲收到一个来自乙的TCP报文段,该报文段的序号为1913,确认号为2046,数据部分为100字节,则接下来甲发送给乙的TCP报文段的序号和确认号分别为( )和( )。(5.0分)
A、2047、2012
B、2046、2013
C、2013、2047
D、2046、2012
我的答案:B:
2046、2013
;得分: 5.0分
二.阅读理解(共1题,70.0分)
1【阅读理解】
图为网络嗅探器捕获的数据信息,请根据图中信息,回答以下问题。(70.0分)
(1) [填空题] (8.7分)
第(1)报文段,序号为 (1) ,置1的标志位是 (2)
我的答案:得分: 8.7分
第一空: 0
第二空: SYN
(2) [填空题] (8.7分)
第(2)报文段,序号为 (1) ,确认号为 (2) ,置1的标志位是 (3) 和 (4)
我的答案:得分: 8.7分
第一空: 0
第二空: 1
第三空: SYN
第四空: ACK
(3) [填空题] (8.7分)
第(3)报文段,序号为 (1) ,确认号为 (2) ,置1的标志位是 (3)
我的答案:得分: 8.7分
第一空: 1
第二空: 1
第三空: ACK
(4) [填空题] (8.7分)
第(4)报文段,序号为 (1) ,确认号为 (2)
我的答案:得分: 8.7分
第一空: 1
第二空: 1
(5) [填空题] (8.7分)
第(5)报文段,序号为 (1) ,确认号为 (2) ,置1的标志位是 (3)
我的答案:得分: 8.7分
第一空: 1
第二空: 531
第三空: ACK
(6) [填空题] (8.7分)
图中第(3)报文段的窗口字段值66048字节,代表哪一方(服务器/客户)的接收能力? (1)
第(5)报文段的窗口字段值15744字节,代表哪一方(服务器/客户)的接收能力? (2)
我的答案:得分: 8.7分
第一空: 客户
第二空: 服务器
(7) [填空题] (8.7分)
图中第(6)报文段的序号 (1) ,确认号是 (2) ,它携带 (3) 字节的数据?
第(6)报文段的源端口号是 (4)
我的答案:得分: 8.7分
第一空: 1
第二空: 531
第三空: 152
第四空: 443
(8) [填空题] (9.1分)
图中TCP连接释放之前,服务器发给客户的最后一个字节编号为 (1)
客户发给服务器的最后一个字节编号为 (2)
我的答案:得分: 9.1分
第一空:
152
第二空:
581
三.填空题(共1题,5.0分)
1【填空题】
B收到A的一个TCP报文段,该报文段的部分抓包信息如下:
这时 (1) 方接收能力的体现。
由此可以判断下一时刻, (2) 最多可以发送 (3) 字节的数据给 (4) 。
(注意:第1、2、4空填写A或B)(5.0分)
我的答案:得分: 5.0分
第一空: A
第二空: B
第三空: 16896
第四空: A
最后
2023-6-15 12:16:18
你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。
祝大家逢考必过
点赞收藏关注哦