文章目录
1、浏览器上输入url
- 用户输入url,例如http://www.baidu.com。
- 其中http为协议,www.baidu.com为网络地址,及指出需要的资源在那台计算机上。
- 一般网络地址可以为域名或IP地址,此处为域名。
- 使用域名是为了方便记忆,但是为了让计算机理解这个地址还需要把它解析为IP地址。
2、应用层DNS解析域名
什么是DNS?
- DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
- 通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
通俗的讲,我们更习惯于记住一个网站的名字,比如www.baidu.com,而不是记住它的ip地址,比如:167.23.10.2。而计算机更擅长记住网站的ip地址,而不是像www.baidu.com等链接。因为,DNS就相当于一个电话本,比如你要找www.baidu.com这个域名,那我翻一翻我的电话本,我就知道,哦,它的电话(ip)是167.23.10.2。
DNS解析过程:
- 浏览器先检查自身缓存中有没有被解析过的这个域名对应的 IP 地址。
- 浏览器缓存中没有命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。(在 Windows 中可通过 C 盘里一个叫 hosts 的文件来设置,如果你在这里指定了一个域名对应的 IP 地址,那浏览器会首先使用这个 IP 地址。)
- 至此还没有命中域名,会请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约 80% 的域名解析到这里就会完成。
- LDNS 仍然没有命中,就直接跳到 Root Server 域名服务器请求解析。
- 根域名服务器返回给 LDNS 一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org 等)地址。
- 此时 LDNS 再发送请求给上一步返回的 gTLD Server。
- 接受请求的 gTLD Server 查找并返回这个域名对应的 Name Server 的地址,这个 Name Server 就是网站注册的域名服务器。
- Name Server 根据映射关系表找到目标 IP,返回给 LDNS。LDNS 缓存这个域名和对应的 IP。
- LDNS 把解析的结果返回给用户,用户根据 TTL 值缓存到本地系统缓存中,域名解析过程至此结束。
3、应用层客户端发送HTTP请求
互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。
分层由高到低分别为:应用层、传输层、网络层、数据链路层。发送端从应用层往下走,接收端从数据链路层网上走。
得到 IP 地址后,浏览器会开始构造一个 HTTP 请求,应用层客户端向服务器端发送的HTTP请求包括:请求行
、请求头
、请求正文
。
请求消息格式:
请求行(方法 空格/URL 空格 协议/版本号)
消息报头 可选
空行 发送回车符和换行符,通知服务器以下不再有请求头。
消息正文 可选
请求行
- 包括:请求方法开头,以空格分开,后面跟着请求的URI和协议的版本。
eg:
GET /index.html HTTP/1.1
POST /index.html HTTP/1.1
Delete /index.html HTTP/1.1
请求的方法:
- GET 请求获取URI所标识的资源
- POST 请求URI所标识的资源,并请求服务器接收附加在请求后面的数据,常用于表单提交。
- HEAD 请求获取由URI所标识的资源的响应消息报头
- PUT 请求服务器存储一个资源,并用URI作为其标识
- DELETE 请求服务器删除URI所标识的资源
- TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT 保留将来使用
- OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
请求头
-
<