Sockets 对于解复用:为什么数据报套接字只需要知道源端口和目标端口,而不需要知道源IP和目标IP?
我不明白为什么数据报套接字只需要知道源端口和目标端口,而TCP套接字保留4值元组:Sockets 对于解复用:为什么数据报套接字只需要知道源端口和目标端口,而不需要知道源IP和目标IP?,sockets,network-programming,Sockets,Network Programming,我不明白为什么数据报套接字只需要知道源端口和目标端口,而TCP套接字保留4值元组: 源端口 源IP 目的港 目的IP 为什么我们可以在不知道接收方IP地址的情况下发送一些数据报?在无连接/数据报套接字上发送数据时,接收方的IP地址通常在sendto调用中指定 发件人: sendto函数通常用于无连接套接字,用于将数据报发送到由to参数标识的特定对等套接字。即使无连接套接字以前已连接到特定地址,to参数也仅覆盖该特定数据报的目标地址。在面向连接的套接字上,忽略to和tolen参数,使sendt
- 源端口
- 源IP
- 目的港
- 目的IP
为什么我们可以在不知道接收方IP地址的情况下发送一些数据报?在无连接/数据报套接字上发送数据时,接收方的IP地址通常在
sendto
调用中指定
发件人:
sendto函数通常用于无连接套接字,用于将数据报发送到由to参数标识的特定对等套接字。即使无连接套接字以前已连接到特定地址,to参数也仅覆盖该特定数据报的目标地址。在面向连接的套接字上,忽略to和tolen参数,使sendto等效于send
根据定义,无连接套接字不连接到对等方,因此在实际发送数据之前,无需指定接收方的地址
请注意,实际上允许在无连接套接字上调用
connect
,但它只设置默认的目标IP地址,而不是连接到远程主机,然后将在该套接字上的后续send
调用中使用。为什么您认为数据报可以在没有接收方IP地址的情况下发送?您错了。它确实需要知道源和目标IP地址。