因此,我尝试了解 OSI 模型中的应用层,当我访问 IANA 网站时,我注意到大多数知名协议都为 TCP 和 UDP 分配了相同的端口。
例如,HTTP 是一种众所周知的协议,我知道它使用 TCP 端口 80,但 IANA 网站也列出了 UDP 上的端口 80。DNS、SMTP 等其他著名协议也是如此,
这是否意味着所有这些协议都使用 TCP 和 UDP?如果是这样,有人能告诉我 HTTP 协议在什么情况下使用 TCP 和 UDP?
答案1
协议之所以会注册某个端口的 TCP 和 UDP 版本,是因为它们至少在某些情况下会使用这两种传输协议,或者因为有人在某个时候提出了使用另一种传输协议的协议附加,但可能该提议从未得到广泛部署,但也没有理由费心取消注册另一种传输协议的端口。原因因协议而异。
HTTP 传统上使用端口 80/TCP,但现在 QUIC(HTTP/3)使用 80/UDP(或 443/UDP)。
DNS 传统上使用 53/UDP,但在某些情况下会回退到 53/TCP,例如如果应答消息对于单个 UDP 数据包来说太大,或者对于“区域传输”,其中一个 DNS 服务器会下载整个域的所有 DNS 记录,以便充当该域的辅助 DNS 服务器。还有一些人对通过 DNS over TLS (DoT) 来保护 DNS 感兴趣,这将通过 TCP 而不是 DTLS over UDP。然而,DNS over HTTPS (DoH) 似乎比 DoT 更受欢迎。