计算机网络(第七版)谢希仁 5章 运输层笔记

笔记基于谢希仁老师的计算机网络笔记(第七版)
第5章
5章 运输层
在这里插入图片描述

第5章 运输层

5.1 运输层概述

5.1.1 进程通信

1、为什么需要运输层?

​ 从IP层来看,通信的两端是两台主机,但两台主机通信就是两台主机中地应用进程互相通信

​ 从运输层角度看,通信真正的端点不是主机而是主机中的进程

二者区别:

​ 网络层为主机间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信

2、复用与分用

​ 1)复用:指发送方不同的应用进程都可以使用同一个运输层协议传送数据

​ 2)分用:接收方的运输层在剥去报文首部后能够把这些数据正确交付目的应用进程

3、运输层会对收到的报文进行差错检测

4、运输层两种运输协议

​ 面向连接的TCP协和无连接的UDP

​ TCP提供全双工的可靠通信,UDP提供不可靠通信

5.1.2 运输层两个主要协议

​ 用户数据报UDP和传输控制协议TCP

1、用户数据报UDP

​ 1)报文名称:UDP用户数据报

​ 2)传送数据是否需要建立连接:不需要。UDP不提供可靠交付

2.传输控制协议TCP

​ 1)报文名称:TCP报文段

​ 2)传送数据是否需要建立连接:需要。TCP提供可靠的、面向连接的运输服务。TCP不提供多播或广播服务

5.1.3 运输层端口

1、协议端口号

​ 简称端口,通过端口实现对TCP/IP体系中的应用进程进行标识

2、端口号位数:16位

3、端口号分类

类别熟知端口号(服务器端使用的端口号)登记端口号(服务器端使用的端口号)客户端使用的端口号
数值0-10231024-4915149152-65535
描述指派给特定应用,又称系统端口号指派给没有熟知端口号应用使用客户进程使用,又称短暂端口号

5.2 用户数据报协议UDP

5.2.1 UDP概述

1、UDP用户数据报只在IP数据报服务上增加了复用、分用和差错检测等功能

2、UDP特点

​ 1)UDP是无连接的:发送数据前不建立连接

​ 2)UDP尽最大努力交付:不保证可靠交付

​ 3)UDP面向报文:即UDP对应用层交下来的报文不合并也不拆分,即UDP一次交付一个完整的报文

​ 4)UDP无拥塞控制:网络出现拥塞不会是源主机发送速率降低

​ 5)UDP支持一对一,一对多,多对一,多对多交互通信

​ 6)UDP首部开销小:首部8字节,TCP首部20字节

5.2.2 UDP的首部格式

在这里插入图片描述
​ 1)UDP首部8字节,四个字段,每个字段各占2字节

​ 2)长度:此长度位整个UDP用户数据报的长度

​ 3)接收方UDP发现受到的报文中的目的端口号不正确,就丢弃该报文,并由ICMP发送“端口不可达”差错报文

​ 4)检验和:

​ 计算检验和时需要在首部前增加12个字节的”伪首部“。”伪首部“既不向下传递也不向上递交。

​ 检验和计算方法同IP数据报检验和

​ 计算时若UDP用户数据报非偶数个字节,则在最后填入全0字节,此全0字节也不发送

​ 伪首部第四字段为17,标识使用UDP

5.3 传输控制协议TCP概述

5.3.1 TCP最主要的特点

1、TCP是面向连接的运输层协议

​ 应用程序在使用TCP协议前,必须先建立TCP连接。传送完数据后,释放TCP连接

2、每一条TCP连接只能有两个端点

3、TCP提供可靠交付的服务:无差错、不丢失、不重复、按序到达

4、TCP提供全双工通信

5、面向字节流:TCP不保证接收方应用程序受到的数据块和发送方发送的数据块具有对应大小关系

​ 但接收方受到的字节流必须和发送方应用程序发出的字节流完全一样

5.3.2 TCP的连接

1、TCP连接的端点:套接字

2、套接字:又称插口,有IP地址 + 端口号构成

​ 每条TCP连接被通信两端的两个端点唯一确定

5.4 可靠传输的工作原理

​ 实现可靠传输需要实现:当出现差错时让发送方重传出现差错的数据;接收方来不及处理受到的数据时,及时告知接收方适当降低发送数据的速度

5.4.1 停止等待协议

1、无差错情况

​ A向B发送分组M1,A收到B的接收M1确认后,再发送下一个分组

2、出现差错

​ B接收M1时出错,丢弃M1。A超时重传。

A需要

​ 1)暂时保存已发送分组的副本,收到确认后再清除

​ 2)分组和确认分组都必须进行编号

​ 3)超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些

3、确认丢失和确认迟到

​ 1)确认丢失:B发送的确认丢失,A超时重传M1。B丢弃重复分组M1,向A发送确认

