导图社区 计算机网络第5章:运输层知识总结
下图为计算机网络谢希仁第7版,第5章运输层思维导图。
编辑于2020-09-18 17:16:15第5章 运输层
5.1 运输层的协议概述
1、进程间的通信
运输层
主要作用:向应用层提供通信服务
层次级别:面向通信部分的最高层,也是用户功能的最低层
协议栈上:只存在主机的协议栈上,路由器上只有下三层
运输层的通信
通信对象:应用进程,即在运输层看来,端到端的通信指的是应用进程之间
运输层中的重要功能:复用和分用
复用:应用层的应用进程可以同时在传输层传输
分用:将来自运输层的IP数据报中将不同应用进程分开,分别传输到相应应用进程上
认识到运输层与网络层的主要区别:服务对象不同,一个是给主机进行传输IP地址,一个是给应用进程传输端口
2、运输层的两个主要协议
面向连接的TCP协议
逻辑信道:即使下面的网络是不可靠的,但是其逻辑通信信道也是可靠的,且相当于一条双工通道
无连接的UDP协议
逻辑信道:仍然是不可靠的逻辑信道
掌握大部分的使用UDP与TCP协议的各种应用与应用层协议
3、运输层的端口
作用:通信的一方无法识别对方机器的进程,不知道具体如何实现这个功能,因此使用协议端口号,让主机应用层协议决定调用哪个进程
特点
1、此处端口实际上是软件端口,逻辑端口
2、软件端口是应用层协议进程与运输实体进程层间交互的一种地址
3、可以将端口对应为一种服务,这种服务有多个进程让主机选择合理的进程与对方通信
4、端口号大小为16位,只能标记本计算机
分类
服务器的端口
最重要的一类是熟知端口号,其端口号是唯一且固定的,代表的意义也是固定。因为服务器的进程都必须是众所周知来使用的
客服端的端口
一般也叫短暂端口号,因为客户进程运行时动态选择一个端口号,并在使用后仅释放掉
5.2 用户数据报协议UDP概述
1、UDP概述
DUP特点
1、连接:无连接的,发送数据之前不用建立连接
这里的连接不是指物理连接,而是指在物理连接上进行逻辑连接,比如双方通信前进行数据的交换等协商配置参数的过程,能够保证连接后的数据传输是可靠的
2、服务:尽自己最大努力的交付数据
3、面向报文:直接面向应用层的报文,对于报文直接保留(不管长度),作为UDP数据报的数据部分
4、差错控制:没有拥塞控制,即使发生拥塞,也按照正常速率发送
5、通信方式:支持一对一、一对多、多对多
6、首部开销:仅仅8个字节,很小
2、UDP的首部格式
数据字段
首部字段
只有8个字节,包括源端口、目的端口、长度、检验和四个字段
端口上:由于通信是无连接的,因此不需要套接字
检验和:伪首部+反码运算求和
伪首部:源IP地址+目的IP地址+0+协议号+UDP长度
运算:反码求和运算,以16位为一个计算单位,检验和先假设为全0
结果:结果进行取反,作为检验和字段的值
接收方检验:同上述步骤(但检验和字段直接参与运算),得出结果为0即可
5.3 传输控制协议TCP概述
1、TCP最主要的特点
1、连接:面向连接的运输层协议
2、服务:提供可靠交付的服务,无差错、无重复、无丢失
3、面向字节:面向字节流,将上层交下来的数据仅仅看作是一连串的无结构的字节流,TCP协议并不知道其具体意义,与UDP不同,TCP发送报文时会根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应该包含多少字节
5、通信方式:仅支持一对一,端点到端点
6、提供全双通信:允许通信双方在任何时候都能够发送数据
2、TCP的连接
重点!!!!TCP连接是建立在套接字Socket上的(TCP连接的端点时套接字),套接字就是<IP地址>+<端口号>
5.4 可靠传输的原理
1、停止等待协议
概念:指自动等待接收方发送确认信息,超时后就自动重传分组
发送和接受情况
1、无差错情况
双方正常通信
2、发送丢失或发送迟到
至少要有3点才能保证重传
1、给每个分组设置超时计时器,超时后自动重传
2、必须暂时保留已发送分组的副本,直到收到确认
3、给每个分组编序号,保证确认的是哪个分组
3、确认丢失或确认迟到
确认丢失下:发送方重传,但接收方丢弃,并再次发送确认分组
确认迟到下:发送方接受到迟到的确认,但直接丢弃,因为之前再次重传成功收到确认了
缺点:很明显,那就是信道利用率低
方法:流水线传输下的连续ARQ协议和滑动窗口协议
这是可靠传输的主要原因所在
2、连续ARQ协议
发送方:在每接收到一个确认,就把发送窗口向前滑动一个分组的位置
接收方:采用累计确认方式,不必对收到的分组进行逐个发送确认,在确定了有序到达最后一个分组之后发送确认,因此窗口的滑动在无误下都是原窗口大小滑动
明显:窗口的大小直接决定了信道利用率
由于全双工通信,发送方也可以是接收方
5.5 TCP报文段的首部格式
TCP首部
固定部分20字节
1、源端口、目的端口各占2字节
2、序号(4字节):指定本报文段所发送的数据的第一个字节的序号,[0,2^32]
3、确认号(4字节):期望收到对方下一个报文段的第一个数据字节的序号
4、数据偏移(4位):实际上指出TCP报文段的首部长度
5、保留(6位):今后使用
6、控制位(6位,各占1bit)
紧急URG:表明有紧急数据要发送,可以插入普通数据报文段的前面
确认ACK:在TCP连接建立后,就应该置为1
建立连接时使用
推送PSH:发送方将PSH=1,并立即发送一个报文段出去,接收方收到后,就尽快的交付应用进程
复位RST:TCP连接出现严重错误,需要重新建立连接
同步SYN:用于TCP连接建立时来同步序号
建立连接时使用
终止FIN:用来释放一个链接
释放连接时使用
7、窗口(2字节):指发送本报文段时,限制对方发送窗口的大小,一般会根据自身缓存空间的剩余量来动态变化
8、检验和(2字节):采用伪首部的方式进行检验和,并对首部和数据部分一起检验
9、紧急指针(2字节):用来指明紧急段在报文段的结尾位置,指向普通数据与紧急数据的分界处
10、选项(最长40字节)
最大报文长度:MSS应尽可能的大,只要在IP层不需要分片就ok,此时信道利用率就不会太低,
窗口扩大选项:扩大窗口
时间戳选项:用来计算往返时间RRT,或者防止序号绕回
有关选择确认选项:
选项部分最大40字节
TCP报文段的数据报部分
5.6 TCP可靠传输的实现
前提:虽然是全双工通信,但是为了易于理解,这里只讨论一个方向上的传输。讲述的主要是关于连续ARQ协议和窗口协议的一些细节部分
1、以字节为单位的滑动窗口
创建发送窗口
1、根据接受的TCP数据报中确认号字段,确认发送窗口的前沿位置
2、根据接受的TCP数据报的窗口字段和自身拥塞情况,调整发送窗口大小,确认窗口后沿
发送窗口中的数据
发送成功
1、发送方收到接收方的所有确认后,滑动窗口位置
发送失败
未按序到达
接受方会发送确认报告,但是报告中的确认号还是这次窗口的前沿,相等于重传
超时未收到确认
发送方在争用期的时间后仍没有收到确认,于是直接重传
缓存
发送缓存
1、存储等待发送的数据
2、存储已发送但未收到确认的数据
接受缓存
1、存储已接受但还未处理的数据
2、存储未按序到达的数据
强调一下3点
1、发送窗口的大小不一定和接受方的窗口一样大 ,由于网络传播的时延
2、对于不按序到达的数据,TCP/IP无明确规定,但是一般存储在接收窗口中,等字节流发现缺少字节,再按序交付给上层应用进程
3、接受能够累计确认,保证信道利用率
不能过长累计确认,可能导致超时重传
捎带确认其实很少用
2、超时重传时间的选择
问题:在TCP中超时重传的时间是动态的,如何确定每次的超时重传的计时器的时间呢?
基本方法
1、利用时间戳选项,计算每次传送报文段的往返时间差RRT,然后以此做一个加权平均往返时间差:RRTs=(1-a)*旧的RTTs+a*本次RRT样本
2、超时重传时间RTO要求大于加权平均往返时间:RTO=RTTs+4*RTTd,RTTd是RTT的偏差加权平均值
实际上,远不止这样简单
问题:在报文段因确认迟到而进行超时重传后,如何判定确认报文段是此次的,还是之前确认迟到的呢?
Karn:提出了将超时重传的RRT忽略
新的问题:如果自是因为网络变差,导致超时重传,但是如果不采取这次RRT,那就会忽略这次网络上的变差情况
3、选择确认SACK
简单认识:就是用来让对失序但收到的数据进行传输,不传输已经收到的数据
实际上,大多使用的是直接重传,即使对方接受了这个字节
5.7 TCP的流量控制
1、利用滑动窗口实现流量控制
目的:让发送方发送的速率不要太快,让接收方来得及接受
方法:利用可变窗口实现控制,即改变接受窗口的字段大小
窗口字段的大小:依据接收缓存的剩余空间
流量控制:属于端到端的问题
2、TCP的传输效率
5.8 TCP的拥塞控制
1、拥塞控制的一般原理
拥塞:只网络中某一个资源的需要超过了该资源提供的可用部分,导致网络的性能变坏
拥塞控制:就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载
拥塞控制:属于全局性的问题
有无拥塞控制下的吞吐量
理想拥塞控制
吞吐量能够等于提供者的输入负债,直到到达网络的最高负载,就不在变动
实际拥塞控制
吞吐量在一定量的提供负载下已经由丢弃分组的概率
无拥塞控制
吞吐量能够进入死锁状态
2、TCP的拥塞控制方法
方法:慢开始+拥塞避免+块重传+快恢复
重要的概念:拥塞窗口cwnd、增长速率、慢开始门限ssthresh、触发条件
慢开始
初始拥塞窗口:cwnd=1
增长速率:翻倍
慢开始门限:提前设定,如24
停止条件:cwnd超过慢开始门限后,停止慢开始,启用拥塞避免
拥塞避免
触发条件:cwnd超过慢开始门限后,停止慢开始,启用拥塞避免
初始拥塞窗口:cwnd不变
增长速率:+1
慢开始门限:不变
停止条件:发生了超时重传现象,并将慢开始门限变为原来的一般
问题:个别报文段在网络中丢失,但是实际上网络并没有发生拥塞,而发送方在超时后就以为是拥塞,就启动了慢开始算法
快开始算法:要求接收方收到数据后就立即发送确认报文,例如在收到M1,没有收到M2,发送方发送M3报文,即失序的报文段,接收方还是要继续发送对M2的重复确认,告诉对方有报文丢失
快恢复
只是将cwnd设为慢开始门限的一半后,继续使用拥塞避免
3、主动队列管理的AQM
主动:就是指在路由器的队列长度还没有到达最大值时,只要到达一个警惕的数值就开始有概率主动的丢弃分组,让发送方意识放慢发送速率
5.9 TCP的运输连接管理
1、TCP的连接建立
三次报文握手:看图,必须掌握握手过程
2、TCP的连接释放
四次报文握手:看图,必须掌握握手过程
3、TCP的有限状态机