输入URL之后的全过程
- 从输入的URL中解析出使用的协议、主机、端口号等,构造一个HTTP请求
- DNS解析域名,解析成对应的ip地址
- TCP三次握手,建立连接
- 浏览器发送HTTP/HTTPS请求到web服务器
- 服务器处理HTTP/HTTPS请求并返回报文
- 浏览器渲染页面
- 断开连接,tcp四次挥手
URL URI
在网络技术中,URI(Uniform Resource Identifier,统一资源标识符)和URL(Uniform Resource Locator,统一资源定位符)是两个非常基本的概念,它们都用于在网络上标识资源,但它们之间存在一些区别:
-
URI(统一资源标识符):
- URI是一个用于标识某一互联网资源名称的字符串。
- URI的主要目的是标识资源,它可以是URL或URN(Uniform Resource Name,统一资源名称)。
- 例如,
https://example.com/path?query=123
是一个URI。
-
URL(统一资源定位符):
- URL是URI的一个子集,不仅标识资源,还提供了找到该资源的方式。
- URL通常包括协议(如HTTP、HTTPS)、服务器位置和资源在服务器上的具体地址。
- 例如,
https://example.com/path?query=123
是一个URL,它告诉你如何通过HTTPS协议访问example.com上的某个资源。
总结来说,每个URL都是URI,但不是每个URI都是URL。URI更广泛,它还包括URN,而URN仅仅标识资源的名称,不提供定位信息。例如,urn:isbn:0451450523
是一个URN,用于标识特定的书籍,但并不提供获取书籍的具体位置。
DNS (Domain Name System)
概念:将域名转换为ip的分布式系统
为什么分布式
- 单点故障会使整个网络瘫痪
- 远程服务器请求时间较长,造成严重的时延
- 维护成本过高
域名的层级关系
考点号来分隔,代表不同层次,越靠右层级越高
解析过程
- 先查询浏览器缓存是否存有ip地址
- 若没有,则查询计算机本地的host文件是否有缓存
- 向本地的DNS服务器发送查询请求,有就返回
- 若没有,本地的DNS解析器会向根DNS服务器发出查询请求,返回结果是应该向哪个顶级域的DNS服务器查询
- 本地解析器向顶级域名DNS服务器发送请求,返回结果是向哪个权威DNS服务器查询下一步
- 本地解析器发送请求给权威DNS服务器,返回结果是ip地址
- 本地解析器返回结果给浏览器,同时将结果缓存本地
- 浏览器发起连接
递归查询和迭代查询
递归查询:DNS客户端只需要发送一个查询请求,就可以等待完整的解析结果
迭代查询:DNS客户端通过向上级DNS服务器发送请求,获取更高级的域名服务器地址,向其发送请求,直到获得完整的解析结果
总结:递归查询适合普通用户和客户端,迭代查询适用于DNS服务器之间的通信
HTTP
特性
简单:基本报文格式为header+body,头部信息是key-value简单文本的形式
灵活和易于扩展:协议中的各种请求方法、URL\URI、状态码、头字段等每个组成部分没有被定死,允许自行补充;在应用层,下层可以随意变换;HTTPS是在http和tcp之间添加了ssl/tsl安全传输层,HTTP/3则是把TCP换成了基于UDP的QUIC
无状态:服务器不会去记忆HTTP的状态,可以减轻服务器负担
明文传输:信息透明易被窃取
不安全:通信使用明文;不验证身份、无法证明完整性
应用广泛且跨平台
版本演变
0.9
只支持GET,只能返回HTML格式