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

TTP/HTTPS、TCP/IP 协议、RPC、Socket 通信机制

1. TTP/HTTPS

TTP (HTTP) 和 HTTPS(Hypertext Transfer Protocol Secure)是基于 TCP/IP 协议的应用层协议,主要用于客户端和服务器之间的数据传输。

  • HTTP(超文本传输协议):这是用于 web 页面和服务器之间通信的标准协议。它是无状态的、无连接的协议,数据是以纯文本形式传输的。
  • HTTPS(超文本传输安全协议):它是 HTTP 协议的安全版本,通过 SSL/TLS
    协议提供加密通信,确保数据传输的机密性、完整性和认证性。
  • HTTPS 在 HTTP 的基础上通过安全的加密协议来防止中间人攻击和数据泄露。

2. TCP/IP 协议

TCP/IP(传输控制协议/网际协议)是一组用于计算机网络中数据传输的协议,它是现代互联网的基础。TCP/IP 主要包含两个协议:TCP 和 IP。

  • TCP(Transmission Control Protocol,传输控制协议):TCP 是一种面向连接的协议,提供可靠的数据传输。它通过三次握手建立连接,确保数据包按照顺序到达并且没有丢失。它会自动进行重传、流量控制等操作来保证数据的完整性和顺序。
  • IP(Internet Protocol,网际协议):IP 是负责将数据包从源主机传输到目标主机的协议。它是无连接的协议,只负责根据 IP 地址进行数据包的路由和转发。IP
    协议没有任何的错误检测或恢复机制。

TCP/IP 协议栈通常包括以下层级:

  • 应用层:如 HTTP, FTP, DNS, SMTP。
  • 传输层:如 TCP, UDP。
  • 网络层:如 IP。
  • 数据链路层:如 Ethernet, Wi-Fi。

3. RPC(远程过程调用)

RPC(Remote Procedure Call,远程过程调用)是一种使得程序能够在不同计算机之间调用远程服务器上的服务的机制。它使得开发人员可以像调用本地函数一样调用远程服务器上的函数。RPC 是应用层协议,底层使用 TCP/IP 等网络协议进行通信。

  • 过程:调用本地函数时,程序通过网络发送请求到远程计算机,远程计算机会接收请求并执行相应的函数,然后将结果返回给调用者。这个过程对开发者来说是透明的,开发者无需关心底层的通信细节。
  • 常见 RPC 框架:
    • gRPC:由 Google 开发的高性能远程过程调用(RPC)框架,基于 HTTP/2 协议。
    • JSON-RPC 和 XML-RPC:轻量级的 RPC 协议,支持通过 HTTP 传输,分别使用 JSON 和 XML 格式传输数据。

4. Socket 通信机制

Socket 是计算机网络中一种常用的通信机制,它提供了应用程序之间进行网络通信的接口。通过 Socket,程序可以进行数据的收发,并且实现基于 TCP/IP 或 UDP 的通信。
Socket 的基本原理:

  • 客户端和服务器端通信:客户端通过创建一个 Socket 与服务器建立连接。服务器端通常会监听特定的端口,等待客户端的连接请求。
  • 创建 Socket:客户端和服务器都需要创建自己的 Socket。客户端通过指定服务器的 IP
    地址和端口号来连接服务器,而服务器端则监听来自客户端的请求。
  • 数据传输:连接建立后,客户端和服务器就可以通过 Socket 发送和接收数据。TCP Socket 是面向连接的,保证数据的可靠传输;而
    UDP Socket 是无连接的,适用于实时通信等场景。
  • 关闭连接:数据传输结束后,连接双方会关闭各自的 Socket,释放资源。
    Socket 通信的类型:
  • TCP Socket:基于 TCP 协议的可靠连接,数据保证按顺序传输且不丢失。
  • UDP Socket:基于 UDP 协议,无连接、无状态的通信方式,适用于实时性要求高但能容忍数据丢失的场景。

总结:

  • TTP/HTTPS:用于 Web 应用的通信协议,其中 HTTPS 提供安全加密。
  • TCP/IP 协议:用于数据传输的网络协议栈,包含 TCP(可靠传输)和 IP(路由转发)协议。
  • RPC:通过远程过程调用实现分布式系统之间的通信。
  • Socket:提供进程间通信机制,支持基于 TCP 或 UDP 的通信。

http://www.kler.cn/a/574299.html

相关文章:

  • RxJS与Redux革命性协同:打造高效、解耦的前端状态管理方案
  • 【摸鱼指南】--- VSCode 使用 Thief-Book 隐形阅读模式配置教程 程序员必备插件
  • 全新方案80M/S,告别限速!
  • 【Hadoop】Hadoop的MapReduce
  • 如何确保爬虫遵守1688的使用协议
  • 博查搜索API日调用量突破3000万次,达到Bing API的1/3。
  • HBuilder X 使用 TortoiseSVN 设置快捷键方法
  • 在【k8s】中部署Jenkins的实践指南
  • 在命令的轨迹中:创建、删除与查看普通用户,Linux用户管理的风华与深邃
  • 5G网络切片技术浅显易懂分析
  • 类、方法和变量可使用的访问控制符和修饰符的表格展示
  • 子数组问题——动态规划
  • golang接口
  • docker引擎断电后启动失败常见问题和解决方案
  • 自学Java-JavaSE基础加强(多线程)
  • 通用外设驱动模型(四步法)及配置GPIO步骤
  • 《DataWorks 深度洞察:量子机器学习重塑深度学习架构,决胜复杂数据战场》
  • 【YOLOv12改进trick】超分辨率SAFM模块替换上采样模块,引入YOLOv12,实现模糊目标检测涨点,含创新点Python代码,方便发论文
  • 【MySQL】事务(中)
  • Spring的AOP