过年期间查阅了TCP传输层中Http协议的工作方式,解答一下以前很多朋友问过的问题.

lihongdian 2008-02-11 02:59:10
以前很多朋友问过我如何确定一个客户是意外中断还是关闭了浏览器还是主动退出如何判断的问题.

以前几次都没有见到有效的答案,,今天我查阅TCP/IP协议的时候意外发现了HTTP1.1的工作协议的过程.

过程大概是这样的.首先通过客户端发起一个connect request TPDU通过一个三次握手建立一个TCP连接,

然后使用http协议的GET方法发送数据,请求页面,最后运行CGI脚本.执行服务器程序.

这时如果关闭客户端浏览器或关闭客户端,那么都将导致传输层失效.http协议将不再继续发送数据分组(请求).

这时将自动释放TCP连接.也就是说可以在服务器上建立一个端口监听进程.来查看哪些连接已经连上了本服务器的80端口.

然后与他的用户ID相匹配,如果该连接被关闭,就证明客户端已经退出浏览器或者关闭机器.就能正确的判断该用户是否

真的退出了浏览该网站了.但是关于TCP连接的释放,仍然会有不准确的地方.因为网络本身就不是一个永远畅通的环境,

等待消息确认需要时间.而这取决于协议栈中规定的时间周期.
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihongdian 2008-02-11
  • 打赏
  • 举报
回复
不好意思,,确实是我误解了....

只是一下太激动了....那这么看来http协议1.1也只是将释放的时间通过请求的过程发生了变化.

谢谢各位提醒.

那如果是这样的话单靠http协议就无法完成对浏览器的监控了.强行关机的话也无法得到消息确认.除非下载一个javascript脚本

然后间隔的往服务器发送"我在线的信息"..晕
octverve 2008-02-11
  • 打赏
  • 举报
回复
有误解~
wq23483 2008-02-11
  • 打赏
  • 举报
回复
路过
liuyann 2008-02-11
  • 打赏
  • 举报
回复
可以通过Application定时执行一个方法,在页面中匹配保存了用户IP的session来实现记录用户是否释放TCP连接.

哥们
HTTP是无状态的,每次访问后TCP 连接就被终止!
也就是释放TCP连接
lihongdian 2008-02-11
  • 打赏
  • 举报
回复
可以通过Application定时执行一个方法,在页面中匹配保存了用户IP的session来实现记录用户是否释放TCP连接.
liuyann 2008-02-11
  • 打赏
  • 举报
回复
HAO

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