需要帮助澄清TCP端口

时间:2015-06-03 15:05:02

标签: sockets tcp ip tcp-ip ports

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

我很难理解的是,如果端口实际上是“物理的”和“#34;在某种程度上像一扇门。数据是否实际通过通过端口?如果是这样,那么数据是否可以同时通过同一个端口发送和接收?

如果一个端口更像是一个标签,那么对于"打开"它意味着什么?通过防火墙端口?

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

  

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

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

  

我很难理解的是,如果端口实际上是“物理的”和“#34;在某种程度上像一扇门。数据实际上是通过端口吗?如果是这样,那么数据是否可以同时通过同一个端口发送和接收?

港口不是字面上的实体,但它是帮助理解的有用的替代品。

  

如果一个端口更像是一个标签,那么对于"打开"它意味着什么?通过防火墙端口?

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

  

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

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