当前位置: 技术问答>linux和unix
【请教】本人对某TCP通信抓包分析,是否成功完成三次握手(附图)
来源: 互联网 发布时间:2017-02-18
本文导语: 图示如下: [img=http://my.csdn.net/my/album/detail/1126895][/img] 截图可能不是很清楚,我又画了一个简单的示意图 [img=http://my.csdn.net/my/album/detail/1126893][/img] 首先,前三个包是握手过程。 接下来,第四个包是Client端发送的,但...
图示如下:
[img=http://my.csdn.net/my/album/detail/1126895][/img]
截图可能不是很清楚,我又画了一个简单的示意图
[img=http://my.csdn.net/my/album/detail/1126893][/img]
首先,前三个包是握手过程。
接下来,第四个包是Client端发送的,但没有得到正确回应,反而Server端又重新发送了带SYN ACK标志的包,然后Client回复了一个带ACK标志的包,并重发了第四个包..
请问:
三次握手是否成功?
出现这种现象的原因是什么?
谢谢各位达人!
[img=http://my.csdn.net/my/album/detail/1126895][/img]
截图可能不是很清楚,我又画了一个简单的示意图
[img=http://my.csdn.net/my/album/detail/1126893][/img]
首先,前三个包是握手过程。
接下来,第四个包是Client端发送的,但没有得到正确回应,反而Server端又重新发送了带SYN ACK标志的包,然后Client回复了一个带ACK标志的包,并重发了第四个包..
请问:
三次握手是否成功?
出现这种现象的原因是什么?
谢谢各位达人!
|
因为你是客户端,客户端SYN,服务端SYN+ACK,客户端再次ACK即可。
为什么客户端先ACK=1,再SYN=X ACK=1呢,因为客户端connect后没有立即发送数据,所以TCP算法的优化策略超时而没有生效,必须立即返回一个ACK告诉服务端成功了,而不是等待第一条数据发出的时候SYN=X顺带通知ACK=1,能理解吗? 这里正是因为客户端没有立即发送数据,于是先ACK完成握手,之后SYN + ACK才发送第一条数据。
这个优化选项是可以设置的,应该是内核级别的调整,不是man 7 tcp里的sockopt。