TCP、HTTP以及RPC的梳理

2024-08-27 05:52
文章标签 http rpc tcp 梳理

本文主要是介绍TCP、HTTP以及RPC的梳理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TCP:一种面向连接的、可靠的、基于字节流的协议

  1. 原生 TCP 和粘包问题
    TCP 是一种面向连接的、可靠的传输层协议,负责在网络上发送字节流数据。它提供了流量控制、错误检测和重传等机制,但并不对应用层的数据进行分隔或解析。
    粘包问题:由于 TCP 是面向字节流的,它无法区分不同的数据包边界。这会导致多个数据包被“粘”在一起,接收端必须通过应用层协议来处理数据边界。
  2. 协议层次与数据分隔
    协议:为了处理 TCP 的粘包问题,各种应用层协议定义了数据的格式和分隔规则。例如,HTTP 和 RPC 都在 TCP 上运行,但它们使用不同的方式来定义和管理消息格式。
    Header 和 Body:许多协议(包括 HTTP 和 RPC)使用头部(Header)和主体(Body)来组织数据。头部通常包含元数据(如内容类型、长度、编码等),而主体包含实际的数据负载。
  3. HTTP 和 RPC
    HTTP:是一个应用层协议,用于在客户端和服务器之间传输数据。HTTP/1.1 和 HTTP/2 支持持久连接(即连接复用),可以提高性能。HTTP 定义了多种请求方法(如 GET、POST、PUT、DELETE)和数据格式(如 JSON、XML)。

HTTP/2 引入了二进制分帧、流量控制和头部压缩等改进,进一步优化了性能。
RPC (Remote Procedure Call):是一种通信协议,允许在网络上调用远程服务器上的函数或过程。RPC 的目标是使远程服务调用像本地服务调用一样方便。RPC 本身不是一个具体的协议,而是一种模式,可以使用多种底层协议来实现,如 HTTP、gRPC、Thrift 等。

HTTP 和 RPC 的关系:RPC 可以使用 HTTP 作为传输协议(例如,JSON-RPC 和 XML-RPC),或者使用其他协议(如 gRPC 使用 HTTP/2)。RPC 聚焦于简化远程调用,而 HTTP 聚焦于传输数据和资源。

参考链接:https://juejin.cn/post/7121882245605883934

这篇关于TCP、HTTP以及RPC的梳理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110822

相关文章

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存