第五章 运输层

在这里插入图片描述

任务:负责向两台主机中的进程之间的通信提供通用的数据传输服务

一、协议概述

1、进程之间的通信

端对端的通信是应用进程之间的通信

区别:
网络层为主机之间的通信提供服务
运输层则在网络层的基础上,为应用进程之间提供服务

还有就是差错检测

2、两个主要协议

  1. 用户数据报协议UDP(无连接
  2. 传输控制协议TCP(面向连接
    image.png

TCP传送的数据单位协议是TCP报文段
UDP传送的是UDP报文或用户数据报

UDP传送之前不需要先建立连接,目的主机收到UDP报文,也不需要给出确认,提供不可靠连接,简单

TCP提供面向连接的服务,传送之前必须要先建立连接,结束要释放连接,不提供广播和多播,提供可靠的连接

image.png

3、端口

image.png

复用类似一个收发室,大家通过这个发信息
分用类似一个派发员,把收到的东西分发给大家

端口就是对应主机的应用进程
image.png

通信不仅需要知道端口号还需要知道IP地址

服务器端使用的端口号

  1. 熟知的端口号:
    image.png
  2. 登记的端口号:1024-49151
  3. 客户端使用的端口号:49152-65535

二、用户数据报协议UDP

在IP数据报的基础上添加了复用和分用、差错检测

1、UDP概述

主要特点:

  1. 无连接:发送之前不需要建立连接
  2. 使用尽最大努力交付:不保证可靠交付
  3. 面向报文:一次传送完整的报文
  4. 没有拥塞控制:网络拥塞不会使主机发送降低
  5. 支持一对一、一对多、多对一、多对多
  6. 首部开销小,只有8个字节

就添加一个首部
image.png

image.png

2、UDP首部格式

image.png

  1. 源端口
  2. 目的端口
  3. 长度:用户数据报的长度
  4. 检验和:检验用户数据报在传输过程有没有问题

检验和:
首先UDP有一个伪首部,这个是IP的信息
image.png

检验和一开始为0

然后,每16位(包括伪首部、首部、用户数据报,分成一份份16位)按二进制反码运算求和
先求和,如果最高位有进位,就移到最低位运算
最后再取反

然后接受方,无差错就是相加结果为全1,否则就是有差错

image.png

三、TCP传输控制协议

1、主要特点

  1. 面向连接:在传输之前要先建立连接
  2. 每一条TCP连接两个端点,点对点(一对一)
  3. 提供可靠交付
  4. 全双工通信
  5. 面向字节流
    image.png

image.png

TCP不关心应用进程一次把多长的报文发送给TCP缓存

TCP根据窗口值和网络拥塞程度,决定报文段包含多少字节

2、TCP的连接

TCP连接通过套接字socket

image.png

TCP连接就是两个套接字
image.png

四、可靠传输的工作原理

理想传输的两个特点:

  1. 传输不出差错
  2. 接收方来得及处理数据

应对方式:

  1. 出差错,重发送
  2. 来不及就降低发送速率

1、停止等待协议

全双工通信,双方都是发送方也是接收方
就是每发送完一个分组就停止发送,等待对方确认

(1)无差错情况

A发送了数据,收到B的确认返回

(2)出现差错

A没有收到确认,超过一段时间依然没有收到确认,就认为刚才发送的丢失了,重新发送
这就是超时重传

三点:

  1. A发送完,要保存副本
  2. 分组和确认分组要进行编号
  3. 超时重传时间比平均往返时间长一点

(3)确认丢失和确认迟到

确认丢失,就是B发送的确认信息,丢失了
处理:

  1. B丢失A重复发来的分组
  2. 继续向A发送确认

确认迟到
就是B的确定来迟了,A超时重发了

处理:

  1. A丢弃这个确认
  2. B丢弃重复数据

(4)信道利用率

等于发送时间除于(发送时间+往返时间+B的发送时间)
image.png

停止等待的信道利用率太低了

image.png
流水线就是发送多个

2、连续ARQ协议

维持一个发送窗口,位于发送窗口的分组都可以连续发送,不需要等待对方的确定

每收到一个确认,就把发送窗口向前滑动一个分组的位置

image.png

image.png

五、TCP报文段首部格式

分成:首部+数据
功能实现体现在首部
首部固定20字节,后面还有4n字节根据需要而添加

image.png

  1. 序号:每一个字节的序号,指的是本报文段所发送的数据的第一个字节的序号

  2. 确认号:期望收到对方的下一个报文段的数据的第一个字节的序号
    image.png

  3. 数据偏移:指出数据起始处距离TCP报文段的起始处有多远

  4. 保留:保留为今后使用

  5. 紧急URG:表明紧急指针字段有效

  6. 确认ACK:当ACK=1时确认段才有效

  7. 推送PSH:PSH=1表明要尽快交付接收

  8. 复位RST:RST=1出现严重差错

  9. 同步SYN,表示一个连接请求或连接接受报文
    image.png

  10. 终止FIN:释放一个连接,等于1表示发送完毕

  11. 窗口:从确认号起,允许对方发送的数据量

  12. 检验和:和UDP的计算方式一样,第4字段改为6

  13. 紧急指针

  14. 选项

image.png

image.png

六、可靠传输实现

1、以字节为单位的滑动窗口

image.png

窗口越大,表明发送发可以在收到对方确认之前连续发送更多的数据,获得更高的传输效率

image.png

image.png

2、超时重传时间的选择

TCP采用一种自适应算法
image.png

几个关键数据
image.png

image.png

最后的超时重传时间RTO计算
image.png

karn算法:减低重传数据对RTT计算的影响
在计算评价往返时间RTT时,只要报文段重传,就不采用其往返时间样本

3、选择确认SACK

解决重传只缺少的数据

image.png

七、TCP的流量控制

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

流量控制:让发送方的发送速率不要太快,使得接收方来得及接收
image.png

解决问题:
持续计时器
只要TCP连接的一方收到对方的零窗口通知(不可以再发送了),就启动持续计时器,时间到了,就发送一个探测报文段,对方确认这个探测报文段给出现在的窗口值
如果窗口不为0,就发送,为0继续持续计时器

2、传输效率

如何开工至TCP发送报文段的时机

糊涂窗口综合征:每次仅发送一个字节或很少字节的数据,导致数据传输效率变低的现象

image.png
加一个缓冲

八、TCP的拥塞控制

1、拥塞控制的一般原理

资源需求超过资源可用部分,网络性能明显变坏

image.png

image.png

image.png

方法
开环控制:事先考虑周全,避免发生拥塞
闭环控制:发生拥塞后,采用措施控制,消除拥塞

image.png

2、拥塞控制方法

四种

  1. 慢开始
  2. 拥塞避免
  3. 快重传
  4. 快恢复

拥塞窗口的大小取决网络的拥塞程度,是动态变换

image.png

只要网络没有出现拥塞,拥塞窗口可以增大一点
出现拥塞,拥塞窗口变小一点

(1)慢开始

image.png

image.png

(2)拥塞避免

image.png

拥塞避免是线性增加的

(3)快重传

image.png

(4)块恢复

image.png

3、主动队列管理AQM

就是不要等到队列到达最大值才不得不丢弃后面的分组,而是当达到某个警惕的数值就开始主动丢弃到达的分组

实现方法:
随机早期检测

最小门限、最大门限

image.png

九、TCP的运输连接管理

TCP是面向连接的,用来传送报文

image.png

建立连接的过程叫做握手

image.png

image.png

第三次是通知B建立连接了

2、连接释放

image.png

image.png

image.png

image.png

必须等待2MSL的时间:

  1. 保证发送的最后一个ACK报文段能够到达B
  2. 防止已失效的连接请求报文段出现在本连接中

3、有限状态机

更好显示TCP连接的各种状态之间的关系

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