[pid 477] setsockopt(124, SOL_IPV6, IPV6_MULTICAST_HOPS, [1], 4) = 0 [pid 477] bind(124, {sa_family=AF_INET6, sin6_port=htons(6088), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0 [pid 477] getsockname(124, {sa_family=AF_INET6, sin6_port=htons(6088), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0 [pid 477] getsockname(124, {sa_family=AF_INET6, sin6_port=htons(6088), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0 [pid 477] recvfrom(124, "j\201\2450\201\242\241\3\2\1\5\242\3\2\1\n\243\0160\f0\n\241\4\2\2\0\225\242\2\4\0"..., 2048, 0, {sa_family=AF_INET6, sin6_port=htons(38790), inet_pton(AF_INET6, "::ffff:172.17.0.3", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 168 [pid 477] sendto(124, "k\202\2\0210\202\2\r\240\3\2\1\5\241\3\2\1\v\243\5\33\3TDH\244\0220\20\240\3\2"..., 533, 0, {sa_family=AF_INET6, sin6_port=htons(38790), inet_pton(AF_INET6, "::ffff:172.17.0.3", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 533 其对应的逻辑是如许的:应用 ipv6 绑定在 0.0.0.0 和 6088 端口,调用 getsockname 获取当前 socket 绑定的端口信息,数据传输过程应用的是 recvfrom 和 sendto 。
因为是在传输数据的时刻掉足的,是以第一个疑点是 sendmsg 和 sendto 的某些差别导致选择源地址有不合,经由过程 man sendto 可以知道 sendmsg 包含了更多的┞菲握信息在 msghdr 。一个合理的猜测是 msghdr 中包含了内核选择源地址的信息!
经由过程查找,发明 IP_PKTINFO 这个选项就是让内核在 socket 中保存 IP 报文的信息,当然也包含了报文的源地址和目标地址。 IP_PKTINFO 和 msghdr 的关系可以在这个 stackoverflow 中找到:https://stackoverflow.com/questions/3062205/setting-the-source-ip-for-a-udp-socket。
而 man 7 ip 文档中也说清楚明了 IP_PKTINFO 是怎么控制源地址选择的:
- IP_PKTINFO (since Linux 2.2)
- Pass an IP_PKTINFO ancillary message that contains a pktinfo structure that supplies some information about the incoming packet. This only works for datagram ori‐
- ented sockets. The argument is a flag that tells the socket whether the IP_PKTINFO message should be passed or not. The message itself can only be sent/retrieved as
- control message with a packet using recvmsg(2) or sendmsg(2).
-
- struct in_pktinfo {
- unsigned
推荐阅读
如何确定恶意软件是否在自己的电脑中执行过?
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践
很不幸,你在本身的电脑里发清楚明了一个恶意的可履行法度榜样!那么问题来了:这个文件到底有>>>详细阅读
本文标题:Docker容器网络下UDP协议的一个问题
地址:http://www.17bianji.com/lsqh/36867.html
1/2 1