大概图:
详见:
- 浏览器先根据域名,查找对应的IP地址
- 先查浏览器自身缓存
- 在查host文件
- 再查DNS服务器
- 浏览器构造HTTP请求
这个HTTP请求就包含了刚才的这个域名信息(用户输入的信息)
- 浏览器调用操作系统的socket.api,把这个HTTP协议交给传输层处理(这里以TCP为例)。
TCP协议需要构造一个TCP数据报
- 在发送数据之前,先进行“三次握手”,这里的三次握手也需要经过各层的封装分用。
- TCP分装完之后,就就交给下层的IP协议
- 网络层把TCP数据报封装成一个IP数据报,进一步进行封装,然后交给数据链路层。
- 数据链路层将这个数据封装成“以太网数据帧”的形式,在交给物理层
- 物理层把数据装换成电信号进行传输
- 电信号沿着网线,到达下一个设备(路由器),进行分用,然后又进行封装。重复上面的动作,直到到达目的主机。
- 数据到达服务器(搜狗),进行分用,层层解析。
- 应用程序调用对应的socket.api,从TCP接收缓冲区中读取数据,应用程序把这个数据按照HTTP协议来解析。获取到对应的URL,根据URL中指定的路径,知道了是要获取到这个根地址。
- 服务器对这个路径进行配置,映射到一个具体的 html 文件。
服务器就会读取这个文件,把文件的内容构造成一个HTTP响应数据,然后再调用socket.api进行发送。