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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络安全OSI七层模型之——传输层 -> 正文阅读

[网络协议]网络安全OSI七层模型之——传输层

TCP与UDP有什么区别

  1. 首先,TCP和UDP都作用与传输层,用于程序之间的数据传输。

区别:

  1. TCP是基于连接的,而UDP是基于非连接的
  2. TCP传输数据稳定可靠,适用于网络通讯质量较高的场景。需要准确无误的传输个对方。比如传输文件、浏览网页等。
  3. UDP的优点是速度快,但可能产生丢包,所以适用于对实时性要求较高,但是少量丢包没有太大影响的场景。比如语音通话等等。

TCP协议如何保证可靠传输

TCP协议传输的主要特点是:面向字节流、传输可靠、面向连接等等,他是依靠以下来保证通讯安全的。

1. 校验和

????在数据传输过程中,将发送的数据段当做一个16位的整数,将这些整数加起来,并且前面的位不能丢弃,补在后面,最后取反,得到校验和。

????接收方: 在发送数据前计算校验和,并进行校验和的填充。
????接收方: 收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。

在这里插入图片描述

2(3).序列号与确认应答

????序列号: TCP传输时将每个字节的数据都进行了编号,这就是序列号
????确认应答: TCP传输的过程中,每次接收方收到数据后,都会对传输放进行应答。也就是ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接受了那些数据,下一次的数据从哪里发。
在这里插入图片描述

3.超时重传

????在进行TCP传输时,由于确认应答序列号机制,也就是说发送方在发送一部分数据后,都会等待接收方发送的ACK报文,并解析来判断数据是否发送成功。如果发送完数据后,迟迟没有等到接收方的ACK报文,那该怎么办呢?

????首先,发送方没有发送ACK报文的原因有:

  1. 数据在传输过程中,由于网络原因全部丢包,接收方根本没接收到。
  2. 接收方接收到了响应的数据,但是发送的ACK报文响应由于网络原因丢包了。

????TCP在解决这个问题时引入了新的机制,超时重传机制。就是发送方在发送数据后的一段时间内会等待接收方响应的ACK报文,如果超时了就对刚才的数据再重新发送。如果是第一个原因,接收方收到二次重发的数据后,便进行ACK应答。如果是第二个原因,接收方发下重新发送的数据已存在(判断存在的根据就是序列号),那么直接丢弃,仍发送ACK应答。

由于TCP传输时保证能够在任何环境下都有一个高性能的通信,因此这个最大超时时间(也就是等待的时间)是动态计算的。

在Linux中(BSD Unix和Windows下也是这样)
超时以500ms为一个单位进行控制,每次判定超时重发的超时时间都是500ms的整数倍。
重发一次后,仍未响应,那么等待2500ms的时间后,再次重传。
等待4500ms的时间继续重传。以一个指数的形式增长。
累计到一定的重传次数,TCP就认为网络或者对端出现异常,强制关闭连接。

4.连接管理

三次握手与四次挥手
在这里插入图片描述
在这里插入图片描述

5.流量控制

????接收端在接收到数据后,对其进行处理。如果发送端的发送速度太快,导致接收端的接收缓冲区被填满。此时如果发送端还要发送数据,那么接下来发送的数据会丢包,接着会导致一系列的丢包反应,比如超时重传等等… 而TCP根据接收数据的处理能力,决定发送端发送数据的速度,这个机制就是流量控制。
在这里插入图片描述

6.拥塞控制

????拥塞控制的前提是超时重传,两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。然而实际情况有可能此时有太多主机正在使用信道资源,导致网络拥塞了。重传数据浪费了资源,所以要进行拥塞控制。发送发不知道一次发多少数据合适,所以设置一个拥塞窗口

  1. 慢开始算法 在主机开始发送报文时先设置拥塞窗口cwnd=1;在每次收到新报文的确认后,拥塞窗口加1增加MSS(Max Segment Size)的数值;注意事项:每经过一个传输轮次拥塞窗口cwnd就加倍。
  2. 拥塞避免算法 慢开始门限:ssthresh:
    ????当cwnd<ssthresh时,使用慢开始。
    ????当cwnd>ssthresh时,使用拥塞避免算法。
    ????当cwnd=ssthresh时,慢开始和拥塞避免都可以使用。
    ????拥塞避免算法的做法是:发送端的拥塞避免窗口每经过一个往返时延RTT就增加一个MSS大小。无论在慢开始还是拥塞避免算法期间,只要判断网络中出现拥塞,ssthresh设置为拥塞发生时窗口值的一半,拥塞窗口设置为cwnd=1。执行慢开始算法。
  3. 快重传算法 要求接收方每收到一个失序的报文后就立即发出重复确认,发送方只要连续收到3个重复的确认就立即重传对方尚未收到的数据段。
  4. 快恢复算法 当发送端收到连续3个重复确认时,就将慢开始门限ssthresh设置当前拥塞窗口的一半;把cwnd值设置成新的ssthresh;按拥塞避免算法继续发送报文

在这里插入图片描述

TCP的三次握手和四次挥手 & TCP连接的时候为什么是三次,关闭的时候却是四次

详解TCP三次握手和四次挥手

TIME_WAIT和CLOSE_WAIT的区别在哪?

为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?

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

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