【计算机网络】运输层

【计算机网络】运输层,第1张

计算机网络运输层
  • 1、运输层
  • 2、用户数据报协议 UDP
  • 3、传输控制协议 TCP
  • 4、TCP数据报
    • 4.1 格式
    • 4.2 字段
  • 5、TCP发送窗口机制
    • 5.1 以字节为单位
    • 5.2 发送缓存
    • 5.3 接收缓存
    • 5.4 超时重传
  • 6、TCP确认机制
  • 7、TCP运输连接
    • 7.1 连接建立(三次握手)
    • 7.2 数据传送
    • 7.3 连接释放(四报文握手)
  • 8、TCP的拥塞控制算法及应用
    • 8.1 拥塞控制算法
    • 8.2 拥塞的判断
    • 8.3 拥塞控制流程图

1、运输层

功能:负责两个进程之间的通信(TCP、UDP);复用、分用
数据单位:报文段(TCP)或用户数据报(UDP)
运输层只存在于分组交换网外面的主机中
地位

  • 面向通信部份的最高层
  • 用户功能中的最底层

网络层为主机之间提供逻辑通信
运输层为应用进程之间提供端到端的逻辑通信
运输协议

  • 面向连接的TCP
    | 全双工的可靠通信
  • 无连接的UDP
    | 不可靠信道
  • 对比
2、用户数据报协议 UDP
提供无连接服务
在传送数据之前不需要先建立连接
数据单位:UDP报文或用户数据报
不可靠交付
UDP特点
    (1)UDP是无连接的
    (2)UDP使用尽最大努力交付
    (3)UDP是面向报文的
    (4)UDP没有拥塞控制
    (5)UDP支持一对一、一对多、多对一和多对多的交互通信
    (6)UDP的首部开销小
3、传输控制协议 TCP
提供面向连接的服务
数据单位:TCP报文段
不提供广播或多播服务
提供可靠的、面向连接的运输服务
TCP特点
    (1) TCP是面向连接的运输层协议
    (2) 每一条TCP连接只能有两个端点(点对点)
    (3) TCP提供可靠交付的服务
    (4) TCP提供全双工通信
    (5) 面向字节流
4、TCP数据报 4.1 格式

首部(最小长度为20字节)

4.2 字段
  • 源端口、目的端口:各占2字节
  • 序号:4字节,给传送的数据流中的每一个字节都编上一个序号
    | 值为本报文段所发送的数据报的第一个字节的序号
  • 确认号:4字节,期望收到对方的下一个报文段的数据的第一个字节的序号
  • 确认ACK:只有当ACK=1时确认字段才有效
  • 数据偏移:4字节,单位为32位字(4字节)
  • 保留:6位
  • 紧急URG:当URG=1时,表明紧急指针字段有效
  • 紧急指针字段:16位,指出本报文段中紧急数据共有多少个字节
  • 推送PSH:接收TCP收到PSH=1的报文段,就尽快交付接收应用进程,而不是等整个缓存填满后在交付
  • 复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放来凝结,然后重新建立运输连接
  • 同步SYN:当SYN=1,这是一个连接请求或连接接收报文
  • 终止FIN:用来释放一个连接,当FIN=1表明此报文段是其发送的最后数据,并要求释放运输连接
  • 窗口:2字节,用来让对方设置发送窗口的依据,单位为字节
  • 校验和:2字节
  • 选项:MSS(TCP报文段中的数据字段的最大长度)
5、TCP发送窗口机制 5.1 以字节为单位




5.2 发送缓存
  • 发送应用程序传送给发送方TCP准备发送的数据
  • TCP已发送出但尚未收到确认的数据
5.3 接收缓存
  • 按序到达的、但尚未被接受应用程序读取的数据
  • 不按序到达的数据
  • 发送窗口并不总是和接收窗口一样大
  • TCP标准没有规定不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程
  • TCP要求接收方必须有累计确认的功能,这样可以减小开销
5.4 超时重传

TCP采用了一种自适应算法

  • 记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段往返时间RTT
  • TCP保留了RTT的一个加权平均往返时间RTTs(平滑的往返时间)
  • 第一次测量到RTT样本,RTTs值就取为所测量的RTT样本值。以后每测量到一个新的RTT样本,新的RTTs = (1-a)(旧的RTTs)+a(新的RTT样本)
    | 0<=a<1,RFC6298推荐的a值为1/8,即0.125

超时重传时间RTO

  • 应略大于加权平均往返时间RTTs
  • RTO=RTTs+4*RTTD
    | RTTD是RTT偏差的加权平均值
  • 第一次测量时,RTTD取RTT样本的一半
  • 之后:新的RTTD = (1-β)(旧的RTTD)+β|RTTs-新的RTT样本|
    | β是一个小于1的系数,推荐值为1/4,即025

若报文重传

  • 新的RTO = γ*(旧的RTO)
    | γ经典值为2

" />

6、TCP确认机制
停止等待协议
    发送分组后,暂停发送,等待接收端的确认(ACK)。收到确认之后再次开始发送
    确认丢失
    确认迟到

选择确认SACK(滑动窗口机制中)
    只传送缺少的数据,而不重传已经正确到达接受方的数据
    接受方收到了和前面的字节流不连续的两个字节块
    如果这些字节的序号都在接收窗口之内,那么接受方就先收下这些数据,但要把这些信息准确的告诉发送方,使发送方不再重复发送这些已收到的数据
7、TCP运输连接 7.1 连接建立(三次握手)

三次握手是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误


7.2 数据传送

7.3 连接释放(四报文握手)


A必须等待2MSL时间

  • 为了确保A发送的最后一个ACK报文段能够达到B
  • 防止“已失效的连接请求报文段”出现在本连接中。
8、TCP的拥塞控制算法及应用
  • TCP采用基于窗口的方法进行拥塞控制(闭环控制方法)
  • TCP发送方维持一个拥塞窗口CWND
  • 慢开始门限ssthresh
    | 防止拥塞窗口cwnd增长过大引起网络堵塞
8.1 拥塞控制算法

慢开始(cwnd

  • 从小到大逐渐增大拥塞窗口数值
  • 每一轮cwnd的增加量 = min(N, SMSS)

    N是原先未被确认,现在被刚收到的确认报文段所确认的字节数

拥塞避免(cwnd>ssthresh)(加法增大)

  • cwnd缓慢增大,即每次cwnd加1,拥塞窗口cwnd按线性规律缓慢增长

快重传
快恢复(乘法减小)

  • 不执行慢开始,而是执行快恢复
  • ssthresh = cwnd/2
  • cwnd = ssthresh
  • 开始执行拥塞避免算法
8.2 拥塞的判断

重传定时器超时

  • ssthresh = max(cwnd/2, 2)
  • cwnd=1
  • 执行慢开始算法

收到三个相同(重复)的ACK

  • 执行快重传算法
8.3 拥塞控制流程图

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/922589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存