当前位置: 首页 > backend >正文

【计算机网络 | 第二篇】常见的通信协议(一)

HTTP和HTTPS有什么区别?

端口号:HTTP默认是80端口,HTTPS默认是443。

URL前缀:HTTPHTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://

安全性和资源消耗:HTTP协议运行在TCP上,都是明文传输,客户端和服务端都无法验证对方的身份。HTTPS协议是运行在SSL/TLS上的HTTP协议,SSL/TLS运行在TCP上,所有传输内容都经过加密,加密采用对称加密,但是对称加密的密钥用服务器方的证书采用非对称加密。所以HTTP协议没有HTTPS协议安全,但是HTTPS协议比HTTP协议耗费更多资源。

SEO(搜索引擎优化): 搜索引擎会更加青睐使用HTTPS协议的网站,因为HTTPS能够提供更高的安全保护。使用HTTPS协议的网站在搜索结果在可能会被优先显示,从而对SEO产生影响。

WebSocket

什么是WebSocket?

WebSocket是一种基于TCP连接的全双工通信协议,即客户端和服务端可以同时发送和接收信息。

WebSocket 协议本质上是应用层的协议,用于弥补 HTTP 协议在持久通信能力上的不足。客户端和服务器仅需一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

 WebSocket和HTTP有什么区别?

WebSocket和HTTP都是基于TCP的应用层协议,都可以在网络中传输数据。

两者区别:

  • WebSocket 是一种双向实时通信协议,而 HTTP 是一种单向通信协议。并且,HTTP 协议下的通信只能由客户端发起,服务器无法主动通知客户端。
  • WebSocket 使用 ws:// 或 wss://(使用 SSL/TLS 加密后的协议,类似于 HTTP 和 HTTPS 的关系) 作为协议前缀,HTTP 使用 http:// 或 https:// 作为协议前缀。
  • WebSocket 可以支持扩展,用户可以扩展协议,实现部分自定义的子协议,如支持压缩、加密等。
  • WebSocket 通信数据格式比较轻量,用于协议控制的数据包头部相对较小,网络开销小,而 HTTP 通信每次都要携带完整的头部,网络开销较大(HTTP/2.0 使用二进制帧进行数据传输,还支持头部压缩,减少了网络开销)。

WebSocket工作过程

  1. 客户端向服务器发送一个 HTTP 请求,请求头中包含 Upgrade: websocketSec-WebSocket-Key 等字段,表示要求升级协议为 WebSocket;
  2. 服务器收到这个请求后,会进行升级协议的操作,如果支持 WebSocket,它将回复一个 HTTP 101 状态码,响应头中包含 ,Connection: UpgradeSec-WebSocket-Accept: xxx 等字段、表示成功升级到 WebSocket 协议。
  3. 客户端和服务器之间建立了一个 WebSocket 连接,可以进行双向的数据传输。数据以帧(frames)的形式进行传送,WebSocket 的每条消息可能会被切分成多个数据帧(最小单位)。发送端会将消息切割成多个帧发送给接收端,接收端接收消息帧,并将关联的帧重新组装成完整的消息。
  4. 客户端或服务器可以主动发送一个关闭帧,表示要断开连接。另一方收到后,也会回复一个关闭帧,然后双方关闭 TCP 连接。

另外,建立 WebSocket 连接之后,通过心跳机制来保持 WebSocket 连接的稳定性和活跃性。

TCP与UDP

TCP与UDP的区别

1.是否面向连接:UDP传输数据不需要建立连接。TCP传输数据前要先建立连接,并且传输数据结束后要断开连接。

2.是否是可靠传输:主机在收到UDP报文后,不需要任何确定,并且不保证数据不丢失,不保证数据是否顺序到达。TCP提供可靠的传输服务,TCP在传输数据前,会通过三次握手来确认连接,并且通过TCP传输的数据无差错、不丢失、不重复、按时到达。

3.是否有状态:TCP传输是有状态的,当TCP传输数据之后,TCP会去记录自己的状态,比如消息是否被发送了,是否被成功接收到了,为此TCP需要维护复杂的状态记录表。而UDP在消息发出之后就不管了。

4.传输效率:由于TCP传输数据之前要先建立连接,同时又要保证数据的可靠传输,因此TCP传输效率低于UDP。

怎么选择TCP和UDP?

UDP一般用于即时通信:比如视频、直播,即使消息丢失一些,也不会有什么影响。这些场景对于信息传输准确性要求不高。

TCP对于传输准确要求高的场景:比如发送邮件、文件传输等等。

http://www.xdnf.cn/news/470.html

相关文章:

  • Jetson Orin NX 部署YOLOv12笔记
  • 学生成绩统计系统需求说明书
  • 180-《商陆》
  • 基于medusa范式的大模型并行解码推理加速初探
  • sql之DML(insert、delete、truncate、update、replace))
  • Vue组件深度封装:从复用艺术到架构思维
  • P1113 杂务-拓扑排序
  • 【网络编程】TCP数据流套接字编程
  • Cypress EZ-USB CX3 适配输出imx586相机
  • 100KNTC阻值表
  • CTF--秋名山车神
  • 【Test】function 包装器 和 bind 包装器的使用
  • 软件测试:静态测试与动态测试的全面解析
  • 大模型Rag - 如何评估Rag
  • SpringBoot启动后初始化的几种方式
  • P1042【深基8,例1】乒乓球
  • C++手撕STL-其二
  • Pandas取代Excel?
  • MCGS昆仑通太屏笔记
  • 【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能
  • 科学研究:怎么做
  • 【java实现+4种变体完整例子】排序算法中【堆排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • OSPF综合实验(HCIP)
  • 第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言
  • AUTOSAR图解==>AUTOSAR_SWS_KeyManager
  • 那就聊一聊mysql的锁
  • Firewalld防火墙
  • (二)Trae 配置C++ 编译
  • 2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?