注:在阅读以前要确认本身会tcpdump和wireshark的基本操做哈~windows
抓包位置:客户端后端
现象:客户端发了一个syn包,而后一直在重传,时间间隔按1s、2s、4s...倍数增加,最后断开链接。服务器
过滤命令: tcp.flags.syn==1 and tcp.analysis.retransmission
网络
缘由:这种状况通常是服务器没有开放对应的服务,或者你的客户端IP被防火墙加黑了tcp
抓包位置:服务器网站
现象:客户端发来syn包,服务器回应syn+ack,可是客户端一直不回ack。阿里云
过滤命令: tcp.flags.syn==1 and tcp.analysis.retransmission
操作系统
缘由:代理
抓包位置:客户端/服务器code
现象:
当服务器后端对应多个服务,为了区分https请求是请求哪一个服务,设定了扩展字段SNI(Sever Name Indication),里面有请求的Host信息,服务器根据SNI来选择对应的服务。
查看数据包,发现SSL握手时,client hello包里面没有SNI(Sever Name Indication)字段,服务器没法识别,故SSL握手失败。
解决方法:
抓包位置:客户端+服务器、代理先后
缘由:
若经过不一样厂家的设备来组建网络,特别是里面有代理转发的设备,须要确认下是不是都支持标准的tcp协议,并根据协商好的MSS值来转发数据。当数据包长度大于协商的MSS值,理应被丢弃。
以前有一个厂家的array设备作了代理,但未按照标准协议,转发了数据包长度异常的数据包(一个请求),后面的设备按照标准协议,丢弃了数据包。
现象:
从客户端看到的现象是请求发过去了,并被接受了,但在服务器上却没有看到请求。
解决方法:
阿里云会对攻击/大流量IP进行自动封锁,并拦截应用层的数据包,同时,会发送一个rst包。
针对https请求,某厂商防火墙会发送一个告警(encrypted alert)数据包,中断链接。