2017-03-02 33 views
0

我对TCP/IP网络和学习套接字/端口很陌生。我有一些混乱。我提到我的理解。计算机网络中的套接字,端口和进程之间的关系

节点N1有多个进程在运行。说一个进程P1有一些它希望发送到其他节点N2的字符串。 N1将要求OS创建一个基本上类似于网络I/O流式传输通道的套接字。这样的通道将被创建,并与套接字描述符一起交给进程。所以,我们可以说socket可以被节点识别出来,即节点+进程请求socket的IP。因此,套接字地址的概念基本上是节点+端口地址的IP(用于识别进程)。所以,我的疑惑是:

  1. 从何处来了端口的想法。套接字可以被识别为节点+进程ID的IP。为什么要求端口识别一个过程。为什么过程描述符不能自给自足。为什么端口地址。例子?

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

  3. TCP/UDP究竟在哪里适合图片?我可以拥有两个类似TCP端口3000和UDP端口3000的端口,即具有不同传输协议但端口号相同的独立端口。这也可以用套接字吗?

回答

1

因此,我们可以说,插座可以在世界上的节点+过程的节点,即IP其请求的套接字的认可。

不是'在世界上'。只在本地主机内。套接字只存在于本地主机中,并且进程ID仅在本地主机内部是已知的。

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

号的端口标识服务。该进程执行该服务。

从哪里来的港口的想法在这里。

RFC 793

插槽可被标识为节点+进程ID的IP。

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

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

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

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

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

为什么我们需要将套接字与套接字地址绑定,如果节点必须传递数据并且什么都不需要接收。

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

绑定套接字地址的基本意思是“开始识别与距其描述节点+端口地址的IP地址插座”如果他们想发送一些数据节点N1是其他节点有用。

对于这个节点来说,知道传入数据应该到哪里也是非常有用的。

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

无论这个方案的无效性和毫无意义,你的想法都晚了40年。

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

是的。

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

它们实现端口。

这也可能与套接字吗?

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

相关问题