【计算机基础知识4】网络通信协议:TCP、UDP、WebSockets

news2024/12/29 10:23:19

目录

一、TCP(传输控制协议)

1. TCP的特点

2. TCP的连接建立和终止

3. TCP的可靠性机制

4. TCP的流量控制

二、UDP(用户数据报协议)

1. UDP的特点

2. UDP的使用场景

三、WebSockets

1. WebSockets协议的特点

2. WebSockets协议实现

3. WebSockets注意事项


一、TCP(传输控制协议)

TCP是一种面向连接的传输协议,它实现了可靠的数据传输。了解TCP的特点、连接建立和终止的过程、可靠性机制和流量控制对于前端开发人员来说非常重要。

1. TCP的特点

TCP是一种字节流协议,它确保了数据的可靠传输。其主要特点包括:

(1)面向连接:在发送数据之前,需要先建立连接,确保通信双方能够正确地发送和接收数据。

(2)可靠传输:TCP通过握手、确认和重传等机制,确保数据的完整性和正确性。

(3)面向字节流:TCP将数据拆分成若干个数据段,并在接收端重新组合成原始数据流。

(4)全双工通信:TCP支持双向通信,即客户端和服务器之间可以同时发送和接收数据。

2. TCP的连接建立和终止

TCP的连接建立过程称为三次握手,连接终止过程称为四次挥手。

(1)三次握手

客户端向服务器发送SYN报文,包含客户端的SYN序列号(x)。

服务器收到SYN报文后,回复SYN+ACK报文,包含服务器的SYN序列号(y)和确认序列号(x+1)。

客户端收到SYN+ACK报文后,发送ACK报文,确认序列号为y+1。此时,连接建立成功。

(2)四次挥手

客户端向服务器发送FIN+ACK报文,表示客户端即将关闭连接。

服务器收到FIN+ACK报文后,回复ACK报文,确认序列号为x+1。

服务器向客户端发送FIN+ACK报文,表示服务器即将关闭连接。

客户端收到FIN+ACK报文后,发送ACK报文,确认序列号为y+1。此时,连接终止。

3. TCP的可靠性机制

TCP通过以下可靠性机制确保数据传输的正确性:

(1)滑动窗口机制:通过调整窗口大小,控制数据的发送和接收速度。

(2)确认和重传:接收端回复确认(ACK)报文,表示已成功接收数据。若在一定时间内未收到确认,发送端将重发数据。

(3)流量控制:TCP使用滑动窗口机制进行流量控制,避免接收端因处理能力不足而丢失数据。

4. TCP的流量控制

TCP通过滑动窗口机制实现流量控制。窗口大小限制了发送端可以发送的数据量,接收端根据处理能力通知发送端调整窗口大小,以确保接收端能够及时接收和处理数据。

TCP的拥塞控制是通过调整发送端的窗口大小来避免网络拥塞。在慢开始阶段,窗口大小逐渐增加,直到发生拥塞或达到最大窗口大小。一旦发生拥塞,窗口大小将减小,然后进入拥塞避免阶段。在拥塞避免阶段,窗口大小以指数方式增加,直到再次达到最大窗口大小。如果在此过程中再次发生拥塞,窗口大小将立即减小一半,然后继续进入慢开始阶段。这种拥塞控制机制可以动态地调整窗口大小,以避免网络拥塞并提高网络的利用率。

TCP的流量控制和拥塞控制机制可以确保数据的可靠传输,避免网络拥塞和数据丢失。这些机制的实现对于前端开发人员来说非常重要,因为它们可以提高应用程序的性能和稳定性。

二、UDP(用户数据报协议)

UDP是一种面向无连接的传输协议,它提供了简单、不可靠的数据传输服务。以下是对UDP特点和使用场景的介绍。

1. UDP的特点

UDP具有以下特点:

(1)无连接:在发送数据之前,无需建立连接,可以直接发送数据。

(2)不可靠传输:UDP不提供确认和重传等可靠性机制,因此可能会出现数据丢失或乱序的情况。

(3)简单传输:UDP的头部开销较小,只包含源端口、目的端口、长度和校验和等字段。

(4)面向数据报:UDP将数据拆分成若干个数据报,并在接收端重新组合成原始数据。

2. UDP的使用场景

与 TCP 相比,UDP 的开销较小,发送数据的效率较高,因此在一些特定场景下使用 UDP 是非常合适的。以下是 UDP 的主要使用场景:

(1)实时通信:对于实时性要求较高的应用,如音视频通信、在线游戏等,使用UDP更为合适。因为UDP的传输延迟较低,能够满足实时通信的需求。

(2)简单服务:对于一些简单服务,如DNS协议、SNMP协议等,使用UDP可以降低实现的复杂度。

(3)广播和多播通信:UDP支持广播和多播通信,适用于向多个节点发送相同数据的场景。

三、WebSockets

