IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络】运输层 -> 正文阅读

[网络协议]【计算机网络】运输层

在这里插入图片描述

1、运输层

功能:负责两个进程之间的通信(TCP、UDP);复用、分用
数据单位:报文段(TCP)或用户数据报(UDP)
运输层只存在于分组交换网外面的主机中
地位

  • 面向通信部份的最高层
  • 用户功能中的最底层
  • 在这里插入图片描述

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

  • 面向连接的TCP
    | 全双工的可靠通信
  • 无连接的UDP
    | 不可靠信道
  • 对比在这里插入图片描述

2、用户数据报协议 UDP

提供无连接服务
在传送数据之前不需要先建立连接
数据单位:UDP报文或用户数据报
不可靠交付
UDP特点
    (1)UDP是无连接的
    (2)UDP使用尽最大努力交付
    (3)UDP是面向报文的
    (4)UDP没有拥塞控制
    (5)UDP支持一对一、一对多、多对一和多对多的交互通信
    (6)UDP的首部开销小

3、传输控制协议 TCP

提供面向连接的服务
数据单位:TCP报文段
不提供广播或多播服务
提供可靠的、面向连接的运输服务
TCP特点
    (1) TCP是面向连接的运输层协议
    (2) 每一条TCP连接只能有两个端点(点对点)
    (3) TCP提供可靠交付的服务
    (4) TCP提供全双工通信
    (5) 面向字节流

4、TCP数据报

4.1 格式

首部(最小长度为20字节)
在这里插入图片描述

4.2 字段

  • 源端口、目的端口:各占2字节
  • 序号:4字节,给传送的数据流中的每一个字节都编上一个序号
    | 值为本报文段所发送的数据报的第一个字节的序号
  • 确认号:4字节,期望收到对方的下一个报文段的数据的第一个字节的序号
  • 确认ACK:只有当ACK=1时确认字段才有效
  • 数据偏移:4字节,单位为32位字(4字节)
  • 保留:6位
  • 紧急URG:当URG=1时,表明紧急指针字段有效
  • 紧急指针字段:16位,指出本报文段中紧急数据共有多少个字节
  • 推送PSH:接收TCP收到PSH=1的报文段,就尽快交付接收应用进程,而不是等整个缓存填满后在交付
  • 复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放来凝结,然后重新建立运输连接
  • 同步SYN:当SYN=1,这是一个连接请求或连接接收报文
  • 终止FIN:用来释放一个连接,当FIN=1表明此报文段是其发送的最后数据,并要求释放运输连接
  • 窗口:2字节,用来让对方设置发送窗口的依据,单位为字节
  • 校验和:2字节
  • 选项:MSS(TCP报文段中的数据字段的最大长度)

5、TCP发送窗口机制

5.1 以字节为单位

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 发送缓存

  • 发送应用程序传送给发送方TCP准备发送的数据
  • TCP已发送出但尚未收到确认的数据
    在这里插入图片描述

5.3 接收缓存

  • 按序到达的、但尚未被接受应用程序读取的数据
  • 不按序到达的数据
    在这里插入图片描述
  • 发送窗口并不总是和接收窗口一样大
  • TCP标准没有规定不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程
  • TCP要求接收方必须有累计确认的功能,这样可以减小开销

5.4 超时重传

TCP采用了一种自适应算法

  • 记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段往返时间RTT
  • TCP保留了RTT的一个加权平均往返时间RTTs(平滑的往返时间)
  • 第一次测量到RTT样本,RTTs值就取为所测量的RTT样本值。以后每测量到一个新的RTT样本,新的RTTs = (1-a)(旧的RTTs)+a(新的RTT样本)
    | 0<=a<1,RFC6298推荐的a值为1/8,即0.125

超时重传时间RTO

  • 应略大于加权平均往返时间RTTs
  • RTO=RTTs+4*RTTD
    | RTTD是RTT偏差的加权平均值
  • 第一次测量时,RTTD取RTT样本的一半
  • 之后:新的RTTD = (1-β)(旧的RTTD)+β|RTTs-新的RTT样本|
    | β是一个小于1的系数,推荐值为1/4,即025

若报文重传

  • 新的RTO = γ*(旧的RTO)
    | γ经典值为2

>

6、TCP确认机制

停止等待协议
    发送分组后,暂停发送,等待接收端的确认(ACK)。收到确认之后再次开始发送
    确认丢失
    确认迟到

选择确认SACK(滑动窗口机制中)
    只传送缺少的数据,而不重传已经正确到达接受方的数据
    接受方收到了和前面的字节流不连续的两个字节块
    如果这些字节的序号都在接收窗口之内,那么接受方就先收下这些数据,但要把这些信息准确的告诉发送方,使发送方不再重复发送这些已收到的数据

7、TCP运输连接

7.1 连接建立(三次握手)

三次握手是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 数据传送

在这里插入图片描述

7.3 连接释放(四报文握手)

在这里插入图片描述
A必须等待2MSL时间

  • 为了确保A发送的最后一个ACK报文段能够达到B
  • 防止“已失效的连接请求报文段”出现在本连接中。

8、TCP的拥塞控制算法及应用

  • TCP采用基于窗口的方法进行拥塞控制(闭环控制方法)
  • TCP发送方维持一个拥塞窗口CWND
  • 慢开始门限ssthresh
    | 防止拥塞窗口cwnd增长过大引起网络堵塞

8.1 拥塞控制算法

慢开始(cwnd<ssthresh)

  • 从小到大逐渐增大拥塞窗口数值
  • 每一轮cwnd的增加量 = min(N, SMSS)
    在这里插入图片描述
    N是原先未被确认,现在被刚收到的确认报文段所确认的字节数

拥塞避免(cwnd>ssthresh)(加法增大)

  • cwnd缓慢增大,即每次cwnd加1,拥塞窗口cwnd按线性规律缓慢增长

快重传
快恢复(乘法减小)

  • 不执行慢开始,而是执行快恢复
  • ssthresh = cwnd/2
  • cwnd = ssthresh
  • 开始执行拥塞避免算法

8.2 拥塞的判断

重传定时器超时

  • ssthresh = max(cwnd/2, 2)
  • cwnd=1
  • 执行慢开始算法

收到三个相同(重复)的ACK

  • 执行快重传算法

8.3 拥塞控制流程图

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:17:01  更:2022-05-21 19:17:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:57:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码