| |
|
开发:
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协议概述
TCP协议的首部格式 TCP协议的首部格式为:固定长度的20字节+选项(长度可变),其大致分配如下: 端口和目的端口源分别表示发送方端口和接受方端口 序号表示数据部分的第一个字节的序号 确认号表示当接受方收到发送方的数据后,希望发送方下一次发送数据的第一个字节的序号 数据偏移是一个4位的二进制值,表示的是TCP首部的大小,单位是4个字节。四位二进制表示的最大值是1111,也就是TCP首部最大为60字节,出去固定长度的20字节外,长度可变的选项最大为40字节。 保留保留为今后使用,一般设置为0 控制位控制位表示的是一个个的状态值。URG如果为1,说明这是一个紧急数据包,那么这个数据包的优先级高,无需排队,直接发送。ACK如果为1表示确认收到,SYN=1表示这是一个建立请求的数据包。如果对方同意,那么恢复的数据包中SYN=1,ACK=1。RST=1表示TCP连接出现了严重错误。FIN=1表示数据传输完毕,断开连接。 窗口窗口值是作为让对方设置其发送窗口的大小的数值,因为对方的接收缓存是有限的。所以要根据其就收数据的能力来设置发送方窗口的大小。 检验和检验和检验的区域包括首部和数据部分 紧急指针选项?填充三次握手第一次握手,客户端发送一个SYN=1,ACK=0,seq = x的请求连接数据包给服务器。 第二次握手,当客户端发现这是一个请求连接的数据包,同意连接就像客户端发送一个SYN=1,ACK=1,ack=x+1,seq = y的数据包 第三次握手,客户端收到服务器发送的同意连接的数据包后,发送一个SYN = 0,ACK=1,seq = x+1,ack = y+1的数据包,如此三次握手完成,客户端与服务器成功建立连接,发送数据。 四次挥手第一次挥手,客户端发送FIN=1,ACK=0,seq = x表示客户端希望断开连接。 第二次挥手,服务器发送FIN=0,ACK=1,ack=x+1,seq=u;表示服务器同意将连接断开,然后服务器继续发送它为发送完的数据。 第三次挥手,服务器发送FIN=1,ACK=1,ack=u+1,seq=w;表示所有的数据已经发送完毕,正式断开连接。 第四次挥手,客户端发送FIN= 0,ACK=1;表示同意服务器断开连接,正式断开。 重传机制重传超时发送方在重新发送数据之前,等待接收方发送确认收到之间的时间间隔,如果超过了这个时间间隔,就会进行超时重传。 超时重传在重传超时的时间间隔内,没有收到接收端确认收到的数据包,就会分为之前的数据包丢失,如此发送端就会重新发送数据包。 快速重传发送端一次发送多个数据包,如果连续三次收到接收端发送的相同的确认收到数据包,发送端就会就知道那个数据包丢失了,就会对该数据包进行重传,但是缺点是,不知道重传一个,还是之后的多个。 SACK方法
拥塞控制的四个算法慢开始发送端最开始执行慢开始,一开始只发送一个数据包,收到接受反的确认后,发送两个,再收到对方的确认后,发送4个,依次递增; 避免拥塞给慢开始设置一个门限值ssthresh,当达到这个门限值是,数据包的数量不在以2倍增加,而是依次加1,如果出现了超时,就另ssthresh=当前数据包数量/2然后进入快开始 快重传一旦发送方收到接收方发送三个相同的确认数据包,说明有数据包出现了丢失,发送端就会快速对这个数据包进行重传。 快恢复一旦发送端收到接收端发送三个相同的确认数据包。说明出现了数据包丢失,这是将每次发送的数据包数量减半,同时把ssthresh的值也设置为这个,然后执行避免拥塞算法(加法当大),每次对发送的数据包数量加1。 UDP协议概述?UDP协议全称User Datagram Protocol,它不提供复杂的控制机制,在出现网络拥堵的情况下,UDP协议也不进行流量监控等避免网络拥堵的行为。即使出现了数据丢包,也不进行重传,当数据包的顺序出现了混乱,也没有纠正功能,但它的优点是效率高。性能开销小。 UDP协议的特点面向报文传输,不具备可靠性,也不使用拥塞控制,适合多媒体通信的要求。 支持一对一,一对多,多对一,多对多。 UDP首部小,占8个字节。 TCP协议与UDP协议的区别
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 20:37:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |