sniffer抓包显示:
192.168.1.81 -> 61.188.39.199 TCP: D=80 S=1944 SYN SEQ=373691515 LEN=0 WIN=40960 62 0:00:00.000
192.168.1.81 -> 61.188.39.199 TCP: D=80 S=1944 SYN SEQ=373764808 LEN=0 WIN=40960 62 0:00:00.200注意这里同一个端口在200毫秒内连发两次SYN握手包,而且SEQ号变化了。结果导致对方服务器认为这是SYN攻击而忽略了包。我用的是异步套接字,EVENT模型,设置了收发缓冲区为40K。本人试过使用系统默认缓冲区,结果一样。只不过对方服务器对两个SYN请求都进行正确了回应,而本地对其中一个SEQ发送了RST关闭。这不是系统的问题,用IE连接服务器则不会出现该问题。
我对所有socket的函数设置了断点,只在一开始connect了一次。
谁遇到过这个问题?
192.168.1.81 -> 61.188.39.199 TCP: D=80 S=1944 SYN SEQ=373691515 LEN=0 WIN=40960 62 0:00:00.000
192.168.1.81 -> 61.188.39.199 TCP: D=80 S=1944 SYN SEQ=373764808 LEN=0 WIN=40960 62 0:00:00.200注意这里同一个端口在200毫秒内连发两次SYN握手包,而且SEQ号变化了。结果导致对方服务器认为这是SYN攻击而忽略了包。我用的是异步套接字,EVENT模型,设置了收发缓冲区为40K。本人试过使用系统默认缓冲区,结果一样。只不过对方服务器对两个SYN请求都进行正确了回应,而本地对其中一个SEQ发送了RST关闭。这不是系统的问题,用IE连接服务器则不会出现该问题。
我对所有socket的函数设置了断点,只在一开始connect了一次。
谁遇到过这个问题?
SYN
SYN + ACK
ACK请求连接方不能连续发SYN的
是否能连接上并不重要,这要看对方服务器的TCP协议栈如何处理。连续发送SYN不是我控制的,而是本机的TCP协议栈搞出来的。
会是什么设置呢?我仅仅设置了收发缓冲区大小,别的套接字参数都没管。
syn发送的如果第一个connect成功了,再一次connect服务器当然要拒绝了