文章目录
传输层
传输层(运输层):
运行在不同主机上的 应用进程 提供直接的通信服务起着至关重要的作用
重点
- 问题
- 两个实体怎样才能在一种会丢失或损坏数据的媒体上可靠地通信
- 控制运输层实体的传输速率以避免网络中的拥塞,或从拥塞中恢复过来。
- 重点
- TCP的流量控制 和 拥塞控制机制
- TCP的连接和释放
- TCP报文格式、UDP数据报格式
一、概述
- 运输层协议为运行在不同主机上的应用进程之间提供 逻辑通信(logic communication) 功能
网络层提供了 主机 之间的逻辑通信
运输层为运行在不同主机上的 进程 之间提供了逻辑通信
-
运输层协议是在 端系统 实现的。(而不是在 路由器)
-
运输协议:TCP、UDP
-
运输层分组称为 报文段(segment)
二、多路复用与多路分解
将主机间交付扩展到进程间交付被称为 运输层的多路复用(transport-layer multiplexing) 与 多路分解(demultiplexing)
一个进程(作为网络应用的一部分)有一个或多个套接字(socket)
在接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的 套接字
多路分解
将运输层报文段中数据交付到正确的套接字的工作
分发功能,将数据转发到正确的套接字(socket)
多路复用
在源主机从不同套接字中收集数据块,并为每个数据块封装上 首部信息 (这将在以后用于分解) 从而生成报文段,然后将报文段传递到网络层
收集,从 socket
中收集信息
三、无连接运输:UDP
(1)概念
UDP(用户数据报协议),它为调用它的应用程序提供了一种不可靠、无连接的服务。
通常,UDP的运输层分组称为 数据段
(2)UDP报文段结构
(3)差错检测
UDP提供校验和功能。
虽然 UDP 提供差错检测,但它对差错恢复无能为力
差错处理方式:
- 丢弃受损的报文段
- 将受损的报文段交给应用程序并给警告
四、可靠数据传输原理
(1)构造可靠数据传输协议
-
经完全可靠信道的可靠数据传输:rdt 1.0
-
经具有比特差错信道的可靠数据传输:rdt 2.0
具有功能:
- 差错检测
- 接收方反馈
- 重传。 自动重传协议(ARQ)
- 经具有比特差错的丢包信道的可靠数据传输:rdt 3.0
重传机制:倒计数定时器(coutdown timer),在一个给定的时间量过期后,可中断发送方。
(2)流水线可靠数据传输协议
主要为了提高 发送方(或信道)的 利用率
不使用停等方式运行,允许发送方发送多个分组而无需等待确认。
解决流水的差错恢复有两种基本方法:
- 回退 N 步(Go-Back-N,GBN)
- 选择重传(Selective Repeat,SR)
(3)回退N步
允许发送方发送多个分组而无需等待确认,但它也受限于在流水线中未确认的分组数不能超过某个最大允许数 N
N 常被称为 窗口长度,GBN 协议也被称为 滑动窗口协议
N 是个确定的值,如何确定?
必须小于或等于序号空间的一般
(4)选择重传(Selective Repeat,SR)
SR接收方将确认一个正确接收的分组而不管其是否按序。
失序的分组将被缓存直到所有丢失分组(即序号更小的分组)皆被收到为止。
例如:
接收方初始时缓存了分组 3、4、5,并在最终收到分组 2 时,才将它们一并交付给上层
五、面向连接的运输:TCP
概念
TCP(传输控制协议),它为调用它的应用程序提供了一种可靠的、面向连接的服务
通常,TCP的运输层分组称为 `报文段**
流量控制
一条TCP连接每一侧主机都为该连接设置了接收 缓存
当该TCP连接收到正确、按序的字节后,它就将数据放入接收缓存
相关联的应用进程会从该缓存中读取数据,但不必是数据刚一到达就立即读取。
流量控制服务(flow-control service) 以消除发送方使接收方缓存溢出的可能性。
拥塞控制(congestion control) TCP发送方可能因IP网络的拥塞而被遏制
TCP 通过让发送方维护一个称为 接收窗口(receive window) 的变量来提供流量控制。
通俗来说,接收窗口用于给发送方一个指示:该接收方还有多少可用的缓存空间
TCP连接管理
- 客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。
该报文段中不包含应用层数据。
但是在报文段的首部中的一个标志位(即 SYN 比特)被置为 1。
- 一旦包含 TCP SYN报文段的IP数据报到达服务器主机。
服务器会从该数据报中提取出 TCP SYN报文段,为该 TCP 连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。
- 在收到 SYNACK 报文段后,客户也要给该连接分配缓存和变量。
六、拥塞控制原理
丢包一般时当网络变得拥塞时由于路由器缓存溢出引起的。
七、TCP拥塞控制
TCP 必须使用端到端拥塞控制而不是网络辅助的拥塞控制
方法:
TCP采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。
-
如果一个TCP发送方感知从它到目的地之间的路径上没有拥塞,则TCP发送方增加其发送速率。
-
如果发送方感知沿着该路径有拥塞,则发送方就会降低其发送速率。
问题
- 一个TCP发送方如何限制它向其连接发送流量的速率呢?
TCP连接的每一端都是由一个接收缓存、一个发送缓存和几个变量(LastByteRead、rwnd等)组成。
运行在发送方的TCP拥塞控制机制跟踪一个额外的变量,即拥塞窗口(congestion window)
拥塞窗口表示为 cwnd, 它对一个TCP发送方能向网络中发送流量的速率进行了限制。
- 一个TCP发送方如何感知从它到目的地之间的路径上存在拥塞呢?
通过丢包事件:
- 出现超时
- 收到来自接收方的3个冗余ACK
- 当发送方感知到端到端的拥塞时,采用何种算法来改变其发送速率呢?
TCP拥塞控制算法(TCP congestion control algorithm)
该算法包括:
- 慢启动
- 拥塞避免
- 快速恢复