北京手机网站制作,移动商城官网,网站建设.pdf百度云,php网站建设的基本流程图一、RST跟FIN的区别#xff1a;
正常关闭连接的时候发的包是FIN#xff0c;但是如果是异常关闭连接#xff0c;则发送RST包
两者的区别在于#xff1a;
1.RST不必等缓冲区的包都发出去#xff0c;直接就丢弃缓存区的包发送RST包。而FIN需要先处理完缓存区的包才能发送F…一、RST跟FIN的区别
正常关闭连接的时候发的包是FIN但是如果是异常关闭连接则发送RST包
两者的区别在于
1.RST不必等缓冲区的包都发出去直接就丢弃缓存区的包发送RST包。而FIN需要先处理完缓存区的包才能发送FIN包
2.接收端收到RST包后也不必发送ACK包来确认。而FIN需要ACK包确认因为一个是正常关闭会话一个是异常所以很好理解
二、发RST包有以下几种情况
1.端口未打开 服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误 比如在下面这种情况下主机0.137向主机0.193发送一个SYN请求某个端口表示想要连接主机0.193的443端口但是主机0.193上根本没有打开443这个端口于是就向主机0.137发送了一个RST包
以下我们可以抓包分析包已经很明显请求过去直接回显RST的报文 2.请求超时
网络之大无奇不有:一个客户端连接服务器。 直接telnet发现网络连接没有问题。 ping没有出现丢包。用抓包工具查看客户端是在收到服务器发出的SYN之后就莫名其妙的发送了RST 出现这种现象的原因可能有两种 1.安装了某安全软件比如socket设置RST超时的时间为100ms但是抓包发现从发到收花的时间超过了100ms那么主机就会认为这个包超时了就会发送RST包拒绝此连接 2.还有一种是服务器性能瓶颈服务器处理不来发送过来的请求然后就发送RST包莫名的不想理你不想跟你建立连接这个场景也见过
3.劫持
还有一种场景我也见过公网的场景客户端向服务端发起请求但是这时候有冒充服务端来回包给我的客户端但是因为ACK的值没能对上所以发送了RST包给狠狠地拒绝了
以下是抓包的报文