Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 对于解复用:为什么数据报套接字只需要知道源端口和目标端口,而不需要知道源IP和目标IP?_Sockets_Network Programming - Fatal编程技术网

Sockets 对于解复用:为什么数据报套接字只需要知道源端口和目标端口,而不需要知道源IP和目标IP?

Sockets 对于解复用:为什么数据报套接字只需要知道源端口和目标端口,而不需要知道源IP和目标IP?,sockets,network-programming,Sockets,Network Programming,我不明白为什么数据报套接字只需要知道源端口和目标端口,而TCP套接字保留4值元组: 源端口 源IP 目的港 目的IP 为什么我们可以在不知道接收方IP地址的情况下发送一些数据报?在无连接/数据报套接字上发送数据时,接收方的IP地址通常在sendto调用中指定 发件人: sendto函数通常用于无连接套接字,用于将数据报发送到由to参数标识的特定对等套接字。即使无连接套接字以前已连接到特定地址,to参数也仅覆盖该特定数据报的目标地址。在面向连接的套接字上,忽略to和tolen参数,使sendt

我不明白为什么数据报套接字只需要知道源端口和目标端口,而TCP套接字保留4值元组:

  • 源端口
  • 源IP
  • 目的港
  • 目的IP

为什么我们可以在不知道接收方IP地址的情况下发送一些数据报?

在无连接/数据报套接字上发送数据时,接收方的IP地址通常在
sendto
调用中指定

发件人:

sendto函数通常用于无连接套接字,用于将数据报发送到由to参数标识的特定对等套接字。即使无连接套接字以前已连接到特定地址,to参数也仅覆盖该特定数据报的目标地址。在面向连接的套接字上,忽略to和tolen参数,使sendto等效于send

根据定义,无连接套接字不连接到对等方,因此在实际发送数据之前,无需指定接收方的地址


请注意,实际上允许在无连接套接字上调用
connect
,但它只设置默认的目标IP地址,而不是连接到远程主机,然后将在该套接字上的后续
send
调用中使用。

为什么您认为数据报可以在没有接收方IP地址的情况下发送?您错了。它确实需要知道源和目标IP地址。