2、向 DNS server查询 web server 的 IP
qq浏览器解析网址并生成HTTP消息,然后根据域名查询 IP 地址,然后浏览器提供给 OS IP 地址并委托其发送消息。
(1)、了解 IP 地址
网络由很多小的子网(上学时宿舍用的交换机连接多台电脑成小子网),通过路由器(范围更大)连接起来组成一个大的网络。
在网络中,所有设备都会被分配一个地址即IP地址,通过IP地址可判断出目标服务器的位置,从而将消息发到服务器。
实际的 IP 地址是一串32bit(4字节)的数字,8bit(1字节)一组分为四组,分别用十进制表示再用原点隔开。
(2)、获取IP
浏览器调用OS中socket库中的dns解析器(一段程序),向DNS server请求查询域名对应IP,DNS server 会从域名与IP地址的对照表中查找相应的记录(这是一场接力赛,客户端先找到最近一台DNS server即客户端的TCP/IP设置中填写的DNS server 地址 --> 根DNS server --> 下级DNS server --> ... --> 目标DNS server),并返回IP地址,OS收到响应后取出IP放入响应内存中,浏览器从内存中取出IP地址。
3、委托协议栈发送消息
输入网址后回车,qq浏览器解析网址并生成HTTP消息,然后根据域名向 DNS server 查询 IP 地址,然后浏览器提供给 OS IP 地址并委托 OS 内部的协议栈向目标IP发送消息。
要发送给web服务器的HTTP消息是一种数字信息,因此也可以说是委托协议栈来发送数字信息。
(1)、数据收发操作概览
向OS内部的协议栈发出委托时,需要按照指定顺序来调用socket库中的程序组件。
收发数据操作如下,都是委托OS的协议栈执行:
- 创建套接字(创建套接字阶段)
- 将管道连接到服务器端的套接字上(连接阶段)
- 收发数据(通信阶段)
- 断开管道并删除套接字(断开阶段)
这就是HTTP工作过程。