端口的目的是什么?

Gri*_*fin 4 internet tcp port ip

关于我发现的端口以下解释,我有几个问题。

应用层通过端口与传输层通信。端口是编号的,标准应用程序总是使用相同的端口。

端口号的使用允许传输协议(通常是 TCP)知道数据包内的内容类型,允许它在接收端知道它应该将接收到的数据传送到哪个应用程序协议。

  • 在没有绝对保证的情况下,为什么要使用端口号来判断内部驻留的应用程序数据协议类型?

    据我了解,您通过端口发送的应用程序数据类型没有限制(这只是一个建议)。另外,出于此目的,协议数据不是已经包含在数据包中的某处了吗?

  • 此外,如果您将 HTTP 或某种其他类型的协议发送到端口 25(需要 SMTP)的目的地,数据会发生什么情况?

  • 第三,如果将数据发送到未绑定任何程序的端口,因此不会被监听,数据会发生什么情况?

  • **最后,如果一个端口只能绑定到一个程序,那么依赖传入 HTTP 数据的多个程序如何同时在我的计算机上运行? ****

提前致谢!

Dan*_*man 16

在没有绝对保证的情况下,为什么要使用端口号来判断内部驻留的应用程序数据协议类型?

因为猜测是一种糟糕的运行方式,而且你无法阻止,例如,无论如何,有人恶意发送错误的东西。因此,它有助于在每个人都玩得很好的情况下,并且不会使任何事情变得更糟。

据我了解,您通过端口发送的应用程序数据类型没有限制(这只是一个建议)。

正确的。事实上,它甚至不是一个建议,只是一个很多人碰巧分享的协议。

另外,出于此目的,协议数据不是已经包含在数据包中的某处了吗?

不。至少,不是在端口通常指示的级别:您知道正在发送哪种更高级别的 IP 协议(​​例如:TCP、UDP),但不知道其内容是什么(例如:HTTP、SMTP) .

此外,如果您将 HTTP 或某种其他类型的协议发送到端口 25(需要 SMTP)的目的地,数据会发生什么情况?

TCP 只是将数据传递给应用层,应用层可以对它做任何它想做的事情。大多数情况下,您只会遇到错误。有时您会遇到可利用的安全漏洞。

有时,对于不正确的客户端,您会得到很好的行为,例如当您不对端口使用 SSL 时,某些 HTTPS 服务器会给出纯文本 HTTP 错误。

第三,如果将数据发送到未绑定任何程序的端口,因此不会被监听,数据会发生什么情况?

您从接收系统收到 ICMP 错误消息。从技术上讲,接收器可以做任何它喜欢的事情,但实际上,这就是发生的事情。

最后,如果一个端口只能绑定到一个程序,那么依赖传入 HTTP 数据的多个程序如何同时在我的计算机上运行?

当您的浏览器与远程服务器建立 HTTP 连接时,它使用随机本地端口,并与远程服务器上的众所周知的端口(80 或 443)通信。在这种情况下,每个不同的出站连接都是唯一的。(虽然,从技术上讲,它不一定是,至于服务器案例。)

在服务器端,当您侦听时,只有一个进程可以接受端口上的新连接(在 Unix / BSD 套接字中),但它可以将已建立的连接传递给其他进程以提供服务。由于该集合是唯一的,因此可以将流量路由到正确的连接。