计算机网络-传输层

计算机网络-传输层

三月 01, 2021

传输层功能

  • 为相互通信的进程提供了逻辑通讯
  • 对报文进行差错检测
  • 提供面向连接和无连接服务

传输层协议

  • TCP协议(用户数据报协议)
    • 传输的数据需要分段
    • 建立会话
    • 可靠传输
    • 流量控制
  • UDP协议(用户数据报协议)
    • 一个数据包就可以完成通信
    • 不建立会话
    • 不需要流量控制
    • 不可靠传输

IP与端口号

  • IP地址用于定位服务器
  • 端口号用于定位进程服务
    • 一共由0-65535端口号
    • 0-1023为熟知端口
    • 1024-49151为登记端口
    • 49152-65535为客户端端口

UDP协议

特点

  • 无连接,发送数据前不需要建立连接
  • 使用最大努力交付,不保证可靠传输,不使用拥塞控制
  • 面向报文
  • 支持一对一、一对多、多对一、多对多的交互通信
  • 首部开销8个字节

UDP首部格式

UDP首部格式

首部中校验和的计算需要网络层首部中12个字节参与,因为这部分不属于传输层中,所以也叫伪首部。

TCP协议

特点

  • 面向连接(三次握手)
  • TCP连接仅支持点对点通信
  • TCP提供可靠交付服务
  • TCP提供全双工通信
  • 面向字节流

TCP首部格式

TCP首部格式

  • 序号:数据的第一个字节位于整个文件的多少字节位置
  • 确认号:告诉对方下一次发送整个文件的多少字节位置的数据
  • 数据偏移:TCP首部的长度不固定,所以这个参数用来说明数据需要偏移多少位
  • URG:是否优先传输,不需要排队
  • ACK:确认号是否有效
  • PSH:接受时优先接受
  • RST:TCP会话出现错误,需释放再重连
  • SYN:建立会话的标志
  • FIN:结束会话标志
  • 窗口:控制窗口的大小,处理缓存的上限
  • 紧急指针:URG为1时有效,表明紧急数据在数据中的字节位置
  • 选项:
    • 可以规定最大数据报(MSS)的大小
    • 可以规定是否支持选择性确认
    • 最长40个字节

TCP的点对点连接

TCP连接的两个端点不是主机,不是IP地址,不是应用程序,也不是协议端口号。

而是套接字socket

socket = ip + port

TCP如何确保可靠交付

  • 停止等待协议(缺点:信道利用率低下)
  • 自动重传请求ARQ协议(优化信道利用率)

停止等待协议

  1. 无差错情况

    无差错情况

  2. 超时重传情况

    超时重传情况

  3. 确认丢失情况

    确认丢失情况

  4. 确认迟到情况

    确认迟到情况

连续ARQ协议

连续ARQ协议

当收到ACK确认后,窗口便往后移动

积累确认

  • 不需要每一个都确认,当我们收到确认③时,说明①②也收到了
  • 但是这个导致重复发送

举个栗子:

  • 发送①②③④,③在途中丢失了
  • 收到返回的②的确认后,却收不到③的确认
  • 重发③④过去,其中④重复发送

窗口控制

以字节为单位的滑动窗口技术

  • 当接受到确认报后,发送端才会移动发送窗口,并从缓存中删除确认过的数据

  • 若中途有数据包丢失,根据确认号以及选择性确认,重发丢失的数据包

超时重传时间的选择

新RTTs = (1 - α) * (旧RTTs) + α * (新的RTT样本)

RTTs:加权平均往返时间

α:平滑因子,推荐为1/8

  • α增大,修正幅度增大,适用于变化较大的网络中
  • α减大,修正幅度减小,适用于变化较小的网络中

RTT样本:当前往返时间

TCP如何实现流量控制

  • 每次确认包都可以调整当前窗口的大小

  • 当窗口调整到零时,通信就会停止

    注意:停止的时候发送方也会定期发送窗口测定数据包,确保对方仍在线

  • 接收方需要发送一个确认包调整窗口大小,通信才能继续开始

TCP如何实现拥塞控制

  • 出现拥塞的条件:对资源需求的总和 > 可用的资源

  • 原理:发送方会维护着一个拥塞窗口

慢启动

  • cwnd = [1,2,4,6,8,16]
  • 收到确认包后,cwnd会指数增长
  • cwnd达到16后,每次只会增长1
  • 直至收不到确认包(发生阻塞)
  • 当发生阻塞时,cwnd增长的上限变为发生阻塞时cwnd的1/2
  • 并且cwnd又从1开始增长

注意:慢启动并不是意味着不可能发生网络拥塞,只是按线性增长,使得网络比较不容易拥塞

快重传

  • 当发送方收到接收方3个确认包中确认号时相同的,直接重发确认号的数据包

快恢复

  • cwnd变为发生阻塞时cwnd的1/2

  • 并以加1的速度增长

发送方的发送窗口应该为Min[接收方接受窗口,发送方发送窗口,拥塞窗口]

拥塞控制

拥塞控制&流量控制的区别

  • 拥塞控制:是一个全局过程,涉及到全网络中的所有主机,所有路由以及与降低网络传输性能有关的所有因素。
  • 流量控制:往往只存在于给定的发送端和接收端之间的点对点通信量控制,所做的事情便是抑制发送端发送数据的速率,以便接收方来得及接受。

TCP传输连接管理

  • 三大阶段:连接建立、数据传输、连接释放
  • 连接方式:客户端/服务器方式

连接的建立

连续ARQ协议

第三次握手的必要性:

  • 原因①:确保服务器发送能力正常
  • 原因②:
    • 防止第一个挥手超时,发送第二次
    • 确认第二次握手包后,又收到第一次握手包,
    • 再确认一次,但客户端已经接受到第一次确认包,所以不搭理
    • 但服务端却开辟着资源等待发送端的数据传输,造成了开销浪费

连接的释放

连续ARQ协议

默认1MSL = 2分钟

2MSL存在的意义是防止最后一个包丢失