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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络基础2(传输层,深层次理解TCP,TCP/UDP对比) -> 正文阅读

[网络协议]网络基础2(传输层,深层次理解TCP,TCP/UDP对比)

目录

1. TCP提高效率的机制

1.1 滑动窗口

1.2 延迟应答机制

1.3 捎带应答机制

2.TCP的特性/机制

2.1 安全性、可靠性机制

2.2 提高效率的机制

3.对于TCP中的缓冲区

4.TCP的粘包问题

5.基于TCP的应用层协议

6. TCP和UDP区别


1. TCP提高效率的机制

1.1 滑动窗口

作用:可以基于多线程并发,并行的执行代码结合理解,并行的发送数据报,提高网络数据传输效率(作用在发送端)

  • ?使用滑动窗口就是要同时收发多条数据报;
  • 响应的ACK下一个序号是多少表示:接收端在这个序号以前的数据包都已经接收到;
  • 窗口大小就是无需等待确认应答而可以继续发送数据的最大值(发送端接收到的ACK确认序号的最大值),上图窗口就是4000字节(四个字段);
  • 窗口大小受限于流量控制窗口大小和拥塞窗口大小:min(流量控制窗口大小,拥塞窗口大小);
  • 窗口越大,则网络的吞吐率就越高,传输效率越高;
  • 滑动:接收到ACK确认序号的最大值,可以计算出多少段数据对方已经收到,对应的发送端滑动窗口就向下滑动多少;

这种机制被称为“高速重发控制”(快重传)发送端连续三次收到相同的下一个是多少的ACK,表示数据丢包需要重发,相较于超时重传时间是更快的。

1.2 延迟应答机制

作用:接收端稍等一定的时间再去应答,这样可以有时间消费掉接收缓冲区的数据,接收缓冲区剩余的空间就更大,返回的流量窗口大小就更大

目标:保证网络不拥塞的情况下尽量提高传输效率

延迟条件:

  • 数量限制:每隔N个包就应答一次
  • 时间限制:超过最大延迟时间就应答一次

1.3 捎带应答机制

2.TCP的特性/机制

2.1 安全性、可靠性机制

  • 确认应答
  • 超时重发
  • 连接管理
  • 流量控制
  • 拥塞控制

2.2 提高效率的机制

  • 滑动窗口
  • 延迟应答
  • 捎带应答

3.对于TCP中的缓冲区

?客户端和服务端都存在接收缓冲区和发送缓冲区(每一端都有两个缓冲区)

发送缓冲区:记录了发送数据的序号、接收ACK应答的序号

接收缓冲区:记录了接收数据的序号、应答ACK的序号

4.TCP的粘包问题

发送和接收,都存在缓冲区(多次发送和接收)

粘包原因:解析某个数据时,用到其他部分的数据了。

TCP是基于字节流的,多条数据报在缓冲区,存在粘包问题;UDP是一次性发一次性收,不存在粘包问题。

  • 如何避免粘包问题?

答:明确两个包之间的边界(应用层自己约定好数据格式、协议),类似于在线编程题,多组测试用例时的输入和输出,每组用例的输入和另一组用例的输入需要明确分隔开。

5.基于TCP的应用层协议

HTTP

HTTPS

6. TCP和UDP区别

没有哪个更好,只有在某个具体的业务场景中更合适选择

如果要满足安全可靠(包括次序)就可以使用TCP,反之,可以使用UDP

  • 效率看,UDP更优(不用等待ACK应答)
  • UDP是无连接、不可靠的,反之,TCP有连接、可靠的传输
  • UDP面向数据报,只能一次发送和一次接收;TCP是面向字节流的,可以多次发送和接收
  • UDP具有接收缓冲区,没有发送缓冲区,TCP都有
  • UDP大小受限,TCP大小不受限
  • TCP有“确认应答、超时重发、连接管理、流量控制、拥塞控制”机制保证其安全、可靠性

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

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