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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 3、传输层 -> 正文阅读

[网络协议]3、传输层

TCP和UDP的区别

这里没写文字描述,使用表格比较清晰

UDPTCP
建立连接不需要需要
数据量
速度
安全不安全安全
面向报文字节流
流量控制
拥塞控制
全双工通信不支持支持

TCP三次握手的图

最好画个图在用文字描述建立连接的过程

  • SYN: 建立连接的标志位,一般是0和1两种状态,1是建立连接
  • ACK: 确认标志位,一般是0和1两种状态,1是确认
  • seq:序列号,占4个字节,用来标记数据段的顺序
  • ack:确认号,占4个字节,期待收到对方下一个报文段的第一个数据字节的序号
    在这里插入图片描述

UDP四次挥手的图

  • FIN: 释放连接的标志位,一般是0和1两种状态,1是释放连接
    在这里插入图片描述

为什么要进行第三次握手

有的时候问的是为什么要进行第三次握手,两次握手不就够了吗

  • 原因:考虑到网络延迟问题,创建连接的请求在网络差的情况下等待超时时,会重新发送一个创建连接的请求,但是最后两个请求都会到达服务器,那么就会造成失效的请求到达服务器再次创建连接
  • 第三次握手的作用:屏蔽掉失效的请求连接到达服务器

为什么要进行四次挥手

  • 第一次挥手: 主机发送释放连接的请求,这时主机不再向服务器传输数据了
  • 第二次挥手:服务器接收到主机释放连接的请求,然后发送确认返回给主机,这时服务器将为传输完的数据传输给主机
  • 第三次挥手:服务器发送释放连接的请求给主机,此时服务器不在传输数据给主机了
  • 第四次挥手: 主机接收到服务器释放连接的请求,发送确认报文后并不是直接进入关闭连接的状态,而是进入time-wait状态,在这个状态下有计时器设置的2MSL的时间
  • TIME-WAIT的2MSL的作用
    • 确认主机的确认报文到达服务器,否则服务器会再次发出释放连接的请求
    • 让本次连接所有的报文从网络中清除,使得下一次连接不会出现旧的报文

什么是TCP滑动窗口

是缓存的一部分,用来存放字节流,发送方和接收方都有一个窗口,发送方会根据TCP窗口字段告诉发送方自己窗口的大小,发送方根据窗口字段等信息设置滑动窗口的大小

  • 发送窗口左部分的字节在发送并收到确认后,会向右移动一段距离,直到右侧最后一个字节发送并接收到确认为止
  • 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。

流量控制是干什么的

流量控制是控制发送速率的,如果发送方发送过快,接收方就会接收不过来

  • 接收方可以通过控制TCP滑动窗口的字段大小控制发送速率,如果窗口字段为0,发送方就不会发送数据

什么是TCP拥塞控制?

拥塞控制主要是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载;拥塞控制简单点来说就是接收方处理不过来发送方发送的数据,从这点看有点像流量控制,但是流量控制是单纯的通信量的控制,而拥塞控制针对是全局性的控制过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素;流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。

原因:网络拥塞会导致分组丢失,分组丢失会导致重传,重传会导致更严重的网络拥塞

解决TCP拥塞控制的四个算法:慢开始、拥塞避免、快恢复和快重传

接收方会维护一个叫做拥塞窗口(cwnd)的状态量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

慢开始和拥塞避免

在最开始cwnd值为1,发送就会发送1个报文段,当收到确认后,cwnd就会加倍2、4、8、16…,为了避免cwnd不断增长,呈指数增长,造成网络拥塞,会设置一个慢开始的门限ssthresh, 当cwnd>ssthresh,cwnd会+1,呈线性增长,限定x个拥塞窗口时超时(快重传),超时后ssthresh=cwnd/2,cwndc=1,有些题目会让我们计算n次传输时,拥塞窗口的数量

快重传和快恢复

在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。

在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。

在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。

慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:06:09  更:2022-03-30 19:09:59 
 
开发: 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 5:30:00-

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