WebSockets是一种实现了双向通信的协议,允许浏览器与服务器之间进行实时通信。以下是对WebSockets协议的介绍。

在传统的HTTP协议中,浏览器和服务器之间的通信是单向的,即浏览器发送请求到服务器,服务器响应请求并返回数据到浏览器。这种通信方式是同步的,且在每个请求-响应周期中都需要建立新的连接。而WebSockets协议则提供了一种异步的、双向的通信方式,使得浏览器和服务器之间可以建立一个持久的连接,并且可以在连接打开后任意时间点进行数据的发送和接收。

WebSockets协议是基于TCP协议的,因此它也具有TCP协议的一些特点,如面向字节流、可靠传输等。但是,与TCP不同的是,WebSockets提供了一种更加高级的接口,使得开发人员可以更加方便地使用它来进行实时通信。

WebSockets协议的实现需要浏览器和服务器都支持该协议。在浏览器端,WebSockets可以通过JavaScript来实现;在服务器端,不同的编程语言有不同的实现方式,如Java、Python、Node.js等。

1. WebSockets协议的特点

WebSockets具有以下特点:

(1)实现了双向通信:浏览器和服务器可以同时发送和接收数据。

(2)实时通信:WebSockets支持实时通信,可以用于实时交互应用,如在线游戏、实时聊天等。

(3)跨域通信:WebSockets可以跨越多个域名进行通信,无需使用CORS等跨域技术。

2. WebSockets协议实现

(1)建立连接:浏览器向服务器发送WebSocket连接请求,服务器接受请求并建立持久连接。

(2)发送和接收数据:在连接建立后,浏览器和服务器都可以随时发送和接收数据。数据是以帧为单位进行传输的,包括文本帧和二进制帧。

(3)关闭连接:当浏览器或服务器想要关闭连接时,可以发送关闭帧来关闭连接。

WebSockets协议的实现细节比较复杂,这里只是简单地介绍了它的基本概念和实现过程。在实际应用中,开发人员需要根据具体的需求来使用WebSockets,例如实现实时聊天、在线游戏等应用。

3. WebSockets注意事项

在使用WebSockets时,需要注意以下几点:

(1)安全问题:WebSockets协议虽然提供了双向通信的能力,但是它也存在一些安全问题,如跨站脚本攻击(XSS)等。因此,在使用WebSockets时需要采取一些安全措施,如使用HTTPS协议进行数据传输、对数据进行过滤和校验等。

(2)兼容性问题:虽然大多数现代浏览器都支持WebSockets协议,但是仍然存在一些老旧的浏览器不支持该协议。因此,在实际应用中需要考虑浏览器的兼容性问题。

(3)性能问题:虽然WebSockets协议可以实现实时的通信,但是它也存在一些性能问题,如网络拥塞、延迟等。因此,在使用WebSockets时需要考虑网络环境和应用场景,合理地使用WebSockets。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/995077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二分搜索树深度优先遍历(Java 实例代码)

