TCP协议综合笔记

第二章,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. 提高网络效率

延迟确认:在接收到一定量的数据后再发送确认应答,提高应答效率。

捎带应答:减少确认报文和数据报文的分离,节省传输资源。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值