知识点对应教材为《计算机网络(第7版)》,电子工业出版社
网络层是为主机之间提供逻辑通信,
而运输层为应用进程之间提供端到端的逻辑通信。
无连接的 用户数据报协议 UDP (User Datagram Protocol)
面向连接的 传输控制协议 TCP (Transmission Control
Protocol)
提供无连接服务,不提供可靠交付。
在传送数据之前不需要先建立连接。
传送的数据单位协议是 UDP 报文或用户数据报。
对方的运输层在收到 UDP 报文后,不需要给出任何确认。
TCP 提供可靠的、面向连接的运输服务。
TCP 不提供广播或多播服务。
传送的数据单位协议是 TCP 报文段 (segment)。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
TCP 是面向连接的运输层协议。
每一条 TCP 连接只能有两个端点 (endpoint),每一条TCP 连接只能是点对点的(一对一)。
TCP 提供可靠交付的服务。
TCP 提供全双工通信。
TCP 面向字节流
TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节。
TCP 连接的端点叫做套接字 (socket) 或插口,端口号拼接到 (contatenated with) IP 地址即构成了套接字。
发送方发送完毕后暂停发送,直至收到确认,在收到确认后再发送下一个分组。
发送方超时重传
发送方超时重传
接收方丢弃重复分组并再发送一个确认
自动重传请求 ARQ (Automatic Repeat reQuest),使用确认和重传机制,就可以在不可靠的传输网络上实现可靠的通信。
当往返时间 RTT 远大于分组发送时间 T D T_{D} TD 时,信道的利用率就会非常低
发送方维持发送窗口,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认,从而提高信道利用率。
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。
遇到某个分组丢失的情况,需要再退回来重传已发送过的 N 个分组。
TCP 连接的每一端都必须设有两个窗口——一 个发送窗口和一个接收窗口。
TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
TCP 的滑动窗口是以字节为单位的。
TCP连接的一端根据另一端给出的窗口值构造自己的发送窗口。
TCP连接的一端可以连续把发送窗口内的数据都发送出去,而不需要等待对方的确认。
收到新的确认号,发送窗口向前滑动。
TCP 采用了一种自适应算法,记录报文段的往返时间 RTT
TCP 保留了 RTT 的一个加权平均往返时间 R T T S ∗ ∗ RTT_{S}** RTTS∗∗(这又称为平滑的往返时间**)。
RTO (Retransmission Time-Out) 应略大于上面得出的加权平均往返时间 R T T S RTT_{S} RTTS。
R T T D RTT_{D} RTTD 是 RTT 的偏差的加权平均值。
选择确认 SACK (Selective ACK),接收方收到了和前面的字节流不连续的两个字节块。接收方就先收下这些数据。
**流量控制 (flow control)**就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
TCP利用滑动窗口机制实现流量控制。
TCP 为每一个连接设有一个持续计时器 (persistence timer) ,用于解决互相等待的死锁的问题。
拥塞原因:Σ 对资源需求 > 可用资源
拥塞控制:防止过多的数据注入到网络中,使网络中的路由器或链路不致过载,
TCP 采用基于窗口的方法进行拥塞控制。该方法属于闭环控制方法。
TCP发送方维持一个拥塞窗口 CWND (Congestion Window)
在慢开始阶段,拥塞窗口按指数规律增长。
在每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个 SMSS 的数值。
使用慢开始算法后,每经过一个传输轮次 (transmission round),拥塞窗口 cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间 RTT。
在拥塞避免阶段,拥塞窗口按线性规律增长。
让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。
有**“加法增大”(Additive Increase)** 的特点。
快重传FR (Fast Retransmission) 算法可以让发送方尽早知道发生了个别报文段的丢失。
快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传(即“快重传”)。
快恢复算法FR (Fast Recovery) 算法。
把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。即**“乘法减小”MD (Multiplicative Decrease)。**
路由器的队列通常都是按照**“先进先出”FIFO (First In First Out)** 的规则处理到来的分组
当队列已满时,采用尾部丢弃策略 (tail-drop policy)。
全局同步 (global syncronization):许多 TCP 连接在同一时间突然都进入到同一状态(如慢开始状态)
运输连接的管理就是使运输连接的建立和释放都能正常地进行。
主动发起连接建立的应用进程叫做客户 (client)
被动等待连接建立的应用进程叫做服务器 (server)
TCP 建立连接的过程叫做握手。
握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手。
采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
TCP 连接释放过程是四报文握手
粗实线箭头表示对客户进程的正常变迁。
粗虚线箭头表示对服务器进程的正常变迁。
细线箭头表示异常变迁。