首页 > 解决方案 > 如何区分 TCP/UDP 有效负载中的协议?

问题描述

IP 数据包有一个 8 位标头(Protocol适用于 v4 和Next Headerv6),它确定有效负载中使用的传输层协议。例如,如果它是 6,则有效负载是一个 TCP 段,如果它是 17,那么这是一个 UDP 段。

但是我们如何找到在 TCP 或 UDP 有效负载中使用了哪个应用层协议呢?没有可用于相同目的的此类标头。我们如何区分封装 HTTP 请求的有效负载和封装 SMTP 邮件的有效负载?是使用的端口吗?如果是这样,如果我在端口 80 而不是 25 上发送 SMTP 邮件,它会被解释为 HTTP 请求而不是 SMTP 邮件吗?

谢谢您的帮助。

标签: networkingtcpudpip

解决方案


如果是这样,如果我在端口 80 而不是 25 上发送 SMTP 邮件,它会被解释为 HTTP 请求而不是 SMTP 邮件吗?

通常没有定义应用协议的特定标记。相反,这是一个通信对等方彼此期望什么的问题。

如果您向 SMTP 服务器发送 HTTP 请求,服务器将尝试将信息解释为 SMTP——因为这是它所期望的。由于 HTTP 请求看起来与 SMTP 不同,服务器会以某种方式抱怨,比如简单地关闭连接或发送 SMTP 错误响应 - 因为这是一个 SMTP 服务器,它会说话并期望 SMTP。客户端发送将尝试将服务器 SMTP 响应解释为 HTTP 响应 -因为这是它所期望的。当然,这样做会失败,因为 SMTP 看起来与 HTTP 非常不同。


推荐阅读