Viv*_*ira 8 browser httpresponse httprequest
场景:
浏览器如何确定实际处理哪些响应?
我知道会发生什么 - 我想知道为什么.任何解释这一点的参考或网站也将非常感激.
谢谢,
维韦克.
编辑:询问后看到这个类似的问题.如果合适,请合并/删除.
gat*_*kin 15
有关如何完成网络编程的一般性讨论,请参阅此问题.
对您的具体问题的简短回答是,接收服务器的响应(在浏览器中)与接收浏览器的请求(在服务器内)不同.当浏览器打开一个到服务器的新连接,它在做什么是创建一个插座,然后调用connect和send该插座上.当服务器获得此传入连接时,它可能不关心这是否与先前的连接相同.如果关心(例如,它已经登录会话或购物车),它必须使用cookie或诸如此类将此连接与之前的连接相关联.(我忽略了持久连接,这超出了你的问题的范围.)
但是当浏览器收到来自服务器的响应时,它通过调用recv它用于发送请求的同一个套接字来实现,因此它知道响应在它开始读取之前请求的请求.从理论上讲,浏览器正在维护有关其已打开的连接的状态信息.实际上,它有一个列表或插座数组.
浏览器还会跟踪哪些窗口和选项卡与哪些套接字相关联.这是它如何更新微调器和状态行以反映相应连接的状态.如果用户单击停止按钮,它将知道要关闭的套接字(或套接字).
因此,在您的方案中,用户单击了与现有套接字关联的窗口或选项卡中的链接或书签,该套接字表示尚未收到服务器响应的服务器的连接.浏览器可以简单地关闭该套接字,就好像用户单击了停止按钮一样.即使它没有关闭它,浏览器也知道用户不再希望看到响应.同时,它为用户感兴趣的服务器打开一个新套接字.
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |