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

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

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对于传输准确要求高的场景:比如发送邮件、文件传输等等。

相关文章:

  • 【HDFS入门】HDFS数据冗余与容错机制解析:如何保障大数据高可靠存储?
  • day29 学习笔记
  • 洛谷题目:P8624 [蓝桥杯 2015 省 AB] 垒骰子 题解 (本题简)
  • linux kernel irq相关函数详解
  • 系分架构论文《论高并发场景的架构设计和开发方法》
  • 股指期货跨期套利是如何赚取价差利润的?
  • Java实现将MarkDown保留文档内容及格式输出到浏览器页面
  • 基于控制台的小车导航游戏开发详解(C++实现)
  • 嘉立创原理图、PCB常见问题
  • 10.thinkphp的响应
  • MCP协议驱动的功能纳米材料设计及其在光催化甲烷偶联中的创新应用
  • CPU Loading and Task Loading Visualization Tool
  • 加一:从简单问题到复杂边界的深度思考
  • 每日一记:CRT和图论
  • 【软考-高级】【信息系统项目管理师】【论文基础】资源管理过程输入输出及工具技术的使用方法
  • vue3专题1------父组件中更改子组件的属性
  • 【信息系统项目管理师】高分论文:论信息系统项目的干系人管理(商业银行绩效考核系统)
  • Prompt-Tuning 提示词微调
  • 离线安装elasticdump并导入和导出数据
  • Android Studio 获取配置资源与第三方包信息详解
  • 东北三省,十年少了一个“哈尔滨”
  • 揭晓!人形机器人半马完赛奖+专项奖发布
  • 错失两局领先浪费赛点,王楚钦不敌雨果无缘世界杯男单决赛
  • 中物联声明:反对美对华物流、海事和造船领域301调查措施
  • 三一重工去年净利增逾三成至59.75亿,拟分红超30亿元
  • 今年1-3月全国吸收外资2692.3亿元人民币