| |
|
开发:
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协议1.简介????????TCP:传输控制协议(Transmission Control Protocol)是面向连接,可靠的传输层协议,每一条 连接只能有两个端点(服务器、客户端),所以每一条 2.报文段? 每个TCP连接传输的数据都是一个一个的报文段,而每个报文段都有一个TCP首部
报文段格式如下: TCP首部内容: ?TCP首部中前20个字节是固定内容 TCP首部的最小开销为20字节,最大开销为60字节 3.连接管理
建立连接时(三次握手):? 第一次握手:客户端先向服务器发送一个同步数据包(报文段)。数据包的 ? 第二次握手:服务器收到客户端发送的第一个数据包后,根据 ? 第三次握手:客户端收到服务器的确认之后,再给服务器发送一个数据包。数据包的TCP首部内容:同步SYN=0,确认ACK=1,序号seq=x+1,确认号ack=y+1 断开连接时(四次挥手):? 第一次挥手:首先客户端向服务器发送连接释放的请求报文(数据包),并停止发送数据。在连接释放报文(数据包)的TCP首部中:终止FIN=1,确认ACK = 0,终止FIN=1,意味着客户端要主动释放客户端—>服务器的TCP连接;序号位seq为u,u值由客户端指定。随后等待B的确认。 ? 第二次挥手:服务器收到连接释放的报文之后,给客户端发送确认报文。从客户端到服务器这个方向上的连接就释放了,TCP连接处于半关闭状态。此时客户端无法发送数据给服务器,但是服务器还可以发送数据给客户端,客户端仍可以接收。在服务器发送给客户端确认报文的TCP首部中:终止FIN=0,确认ACK=1,序号位seq=v,确认号ack=u+1,确认ACK=1表示收到了客户端发送的数据包,同意客户端释放连接; ? 第三次挥手:若服务器已经没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文。在确认报文的TCP首部中:确认ACK=1,终止FIN=1确认ACK=1,表示服务器已经把需要发给客户端的数据发完了;终止FIN=1,表示服务器要释放服务器—>客户端的TCP连接;此后服务器不再向客户端发送数据,但能接收数据。 ? 第四次挥手:客户端收到服务器的连接释放报文段后,向服务器发出确认报文。在确认报文的TCP首部中:确认ACK=1,终止FIN = 0确认ACK=1,表示收到服务器的确认报文,并同意服务器释放连接; 4.流量控制TCP协议基于滑动窗口这种机制来实现流量控制。发送方和接收方分别维护各自的缓冲区,这个缓冲区就是窗口。发送方的窗口大小由接收方的 发送方将窗口内容分为:已发送并确认,已发送未确认,未发送未超出接收方窗口范围,未发送但超出接收方窗口范围。随着接收方的确认,发送方将不断在窗口内向前滑动。 接收方将窗口内容分为:接受已确认,未收到但可以接受。接收方读取窗口内容,并不断确认通知发送方,窗口向前滑动。接收方通过改变窗口大小,可以控制发送方的速率,从而实现流量控制。 原理: 发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向前滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向前滑动接收窗口。通过控制窗口的大小来实现流量控制 5.拥塞控制拥塞控制时为了防止过多的数据注入到网络中,导致网络中的路由器或链路过载。 TCP协议只要通过四个算法来实现拥塞控制:慢开始、拥塞避免、快重传、快恢复 发送方需要维护一个叫做拥塞窗口( 慢开始:发送最初执行慢开始,令 拥塞避免:设置一个慢开始门限 快重传:在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。 快恢复:执行“乘法减小”算法,把慢开始门限 二.UDP协议1.简介???????? 2.报文段
报文段格式如下: UDP首部内容: ?其中12字节伪首部主要存放在应用层传递的ip UDP首部固定长度为8个字节 ? 三.区别面向连接:TCP协议需要建立连接,仅支持一对一通信; 可靠传输: 性能效率: 首部格式: |
|
网络协议 最新文章 |
使用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年12日历 | -2024/12/28 5:23:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |