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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP和UDP -> 正文阅读

[网络协议]TCP和UDP

TCP和UDP

tcp和udp是传输层协议,我们日常的网络通讯都是通过这两种协议来传输数据的。他们都是在文件间传送数据,数据可以是各种文件(txt,jdg,mp4等等都可)传输的都是二进制数。

TCP协议

tcp全称为传输控制协议,是面向连接的可靠传输协议。

tcp保证面向连接要有三个步骤,分别为三次握手、传输确认、四次挥手,促使在不可靠的信道上建立可靠的连接。

三次握手

三次握手是为了建立稳定可靠的连接。

当客户端向服务端发起连接时,会先发一个请求连接的SYN数据包进行询问,服务端收到后如果可以建立连接则会回复SYN+ACK包,客户端收到后再回复一个ACK包,连接成功建立。

为什么不是两次握手而是三次握手?

为了解决网络信道不可靠的问题,防止客户端发送SYN请求包时中途失效,突然又恢复传到服务端引起错误。

建立起连接后,客户端和服务端进入了数据传输状态

传输确认

可靠传输的四种传输机制:确认 排序 流控(滑动窗口) 重传

确认重传机制:在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。

**排序:**为了解决丢包问题。TCP为每个连接建立了一个发送缓冲区,建立后的第一个字节为0,后面每个字节的序列号就会增加1,发送时,取一部分数据组成发送报文,在其TCP协议头中会附带序列号和长度,接收端收到后,需要回复确认报文。确认报文的ACK等于接受序列号+长度。也就是下一包数据需要发送的起始序列号,这样就可以和之前的包衔接上,一次性发送连续的多包数据。接收端只需要回复一次ACK就可以了。如果中间出现了丢包问题,接收端请求发送端发送对应缺失的ACK报文即可。

流控(滑动窗口):应对网速变化,提速测试,缺失降速,无丢包提速。

四次断开

客户端和服务端都可以关闭连接请求,所以需要四次挥手来关闭连接请求。

假设是服务端关闭连接请求,他需要向客户端发送一个关闭请求的FIN包,表示关闭连接,自己进入中止等待1状态,这是第一次挥手

客户端收到FIN包,发送一个ACK包,表示自己进入了关闭等待状态,服务端进入中止等待2状态,这是第二次挥手

客户端此时还可以发送未发送的数据,而服务端还可以接收数据,待客户端发送完数据后,发送一个FIN包,进入最后确认状态。这是第三次挥手

服务端收到之后回复ACK包,进入超时等待状态,经过超时时间后关闭连接。而客户端收到ACK包后,立即关闭连接。这是第四次挥手

为什么服务端要等待超时时间?

和三次握手一样,这是为了保证对方已收到ACK包,假设服务端发送完最后一个ACK包后就释放了连接,一旦ACK包在网络中丢失,客户端将一直停留在最后确认状态,如果服务端发送最后一个ACK包后,等待一段时间,这时客户端因为没有收到ACK包,会重新发送FIN包,服务端会响应这个FIN包,重发ACK包并刷新超时时间。

UDP协议

UDP全称为用户数据报协议。是非面向连接的协议。发送数据就是简单的进行封装,然后发送就可以了,数据包没有状态上的联系。

因为发送形式简单,所以其CPU,内存资源的占用远小于TCP,性能损耗小,但由于不可靠,会产生丢包,因此在传输稳定性上弱于TCP,因此适用于一些对丢包没有太大要求的地方,比如通话、直播等。

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

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