通信协议

Posted by comeyke on 08-25,2019

一、定义

通信协议是指通信双方共同遵循的规则和约定。在计算机网络中,用于规定计算机之间如何进行通信和交换信息。

  • 应用层的通信协议:http、socket、webscoket、grpc
  • 传输层的通信协议:tcp、udp

二、OSI模型 TCP/IP

OSI七层模型:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。

  • 物理层:建立、维护、断开物理连接,主要协议有EIA/TIA-232、EIA/TIA-49。
  • 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能,主要协议有逻辑链路控制协议(LLC)、点对点协议(PPP)、以太网协议(Ethernet)。
  • 网络层:进行逻辑地址寻址、实现不同网络之间的路径选择,主要协议有路由选择协议(RIP、RIPv2、EIGRP、OSPF)、互联网协议(IP)。
  • 传输层:定义传输数据的协议端口号,以及流控和差错校验,主要协议有传输控制协议(TCP)、用户数据报协议(UDP)。
  • 会话层:建立、管理、终止会话,主要协议有会话控制协议(ASP)、会话启动协议(SIP)。
  • 表示层:数据的表示、安全、压缩,主要协议有安全套接字层协议(SSL)、传输层安全协议(TLS)。
  • 应用层:网路服务与最终用户的一个接口,主要协议有超文本传输协议(HTTP)、文件传输协议(FTP)、简单邮件传输协议(SMTP)、域名系统(DNS)、简单网络管理协议(SNMP)、远程登录协议(Telnet)、网络文件系统(NFS)。

基于OSI 7层模型,衍生了TCP/IP 4层模型、TCP/IP 4层模型。不同模型分层的映射关系如图所示:
image

三、TCP与UDP的区别

1、连接方式不同:TCP是面向连接的,在发送方和接收方在发送数据之前,必须通过三次握手建立连接,关闭连接必须通过四次挥手断开连接;UDP是无连接的,一方向另一方发送数据时不需要建立连接,直接发送。
2、可靠性不同:TCP是可靠的传输协议,在IP协议的基础之上添加了序号机制,确认机制,超时重传机制,数据校验,从而保证传输的可靠性;UDP是不可靠的协议,UDP协议仅仅就是在IP协议的基础上添加了端口和差错检查的功能,由于IP协议尽最大努力传输,从而导致了UDP的不可靠性。
3、处理方式不同:TCP协议是面向字节流的,TCP将应用层传递下来的数据仅仅当做无结构的数据流;UDP是面向报文传输。

四、长连接、短连接、无连接

基于成本和效率的考虑,服务间通信是选择长连接、短连接还是无连接?取决于应用场景和需求,以下是它们的特点和适用场景:

长连接:

  • 原理:长连接是指客户端和服务器之间建立一次连接后可以进行多次数据传输,直到连接被显式地断开或者因为网络异常等原因被迫断开。
  • 场景应用:需要频繁、连续、可靠传输数据的应用场景,主要应用于微服务之间进行紧密通信。可以减少建立和断开连接的开销,提高数据传输效率。

短连接:

  • 原理:短连接是指客户端和服务器之间每次进行一次数据传输就会建立一次连接,数据传输完成后即断开连接。
  • 场景应用:适合数据传输量较小、不频繁、对实时性要求不高的应用场景,主要应用于客户端-服务器之间的通信。

无连接:

  • 原理:在传输层以上,无连接是指数据传输过程中不建立连接,各数据分组按顺序传送。
  • 场景应用:适合对实时性要求高且成本有限、区分会员用户和普通用户进行价值提升类的产品。例如百度网盘、WPS等都存在以用户群体来划分服务资源。保证了数据传输效率,且通信成本可观。