目录 二分搜索树深度优先遍历 Java 实例代码 src/runoob/binary/Traverse.java 文件代码: 二分搜索树深度优先遍历 二分搜索树遍历分为两大类,深度优先遍历和层序遍历。 深度优先遍历分为三种:先序遍历(preorder tree walk&am…

严选算法模型质量保障

在算法模型整个生命周期**(算法模型生命周期:初始训练数据 --> 模型训练 --> 模型评估 --> 模型预估 --> 训练数据)**中,任何环节的问题引入都可能导致算法模型质量问题。所以我们在做模型质量保障的过程中&#xff0…

【日常笔记】使用Server过程中可能遇到的一些问题

使用Server过程中可能遇到的一些问题 1. 如何查找GPU型号与驱动版本之间的关系?2. 如何查看当前Server的内核版本?3. 使用Nvidia过程中可能用到的命令4. 对Jupyter Notebook的一些配置5. TensorFlow的一般操作6. 使用PyTorch的一些操作7. 修改安装源为国…

【漏洞复现】网互联路由器存在密码泄露

漏洞描述 蜂网互联-让链接无限可能,灵活的多线分流,强大的策略分流,灵活调度各种软件应用,深度识别系统,各种应用一网打尽,灵活调整优先级,最简单的路由器,简洁易学的配置&#xff…

MySQL——多表查询

多表查询 多表查询的出现,是为了解决当我们的数据不能存放在一张表上,或者我们的数据本身就是存在多张表上,需要根据字段之间的关系,联合多张表查询出想要的数据。那么根据业务实现的关系,表与表之前也出现了三种基本…

构建微服务项目时启动网关服务失败的解决方案

启动网关服务时报“Unable to create the temporary folder: C:\WINDOWS\TEMP\/nio-file-upload”错误。 代码与之前没有任何变化,但就是启动不了,观察错误意思大概是不能创建临时文件夹:C盘下的WINDOWS下的TEMP目录下的nio-file-upload这个东…

C#,数值计算——多项式微分(Binomial Deviates)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 二项式偏差 /// Binomial Deviates /// </summary> public class Binomialdev : Ran { private double pp { get; set; } private double p…

day57 补

647. 回文子串 力扣题目链接(opens new window) 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视作不同的子串。 示例 1&#xff1a; 输入&#xff1a…

机器学习——boosting之提升树

提升树和adaboost基本流程是相似的 我看到提升树的时候&#xff0c;懵了 这…跟adaboost有啥区别&#xff1f;&#xff1f;&#xff1f; 直到看到有个up主说了&#xff0c;我才稍微懂 相当于&#xff0c;我在adaboost里的弱分类器&#xff0c;换成CART决策树就好了呗&#xff1…

Yolov8-pose关键点检测:模型轻量化创新 | ​BiLevelRoutingAttention 动态稀疏注意力 | CVPR2023 BiFormer

💡💡💡本文解决什么问题:BiLevelRoutingAttention ,通过双层路由(bi-level routing)提出了一种新颖的动态稀疏注意力(dynamic sparse attention ) ​BiLevelRoutingAttention | GFLOPs从9.6降低至8.5,参数量从6482kb降低至6134kb, mAP50从0.921提升至0.926 Yolov8…

云备份服务端——实用类工具实现

一&#xff0c;文件实用类设计实现 不管是客户端还是服务端&#xff0c;文件的传输备份都涉及到文件的读写&#xff0c;包括数据管理信息的持久化也是如此&#xff0c;因此首先设计封装文件操作类&#xff0c;这个类封装完毕之后&#xff0c;则在任意模块中对文件进行操作时都将…

SLAM ORB-SLAM2(1)总体框架

SLAM ORB-SLAM2(1)总体框架 1. 简介2. 框架3. TRACKING4. LOCAL MAPPING5. LOOP CLOSING6. MAP1. 简介 ORB-SLAM2 是一个实时和完整的视觉SLAM系统(包括闭环检测、重定位、地图重用等功能) 提供了利用单目、双目以及RGB-D相机完成稀疏三维重建的功能和接口 2. 框架 总体来说…

c++day3

1> 自行封装一个栈的类&#xff0c;包含私有成员属性&#xff1a;栈的数组、记录栈顶的变量 成员函数完成&#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 #include <iostream>using namespace std; clas…

baichuan2(百川2)本地部署的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Vue3,Typescript中引用组件路径无法找到模块报错

是这么个事&#xff0c;我在vue3新创建的项目里&#xff0c;写了个组件叫headerIndex.vue&#xff0c;放到app.vue中import就会报错 路径肯定没写错&#xff0c;找到了解决方法&#xff0c;但是也没想明白为什么 解决方法如下 在vite-env.d.ts文件中加入 declare module &qu…

《向量数据库》——向量数据库Milvus 和大模型出联名款AI原生Milvus Cloud

大模型技术的发展正加速对千行百业的改革和重塑,向量数据库作为大模型的海量记忆体、云计算作为大模型的大算力平台,是大模型走向行业的基石。而电商行业因其高度的数字化程度,成为打磨大模型的绝佳“战场”。 在此背景下,Zilliz 联合亚马逊云科技举办的【向量数据库 X 云计…

Java类和对象(七千字详解!!!带你彻底理解类和对象)

目录 一、面向对象的初步认知 1、什么是面向对象 2、面向对象和面向过程 &#xff08;1&#xff09;传统洗衣服的过程 &#xff08;2&#xff09;现代洗衣服过程 ​编辑 二、类的定义和使用 1、类的定义格式 三、类的实例化 1、什么是实例化 2、类和对象说明 四、t…

【2023年11月第四版教材】第11章《成本管理》(合集篇)

第11章《成本管理》&#xff08;合集篇&#xff09; 1 章节说明2 管理基础3 管理过程3.1 管理ITTO汇总★★★ 4 规划成本管理4.1 成本管理计划★★★ 5 估算成本5.1 估算成本★★★ &#xff08;19上57&#xff09; &#xff08;19下35&#xff09;5.2 数据分析★★★5.4 成本估…

阿里云免费镜像仓库+金克斯+码云实现自动CI

前提 有阿里云账号&#xff0c;并且已经完成实名认证。最好有一台云服务器&#xff0c;以及码云账号&#xff0c;还有现成的项目以及Dockerfile一、开通阿里云容器镜像服务 1、新建命名空间(一般只需要建一个就行了) 2、在命名空间下&#xff0c;建立镜像仓库&#xff0c;看下…

D. Choosing Capital for Treeland

Problem - 219D - Codeforces 问题描述&#xff1a;Treeland国有 n 个城市, 这 n 个城市连接成了一棵树, 靠单向道路相连, 现在政府想要选择一个城市作为首都, 条件是首都必须能到达其他所有城市, 现在我们不得不将一些道路反转方向, 记反转的条数为 k 条, 我们要找到所有使 k…