关于linux-4.9.X内核http tcp调试

最近在调试CTC7132原厂提供的开发包遇到了http的问题,在这里记录一下;

问题:http ipv6 tcp连接不上;

1、排查协议栈ipv6协议栈的初始化有没有异常;

调试发现ipv6套接字创建是成功,套接字绑定tcp端口80失败,失败的原因如下:

Address already in use Server listening port 80 (HTTP).

说明新版的4.9.X内核不再像4.4.X以前的TCP协议栈一样;

2、尝试只初始化http ipv6 tcp协议栈,发现可以初始化成功,且设备可以正常登录;

3、尝试先初始化http ipv6 tcp协议栈,再初始化http ipv4 tcp协议栈,会出现和第一步同样的问题;

4、 echo 1 > /proc/sys/net/ipv6/bindv6only,尝试将ipv6 only设置,重启启动http初始化,发现tcp连接成后,又被内核自动复位,最终还是ipv4可以连接成功;

5、ipv4和ipv6都开启sock绑定同一tcp端口后,初始化协议栈成功,通过调试内核发现ipv6 TCP连接通过hash表找端口发现找不到的情况,然后被rst;

6、仅将http ipv6 tcp开启双栈绑定同一tcp端口后,ipv4和ipv6都能连接上,但是netstats查看显示,tcp连接使用的是ipv6的地址格式,相当于一个套接字实现ipv6/ipv4 http连接;

7、使用不同的端口初始化http协议栈,可以实现http连接,但不符合标准;

8、https通过ssl加密封装后连接不存在此问题;

以上是http 内核协议栈调试简单过程,后续遇到此问题的应该不在少数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值