免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2983 | 回复: 4
打印 上一主题 下一主题

[C] TCP socket连接的问题 [复制链接]

论坛徽章:
1
摩羯座
日期:2014-08-25 10:56:26
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-14 16:51 |只看该作者 |倒序浏览
在server上有两个ip, client到这两个ip都是通的
在server端起了一个TCP listen socket, sa.sin_addr.s_addr = INADDR_ANY, sa.sin_port = 1999
client connect到其中一个ip可以成功, 到另一个则不行
这是什么原因?

server端网络的配置如下:
enet1     Link encap:Ethernet  HWaddr 90:55:AE:3B:8D:A7  
          inet6 addr: fe80::9255:aeff:fe3b:8da7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1165675 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64364257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:353241507 (336.8 Mb)  TX bytes:3955778273 (3772.5 Mb)
          Memory:fb940000-fb960000

enet1:0   Link encap:Ethernet  HWaddr 90:55:AE:3B:8D:A7  
          inet addr:10.184.27.102  Bcast:10.184.27.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Memory:fb940000-fb960000

enet2     Link encap:Ethernet  HWaddr 90:55:AE:3B:8D:A4  
          inet addr:169.254.0.2  Bcast:169.254.0.255  Mask:255.255.255.0
          inet6 addr: fe80::9255:aeff:fe3b:8da4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13570572 errors:0 dropped:0 overruns:0 frame:0
          TX packets:279393781 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:891732630 (850.4 Mb)  TX bytes:36883038097 (35174.4 Mb)
          Memory:fbe00000-fbe20000

其中,connect 到169.254.0.2 1999是可以的;但是connect到10.184.27.102 1999则会timeout.
是不是因为vlan子接口的关系? 大牛求解.

论坛徽章:
1
摩羯座
日期:2014-08-25 10:56:26
2 [报告]
发表于 2014-01-14 17:27 |只看该作者
把子接口去掉,将10.184.27.102直接配在enet1上之后还是不行.

到两个ip都是ping的通的. 为什么到10.184.27.102就connect不成功呢??

client没有调bind. 直接socket之后,就connect.

论坛徽章:
1
摩羯座
日期:2014-08-25 10:56:26
3 [报告]
发表于 2014-01-15 11:18 |只看该作者
spp@SPP-2208-2:/var/log> sudo tcpdump -vv -i enet1 tcp port 1999
tcpdump: listening on enet1, link-type EN10MB (Ethernet), capture size 96 bytes
03:54:53.723915 IP (tos 0x0, ttl 64, id 63406, offset 0, flags [DF], proto TCP (6), length 60) 10.184.27.100.63938 > SPP-2208-2.tcp-id-port: S, cksum 0x0d77 (correct), 3622674586:3622674586(0) win 5840 <mss 1460,sackOK,timestamp 103896884 0,nop,wscale 7>
03:54:56.720728 IP (tos 0x0, ttl 64, id 63407, offset 0, flags [DF], proto TCP (6), length 60) 10.184.27.100.63938 > SPP-2208-2.tcp-id-port: S, cksum 0x0a89 (correct), 3622674586:3622674586(0) win 5840 <mss 1460,sackOK,timestamp 103897634 0,nop,wscale 7>
03:55:02.721628 IP (tos 0x0, ttl 64, id 63408, offset 0, flags [DF], proto TCP (6), length 60) 10.184.27.100.63938 > SPP-2208-2.tcp-id-port: S, cksum 0x04ad (correct), 3622674586:3622674586(0) win 5840 <mss 1460,sackOK,timestamp 103899134 0,nop,wscale 7>
^C

从tcpdump可以看出, server收到了client发过来的SYN,但是没有响应,这可能是什么原因?
有人吗? 大牛提点一下啊.

论坛徽章:
0
4 [报告]
发表于 2014-01-16 10:34 |只看该作者
回复 3# sjtu_smile


    ping通代表网络层没问题, 那肯定是上层的问题, 是不是listen之后没有accept, 半联接过多了, 后续的syn就被丢掉了?

贴代码吧.

论坛徽章:
1
摩羯座
日期:2014-08-25 10:56:26
5 [报告]
发表于 2014-01-16 14:40 |只看该作者
问题已经解决了,是iptables的配置有问题.
还是谢谢楼上的回复)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP