二:用电信号传输TCP/IP数据-3.3-接收HTTP响应消息

按照通信的过程,或者《网络是怎样连接的》这本书的探索思路,浏览器接收响应消息应该放在最后。
作者为避免读者学到最后忘记前面的部分导致无法将这两部分联系起来,所以放到这里讲解。

在发送完HTTP请求消息之后,浏览器还要等待服务器返回响应的消息。
过程大概如下。
1、浏览器在委托协议栈发送请求消息之后,会调用read程序来获取响应消息。
2、控制流程通过read转移到协议栈,协议栈将数据暂存到接收缓冲区。
3、协议栈尝试从接收缓冲区中取出数据并传递给应用程序。
但这个时候请求刚刚发送出去,响应消息可能还没有返回。这时,协议栈会将应用程序的委托,也就是从缓冲区中取出数据并传递给应用程序的工作暂时挂起,等服务器返回的响应消息到达之后再继续执行。
4、协议栈接收到响应消息后,会先检查收到的数据块和TCP头部的内容,判断是否有数据丢失,如果没有问题则返回ACK号。
5、协议栈将数据块暂存到接收缓冲区中,并将数据按顺序连接起来还原出原始的数据,最后交给应用程序。
具体来说,协议栈会将接收到的数据复制到应用程序指定的内存地址,然后将控制流程教会应用程序。
此后,还需要找到合适的时机发送窗口更新,这一点类似与服务器端的操作。

posted @ 2023-05-23 10:12  GPL-技术沉思录  阅读(20)  评论(0编辑  收藏  举报