​ 2)确认迟到:B发送的对M1的确认迟到,A收到重复的对M1的确认,A丢弃该重复确认。这里表示第一个M1的确认A没收到,A超时重传,A收到第二个M1的确认,然后又收到第一个M1的确认,谓之迟到

4、信道利用率:停止等待协议信道利用率太低

​ 为提高传送效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输

5、流水线传输:发送方连续发送多个分组,而不必每发完一个分组必须等待确认

​ 使用连续ARQ协议滑动窗口协议

5.4.2 连续ARQ协议

1、发送方:连续发送位于发送窗口内的分组而不用等待对方确认

​ 有助于提供信道利用率

2、接受方:采用累计确认方式,收到几个分组后,只对按序到达的最后一个分组发送确认,表示此分组之前的分组都正确收到了。

3、累计确认优缺点

​ 优点:容易实现,即使确认丢失也不必重传

​ 缺点:不能向发送方反映出接收方已经正确接收到所有分组的信息。通信线路质量不好时,连续ARQ协议会带来负面影响。

5.5 TCP报文段的首部格式

1、TCP传输的数据单元名称:报文段

2、TCP报文段组成:首部 + 数据

​ 首部最小长度为20字节

3、TCP首部
在这里插入图片描述
1)源端口和目的端口:2字节

2)序号:4字节。也称报文段序号

​ 在一个TCP连接中传送的字节流中的每一个字节都按顺序编号

​ 初始序号在建立TCP连接的时候确定

​ 首部中序号字段指的是本报文段所发送的数据的第一个字节的序号

3)确认号:4字节。是期望收到对方下一个报文段的第一个数据字节的序号

​ 确认号值=对方报文段序号值 + 对方报文段数据部分的字节长度

​ 若确认好=N,则表明到序号N-1为止的所有数据都已正确收到

4)数据偏移:4。指出TCP报文段数据起始距离TCP报文段的起始处有多远,实际指出的即是首部的长度

​ 注意,偏移单位是4字节,因此最大偏移量位60(15*4)字节

5)保留:6位。暂不使用,置为0。

6)紧急URG:URG=1时,表示有紧急数据需要尽快传送。搭配14)紧急指针使用

7)确认ACK:ACK=1时确认号字段才有效

​ 建立TCP连接后所有传送报文段ACK字段置1

8)推送PSH:用于实现交互式通讯

9)复位RST:RST=1时表示TCP连接出错,需重新建立连接

10)同步SYN:建立连接时用于同步序号

​ SYN=1,ACK=0时,表示此报文段是连接请求报文段;若对方同意请求,返回的报文段中SYN=1,ACK=1

11)终止FIN:释放连接。FIN=1时,表示数据发送完毕,请求释放连接

12)窗口:2字节。指的是发送本报文段的一方的接收窗口。即用于告诉别人自己还有多大数据缓存空间

​ 是一个动态变化的值

​ 如一个报文段确认号为701,窗口值为1000,表示对方还可以向自己发送1000字节数据,即701-1700

13)检验和:2字节。检验范围为首部+数据

​ 计算校验和时,需要在TCP报文段前加12字节伪首部,同UDP,但第四字段值协议号改为6,说明是TCP协议。

14)紧急指针:2字节。指出本报文段中紧急数据的字节数,因为紧急数据被插到本报问段最前面,所以紧急指针即指向了紧急数据末尾在报文段的位置

​ 窗口为0时也可以发送紧急数据

15)选项:最长为40字节。

​ ①最大报文段长度MSS:指数据字段的最大长度。默认子为536字节。因此536+20=556字节长度的报文段能够被所有主机接受。

​ ②窗口扩大选项:3字节。其中一个字节表示移位值S,新窗口值等于(16+S)位,S最大为14

​ ③时间戳选项:10字节。包括时间戳值字段和时间戳回送回答字段。

​ 用于计算往返时间RTT;处理TCP序号超过pow(2,32)的情况,成为防止序号绕回PAWS。

5.6 TCP可靠传输实现

5.6.1 以字节为单位的滑动窗口

1、发送窗口:在没有收到接收方确认的情况下,发送方可以把发送窗口内的数据都发送出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便超时重传时使用

​ 发送窗口大小收接收方窗口大小网络拥塞程度影响

2、发送窗口越大,发送方可以连续发送更多的数据,提高传输效率

3、发送窗口后沿变化情况:不同(没有收到新的确认)和前移(收到了新的确认)

4、发送窗口前言变化情况:

​ 1)一般情况下不断向前移动

​ 2)不动:一是没有收到新的确认,对方通知的窗口也不变;而是收到了新的确认,但是对方通知的窗口缩小了

​ 3)向后收缩:TCP标准不建议这样做。因为处于窗口内的数据可能是已经发送掉的,收缩可能产生错误

5、描述一个发送窗口的状态需要三个指针

P1:指向已发送但未收到确认数据的第一个字节

P2:指向允许发送但尚未发送的数据的第一个字节

P3:指向不允许发送数据的第一个字节

显然:P3-P1为发送窗口大小;P2-P1为已发送但未收到确认数据的字节数;P3-P2为允许发送但尚未发送的数据的字节数,又称可用窗口

6、接收方只能对按序到达的数据中的最高序号给出确认,即若按序到达的最高序号为30,则确认报文段中的确认号为31,即时32或33已经到达接收方。

7、当发送窗口的数据都处于已发送但未收到确认数据状态,即P2与P3重合时,说明发送窗口已满,停止发送数据。

8、发送缓存和接收缓存

​ 1)发送缓存:存放发送应用程序传送给发送方TCP准备发送的数据;TCP已发送但未收到确认数据

​ 2)接收缓存:按序达到的但未被接受应用程序读取的数据;未按序到达的数据

9、发送方发送窗口不一定和接收方接收方窗口一样大,因为网络有延迟

10、对不按序到达的数据接收方先临时存放到接收窗口,而不是一律丢弃,那样浪费网络资源

11、TCP要求接收方必须具有累计确认功能。可减少传播开销。但不应该过分推迟发送确认

12、TCP是全双工通信,因此发送方也有接收窗口,同理接收方也有发送窗口。

5.6.2 超时重传时间的选择

​ TCP的发送方没有到规定时间内收到确认,就要重新发送已发送的报文段

​ TCP采用自适应算法计算重传时间

1、加权平均往返时间RTTs:又称平滑的往返时间,因为进行了加权平均

​ 计算方法 RTTs = (1-a) (旧RTTs) + a * (新RTT样本)*

其中0=<a<1

当第一次测量到RTT样本时,让RTTs=RTT

2、RTTD

​ 是RTT的偏差的加权平均值

​ 计算方法 RTTD = (1-b) * (旧RTTD) + b * abs(RTTS - 新的RTT样本)

其中b推荐值为0.25

当第一次测量到RTT样本时,让RTTD=RTT

3、超时重传时间RTO

​ RTO应略大于RTTS

RTO = RTTS + 4 * RTTD

4、超市重传时间与重传报文段

​ 计算加权平均RTTS时,只要报文段重传了,就不采用其往返时间样本,这样的出的加权平均RTTS和RTO就比较准确。

​ 修正:上述方法可能导致超时重传时间无法更新。因此报文段每重传一次,超时重传时间RTO就增大一些

如增大为原来的2倍

5.6.3 选择确认SACK

1、选择确认SACK作用

​ 接收方受到的报文段未按序号到达时,使发送方只发送接收方缺少的数据而不重传已经正确到达接收方的数据

2、原理

​ 在确认报文段中写明接收到的未按序到达的报文段数据的边界序号,如存在一个字节块,序号为1501到3000,则在确认报文段中写明左边界1501和右边界3000+1=30001。

3、实现

​ 在首部选项中增加SACK选项

局限:最多指明4个字节块边界信息,共32字节,同时还需要1个字节指明是SACK选项,1各字节指明这个选项占用多少字节,共34字节。

大多数情况下还是重传所有未被确认的数据块

5.7 TCP流量控制

5.7.1 利用滑动窗口实现流量控制

1、流量控制

​ 让发送方的发送速率不要太快,要让接收方来得及接收

​ 实现方法:滑动窗口机制

2、持续计时器

​ TCP未每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器

若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节数据),对方在确认报文段中给出当前的窗口值

​ 作用:避免死锁

5.7.2 TCP的传输效率

1、TCP报文段发送机制

​ 1)最大报文段长度MSS:缓存中数据达到MSS字节就发送该报文段

​ 2)发送应用程序指明要求发送报文段,即TCP支持的推送操作

​ 3)发送方计时器期限到了,将当前缓存数据放入TCP报文段,长度不能超过MSS

2、Nagle算法

​ P228

3、糊涂窗口综合征

​ P228

坏处:导致网络效率很低

4、2和3针对的是报文段中数据字段很短时产生的一些问题,提出一些解决方法

5.8 拥塞控制

5.8.1 拥塞控制的一般原理

1、拥塞

​ 1)定义:计算机网络中的资源量不能满足需求的资源量

​ 资源量:链路容量(带宽),交换节点的缓存和处理机等

​ 2)影响:网络性能变坏,吞吐量随输入负荷的增大而下降

2、拥塞控制

​ 1)作用:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载

​ 2)拥塞控制前提:网络能够承受现有的网络负荷

​ 3)拥塞控制是一个全局性的过程

​ 4)区别流量控制:流量控制是端到端的问题,拥塞控制是全局性的过程,设计所有主机、路由器、所有与网络性能相关的因素

