前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >传输层协议总结

传输层协议总结

原创
作者头像
_春华秋实
修改2023-08-29 18:34:43
2170
修改2023-08-29 18:34:43
举报
文章被收录于专栏:_春华秋实_春华秋实

传输层就是在信纸的空白上写上新的“收信人”信息。每一所房子【某一个终端】会配备一个管理员(传输层协议)。管理员从邮差手中接过信,会根据“收信人”,将信送给房子中的某个人。使用端口号(port number)来识别收信人(某个进程)。

传输层协议

  • TCP 面向字节流服务
    • 面向连接,可靠,有序的协议
    • 通过滑动窗口、拥塞控制实现可靠和速度
    • 应用层提供的数据是一串无结构的字节流,传输层可以对数据进行分段,数据没有长度限制
  • DUP 面向报文服务
    • 无连接,不可靠,无序的协议
    • 应用层提供的是一系列报文,传输层不对报文进行分割和拼装,报文长度受限制

UDP

面向报文、无连接、差错检验、表示不同应用进程(绕过TCP协议,实现相对简单的快速通信)

协议分析

语法:格式,包括四个控制字段(发送端口、接收端口、长度、检验和)在IP分组的基础上,增加了源和目的端口号、检验和,因此可以解决发送进程和接收进程的标识问题语义:

  • 接收端发现UDP数据错误就丢掉
  • 有相应端口号对应的进程,把数据交给应用进程
  • 没有相应端口号对应的进程,则丢弃数据 没有时序,时序体现报文之间的关联性,而UDP每个报文是独立的

TCP

面向字节流、面向连接、表示不同应用进程、差错控制、拥塞控制

TCP 的连接管理

运输连接有三个阶段:连接建立、数据传输、连接释放

TCP连接:每个连接有四个参数(两个IP 保存在 IP 地址头部,两个端口号 保存在 TCP 头信息,序列号和应答号),内核中的TCP模块生成连接之后,将连接分配给进程使用。

为什么 TCP 是面向连接的

UDP通讯有四个参数:源IP、源端口、目的IP和目的端口。而TCP通讯至少有有六个参数:源IP、源端口、目的IP和目的端口,以及序列号和应答号。

因此对TCP连接的连接概念可以简单理解成为同UDP通讯相比,用序列号和应答号确定了相互之间的连接特征,来保证数据传输的正确性。 参考网站

TCP 有序可靠通信

  • 通过序号保证字节流有序
  • 通过确认应答、记时重发 保证数据发送正确(数据错了、顺序错了、重复接收)
  • 通过滑动窗口(累计确认)保证传输的效率和实现流量控制
  • 保证传递效率 <拥塞控制>

TCP重发:超时重发、快速重发。

在TCP协议中,我们使用连接记录TCP两端的状态,使用编号和分段实现了TCP传输的有序,使用advertised window来实现了发送方和接收方处理能力的匹配,并使用重复发送来实现TCP传输的可靠性。

滑动窗口和累积确认

  • 发送方:发送窗口内的分组都可以连续发送不需要等待对方确认
  • 接收方:不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认

TCP 拥塞控制 保证网络的传输效率和稳定性

拥塞:指分组交换设备中经过某条链路的流量超出链路的传输能力,使得输出队列缓存中等待输出的报文越来越多,以至于发生输出队列溢出报文丢弃的情况

解决拥塞的简单办法:控制发送端流量。

确定发生拥塞:TCP报文过程中发生丢失报文、重传定时器溢出、连续接受多个重复确认应答】->需要调整发送端流量。(参考:计算机网络【七】:可靠传输的实现

拥塞窗口CWND:

慢启动:从小到大逐渐成倍增大拥塞窗口的值。(发送拥塞会设置一个慢开始门限 ssthresh = cwnd /2)

拥塞避免:让拥塞窗口的值缓慢的增大。

快重传:尽早知道个别数据包的丢失。发生数据的丢失连续收到3个重复的确认,发送丢失数据包。

快恢复设置新的慢开始门限为慢开始的一半,重新拥塞避免。

TCP差错控制与传输网络差错控制之间的关系

  • 链路层担负起检错的重责 CRC循环冗余检验(检测数据报的正确性)
  • TCP差错控制不能取代传输网络差错控制的原因(检测数据的正确性)

三次握手

TCP 三次握手丢了包怎么办

硬不硬你说了算!40 张图详解 3 次握手和 4 次挥手

  • SYN 攻击,服务器保持在 SYN-RECV 状态

两次同部位,两次确认位

我需要链接服务器:同部位 SYN,seq 序号为 x

ok,你可以链接:同部位SYN + 确认位ACK

ok,可以链接真开心:确认位ACK(第三次握手可以携带数据)

SYN 同部位 ACK 确认位

seq 发送了多少的序号

ack 确认了多少序号

  • ACK不携带数据不消耗序号。
  • SYN不能携带数据,要消耗一个序号。

某端 发送了多少序号,需要等到对方返回 ACK 才可以确定。

为什么需要三次握手:

  • 三次握手才可以阻止历史重复连接的初始化(主要原因)(两次握手就建立连接,可能建立的是旧的客户端链接)
  • 三次握手才可以同步双方的初始序列号
  • 三次握手才可以避免服务器端资源浪费

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 传输层协议
  • UDP
  • TCP
    • TCP 的连接管理
      • TCP 有序可靠通信
        • 滑动窗口和累积确认
          • TCP 拥塞控制 保证网络的传输效率和稳定性
            • 三次握手
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档