第二章,TCP协议
TCP----传输控制协议
是一种面向连接的可靠传输协议
面向连接:指的是数据传输之前,收发双方需要先建立一条逻辑通路
无面向连接:指的是数据可以自由传输,无需建立逻辑通路
TCP是在不可靠的IP层之上,实现可靠的数据传输能力。数据有序、无丢失、不重复
- TCP提供全双工通信
- 发送缓存
- 存放发送应用程序传输给发送方TCP准备发送的数据
- 存放TCP已发送但是尚未收到确认的数据
- 接收缓存
- 不按序到达的数据
- 按序到达,但未被应用程序接收的数据
- 发送缓存
- TCP是面向字节流的
四元组:源IP、源端口、目IP、目端口。四元组是用来建立一个完整的TCP连接
TCP报文段
tcp既可以运载数据,又可以用来建立连接、释放连接和应答
TCP首部信息,最短20字节
序列号:可以理解为字节流的编号。每发送一个字节的数据,序列号+1
确认序列号:是收到的报文的序列号+收到的数据部分字节大小
确认机制:每收到一个发送方发出的数据,都需要回复一个确认报文。
1、表明接收方期望收到发送方发送的下一个字节的序号
2、代表接收方已经收到了确认序列号之前的所有字节数据
数据偏移:TCP报文段的数据起始处距离TCP报文段的起始处的距离,其本质是在描述TCP首部大小
紧急指针l:与控制位中的URG字段共同使用,当URG=1时,紧急指针有效
紧急数据会被TCP放置在数据部分的最前方,即从第0个字节开始,而紧急指针是为了表明紧急数据的结束位置
例如:紧急指针为70,则紧急数据位置为0字节到69字节
选项字段:最大报文段长度MSS;窗口扩大因子;时间戳;确认机制
标志位:
- 紧急位URG:报文段中包含紧急数据,是高优先级的数据,应尽快传输,不在缓存队列中排队
- 确认位ACK:当确认位置为1,则确认序列号有意义在连接以后所有传输的报文段都必须把ACK置位1。
- 推送位PSH:接收方应尽快将数据交付给应用程序,不再等待缓存填满再向上提交。
- 复位RST:表明TCP连接中出现错误,必须释放连接,然后重新建立连接
- 同部位SYN:表明这是一个连接请求报文
- 终止位FIN:表明发送方数据已完全发送,要求释放连接
TCP可靠性
确认、重传、排序、流控
排序机制
MSS:数据段中携带的数据字节最大段长度
最大字节数由MSS控制。该参数是需要在TCP连接握手的过程中,通过前两次SYN报文段来进行参数协商
如果双方的MSS数值不同,则选择数值较小的作为传输标准
MSS受到MTU的限制
MTU:最大传输单元
指的是数据链路层在封装成帧时所允许携带的最大数据量,在以太网中,MTU数值为1500字节
MSS===MTU-IP首部-TCP首部
分片:这个操作是由网络层的IP协议来执行
分段:这个操作是由传输层的TCP协议来执行
确认机制
是TCP保障可靠性的核心点。
TCP协议保证对方能够收到本端发送的数据段的方式,就是让对方回复一个确认报文段,这是确认机制的做法
确认报文是唯一一种不需要被确认的数据段信息。
重传机制
RTT/RTO
超时重传----当超过一定时间未收到确认报文,则触发重传机制。
超时重传的判断时间依据RTT(往返时间)参数来判断。RTO被称为超时重传时间
RTT---指的是发送端将数据发出后,到他接收到对端反馈的确认报文之间的这段时间
RTO取值应该略大于RTT,但是也不能太大。RTT并非是固定数值,他是动态变化的数值
超时间隔加倍机制。当连续多次未收到确认报文,设备会认为是网络拥塞过大,将重传时间加倍,因为如果按照原本的重传时间发送报文,很可能造成网络拥塞的加剧
快速重传机制
在TCP中,发送方可以通过接收方的反馈,在超时时间到达前,意识到数据包丢失的现象,并进行重传。这种情况一般出现在接收端收到一个失序报文的情况下。
快速重传机制不是因为RTO时间到达而触发,这种重传机制是以数据包为驱动的一种重传机制。
当接收方意识到自己所期望的报文段丢失,服务器不能调取失序报文,并且不能确认这些报文信息。
因为TCP协议无法直接发送一个否认确认报文(没有办法直接发送一个数据报文段,告诉对端自己哪个报文没有收到),所以,TCP将采用冗余ACK的方式来完成缺失报文通告。
SACK机制---选择确认机制
TCP在可选项字段中,添加了一个变量。该变量中携带的就是自己已经收到的数据信息
TCP的确认是累积确认机制,正确接收失序的报文段是不会被接收方逐个确认的。因此,发送方在重传的时候,需要将冗余ACK报文及之后的报文段都重新发送一遍----导致资源浪费
选择确认机制,不是所有运行TCP协议的设备都支持的。该机制会在TCP三次握手的前两次SYN报文中进行协商
TCP的流量控制机制
是属于TCP的传输效率问题。
滑动窗口
TCP头部中的”窗口值“是TCP实现流控的核心参数。
窗口的大小是可以指定的,该参数的大小指的是无需等待确认应答,而可以继续发送数据包的最大量。
窗口的大小,其实体现的就是接收缓存区的大小。
TCP要求发送方依据对方的接收窗口(rwnd)来控制数据的发送量。最初TCP的接口窗口===接收缓存区大小。接口窗口会随着时间的增长而动态变化。
如何提高网络利用率
延迟确认应答机制
收到数据以后不立即返回确认报文,而是延迟一段时间。
- 在没有收到2*MSS的数据为止,不做确认应答。
- 其他情况,最大延迟0.5秒发送确认应答。
捎带应答
TCP的确认应答和回执数据可以通过一个数据包进行发送。
延迟确认机制和捎带应答一般共同使用。
1. TCP协议概述
传输控制协议(TCP) 是一种面向连接的、可靠的传输协议,确保数据传输的 有序性、无丢失、不重复。
TCP 在不可靠的IP层之上,提供可靠的端到端数据传输。
它是全双工通信,并通过发送缓存和接收缓存管理数据的发送和接收。
TCP 是面向字节流的协议。
2. TCP 报文段和首部
TCP 报文段不仅传输数据,还用于建立连接、释放连接和应答。
TCP 首部最短为 20 字节,包含序列号、确认序列号、标志位、窗口大小等重要字段。
核心字段:
序列号:用于标识字节流的编号,每发送一个字节,序列号 +1。
确认序列号:标识接收方期望接收的下一个字节序号,同时代表接收方已成功收到此前的所有字节。
数据偏移:描述 TCP 报文段的数据起始处,即首部大小。
标志位:用于控制数据传输的状态,如紧急位(URG)、确认位(ACK)、推送位(PSH)、复位位(RST)、同步位(SYN)、终止位(FIN)。
3. TCP 可靠性机制
确认机制:通过确认报文来保证发送的数据段被正确接收。
重传机制:
超时重传(基于 RTT 和 RTO):如果在超时之前没有收到确认报文,将进行重传。
快速重传:在接收方收到失序数据时,通过冗余确认机制触发重传,而非等待超时。
SACK(选择性确认机制):优化重传过程,只重传未被确认的部分数据,减少资源浪费。
4. TCP的流量控制机制
滑动窗口机制:通过窗口大小来控制无需确认即可发送的数据量,避免发送数据超过接收方缓存能力。窗口值反映的是接收方的接收缓存区大小。
延迟确认机制:延迟发送确认报文,等待接收更多数据以提高效率。
捎带应答机制:确认报文与数据回执可通过同一个数据包发送,进一步提高网络利用率。
5. TCP的分段与分片
MSS(最大报文段长度) 控制每个TCP 数据段中可携带的最大字节数。
MTU(最大传输单元) 是链路层所能传输的最大数据帧。TCP 通过分段机制与 IP 层的分片机制配合传输数据。
6. TCP三次握手与四次挥手
三次握手:用于建立连接,双方交换控制信息(如初始序列号等),确保通信的可靠性。
四次挥手:用于释放连接,确保所有数据都被正确传输和接收。
7. 提高网络效率
延迟确认:在接收到一定量的数据后再发送确认应答,提高应答效率。
捎带应答:减少确认报文和数据报文的分离,节省传输资源。
1万+

被折叠的 条评论
为什么被折叠?



