计算机网络中的套接字,端口和进程之间的关系

时间:2017-03-02 17:18:48

标签: sockets networking tcp process ports

我是TCP / IP网络的新手,了解套接字/端口。我有一些困惑。我提到了我的理解。

节点N1正在运行多个进程。假设一个进程P1有一些它希望发送给其他Node N2的字符串。 N1将请求操作系统创建一个基本上类似于网络I / O流媒体通道的套接字。将创建这样的通道并将其与套接字描述符一起移交给该进程。因此,我们可以说套接字可以通过节点识别套接字,即请求套接字的节点+进程的IP。因此,套接字地址的概念基本上是节点+端口地址的IP(用于识别进程)。所以,我的怀疑是:

  1. 这里有端口的概念。套接字可以被标识为节点的IP +进程ID。为什么需要端口来识别进程。为什么过程描述符不能自给自足。为什么端口地址。实例

  2. 如果节点必须只传递数据并且不需要接收任何内容,为什么我们需要使用套接字地址绑定套接字。套接字地址的绑定本质上意味着“开始用节点+端口地址的IP地址识别套接字而不是其描述符”,如果它们希望向节点N1发送一些数据,则这对其他节点是有用的。但我认为,对于希望通过网络进行通信的节点中的任何进程,应该有一个不会绑定的“全局”套接字。所有进程都将使用它来仅发送数据。如果任何节点希望接收数据,它们可以有一个单独的套接字,它将被绑定,以便网络中的其他节点可以识别该特定套接字。

  3. 图片中TCP / UDP的确切位置在哪里?我可以有两个端口,如TCP端口3000和UDP端口3000,即具有不同传输协议但端口号相同的独立端口。套接字也可以吗?

1 个答案:

答案 0 :(得分:1)

  

因此,我们可以说套接字可以在世界上被节点识别,即请求套接字的节点+进程的IP。

不是“在世界上”。仅在localhost内。套接字仅存在于localhost中,进程ID仅在localhost中已知。

  

因此,套接字地址的概念基本上是节点+端口地址的IP(用于识别过程)

没有。端口标识服务。进程实现服务。

  

这里有端口的概念。

RFC 793。

  

套接字可以标识为节点IP +进程ID。

不,他们不能。另一台主机上的对等方无法获取远程进程ID。需要一些固定的操作系统不可知标识符。一个进程可以拥有许多端口。这个建议没有意义。

  

为什么需要端口来识别流程。

端口不识别进程。这个问题没有意义。

  

为什么过程描述符不能自给自足。为什么是端口地址。

因为你问的第一个问题是错误的。这只是它的另一个版本。

  

如果节点必须只传递数据并且不需要接收任何内容,为什么我们需要使用套接字地址绑定套接字。

因为连接是由地址:端口对标识的。

  

套接字地址的绑定本质上意味着“开始用节点+端口地址的IP地址识别套接字而不是其描述符”,如果他们希望向节点N1发送一些数据,这对其他节点很有用。

此节点对于了解传入数据的位置也非常有用。

  

但我认为,对于希望通过网络进行通信的节点中的任何进程,应该有一个不会绑定的“全局”套接字。所有进程都将使用它来仅发送数据。如果任何节点希望接收数据,它们可以有一个单独的套接字,它将被绑定,以便网络中的其他节点可以识别该特定套接字。

无论这种方案无效和毫无意义,你的思绪已经过了40年。

  

我可以有两个端口,如TCP端口3000和UDP端口3000,即具有不同传输协议但端口号相同的独立端口。

  

TCP / UDP究竟在哪里适合图片?

他们实施端口。

  

套接字也可以吗?

我无法理解这个问题。所有插座都彼此不同。