概述
一、传输层基本服务
标记:
1. 传输层基本服务
传输层的核心任务是为应用进程之间提供端到端的逻辑通信服务。
主要实现如下功能 :
1. 传输层寻址。
2. 对应用层报文进行分段和重组。
3. 对报文进行差错检测。
4. 实现进程间的端到端可靠数据传输控制。
5. 面向应用层实现复用与分解。
6. 实现端到端的流量控制。
7. 拥塞控制。
领会:
1. 复用与分解的基本概念
支持众多应用进程共用一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程,是传输层需要实现的一项基本功能,称为传输层的多路复用与多路分解,简称复用与分解。
2. UDP与TCP实现复用与分解的方法
传输层端口号为16位整数,其中0~1023 为熟知端口号;1024~ 49151为登记端口号,使用时需要在互联网数字分配结构,IANA登记,防止重复使用;49152~65535为客户端口号或短暂端口号。
传输层协议依据IP地址和端口号实现多路复用与多路分解。
UDP依据二元组<目的IP地址,目的端口号> 来唯一标识一个UDP套接字;
TCP依据四元组<源IP地址,目的IP地址,源端口号,目的端口号> 来唯一标识一个TCP套接字,即标识一条TCP连接。
3. 无连接服务与面向连接服务
无连接服务是指数据传输之前无需与对端进行任何信息交换(即“握手”),直接构造传输层报文段并向接收端发送。
面向连接服务是指在数据传输之前,需要双方交换一些控制信息,建立逻辑连接,然后再传输数据,数据传输结束后还需要在拆除连接。
二、用户数据报协议(UDP)
标记:
1. UDP特点
UDP是Internet提供不可靠、无连接、数据报传输服务的传输层协议。
- 应用进程更容易控制发送什么数据以及何时发送。
- 无需建立连接。
- 无连接状态。
- 首部开销小,8字节。
2. UDP数据报结构
UDP首部只有4个字段,每个字段2个字节:
1. 源端口号
2. 目的端口号
3. 长度:UDP报文中字节数(首部和数据总和)
4. 校验和:接收方检测该报文段是否出现差错(差错检测功能,不能纠错)
领会:
1.UDP校验和及其计算
参与UDP检验和计算的内容3部分:UDP伪首部、UDP首部、应用层数据。
在计算校验和时,所有参与运算的内容按16位对齐求和,求和过程中遇到任何溢出(进位)都被回卷(进位与和的最后一位再加),最后得到的和取反码,就是UDP的校验和。
三、停-等协议与滑动窗口协议
领会:
1. 可靠数据传输基本原理
实现可靠数据传输的措施主要有5条:
1. 差错检测:利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)。
2. 确认:接收方向发送方反馈接收状态。
3. 重传:发送方重新发送接收方没有正确接收的数据。
4. 序号:确保数据按序提交。
5. 计时器:解决数据丢失问题。
2. 停-等协议工作原理
每发送一个报文段后就停下来等待接收方确认,只需要使用1bit编号分组,每次发送一个分组,等收到确认后再发送新的分组。
3. 滑动窗口协议工作原理
不使用停-等协议的停止-等待运行方式,允许发送方在没有收到确认前连续发送多个分组。
两种代表性滑动窗口协议:
- 回退N步协议(Go-Back-N),GBN
- 选择重传协议(Selective Repeat),SR
GBN协议发送窗口大于1,接收窗口等于1;GBN协议的发送方如果超时,则重发所有已经发送但未收到确认的分组;GBN协议采用累计确认。
SR协议每个分组独立确认;每个已发送分组需要独立计时,如果某个分组超时,只需重发该分组;SR协议的发送窗口和接收窗口都大于1。
应用:
1. 停-等协议信道利用率计算
假设发送方发送报文段的时间是tseg(即报文段的传输时延),接收方正确收到该报文段后,处理报文段的时间忽略不计,同时立即回发ACK;接收方发送ACK需要时间tACK,信道利用率USender为:
U
S
e
n
d
e
r
=
t
s
e
g
t
s
e
g
+
R
T
T
+
t
A
C
K
U_{Sender} = frac{t_{seg}}{t_{seg}+RTT+t_{ACK}}
USender=tseg+RTT+tACKtseg
2. 滑动窗口协议信道利用率计算
U
S
e
n
d
e
r
=
W
s
×
t
s
e
g
t
s
e
g
+
R
T
T
+
t
A
C
K
U_{Sender} = frac{W_{s} times t_{seg}}{t_{seg}+RTT+t_{ACK}}
USender=tseg+RTT+tACKWs×tseg
当Ws足够大时,可以使Ws * tseg >= (tseg + RTT + tACK)成立,此时信道利用率为100%。
3. 滑动窗口协议窗口大小与分组序号字段位数之间的约束关系
发送窗口大小与接收窗口大小之和不大于分组序号空间。
假设报文段的序号采用k位二进制位串进行编号,则其编号空间为:0~2k-1,共2k个编号。滑动窗口协议的窗口大小与序列号空间需要满足的约束条件为:
W
s
+
W
r
⩽
2
k
W_{s}+W_{r} leqslant 2^k
Ws+Wr⩽2k
特殊情况下,对于GSN协议Wr=1,则有:
W
s
⩽
2
k
−
1
W_{s} leqslant 2^k -1
Ws⩽2k−1
对于典型的Ws=Wr=W的SR协议,则有:
W
s
⩽
2
k
−
1
W_{s} leqslant 2 ^{k-1}
Ws⩽2k−1
四、传输控制协议(TCP)
领会:
1. TCP特点
TCP提供面向连接、可靠、有序、字节流传输服务。
- TCP是面向连接的传输层协议,应用程序在使用TCP之前,必须先建立TCP。
- TCP提供双全工通信服务,即TCP允许通信双方的应用进程在任何时候都能够发送数据和接收数据。
2. TCP报文段结构
TCP报文段由首部字段和一个数据字段组成。
最少20字节的固定首部
1.源端口号与目的端口号分别占16位,标识发送该报文段的源端口和目的端口,用于多路复用与多路分解来自上层应用的数据。
2. 序号字段与确认序号字段分别占32位。TCP采用累计确认机制。
3. 首部长度字段占4位,指出TCP首部长度,以4字节为单位,例如该字段为5时,表示TCP段的首部长度为20字节。TCP最大首部60字节,选项字段最大40字节。
4.保留字段占6位,目前值位0。
5.URG、ACK、PSH、RST、SYN和FIN字段各占1位,为6位标志位。
- URG=1,表明紧急指针字段有效
- ACK=1,标识确认序号字段有效
- PSH=1,TCP尽快将报文段中的数据交付接收应用进程
- RST=1,TCP出现严重差错,必须释放连接,再重新建立TCP连接
- SYN=1,新建立连接请求控制段或者同意新建立连接的确认段(ACK=1)
- FIN=1表明该TCP报文段的发送数据已经完成,请求释放TCP连接
6. 接收窗口字段占16位,用于向对方通告接收窗口大小(单位为字节),表示接收方愿意接收的应用层数据字节数量,其值是本端接收对方数据的缓存剩余空间,用于实现TCP流量控制
7. 校验和字段16位,类似UDP,包括TCP伪首部、TCP首部、应用层数据3部分,计算方法与UDP相同
8. 紧急指针字段16位,只有URG=1时生效
9. 选项字段的长度可变
10. 填充字段0~3字节,取值全为0,目的是为了使整个首部长度是4字节的整数倍。
3. TCP可靠数据传输机制
TCP的可靠数据传输实现机制包括差错编码、确认、序号、重传、计时器等。 数据重传主要针对两类事件,计时器超时和三次重复确认
基于滑动窗口协议,但是发送窗口大小是动态变化。
TCP的发送窗口取决于流量控制的接收端通告的窗口大小和实现拥塞控制的拥塞窗口大小,取最小值。
Ws=min(RcvWin,CongWin)
发送窗口Ws,接收窗口RcvWin,拥塞控制窗口CongWin
工作机制:
- 应用数据被分割成TCP认为最合适发送的数据款(通常是MSS),封装TCP段,传递给IP
- 当TCP发出一个段后,启动一个计时器,等待目的端确认收到这个报文段。
- TCP首部中设有校验和字段,用于检测数据在传输过程中是否发生差错
- TCP报文段到达可能乱序,根据序号重新排序
- 由于存在网络延迟和重传机制,TCP接收端收到重复报文段,根据序号丢弃重复报文段
- TCP提供流量控制
4. TCP报文段序号与确认序号
序号是每个字节编号,报文段传第一个字节序号;
确认序号是期望接收字节序号;
TCP通常采用累计确认。
5. TCP连接建立过程与连接拆除过程
建立连接三次握手:
- 第一次握手:客户端作为连接建立发起端,选择客户端初始序列号x,向服务器发送(SYN=1,seq=x)的SYN报文段。客户端状态由LISTEN进入SYN_SEND状态,等待服务器确认。
- 第二次握手:服务器收到客户端发送的SYN段后,选择服务器初始序号y,向客户端发送(SYN=1,ACK=1,seq=y,ack_seq=x+1)的SYNACK段。 服务器状态由LISTEN进入SYN_RCVD状态。
- 第三次握手:客户端受到服务器的SYNACK段后,向服务器发送(ACK=1,seq=x+1,ack_seq=y+1)的ACK段,客户端进入ESTABLISHED状态,客户端确认连接已建立;服务器收到ACK段后,也进入ESTABLISHED状态,也确认连接建立。至此双方均确认连接建立成功。
TCP之所以采用三次握手建立连接,是为了确保连接双方彼此完全清楚对方状态,保证可靠、稳定的建立连接,有效预防过期、失效的连接请求到达后,导致无效连接建立。
连接拆除4次挥手:
- 当客户向服务器发送完最后一个数据段后,可以发送一个FIN段(FIN=1,seq=u)请求断开客户到服务器的连接,状态由ESTABLISHED进入FIN_WAIT_1,在这一状态下,只能接收服务器发送过来的数据,不在发送数据。FIN段不封装应用层数据,消耗一个序列号,类似SYN段。
- 服务器收到客户的FIN段后,向客户发送一个ACK段(ACK=1,seq=v,ack_seq=u+1),ACK可以封装应用层数据。服务器状态ESTABLISHED进入CLOSE_WAIT,在这一状态下下,服务器仍然可以发送数据,但不在接收数据。客户收到ACK段后,状态FIN_WAIT_1进入FIN_WAIT_2,仍然可以接收数据,TCP已经关闭了客户端到服务器方向的数据传输,也称为半关闭。
- 当服务器向客户发送完最后一个数据段后,服务器向客户发送FIN段(FIN=1,ACK=1,seq=w,ack_seq=u+1),该FIN段不携带数据,服务器CLOSE_WAIT进入LAST_ACK
- 当客户收到服务器发送的FIN段后,向服务器发送ACK段(ACK=1,seq=u+1,ack_seq=w+1),等待2MSL(MSL最大段生存时间)时间,进入CLOSED状态,最终释放连接;服务器收到最后一次ACK段后,进入CLOSED状态,最终释放连接
6. TCP计时器超时时间设置
采用自适应算法设置超时时间
7. TCP的流量控制
目的是协调协议发送方与接收方的数据发送与接收速度,避免因为发送数据太快,超出接收方的数据接收、缓存和处理能力,致使数据在接收方被丢弃。
TCP通过发送数据段或单独确认段通告剩余接收缓存空间作为接收窗口。
8. 拥塞控制基本概念
通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免拥塞或尽快消除已经发生的拥塞。
拥塞控制策略分为拥塞预防和拥塞消除
9. TCP的拥塞控制
基本思想AIMD(网络未发生拥塞时,逐渐“加性”增大窗口大小,当网络拥塞发生时“乘性”快速减小窗口大小)
采用窗口机制,通过调节窗口的大小实现对发送数据速率的调整。
TCP拥塞控制窗口的调节分为 慢启动阶段 和 拥塞避免阶段 , 慢启动阶段窗口从1个MSS快速增长,达到某个阈值转为拥塞避免阶段;拥塞避免阶段的窗口增长缓慢。
在慢启动阶段,每收到1个确认段,拥塞窗口增加1个MSS,每经过1个RTT,拥塞窗口增长1倍;在拥塞避免阶段,每经过一个RTT拥塞窗口才增加1个MSS。
TCP的拥塞控制算法包括了 慢启动、拥塞避免、快速重传、快速恢复4部分。
- TCP连接新建立时,按慢启动拥塞控制算法调整拥塞窗口。通常在刚开始发送数据报文段时,将拥塞窗口CongWin设为一个TCP最大长度MSS值。每收到一个ACK,CongWin加一个MSS。
- TCP设置一个拥塞窗口阈值Threshold,分割慢启动阶段和拥塞避免阶段。通常CongWin的初值为1,阈值Threshold的初值为16。
- 发送端发生了计时器超时,意味着网络发生拥塞,首先新的阈值设置为Threshold=CongWin/2,即当前拥塞窗口值的一半,同时,新的拥塞窗口设为CongWin=1,重新开始慢启动算法,乘性减小,Threshold下降快,大大减小注入网络中的数据报文段。
- 快速重传的基本思想是接收端收到三次重复确认时,推断被重复确认的报文段已经丢失,立即发送被重复确认的报文段。
- 快速恢复是配合快速重传使用的算法,当发送端收到3次重复确认后,Threshold=CongWin/2,CongWin=Threshold,然后开始执行拥塞避免算法,是TCP推荐算法。
- TCP Tahoe:不管超时还是三次重复确认,Threshold=CongWn/2,CongWin=1
- TCP Reno综合了快速恢复,区别对待:
超时:
Threshold=CongWin/2
CongWin=1
然后慢启动阶段
三次重复确认:
Threshold=CongWin/2
CongWin=Threshold
然后拥塞避免阶段
应用:
1. TCP报文段序号与确认序号的变化
- 发送端初始序号x,建立连接发送给接收端seq=x
- 接收端建立连接确认ACK(seq=y,ack_seq=x+1)
- 发送端发送报文段,seq=x+1,ack_seq=y+1
- 接收端发送ACK(seq=y+1,ack_seq=x+…)
2. TCP流量控制窗口、拥塞窗口、发送窗口的变化
最后
以上就是时尚曲奇为你收集整理的04741计算机网络原理2018年版-第三章 传输层 知识要点一、传输层基本服务二、用户数据报协议(UDP)三、停-等协议与滑动窗口协议四、传输控制协议(TCP)的全部内容,希望文章能够帮你解决04741计算机网络原理2018年版-第三章 传输层 知识要点一、传输层基本服务二、用户数据报协议(UDP)三、停-等协议与滑动窗口协议四、传输控制协议(TCP)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复