TCP---传输控制协议

TCP—传输控制协议

是一种面向连接的可靠传输协议。可靠,有序,无丢失和无传输

特点:

  • TCP是一种面向连接的传输协议

  • 每一条TCP连接有且只能存在两个端点,形成一种端对端连接形式。

  • 可靠、有序、无丢失和无重复

  • TCP时提供全双工通讯

    • 发送缓存
      • 想要发送的应用层数据
      • 已经发送但未收到确认的数据
    • 接收缓存
      • 按序到达但是还未被应用程序提取的数据
      • 乱序到达的数据
  • TCP是面向字节流

    建立TCP连接的时候需要知道内容

源/目IP、源/目端口----->TCP绘画的四元组信息
套接字:IP:port

可靠性

TCP的可靠性是同过四个机制来进行的

  • 确认机制:传输确认每收到一个数据端均需要进行一次确认。
  • 重传机制:当一个数据端中的某个报文丢失,会提醒重传丢失的报文
  • 排序机制:传输一个数据端,呗分为多个报文,从不同路径传输最终到达目的地顺序会被打乱,需要重新排列组合,回复原石报文内容
  • 流控机制(滑动窗口机制):调节窗口大小来,对流量进行控制
    • 窗口大小:指无需等待确认就可以连续发送的最大数据量
确认机制
  • 累计确认

确认序列号表面是接受方期望收到发送方发送的下一个字节的序号;且表示之前的所有数据均已接受—累计确认(默认)

  • 选择确认

若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据;
通过 选择确认,
可以只传送缺少的数据而不重传已经正确到达接受方的数据。

选择确认机制也是需要进行协商的

排序机制
  • MTU—最大传输单元(针对设备接口的概念)不是固定的,根据链路类型来(e.g.以太网中MTU=1500字节)
  • MSS—最大段长度—TCP分段,在可选项中填充–该参数是需要在TCP建立握手过程中通过前两次SYN报文段来进行协商确定——只有date部分没有传输层段
  • PMTU—路径MTU发现协议—在一条传输路径中各个设备的MTU不相同,需要使用PMTU来确定MTU
    • (工作过程:起始段发送一个向目标地点的数据包,里面除了源目端口其余用0填充,发送到下个比它MTU小的节点,那个设备丢弃该数据包,并且回复一个它的MTU给起点,重复操作直到目标回消息给它)
重传机制

1.超时重传

  • RTT—往返时间(TCP报文发送完成的时刻到接收到该报文对应的ACK报文的时刻的差值)

  • RTO—超时重传时间(TCP超时重传定时器的超时时长)

  • RTO略大于RTT时间—>动态变换的数值,加倍的形式进行变化

    • RTO太大了
      重发就慢,丢了还要过很久才重发,导致TCP连接没有充分利用网络,网络的利用率低,进而导致TCP端到端传输的延时长,性能差。
    • RTO太小了
      重发得太快,会导致没有丢的包就重发。于是网络上存在大量的无意义的重发报文,一来占用大量带宽会,二来会增加网络拥塞,会导致更多的超时,然后更多的超时双导致更多的重发。

2.快速重传

  • 在TCP中,快速重传机制是一种错误控制机制,用于在检测到丢包时快速重传丢失的数据包,如果发送方连续收到三个相同的ACK,它会推断相对应的数据包可能已经丢失,并立即重传该数据包而不是等待重传计时器超时(RTO时间到达)。
    • 如果ACK(n)出现三次则重传数据包n
流控机制—流量控制机制

如何确定丢失的是哪一个报文
在这里插入图片描述

窗口:指定的是无需等待确认应答,而可以继续发送数据包的最大值。

窗口大小体现在缓存的大小
窗口大小:在这里插入图片描述

TCP的数据流控制机制是为了确保发送方的数据发送速率不会过快,以至于接收方来不及处理。这个机制通过滑动窗口来实现,它允许发送方在接收方确认接收数据之前发送一定数量的数据。

  1. 滑动窗口:发送方和接收方都维护一个窗口。发送方的窗口限制了它可以发送但还未被确认的数据量,而接收方的窗口限制了它可以接收但还未处理的数据量。
  2. 接收窗口:接收方在确认报文中告诉发送方其接收窗口的大小,这个大小表示接收方还能接收多少数据。如果接收窗口变为0,发送方必须停止发送数据,直到接收窗口的大小再次变为正数。
  3. 发送窗口调整:发送方根据接收到的接收窗口大小调整自己的发送窗口大小,以控制发送速率。
  4. 零窗口探测:如果发送方收到的接收窗口大小为0,它会定期发送零窗口探测报文,以检测接收方窗口是否已经打开(即接收方是否已经处理了数据并有空间接收新数据)。
  5. 窗口更新:当接收方处理了一些数据并有更多空间可用时,它会发送一个窗口更新报文,告知发送方新的接收窗口大小,发送方随后可以根据这个新大小发送更多数据。

TCP要求发送方依据接收窗口rwnd来控制数据的发送量。rwnd等于接收方接收缓存大小减去已存数据量大小 即rwnd变量是可变的。

TCP头部的信息

在这里插入图片描述

ACK确认位:当ACK=1时,确认序列号有意义,在连接建立后所有传输的报文端都必须将该标记位置为1
SYN同步位:代表连接请求
FIN中止位:表明此报文端发送方数据已发送完毕,要求释放连接。
RST复位:当TCP连接出现严重错误时,必须释放连接,然后重新建立传输连接
URG紧急位:当URG=1时,表面此报文中存在紧急数据,是高优先级数据,应尽快传输给应用层程序处理,不再缓存在排队。配合紧急针使用
PSH推送位:当PSH=1时,接收方应尽快交付数据给应用层程序,

![请添加图片描述](https://img-blog.csdnimg.cn/direct/0a26efb7b92d4ab78af0ba44f894ab7a.jpeg

拥塞控制

拥塞控制的基本条件。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做拥塞(congestion);若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。(就像没有红绿灯的十字路口,会有点堵塞,如果没有交警的疏导,有可能会堵死

TCP的拥塞控制

  • 慢启动
  • 拥塞避免
  • 快速恢复
  • 快速重传

在这里插入图片描述

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值