计算机网络 TCP、RPC、GRPC、HTTP 概述

互联网14小时前更新 geekmao
4 0 0

一、、TCP 传输层协议:

TCP( 传输控制协议 )是一种面向连接的、可靠的、基于字节流的传输层协议。

  • TCP 协议具有以下特点:
  • 1、面向连接:TCP 协议在数据传输之前需要建立连接,数据传输完成后需要释放连接,保证了数据传输的可靠性和完整性。
  • 2、可靠性高:TCP 协议采用确认机制、序列号和校验和等技术,可以保证数据传输的可靠性和完整性。
  • 3、拥塞控制:TCP 协议采用拥塞控制算法,可以避免网络拥塞和丢包等问题,保证了数据传输的稳定性和公平性。
  • 4、全双工通信:TCP 协议支持全双工通信,即客户端和服务器端都可以同时发送和接收数据,实现了双向通信。
  • 5、高效性:TCP 协议采用滑动窗口机制和分段传输技术,可以提高数据传输的效率和性能。
  • 6、支持多种应用协议:TCP 协议可以支持多种应用层协议,例如 HTTP、FTP、SMTP 等。
  • 7、可靠的错误恢复:TCP 协议可以对丢失、重复、损坏和超时等错误进行恢复和处理,保证了数据传输的可靠性和完整性。
  • TCP 协议的数据传输过程如下:
  • 1、客户端向服务器端发送 SYN( 同步 )请求,请求建立连接。
  • 2、服务器端收到 SYN 请求后,向客户端发送 SYN+ACK( 同步和确认 )应答,表示可以建立连接。
  • 3、客户端收到 SYN+ACK 应答后,向服务器端发送 ACK( 确认 )应答,表示连接已经建立成功。
  • 4、数据传输完成后,客户端和服务器端分别发送 FIN( 结束 )请求,请求释放连接。
  • 5、收到 FIN 请求后,另一方发送 ACK 应答,表示已经收到了结束请求。
  • 6、双方都收到了对方的 ACK 应答后,即完成了连接的释放。

TCP 协议具有面向连接、可靠性高、拥塞控制、全双工通信、高效性、支持多种应用协议等特点,是一种非常重要的传输层协议。

  • TCP 的缺点:

TCP( Transmission Control Protocol )虽然具有很多优点,但仍存在以下缺点:

  • 1、较为复杂:TCP 协议的实现较为复杂,需要考虑到各种网络环境和异常情况,对于开发人员而言学习成本较高。
  • 2、传输效率相对较低:TCP 采用确认机制、序列号等技术,保证了数据传输的可靠性和完整性,但也使得数据传输效率相对较低。
  • 3、不适用于短连接:TCP 适用于长连接,对于短连接的支持不够友好,会增加建立和释放连接的开销。
  • 4、不适用于实时性要求高的场景:由于TCP 采用确认机制和重传机制,无法保证数据的实时性,不适用于实时性要求较高的场景。
  • 5、不适用于高负载场景:当网络负载较大时,TCP 采用拥塞控制算法可能会导致传输速度下降,影响了数据传输的效率和性能。
  • 6、无法支持广播和多播:TCP 协议无法支持广播和多播,只能进行点对点的数据传输。

TCP 虽然具有很多优点,但仍存在一些缺点,例如传输效率相对较低、不适用于短连接等。在选择协议时,需要根据具体的需求和场景进行综合考虑。

二、RPC 远程调用:

RPC 是远程过程调用( Remote Procedure Call )的缩写。它是一种计算机通信协议,使得程序可以请求另一个进程或者计算机上的服务,就像调用本地的函数一样,从而实现分布式系统之间的交互和通讯。RPC 可以大大简化分布式系统的开发,提高系统的可维护性和可扩展性。

RPC 具有以下优势:

  • 1、抽象屏蔽:RPC 框架可以屏蔽底层的网络通信细节,使得远程调用就像本地调用一样简单。
  • 2、可扩展性:RPC 框架可以支持多种协议和编码方式,可以适应不同场景的需求,同时也可以方便地添加新的功能和服务。
  • 3、可靠性:RPC 框架通常会提供各种机制来保证通信的可靠性,如超时重试、错误处理等。
  • 4、高效性:RPC 框架通常使用二进制协议和高效的序列化方式,可以大大减少网络传输的数据量,提高系统的性能。
  • 5、语言无关性:RPC 框架可以支持多种编程语言,使得不同语言的程序可以方便地进行交互和通讯。

RPC有以下缺点:

  • 1、依赖网络:RPC 需要通过网络进行通信,因此对网络的稳定性和延迟要求比较高。
  • 2、难以调试:由于 RPC 是跨进程或者跨计算机的调用,因此调试起来比较困难,需要使用一些特殊的工具和技术。
  • 3、数据格式限制:RPC 框架通常会限制数据的格式和大小,如果需要传输大量的数据或者复杂的数据结构,可能会导致性能问题。
  • 4、安全性问题:RPC 通常不会提供加密和认证等安全机制,需要在应用层进行处理,否则容易受到攻击。
  • 5、可靠性问题:RPC 框架虽然提供了一些机制来保证通信的可靠性,但仍然可能出现通信失败、丢失消息等情况,需要应用程序自己处理。

三、GRPC RPC 框架:

gRPC 是 Google 开源的一种高性能、通用的远程过程调用( RPC )框架,基于 Protocol Buffers 序列化协议进行数据传输。

gRPC 具有以下优势:

  • 1、高性能:gRPC 采用基于 HTTP/2 的二进制传输协议,可以实现双向流、头部压缩和多路复用等特性,提高了网络传输的效率和性能。
  • 2、多语言支持:gRPC 支持多种编程语言,包括 C++、Java、Python、Go、Ruby 等,可以方便地构建跨语言的分布式系统。
  • 3、自动生成代码:gRPC 可以根据服务定义文件自动生成客户端和服务器端的代码,大大简化了开发过程。
  • 4、可扩展性:gRPC 支持多种负载均衡算法和服务发现机制,可以适应不同场景的需求。
  • 5、安全性:gRPC 支持 TLS 加密和认证等安全机制,保障通信的安全性。
  • 6、易于使用和维护:gRPC 提供了丰富的文档和工具链,使得开发和维护分布式系统变得更加容易。

gRPC具有以下缺点:

  • 1、学习曲线较陡峭:相比于传统的 RESTful API,gRPC 需要使用 IDL 文件来定义服务和消息类型,并且需要生成客户端和服务器端的代码,需要掌握这些新的概念和技术。
  • 2、不支持 RESTful API:gRPC 不支持基于 HTTP 的 RESTful API,无法与现有的 RESTful API 进行兼容和集成。
  • 3、不支持浏览器端:gRPC 目前不支持 Web 浏览器端,因为浏览器不支持 HTTP/2 协议。
  • 4、依赖 Protocol Buffers:gRPC 默认使用 Google 开发的 Protocol Buffers 序列化协议,如果需要使用其他的序列化协议,则需要自行实现。
  • 5、难以调试:由于 gRPC 采用二进制协议,数据的传输和解析都是以二进制形式进行的,对于调试和排错带来了一定的困难。
  • 6、安全性依赖于 TLS:虽然 gRPC 支持 TLS 加密和认证等安全机制,但这些机制都依赖于 TLS 协议,如果 TLS 协议本身存在漏洞或被攻击,则会影响 gRPC 的安全性。

四、HTTP 应用层协议:

HTTP 协议是一种基于请求-响应模式的应用层协议,用于在 Web 浏览器和 Web 服务器之间传递数据。它是一种无状态的协议,每个请求和响应都是独立的,没有任何关联性。

HTTP 通常使用 TCP 作为传输层协议,使用端口号 80 进行通信。HTTP 协议定义了客户端和服务器之间交换的消息格式和规则,包括请求方法、请求头部、请求正文、响应状态码、响应头部和响应正文等。

HTTP 请求由三部分组成:请求行、请求头部和请求正文。其中,请求行包括请求方法、URL 和 HTTP 版本号;请求头部包括请求的附加信息,如 Cookie、User-Agent 等;请求正文包括请求的数据内容,如表单数据、JSON 数据等。

HTTP 响应由三部分组成:状态行、响应头部和响应正文。其中,状态行包括 HTTP 版本号、状态码和状态描述;响应头部包括响应的附加信息,如 Content-Type、Content-Length 等;响应正文包括响应的数据内容,如 HTML 页面、图片等。

HTTP 协议具有以下优点:

  • 1、简单易用:HTTP 采用文本协议和请求-响应模型,消息格式简单、易于理解和使用。
  • 2、易于扩展:HTTP 支持插件和扩展机制,可以根据需求添加新的功能和特性。
  • 3、可靠性高:HTTP 采用 TCP 协议进行数据传输,保证了数据的可靠性和完整性。
  • 4、良好的兼容性:HTTP 是互联网上最常用的协议之一,几乎所有的浏览器和服务器都支持 HTTP 协议,具有良好的兼容性。
  • 5、支持缓存机制:HTTP 支持缓存机制,可以提高网络传输的效率和性能。
  • 6、安全性高:HTTP 支持 SSL / TLS 加密和认证等安全机制,保证了数据的安全性和隐私性。
  • 7、支持多种媒体类型:HTTP 支持多种媒体类型,例如 HTML、XML、JSON 等,可以满足不同的业务需求。

HTTP 协议具有以下缺点:

  • 1、传输效率较低:HTTP 采用明文传输,消息格式较为冗长,数据传输效率相对较低。
  • 2、安全性较低:HTTP 采用明文传输,数据在传输过程中容易被窃听和篡改,安全性较低。
  • 3、不支持双向通信:HTTP 采用请求-响应模式,不支持服务器主动向客户端发送消息,无法实现双向通信。
  • 4、不支持流式数据传输:HTTP 采用短连接方式,每次请求都需要建立一次 TCP 连接,无法实现流式数据传输。
  • 5、无状态协议:HTTP 是一种无状态协议,服务器不能保存客户端的状态信息,每次请求都需要重新验证身份和权限等信息。
  • 6、不支持服务发现:HTTP 没有内置的服务发现机制,需要通过第三方工具或平台来实现服务发现。
  • 7、RESTful API 限制:RESTful API 是基于 HTTP 协议的一种 API 设计风格,但由于 HTTP 协议本身的限制,RESTful API 无法完全满足所有场景的需求。
© 版权声明

相关文章

暂无评论

暂无评论...