过年期间查阅了TCP传输层中Http协议的工作方式,解答一下以前很多朋友问过的问题.
以前很多朋友问过我如何确定一个客户是意外中断还是关闭了浏览器还是主动退出如何判断的问题.
以前几次都没有见到有效的答案,,今天我查阅TCP/IP协议的时候意外发现了HTTP1.1的工作协议的过程.
过程大概是这样的.首先通过客户端发起一个connect request TPDU通过一个三次握手建立一个TCP连接,
然后使用http协议的GET方法发送数据,请求页面,最后运行CGI脚本.执行服务器程序.
这时如果关闭客户端浏览器或关闭客户端,那么都将导致传输层失效.http协议将不再继续发送数据分组(请求).
这时将自动释放TCP连接.也就是说可以在服务器上建立一个端口监听进程.来查看哪些连接已经连上了本服务器的80端口.
然后与他的用户ID相匹配,如果该连接被关闭,就证明客户端已经退出浏览器或者关闭机器.就能正确的判断该用户是否
真的退出了浏览该网站了.但是关于TCP连接的释放,仍然会有不准确的地方.因为网络本身就不是一个永远畅通的环境,
等待消息确认需要时间.而这取决于协议栈中规定的时间周期.