实验课程名称
计算机网络实验报告
实验项目名称
分析 TCP 协议数据报格式
专 业 班 级
电子信息科学与技术 08 级 1 班
学 生 姓 名
学
号
指 导 教 师
理 学 院
实验时间:2010 年 5 月 25 日
1 / 6
一、 实验名称
实验七 分析 TCP 协议数据包格式
二、 实验目的
掌握 TCP 协议的作用和格式;
分析数据报各字段的含义及作用;
理解三次握手的过程;
学会计算 TCP 校验和的方法;
了解 TCP 的标志字段的作用。
三、 实验器材
计算机及以太网环境。
四、 实验内容(步骤)
1. 打开“命令提示符”窗口,输入:netstat –n 回车。
2. 观察 TCP 状态,记录 Local Address 、Foreign Address 和 State。
可以通过上图观察到,现在的 TCP 状态为空。
3. 在浏览器输入:www.zhjnc.edu.cn ,在“命令提示符”窗口输入:netstat –n 回车。
4. 观察 TCP 状态,记录 Local Address 、Foreign Address 和 State。
通过上图可以观察到,在 TCP 协议下,本地地址套接字、外部地址套接字、状态,依
次列于图中。
5. 比较两次记录的不同之处。
第一次由于未建立任何连接,因此没有任何 TCP 信息,而第二次则成功建立了 TCP 连
接,因此有相应的 TCP 连接信息得到。
6. 打开 Wireshark,选择菜单命令“Capture”“Interfaces…”子菜单项。弹出“Wireshark:
Capture Interfaces”对话框。单击“Options”按钮,弹出“Wireshark: Capture Options”
对话框。单击“Start”按钮开始网络数据包捕获。
2 / 6
7. 单击“Stop”按钮,中断网络协议分析软件的捕获进程,主界面显示捕获到的 TCP 数
据包。
下面对 94 帧的 TCP 数据包进行分析:
由上图可以知道,TCP 协议包括
源端口(2 字节):http80(0050)
目的端口(2 字节)49811(c293)
序号(4 字节):1(相对序号)
期望得到的下一分组序号:518
确认号(4 字节):
首部长度:20 字节
标志(2 字节):0x18(推送,确认)
3 / 6
数据偏移(4 位)
保留(4 位)
紧急 URG:0
确认 ACK:1
推送 PSH:1
复位 RST:0
同步 SYN:0
终止 FIN:0
窗口(2 字节):7168
检验和:0x66cb
序号确认分析:正在网络中传输的序号 517
TCP 数据报数据分组 517 字节
经过上述分析可知,捕获到的 TCP 数据包是符合 TCP 协议格式的,TCP 协议格式如下:
TCP 协议是面向连接的、端到端的可靠传输协议,它支持多种网络应用程序。TCP 必
须解决可靠性,流量控制的问题,能够为上层应用程序提供多个接口,同时为多个应用程序
提供数据,TCP 也必须能够解决通信安全性的问题。
1.
TCP 的封装
2.
TCP 首部格式
0
16
31
源 端 口(16 比特)
目 的 端 口(16 比特)
HLEN
(4 比特)
保留
(6 比特)
U
R
G
A
C
K
P
S
H
校 验 和(16 位)
序 号 (32 比特)
确 认 号 (32 比特)
R
S
T
S
Y
N
F
I
N
窗 口 大 小(16 比特)
首部
紧急指针(16 比特)
选 项 与 填 充(≤40 字节)
数 据(必须填充成 16 比特的整数倍)
TCP 段格式
源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。
运输层的复用和分用功能都要通过端口才能实现。
序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个
序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字
4 / 6
节的序号。
HLEN 字段——占 4 bit,它指出首部长度,单位为:32 bit 字(4 字节)。正常
的 TCP 首部长度是 20 字节。
6 个标志字段——占 6 bit。紧急比特 URG:当 URG 1 时,表明紧急指针字段
有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认比特 ACK:只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认
号无效。 推送比特 PSH (PuSH):接收 TCP 收到推送比特置 1 的报文段,就尽
快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。复位比
特 RST (ReSeT):当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机
崩溃或其他原因),必须释放连接,然后再重新建立运输连接。 同步比特 SYN :
同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。 终止比特
FIN (FINal):用来释放一个连接。当 FIN 1 时,表明此报文段的发送端的数据
已发送完毕,并要求释放运输连接。
窗口字段 —— 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。
TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对
方以确定对方的发送窗口的上限。
检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在
计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一
个字节的序号。
8. 观察协议树区中 TCP 数据包结构,是否符合 TCP 报文格式。从“会话分析”中找出此
连接的三次握手的数据包,对此数据包进行分析。记录标志字段的值。
从以上观察可知,TCP 数据包结构符合 TCP 报文格式。为了实现数据的可靠传输,TCP
要在应用进程间建立传输连接。TCP 使用三次握手建立连接。
从上图中可以看出,第一次握手,SYN=1,Seq=0(相对序号);
建立连接前,服务器端首先被动打开其熟知的端口(上图为 80 端口),对端口进行监听。
当客户端要和服务器建立连接时,发起一个主动打开端口的请求(临时端口)。然后进入三
次握手过程:
第一次握手:由要建立连接的客户向服务器发出连接请求段,该段首部的同步标志 SYN 被
置为 1,并在首部中填入本次连接的客户端的初始段序号 SEQ(上图 SEQ=acbdbbee,相对
序号为 0)。
5 / 6
第二次握手,SYN=1,ACK=1(相对确认序号),Seq=0(相对序号);
第二次握手:服务器收到请求后,发回连接确认(SYN+ACK),该段首部中的同步标
志 SYN 被置为 1,表示认可连接,首部中的确认标志 ACK 被置为 1,表示对所接收的段的
确认,与 ACK 标志相配合的是准备接收的下一序号(ACK=acbdbbef),该段还给出了自己
的初始序号(例如 SEQ=1663aa4b)。对请求段的确认完成了一个方向上连接。
第三次握手,ACK=1(相对确认序号),Seq=0(相对序号),
第三次握手:客户向服务器发出的确认段,段首部中的确认标志 ACK 被置为 1,表示
对所接收的段的确认,与 ACK 标志相配合的准备接收的下一序号被设置为收到的段序号加
1(ACK =1663aa4c)。完成了另一个方向上的连接。
6 / 6