网络基础:TCP报文段格式

文章详细介绍了TCP报文段的完整格式,包括首部各字段的功能,以及TCP连接建立的三次握手过程和连接断开的四次挥手机制。同时,提供了华为系统中两台主机连通的实验配置和测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、理论

1.TCP报文段完整格式

2.TCP报文首部各字段

         3.三次握手与四次挥手

二、实验

1.华为系统测试2台主机连通


一、理论

1.TCP报文段完整格式

TCP通过数据段的交互来建立连接、传输数据、发出确认、进行差错控制、流量控制及关闭连接。整个TCP数据段也分为“数据段头”和“数据”两部分,“数据段头”是TCP为了实现端到端可靠传输而加上的TCP控制信息,而“数据”部分则是由高层(即TCP/IP体系结构中的应用层)来的用户数据。但由于TCP只有一种TPDU格式,所有类型的数据段格式都统一在TCP数据段格式中,不同类型数据段是通过其中的多个控制位来实现的。

TCP 报文是 TCP 层传输的数据单元,也称为报文段。TCP报文段包括TCP首部(20字节)、TCP数据。

表1  TCP报文段完整格式

固定

部分

源端口号

(16位)

目标端口号

(16位)

序号

(32位)

确认号

(32位)

首部长度(4位)

保留

(6位)

U

R

G

A

C

K

P

S

H

R

S

T

S

Y

N

F

 I

N

 窗口大小

(16位)

校验和

(16位)

紧急指针

(16位)

可变

部分

选项
数据部分

2.TCP报文首部各字段

TCP报文首部各字段功能。

  表2  TCP报文首部各字段

字段名占用位数功能
源端口号16写入源端口,表示来源的进程
目标端口号16写入目标端口,表示目标的进程
序号32本报文段所发送数据的第一个字节的编号
确认号32接收方期望收到发送方下一个报文段的第一个字节数据的编号
首部长度4TCP报文段的首部长度
保留6保留今后使用
控制位6

URG(紧急位)

ACK(确认位)

PSH(急切位)

RST(重置位)

SYN(同步位)

FIN(断开位)

窗口大小16现在允许对方发送的数据量
校验和16校验首部和数据这两部分
紧急指针16本报文段中紧急数据的字节数
选项长度可变 可选报头设置

3.三次握手与四次挥手

(1)概念

TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。

三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。

四次挥手:即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。

(2)三次握手

TCP协议位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。

三次握手原理:

第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;

第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;

第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。

其中:SYN标志位数置1,表示建立TCP连接;ACK标志表示验证字段。
 

(3)四次挥手

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

四次挥手原理:

第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态;

第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态;

第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;

第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。

其中:FIN标志位数置1,表示断开TCP连接。
 

(4)状态名词解释

状态功能
LISTEN等待从任何远端TCP 和端口的连接请求。
SYN_SENT发送完一个连接请求后等待一个匹配的连接请求。
SYN_RECEIVED

发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。


ESTABLISHED

表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。

FIN_WAIT_1等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。
FIN_WAIT_2等待远端TCP 的连接终止请求。
CLOSE_WAIT等待本地用户的连接终止请求。
CLOSING等待远端TCP 的连接终止请求确认。
LAST_ACK

等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)

TIME_WAIT等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。
两个存在的理由:可靠的实现tcp全双工连接的终止;
                           允许老的重复分节在网络中消逝。

二、实验

1.华为系统测试2台主机连通

(1)拓扑图

(2)主机IPv4配置

       ① PC1配置

 

       ② PC2配置

 (3)命令

       G0/0/1 接口配置

       ② G0/0/2 接口配置

 (4)测试连通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值