3、理想拥塞控制的网络与实际拥塞控制的网络

​ 1)理想拥塞控制:网络吞吐量(分组吞吐量)随着负载的增加而增加,最终能够达到一个最大值,并保持平衡

​ 2)实际的拥塞控制:随着负载的增大,吞吐量先逐渐增加,而后逐渐减小到0

​ 当网络吞吐量明显地小于同负载理想吞吐量时,进入轻度拥塞状态

​ 当网络吞吐量不增反降时,进入拥塞状态

​ 当网络吞吐量归零时,网络无法工作,进入死锁

4、拥塞控制本身也可能成为导致网络性能恶化甚至发生死锁地原因

5、拥塞控制方法

​ 1)开环控制:是先考虑发生拥塞地因素进行控制,网络工作时不能中途改正

​ 2)闭环控制:基于反馈环路概念。检测网络系统,传送拥塞信息,调整网络系统

5.8.2 TCP的拥塞控制方法

​ 慢开始、拥塞避免、快重传、快恢复

1、判断网络拥塞地依据:出现了超时

2、慢开始

​ 1)思路:由小到大逐渐增大发送窗口

​ 2)拥塞窗口cwnd:指明发送窗口的大小。课本是以报文段为单位。实际是字节为单位

​ 3)拥塞窗口cwnd每次的增加量=min(N,SMSS)

​ N为原先未被确认,但现在刚收到确认的报文段的字节数,SMSS为发送方最大的报文段长度,实际是数据段长度。课本中替换字节数为报文段数

​ 4)cwnd增加规律:指数规律

​ cwnd增加是成倍增加的。第一次发送5个报文段,那么将收到5个确认报文,cwnd由原来的5增加到10…

3、传输轮次

​ 一个传输轮次所经历的时间为一个往返时间RTT

注意:发送方可以一次连续传输多个报文段,因此一个RTT可能收到多个来自接收方的确认报文段

4、慢开始门限ssthresh

当cwnd < ssthres时,使用慢开始算法

当cwnd > ssthres时,使用拥塞避免

当cwnd = ssthres时,使用慢开始算法或拥塞避免算法

5、拥塞避免算法

​ 1)拥塞窗口增加量cwnd增加量:每一个RTT就自增1。即一个传输轮次就自增1

​ 2)拥塞窗口增加规律:线性规律。具有”加法增大“AI的特点

​ 因此拥塞避免阶段,cwnd增长速度慢于慢开始阶段

6、cwnd变化图

在这里插入图片描述
1)序号①解释:cwnd=ssthresh,进入拥塞避免阶段

2)序号②解释:发生超时,发送方判断网络拥堵,将ssthresh减为cwnd半,cwnd置1,进入慢开始阶段

3)序号③解释,同1)

4)序号④解释:3-ACK问题

5)序号⑤解释:发生3-ACK后,发送方启动快恢复算法,而非慢开始算法。此时ssthresh减为cwnd一半,且令cwnd=ssthresh,称为乘法减小MD。有的快恢复算法是让cwnd=ssthresh + 3*MSS

​ 乘法减小MD与加法增大AI合称AIMD算法

7、3-ACK

​ 指发送方连续收到3个重复确认,发生在个别报文段在传输过程中丢失的情况。

​ 这种情况由快重传算法解决,机制就是接收方每接收到一个报文段,就发送按序到达的最后一个报文段的确认报文段,直到重复了4个,后3个重复。此时发送方立即重传丢失的个别报文段,避免超时。

8、拥塞控制流程图
在这里插入图片描述
9、发送方窗口的上限值

​ 发送方窗口大小受到接收方窗口大小和网络拥塞程度影响

发送方窗口上限值 = Min{rwnd,cwnd}
5.8.3 主动队列管理AQM

1、尾部丢弃策略

​ 当路由器分组队列已满时,后续到达的分组都被丢弃,称为尾部丢弃策略

2、全局同步

​ 尾部丢弃可能影响到很多条TCP连接,使这些TCP连接进入慢开始状态,称为全局同步

影响:会导致全网通信量暴降或暴增

3、主动队列管理AQM

​ 作用:避免全局同步

​ 原理:不要等到路由器队列长度达到最大值再丢弃后面到达的分组

4、AQM实现方法之一随即早期检测RED

​ 1)平均队列小于最小门限,将信道的分组放入队列

​ 2)平均队列超过最大门限,把新到达的分组丢弃

​ 3)若平均队列长度在最小门限和最大门限之间,按照概率p随即丢弃分组

实际应用:效果不理想

5.9 TCP运输连接管理

1、建立连接-三次握手

在这里插入图片描述
2、释放连接-四次握手
在这里插入图片描述
3、TCP有限状态机
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值