计算机网络(四)——传输层

2020-04-06  本文已影响0人  花卷呀花卷
image.png

传输层处于一个关键位置,向上为应用层服务,是用户功能中的最底层,向下处于通信部分的最高层。由于网络层协议不可靠,传输层需要提供一个可靠的协议保证应用程序之间的信息传递。

(一)服务

image.png

如上图所示,传输层提供以下服务:

(二)UDP协议

UDP协议是无连接协议,它很简洁,只包括两个基本服务:复用与分用差错控制。它有以下4个优点:

1.UDP报文格式

image.png

(三)TCP协议

TCP协议是有连接协议,相比UDP协议,它需要提供更多功能,它有以下几个特点:

1. TCP报文段

image.png

2. TCP连接管理

两个端点使用TCP协议时,要经历三个阶段:建立连接、数据传送和连接释放。这有点类似于两个人打电话,先拨号,再聊天,最后挂断电话。但是TCP协议在建立连接和释放连接时,稍微有些复杂,因为它要解决三个问题:

2.1 建立连接

TCP建立连续协议需要“三次握手”才能相互确认对方的存在。


image.png image.png

2.2 连接释放

如果需要断开两个进程之间的连接,则需要“四次挥手”。


image.png

TCP连接建立和释放的总结:


image.png

3. 可靠传输

TCP协议将数据以字节流的方式在发送端与接收端之间传输,要对每个字节进行编号,方便接收端向发送端确认信息,如果接收端收到的字节流不连续,那么它将会计算出丢失的字节序号,反馈给发送端,让发送端重传。

3.1 序号

发送端现在缓存区中,将字节流从0开始编号,然后再分组组成多个报文依次发送。如下图:第一个报文的序号是0,第二个报文的序号是3。


image.png

3.2 确认

TCP报文中的确认字段用于发送端与接收端之间确认报文信息。根据上图,如果A、B两个进程之间进行信息传递,当B收到第一个报文段,那么他将会向A发送字段为3的确认号,也就是说,确认号是期望收到对方的下一个报文段的数据的第一个字节的序号

3.3 重传

根据不同情况将重传分为两类:超时和冗余ACK。

3.1 超时

B每接收到一个报文段都会向A发送确认信息,但是如果A在一定时间内接收不到B的确认信息,那么就要重传这一报文段。
由于互联网网络情况变化很大,A等待的时间不能记为固定值,这样会导致传输速率低效,需要自适应算法,将一个报文发出的时间,以及收到相应确认的时间作差,结果记为往返时间RTT,多次记录RTT并进行加权平均计算:


image.png

第一次重传时间根据加权平均RTT计算:


image.png

之后使用下面方式计算:


image.png

3.2 冗余ACK

如果A向B发送1,2,3,4,5个报文段,但是第2个报文段丢失,B接收到1,3,4,5个报文段,于是B向A发送3个对1号报文段的冗余ACK。当A收到对1号报文段的3个冗余ACK时,就立即执行重传。
也就是说,每当接收方接收到比期望序号大的失序报文段到达时,就发送一个冗余ACK,指明下一个期望字段的序号。

4. 流量控制

发送方与接收方两端都设有缓存区,但如果发送法的发送速度与接收方处理数据速度不一致的话,缓存区将有溢出的可能,因此使用流量控制防止数据溢出。

在流量控制方面,接收方要随时告诉发送方能够接受多少字段,方便发送方调整报文段长度,保证接收方的缓存区不会溢出。


image.png

5. 拥塞控制

为防止过多数据注入网络造成网络堵塞,因此用拥塞控制发送方发送速率。
虽然流量控制与拥塞控制都是控制发送方发送数据的速率,但是拥塞控制从全局角度着眼,涉及所有的主机、路由器,而流量控制只是在两个端点之间进行数据传输量的控制。

因此拥塞控制中,要求发送方维护两个窗口:接收窗口和拥塞窗口。

因此发送窗口的取值为:发送窗口的上限值=min[rwnd, cwnd]

5.1 慢开始和拥塞避免

发送方采用慢开始算法与拥塞避免算法相结合发送数据。

image.png image.png

5.2 快重传和快恢复

上一篇下一篇

猜你喜欢

热点阅读