TCP的传输特点和报文格式

传输控制协议(TCP)是TCP/IP体系中面向连接的运输层协议,它提供全双工的和可靠交付的服务。TCP与UDP最大的区别就是,TCP是面向连接的,而UDP是无连接的。TCP比UDP要复杂得多,除了具有面向连接和可靠传输的特性外,TCP还在运输层使用了流量控制和拥塞控制机制

1. TCP的主要特点

TCP是TCP/IP体系中非常复杂的一个协议。下面介绍TCP最主要的几个特点。

(1)面向连接

TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP传送数据之前,必须先建立TCP连接。建立连接的目的是让通信双方为接下来的数据传送做好准备,初始化各种状态变量,分配缓存等资源。在传送数据完毕后,必须释放已建立的TCP连接,即释放相应的资源和变量。这个过程与打电话类似:通话前要先拨号建立连接,通话结束后要挂机释放连接。

(2)点对点的连接

每一条TCP连接只能有两个端点,即每一条TCP连接只能是点对点的(一对一)。TCP连接唯一地被通信两端的端点所确定,而每个端点由二元组(IP地址,端口号)唯一标识,即一条TCP连接由两个套接字(Socket)地址标识。

(3)提供可靠交付

TCP提供可靠交付的服务。这就是说,通过TCP连接传送的数据无差错、不丢失、不重复,并且按序到达

(4)全双工通信

TCP提供全双工通信,允许通信双方的应用进程在任何时候发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

(5)面向字节流

TCP中的“流”(Stream)指的是流入进程或从进程流出的字节序列。 “面向字节流”的含义是,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成一连串的无结构的字节流。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小。

2. TCP报文段的发送

图5-7是TCP发送报文段的示意图。发送方的应用进程按照自己产生数据的规律,不断地把数据块(其长短可能各异)陆续写入TCP的发送缓存。TCP再从发送缓存中取出一定数量的数据,将其组成TCP报文段(Segment)逐个传送给IP层,然后发送出去。

在这里插入图片描述

需要注意的是,图5-7中的TCP连接是一条虚连接,而不是一条物理连接。TCP连接是一种抽象的逻辑连接。这个概念非常重要,一定要逐步地深入理解。

3. TCP报文段的格式

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。TCP报文段分为首部和数据部分,而TCP的全部功能都体现在它首部中各字段的作用。图5-8是TCP报文段及其首部的格式:

在这里插入图片描述

(1)源端口和目的端口:各占2字节。与UDP用户数据报一样,该字段定义了在主机中发送和接收该报文段的应用程序的端口号,用于运输层的复用和分用。

(2)序号:占4字节。序号从0开始,到232-1为止,共232(即4294967296)个序号。TCP是面向数据流的。TCP传送的报文段可看成连续的数据流。在一个TCP连接中传送的数据流中的每一个字节都按顺序编号。

(3)确认号:占4字节,是期望收到的对方下一个报文段的第一个数据字节的序号。TCP提供的是双向通信,一端在发送数据的同时对接收到的对端数据进行确认。

(4)数据偏移:占4位,它指出TCP报文段的数据部分起始处距离TCP报文段的起始处有多远。这实际上就是TCP报文段首部的长度。

(5)保留:占6位,保留为今后使用,但目前应置为0。

(6)URG(紧急指针) :URG=1表明紧急指针字段有效。它告诉接收方TCP此报文段中有紧急数据,应尽快交付应用程序(相当于高优先级的数据)。

(7)ACK:只有当ACK=1时确认号字段才有效;当ACK=0时,确认号字段无效。

(8)PSH(推送) :出于效率的考虑,TCP可能会延迟发送数据或向应用程序延迟交付数据。

(9)RST(复位) :RST=1表明TCP连接中出现严重差错,必须释放连接,然后重新建立运输连接。

(10)SYN(同步) :用来建立一个连接。SYN=1而ACK=0,表明这是一个连接请求报文段。

(11)FIN(终止) :用来释放一个连接。FIN=1表明此报文段的发送方的数据已发送完毕,要求释放运输连接。

(12)窗口:占2字节。窗口值指示该报文段发送方的接收窗口大小,用来控制对方发送的数据量。

(13)检验和:占2字节。检验和字段检验的范围包括首部和数据部分。

(14)选项:长度可变。这里我们只介绍一种选项字段,即最大报文段长度(MSS)。

4. 总结

通过本文,您应该对TCP协议的基础概念、主要特点、报文段发送和报文段格式有了一个清晰的了解。希望这些内容能帮助基础小白快速掌握TCP协议的核心知识,为进一步深入学习打下坚实基础。

图文来源:《计算机网络教程》第六版微课版

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TCP(Transmission Control Protocol)是一种可靠的、面向连接的、基于字节流的传输层协议,它在数据传输过程中能够保证数据的可靠性和有序性。 TCP特点包括: 1. 可靠性:TCP通过数据确认、重传机制、校验和等保证数据的可靠性。 2. 面向连接:在数据传输前,TCP会建立连接,传输结束后再释放连接,保证数据传输的顺序和完整性。 3. 有序性:TCP会对数据进行编号,保证接收端收到数据的顺序与发送端发送的顺序相同。 4. 流量控制:TCP通过滑动窗口机制来控制数据的流量,防止发送端发送过多的数据导致接收端无法处理。 5. 拥塞控制:TCP通过拥塞窗口机制来控制网络拥塞,防止网络拥塞导致数据传输延迟或丢失。 TCP报文格式包括: 1. 源端口号(16位):标识发送端口。 2. 目的端口号(16位):标识接收端口。 3. 序列号(32位):标识本报文段的第一个数据字节的序号。 4. 确认号(32位):期望收到的下一个数据字节的序号。 5. 数据偏移(4位):指示TCP头部的长度,单位为4字节。 6. 保留(6位):保留字段,必须置为0。 7. 标志位(6位):包括URG、ACK、PSH、RST、SYN、FIN六个标志位。 8. 窗口大小(16位):接收端期望收到的数据窗口大小,用于流量控制。 9. 校验和(16位):用于检验TCP头部和数据的一致性。 10. 紧急指针(16位):如果URG标志被设置,则紧急指针指示紧急数据的字节偏移量。 11. 选项:可选字段,包括最大报文段长度、时间戳、SACK等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CongSec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值