为了账号安全,请及时绑定邮箱和手机立即绑定

通过WireShark对TCP进行抓包时,发现一次未知的,没有数据传输的连接过程

通过WireShark对TCP进行抓包时,发现一次未知的,没有数据传输的连接过程

PHP
江户川乱折腾 2019-03-02 08:10:16
问题描述其实问题来源是我在进行搭建简易服务器的时候出现的,在调试过程中我发现每一次访问url,通过client = server.accept();都会接收到除了正常连接进来的外,一个没有数据传输的客户端socket,对上面接收到的socket,进行下面操作为结果为空。client.getInputStream()这里请求url的方式用的是postman,不是用的浏览器,所有可以排除掉浏览器对各种css,js,favicon.ico的请求,如下图,是我发起的一个/login请求:这里访问的是我上面提到的简易服务器,服务器采用的是BIO模式实现的短连接,并且在检查到client.getInputStream()==null后关闭了客户机的socket。如上图中,深色区域内客户机端口号为32623的报文段,就是我指的未知的TCP连接,未标深色的端口号为:32624就是正常的访问/login的TCP请求。可以看到这个特殊的socket,没有传输任何数据,而且连接后立即关闭了(这里我在服务端确实在判断了其输入流为空后对其socket进行了close操作,但是报文端显示它却是从客户端先发起的,所以现在也不确定它是我在服务端造成立即关闭,还是客户端造成的)然后我考虑到是否是由于我服务器代码的某个bug造成的,然后我测试了本机的一个JavaWeb项目,以Tomcat作为服务器,我再次进行抓包,得到如下结果:上图发现,还是有这么一个特殊的TCP连接,这似乎存在着共性,并且特殊请求的端口和正常请求的端口号是相连的。所有我考虑这难道是什么来自协议或者什么的约束? 哎,学浅!查了一些资料,未果。于是寻求各路大侠帮助!答疑解惑,感谢!
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

看起来好像正常,32623没有发数据主动发送FIN,32624是服务端返回后正常结束(4次握手)

ps:源端口是系统主动挑选一个大于1024的端口,连续很正常


查看完整回答
反对 回复 2019-03-28
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

抓包结果无异常。发起两次连接这个行为跟你上层业务有关...

(这里我在服务端确实在判断了其输入流为空后对其socket进行了close操作,但是报文端显示它却是从客户端先发起的,所以现在也不确定它是我在服务端造成立即关闭,还是客户端造成的)

既然FIN是从客户端发起的,那么就是客户端关闭的,看报文交互也不是同时关闭的情况


查看完整回答
反对 回复 2019-03-28
  • 2 回答
  • 0 关注
  • 1259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信