了解因特网通信协议
通常,通信协议 是允许通信系统的两个或多个实体传输信息的规则系统。 互联网有一套庞大的协议,可以覆盖许多情况。 在创建基于 Web 的应用程序和编程接口时,软件开发者通常使用以下三个通信协议来描述网络的状态以及在网络中移动数据包的方式:
- ICMP,因特网控制报文协议,RFC 792 中定义的因特网协议套件的一部分。
- TCP,传输控制协议
- UDP,用户数据报协议
用于特定实现 (例如,API 调用) 的协议可能会影响网络的整体行为。 因此,了解它们之间的基本差异是值得的。 如果您需要更多信息,许多好的文章都可以在互联网上获得协议的详细描述。
ICMP
ICMP 是 控制协议,这意味着它旨在传递有关网络本身状态的信息。 它本质上是网络的 网络层 (OSI 层 3) 错误报告和错误控制协议。 实践中最知名的 ICMP 示例是 ping
和 traceroute
实用程序。 ping
实用程序使用 ICMP 来探测远程主机,以获取探测器消息的响应能力和总体往返时间。 traceroute
实用程序使用
ICMP 来发现和跟踪 ICMP 包在前往其目标时所采用的网络路由。
开发者需要知道的是,ICMP 包没有与它们关联的 TCP 或 UDP 端口号,因为端口号是一个层 4 (传输层) 构造。
TCP 和 UDP
传输控制协议 (TCP) 和用户数据报协议 (UDP) 都是 OSI 层 4 传输协议。 这些协议用于传递实际数据。 从开发者的角度来看,TCP 和 UDP 之间的主要区别在于它们如何处理包顺序。
TCP 是一种面向连接的协议,它保证所有发送的包都以正确的顺序到达目标。
或者,UDP 是无连接协议。 通信以数据语法为导向,因此仅在单个数据报上保证完整性。 数据报到达目标时可能无法按顺序到达,或者可能根本无法到达。
通常,UDP 用于实时通信,其中小百分比的丢包率优于 TCP 连接的开销。