当前位置:文档之家› TCP报文段的格式与协议分析

TCP报文段的格式与协议分析

实验六TCP 报文段的格式及协议分析

【实验目的】

1、分析 TCP 报文段的格式;

2、了解 TCP 报文段首部结构以及各个字段的内容及其作用;

3、通过观察 TCP 协议的交互掌握TCP 连接建立、数据传输、连接释放的过程。

【实验内容】

1、分析 TCP 报文段的结构,熟悉各个字段的内容、功能、格式和取值范围;

2、编辑 TCP 报文段首部各字段的内容;

3、单个或批量发送已经编辑好的TCP 报文段;

4、分析 TCP 协议的交互过程。

【实验原理】

TCP 是 TCP/IP 体系中面向连接的运输层协议,提供全双工的和可靠交付的服务。TCP 报文段的格式如下图所示:

32 bit

源端口目的端口

TCP

首部数据

偏移

序号

确认号20 字节保留

U A P R S F

窗口

R C S S Y I

G K HTNN

检验和紧急指针

选项和填充

数据

源端口和目的端口:各占 2 个字节,是运输层与应用层的服务接口。

序号:占 4 个字节。 TCP 连接传送的数据流中的每一个字节都被编上一个序号。首部中序

号字段的值指的是本报文段所发送的数据的第一个字节的序号。

确认号:占 4 个字节,是期望收到对方下一个报文段的数据的第一个字节的序号。

数据偏移:占 4 bit,它指出报文段的数据起始处距离TCP 报文段的起始处有多远。实际上

就是 TCP 报文段首部的长度。

保留:占 6 bit ,保留为今后使用。

紧急比特 URG :当 URG=1 时,表明紧急指针有效。它告诉系统报文段中有紧急数据,应尽快传送。

确认比特 ACK :ACK=1 时确认号字段才有效, ACK=0 时确认号字段无效。

推送比特 PUSH :接收方接收到 PUSH=1 的报文段时会尽快的将其交付给接收应用进程, 而

不再等到整个接收缓存都填满后再向上交付。

复位比特 RST :当 RST=1 时,表明 TCP 连接中出现严重差错,必须释放连接。复位比特还 用来拒绝一个非法的报文段或拒绝打开一个连接。 同步比特 SYN :在连接建立时用来同步序号。当 SYN=1 而 ACK=0 时,表明这是一个连接

请求报文段。 对方若同意建立连接, 应在响应的报文段中使

SYN=1 和 ACK=1 。因此,SYN=1

就表示这是一个连接请求或连接接收报文。

终止比特 FIN :当 FIN=1 时,表明此报文段的发送端的数据已发送完毕, 并要求释放运输连

接。

窗口:占 2 个字节,用来控制对方发送的数据量,单位是字节,指明对方发送窗口的上限。 校验和: 占 2 个字节, 校验的范围包括首部和数据两个部分, 计算校验和时需要在报文段前

加上 12 字节的伪首部。 紧急指针:占

2 个字节,指出本报文段中紧急数据最后一个字节的序号。只有当紧急比特

URG=1 时才有效。

选项:长度可变。 TCP 只规定了一种选项, 即最大报文段长度

MSS (Maximum Segment Size)

TCP 连接建立的过程如下图所示:

主机

A

主机 B

主动打开

SY

N , S EQ = x 被动打开

SYN , S E Q = y , A

CK = x

1

确认

确认

A CK = y

1

TCP 连接释放的过程如下图所示:

主机 A

主机 B

应用进程 F

IN , SEQ = x

通知主机 释放连接

应用进程

A C K = x 1

FIN , SEQ = y

, A CK

= x + 1

应用进程

释放连接

A CK = y 1

【实验步骤】

练习一:分析TCP 报文段的格式

1、运行报文仿真编辑器;

2、单击工具栏上的“新建报文”按钮,在弹出的“新建报文” 对话框中选择报文类型为“TCP”,

单击“确定”按钮,报文仿真编辑器自动构造一个TCP 报文段;

3、也可以通过单击工具栏上“打开”按钮,选择安装目录下Data 目录中报文仿真编辑器

存档文件: tcp.pef,报文仿真编辑器显示预存的TCP 报文段;

4、选中报文列表框中的一条记录,报文仿真编辑器中间部分自动显示此条报文记录的协议

结构树;

5、选中协议结构树中的“TCP 首部”结点,报文仿真编辑器右侧部分自动显示当前TCP

报文段首部各个字段的内容;

6、查看 TCP 报文段首部中各个字段的结构和内容,分析各个字段的含义。

练习二:编辑TCP 报文段格式中的字段内容

1、在报文仿真编辑器的右侧修改TCP报文段的各个字段的内容;

2、单击“保存”按钮;

3、查看修改后的字段内容。

练习三:发送和接收TCP 报文段序列

1、运行报文解析器;

2、单击报文解析器工具栏上的“开始捕获”按钮,报文解析器开始捕获数据报;

3、单击报文仿真编辑器工具栏上的“发送报文”按钮,报文仿真编辑器弹出“发送成功”

对话框;

4、单击报文解析器工具栏上的“停止捕获”按钮,在报文解析器左侧报文列表框中查看

所接收到的报文仿真编辑器发出的报文;

5、选中其中一条报文记录,报文解析器中间部分自动显示此条报文记录的协议结构树,

比较是否与发送的报文相同。

练习四: TCP 协议分析

1、单击报文仿真编辑器工具栏上的“打开”按钮,选择安装目录下Data

目录中报文仿真编辑器存档文件:tcp.pef ,报文仿真编辑器显示预存的TCP 报文段;

2、单击报文解析器工具栏上的“开始捕获”按钮,报文解析器开始捕获数据报;

3、单击报文仿真编辑器工具栏上的“发送报文”按钮,报文仿真编辑器弹出“发送成功”

对话框,发送出报文列表框中的报文;

4、可以看到报文解析器接收到报文仿真编辑器发出的报文,单击报文解析器工具栏上的

相关主题