计算机网络-运输层



To 个人主页 关注不迷路


运输层

重要概念:

  1. 运输层为相互通信的应用进程提供逻辑通信。
  2. 端口和套接字的意义。
  3. 无连接的 UDP 的特点。
  4. 面向连接的 TCP 的特点。
  5. 在不可靠的网络上实现可靠传输的工作原理,停止等待协议和 ARQ 协议。
  6. TCP 滑动窗口、流量控制、拥塞控制和连接管理。

概述

进程间的通信

从通信信息处理的角度,运输层向它上层的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能区的最底层。

IP 层看,通信的两端两台主机。从运输层看,通信的端点不是主机,是主机中的进程。即端到端的通信,是应用进程之间的通信。

运输层重要的功能:

  • 复用。在发送方,不同的应用进程,都可以使用同一个运输层传送数据。
  • 分用。在接收方,剥去报文的首部后能够把数据正确交付目的应用进程

IP 层也存在复用和分用
复用:在发送方,不同协议的数据都可以封装成 IP 数据包发送出去。
分用:在接收方,根据 IP 首部中的协议字段,把剥去首部后的数据应当接收这些数据的协议。

通信的区别:

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

运输层的两种协议

两个协议:

  • 无连接的 UDP
    • 数据单位:UDP 用户数据报
    • 不需要先建立连接
    • 不提供可靠交付
  • 面向连接的 TCP
    • 数据单位:TCP 报文段
    • 发送数据前,必须先建立连接,发送结束后要释放连接
    • 提供可靠交付
    • 不提供广播、多播服务

使用了 UDP、TCP 的应用、应用协议:

应用 应用协议 运输层协议
名字转换 NDS,域名系统 UDP
文件传送 TFTP,简单文件传送协议 UDP
路由选择协议 RIP,路由信息协议 UDP
IP 地址配置 DHCP,动态主机配置协议 UDP
网络管理 SNMP,简单网络管理协议 UDP
远程文件服务器 NFS,网络文件系统 UDP
多播 IGMP,网际组管理协议 UDP
电子邮件 SMTP,简单邮件传输协议 TCP
远程终端接入 TELNET,远程终端协议 TCP
万维网 HTTP,超文本传送协议 TCP
文件传送 FTP,文件传送协议 TCP

运输层的端口

硬件端口不同硬件设备进行交互的接口。
软件端口,是在协议栈层间的抽象的协议端口,是应用层的各种协议进行与运输实体进行层间交互的一种地址。

端口号的分类:

  • 服务器端使用的端口号
    • 熟知端口号(或系统端口号),范围 0-1023。这些数值可以在iana.org查询到。
    • 等级端口,范围 1024-49151。
  • 客户端使用的端口号(或短暂端口号),范围 49152-65535。

用户数据报协议 UDP

UDP 的主要特点:

  • 无连接
  • 尽最大努力交付
  • 面向报文。UDP 对应用层交下来的报文,不合并、不拆分;对 IP 层交上来的 UDP 用户数据报,去除首部,直接给应用层。
  • 没有拥塞控制。无论网路是否拥塞,恒定速率发数据。
  • 支持一对一、一对多、多对一、多对多的交互通信。
  • 首部开销小,只有 8 个字节(TCP20 个字节)

传输控制协议 TCP

TCP 主要特点:

  • 面向连接。通信前先建立 TCP 连接,结束后,释放连接。
  • 一对一服务。TCP 连接只能有两个端点。
  • 可靠交付
  • 全双工通信。允许通信双方的应用进程在任何时候都能发送数据。
  • 面向字节流。TCP 中的流指流入到进程或从进程流出的字节序列。

TCP 的连接

TCP 把连接作为最基本的抽象,每一个TCP连接都有两个端点,TCP 连接的端点叫做套接字(socket)插口

套接字的定义:端口号拼接到 IP 地址即为套接字。

套接字 socket = (IP 地址:端口号)

每一个 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:

