1. 传输层服务与协议
- 网络层协议与传输层协议:
网络层:HOST–>HOST
传输层:进程与进程之间的逻辑通信机制 - 多路复用与分用
接收端多路分用:将传输层接收到的信息交给不同正确的进程。
发送端多路复用:将应用层不同进程的数据封装好,交给网络层。
TCP一对一:一个端口连接另一个端口。
UDP一对多:一个端口可以连接多个端口。
2. UDP协议
- UDP特点:
基于IP协议+简单的错误校验;尽力而为,丢失,非按序到达;无连接(无握手,段处理独立)。 - UDP存在价值:
无需建立连接(减少延迟)、实现简单、头部开销少、无拥塞控制(应用层可以更好的调整与控制)。 - UDP校验机制:校验和。
3. 可靠数据传输原理
-
可靠:不错、不丢、不乱
-
rdt协议:可靠数据传输协议–>将不可靠信道转化为可靠信道。
rdt1.0:无差错,只有单纯的收发状态。
rdt2.0:有可能产生位错误,因此引入了校验和、显示差错反馈(NAK/ACK)、以及重传。
rdt2.1:(NAK/ACK)坏掉—>非简单重传(为分组增加序列号)
rdt2.2:无NAK确认消息
rdt3.0:既有可能位错误,也可能丢失分组。–发送方等待合理时间。但是由于停等机制严重限制了使用率。
-
流水线机制
允许发送方在收到ACK之前发送多个分组:更大的序列号、更大的空间缓存分组。 -
滑动窗口协议–>流水线机制的实现
随着协议的运行,窗口在序列号空间内向前滑动。—GBN、SR
(1)GO-Back-N协议
ACK(n):确认到序列号n的分组均已被正确接收。(累积确认机制)发送方TimeOut事件:把序列号大于等于n的并且未收到ACK的所有分组都重传。
接受方:发送最高序列号且被正确接收的分组ACK,只需记住唯一的期望收到的序列号。
乱序到达:直接丢弃–>重新确认序列最大的按需到达的分组,无缓存。
GBN缺点:重复分组太多;只有一个BaseTimer。
(2)Selective Repeat协议
接受方:缓存机制,乱序到达的不丢弃,对每个分组都单独进行确认。
发送方:重传没收到ACK的分组,为每个分组都建立一个timer。
SR缺点:Ns+Nr<=2^k
4. TCP协议
-
TCP特点概述
-
TCP段结构:
序列号:指的是segment第一个字节的编号,连接时随机选择序列号。
ACKs:希望接收到的下一个字节的序列号,累计确认。
乱序到达:无规定。 -
TCP可靠数据传输(如何保证可靠):
(1)定时器超时的设置:RTT–>测量从段发送到收到ACk的时间,多次测量求平均值。只有一个定时器,但是只重传引起超时的字段。
安全边界DevRTT:SampleRTT与ESstimatedRTT的差值。
TimeOutInterval=EstimatedRTT+4*DevRTT
(2)快速重传机制:TimeOut前进行重传
通过重复ACK检测分组丢失:如果收到对同一数据的3次ACk则假定数据丢失。 -
TCP流量控制(发送方)—速度匹配机制:
-
TCP连接管理
(1)(三次握手)为什么需要的是三次?
1>客户端向服务器发送SYN报文段:无数据;SYN标志位置1;传递初始序列号。2>服务器接收SYN报文段,回复SYNACK报文段:服务器分配资源,选取序列号告知客户端。
3>客户端收到SYNACK,答复ACK报文段:可能包括数据,SYN标志位不再置1。
(2)TCP连接关闭
一般情况下,由客户机发起关闭的请求。
1>客户端向服务器发送TCP FIN控制报文段。
2>服务器收到FIN,回复ACK,关闭连接,发送FIN。
3>客户端收到FIN,回复ACK。
4>服务端收到ACK,关闭连接。
(3)TCP连接管理
- TCP拥塞控制
慢启动、拥塞避免、快速恢复。