【问题标题】:Need help clarifying TCP ports需要帮助澄清 TCP 端口
【发布时间】:2015-08-17 21:19:09
【问题描述】:

在线研究端口,我发现它以多种不同的方式描述。主要方式是端口就像计算机上特定进程使用的一扇门。第二种通常解释的方式是,它只是一个标签,是特定进程 IP 地址之上的额外标识符。

我难以理解的是,如果端口实际上是“物理”的,就像一扇门一样。数据是否真的通过一个端口?如果是这样,那么数据可以同时通过同一个端口发送和接收吗?

如果端口更像是一个标签,那么通过防火墙“打开”端口是什么意思?

最后一个问题是,从发送进程发送数据是否需要端口?我知道它必须将数据发送到接收端的特定端口,并且它必须指定用于接收数据的本地端口,但是当它进行实际发送时,它是否需要使用端口(并且是和它已经用来接收的端口一样吗?

非常感谢任何帮助!

【问题讨论】:

    标签: sockets tcp ip tcp-ip ports


    【解决方案1】:

    在线研究端口,我发现它以多种不同的方式描述。主要方式是端口就像计算机上特定进程使用的一扇门。第二种通常解释的方式是它只是一个标签,是特定进程的 IP 地址之上的额外标识符。

    “门”的解释只是一个比喻。标签示例更准确。目标端口和源端口只是 TCP 和 UDP 标头中的字段,用于区分一个 TCP/UDP 连接(IP 地址和端口的组合)与另一个连接。

    我难以理解的是,如果端口实际上是“物理”的,就像一扇门一样。数据是否真的通过端口?如果是这样,那么数据可以同时通过同一个端口发送和接收吗?

    端口实际上并不是物理的,但它是一个有助于理解的有用隐喻。

    如果端口更像是一个标签,那么通过防火墙“打开”端口是什么意思?

    阻止特定端口的防火墙只是检查通过它的所有流量并检查 TCP/UDP 流量的目标和/或源端口。如果有规则阻止端口 80 上的所有传入连接,则它将丢弃该流量,否则会将其转发到目的地。

    最后一个问题是,从发送进程发送数据是否需要端口?我知道它必须将数据发送到接收端的特定端口,并且它必须指定用于接收数据的本地端口,但是当它进行实际发送时,它是否需要使用端口(并且是和它已经用来接收的端口一样吗?

    仅当您想通过 TCP 或 UDP 发送数据时才需要端口。例如,Web 服务器将套接字绑定到 IP 地址和端口(对于 HTTP,通常为 80)。它侦听目标端口为 80 的传入连接。一旦建立连接(通常通过 TCP 握手),它将打开一个侦听不同端口的新连接,并告诉客户端现在连接到哪个端口。要回答您的问题,发送过程需要端口,以便接收器的内核知道将传入流量发送到哪里。它将(地址,端口)对与进程相关联。

    【讨论】:

    • 感谢您的回答。因此,最后澄清一下,当计算机通过 TCP 发送数据时,不存在通过端口发送数据这样的事情。它只指定目标端口并包含一个源端口,以便另一端知道哪个端口发送其回复。正确的?当我想到端口这个词时,我会想到事物进出的门户。但就像你说的,我猜它更像是一个标签或标签。
    • 正确。港口只不过是一个标签,没有比我们开始称它们为黄鼠狼更重要的意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2012-03-16
    • 2012-01-15
    • 2021-03-29
    • 2022-01-14
    • 2011-11-09
    相关资源
    最近更新 更多