TCP 连接 :== {socket01, socket02} = {(IP01:Port01), (IP02,Port02)}

同一个 IP 地址可以有多个不同的 TCP 连接,同一个端口号也可以出现在多个不同的 TCP 连接中。

可靠传输的工作原理

处理思路:

  • 当出现差错时,让发送方重传出现差错的数据
  • 当接收方来不及处理收到的数据时,及时告知发送方适当降低发送数据的速度。

方案一,停止等待协议流程:

  • 发送方发送分组后,等待接收方的确认信息
    • 发送方,接收到确认,发送下一个分组
    • 发送方,一段时间后未说到确认,重新发送分组,即超时重传

优缺点:

  • 优点简单
  • 缺点,资源占用高

方案二,连续ARQ协议(滑动窗口协议)流程:

事先对分组按序排队,假设发送窗口大小为 5

  • 发送方维持发送窗口,发送窗口内的 5 个分组同时发送
    • 接收方一般采用累积确认,对按序到达的最后一个分组发送确认。例如,接收方收到分组 5、6、8、9,只对分组 6 发出确认。
      • 发送方收到分组6的确认,则滑动窗口起始位置回到分组7,再次同时发送滑动窗口中的 5 个分组

累积确认的优缺点:

  • 优点,易于实现
  • 缺点,不能向发送方反映出已正确接收到的所有分组信息

TCP 报文段的首部

TCP 首部的最小长度为 20 字节。

首部中部分重要字段的含义:

  • 确认 ACK。在连接建立后所有传送的报文段都必须把 ACK 置 1.
  • 推送 PSH。尽快将报文交付给应用进程,而不是等到整个缓存区都填满后再向上交付。
  • 复位 RST。TCP 连接中出现严重差错,必须释放连接,然后重新建立运输连接。
  • 同步 SYN。在连接建立时同步序号。
  • 终止 FIN。用来释放一个连接。

TCP 可靠传输的实现

  1. 以字节为单位的滑动窗口
  2. 超时重传时间的选择。即通过一个稳定算法,得出重传时间的大小。
  3. 选择确认 SACK(Selective ACK)。解决的问题是,只传送缺少的数据而不重传已经正确到达接收方的数据。

TCP 的流量控制

流量控制的目的:让发送方的发送速率不要太快,要让接收方来得及接收。

TCP 的传输

数据进入 TCP 的发送缓存后,TCP 报文段的发送时机的机制

  • 第一种机制:TCP 维持一个变量,它等于最大报文段长度MSS,只要缓存中的字节达到 MMSS字节时,则组装成报文段发送出去。
  • 第二种机制:由发送方的应用程序的指明要求发送报文段,即 TCP 支持的推送操作。
  • 第三种机制:由发送发一个计时器期限到了之后,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。

TCP 的拥塞控制

拥塞的定义:计算机网络中的链路容量(即带宽)、交换节点中的缓存和处理机等,都是网络中的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况称为拥塞

引起拥塞的可能原因:

  • 交换节点的缓存的存储空间不够用
  • 处理机处理的速率太慢

拥塞控制的目的,防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

流量控制,往往指点对点通信量的控制,是个端到端的问题。流量控制所要做的是,抑制发送端发送数据的速率,以便使接收端来得及接收。

TCP 拥塞控制的方法

拥塞控制方法的前提假设条件:

  1. 数据是单方向传送的,对方只传送确认报文。
  2. 接收方总有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度来决定。

发送方的限制条件:

  1. 维持一个叫做拥塞窗口cwnd(congestion window)的状态变量.
  2. 拥塞窗口的大小取决于网络的拥塞程度。
  3. 发送方的发送窗口大小等于拥塞窗口大小。

控制拥塞方法的原则:

  • 网络没有发生拥塞,则增加拥塞窗口大小,以便发送更多的分组。
  • 网络发生拥塞,则减小网络窗口,缓解拥塞。

如何知道网络发生拥塞:当发送方未没有按时接收到确认报文,则猜想网络发生拥塞。

TCP 拥塞控制 是一种基于窗口的拥塞控制方法,涉及到的四种算法:

  • 慢开始(slow-start)。随着传输轮次的增加,慢开始的拥塞窗口的大小,是倍数增加。
  • 拥塞避免(congestion avoidance)。随着传输轮次的增加,慢开始的拥塞窗口的大小自动+1,线性增加。
  • 快重传(fast retransmit)。假设有报文段 M1、M2、M3、M4、M5、M6,接收方仅接收到 M1、M2、M4、M5、M6,未收到 M3 时。M4、M5、M6 的回复报文返回对 M2 的确认。当接发送方一连收到三个重复确认,应当立即进行重传 M3(即快重传).
  • 快恢复(fast recovery)。门限值减半,执行拥塞避免算法。

基于拥塞窗口的拥塞控制流程:

  • 初始 cwnd 为 1,门限制为N
  • 启动慢开始算法,直至到达门限值。即 cwnd 为 N 时。
  • 切换为拥塞避免算法,直至 cwnd 值为 N+M。
    • cwnd 为 N+M 时,发生了拥塞,则 cwnd 重置为 1,门限制设置为(N+M)/2。重新执行慢开始+拥塞避免算法。
    • cwnd 为 N+M 时,未发生了拥塞,而是发生了快重传,则执行快恢复算法。即门限值设置为(N+M)/2,继续执行拥塞避免算法。
    • cwnd 为 N+M 时,未发生了拥塞,继续执行拥塞避免算法。
主动队列管理 AQM(Active Queue Management)

场景:网络层的策略对 TCP 拥塞控制影响最大的就是路由器的分组丢失策略,可能造成全局同步

全局同步。因为分组丢失策略导致的超时,误认为发生拥塞,导致进入慢开始。表现为全网的通信量突然下降很多,而在网络恢复正常后,信息量又突然增加很多。

解决思路:不要等到路由器队列长度达到最大值时,才不得不丢弃后面的分组。应该在队列长度达到某个警惕值时,主动丢弃分组。这样可以减缓拥塞,甚至不出现拥塞

AQM 的实现方式:

  • 随机早期检测 RED(Random Early Detection)

TCP 的运输连接管理

运输连接的三个阶段:

  • 建立连接
  • 数据传送
  • 连接释放
TCP 的连接建立

TCP 的连接建立过程中需要解决的三个问题:

  1. 使每一方知道对方的存在
  2. 要允许双方协商一些参数(eg:最大窗口值、是否使用窗口扩大选项、时间戳选项、服务质量)
  3. 能够对运输实体资源(eg:缓存大小、连接表中的项目)进行分配。

三报文握手(三次握手)流程,A 为客户端,B 为服务端:

  • A -> B. SYN=1,seq=x
  • B -> A. ACK=1,ack=x+1,SYN=1,seq=y
  • A -> B. ACK=1,ack=y+1,seq=x+1

seq 窗口的初始序号

Question:三次握手,能否改为四次握手?
Answer:可以,将 B->A 的报文,拆分为两个。一个确认报文(ACK=1,seq=x+1),然后再发送一个同步报文(SYN=1,seq=y)

Question: 为什么最后还要发送一次确认?
Answer:防止已失效的连接请求报文段(在网络中滞留时间过长而被A认为失效的连接,B不认为是失效的)突然传送到B,因而产生错误。
TCP 的连接释放

四次挥手流程:

  • A -> B. FIN=1,seq=u
  • B -> A. ACK=1,ack=u+1,seq=v
  • B -> A. FIN=1,seq=w,ACK=1,ack=u+1
  • A -> B. ACK=1,ack=w+1,seq=u+1
TCP 的有限状态机

TCP 的状态共涉及到 11 个状态的互相转换 ​。​



文章关联:

  1. 概述
  2. 网络层
  3. 运输层
  4. 应用层
  5. 网络安全

你可能感兴趣的:(网络,网络,运输层,tcp,三次握手,四次挥手)