在客户端输入一个网址并访问,到我们看到页面,其中都经历了什么?
简单回答:
- 【Request 请求阶段】
- 首先根据客户端输入的域名,到DNS服务器进行反解析(通过域名找到对应服务器的外网IP)
- 通过找到的外网IP,找到对应的服务器
- 通过在地址栏中输入的端口号(没输入是因为不同协议有自己默认的端口号),找到服务器上发布的对应项目
- 【Response 响应阶段】
- 服务器获取到请求资源文件的地址
例如:xxx/xxx/index.html
,把资源文件中的源代码
找到 - 服务器端会把找到的源代码返回给客户端(通过http等传输协议返回)
- 【浏览器自主渲染阶段】
- 客户端接收到源代码后,会交给浏览器的内核(渲染引擎)进行渲染,最后由浏览器绘制出对应页面
知识点:
- 浏览器内核:
IE(Trident)
|Firefox(Gecko)
|Safari/Chrome(Webkit)
- 360浏览器、猎豹浏览器都是采用IE+Chrome双内核,搜狗、遨游、QQ浏览器也是双内核:Trident(兼容模式)+Webkit(高速模式); UC浏览器电脑版采用Blink内核和Trident内核,百度浏览器、世界之窗内核都是单核(IE内核)
- 常见协议以及默认端口号
- ftp:21 文件传输协议
- ssh:22
- pop3:110 因特网电子邮件第一个离线协议标准
- smtp:25 简单邮件传输协议
- http:80 超文本传输协议(客户端和服务端传输的内容除了文本外,还可以传输图片音视频等文件流(二进制编码、base64码、以及传输xml格式的数据等))
- https:443 http下加入ssl
- svn:3690
- tomcat:8080
- oracle:1521
- mysql:3306
URL URI URN
uri:统一资源标识符
url:统一资源路径地址
urn:统一资源名称
uri = url + urn
一个完成的URL包含很多部分
https://baike.baidu.com/item/%E4%B8%8D%E5%88%B0/134029?fr=aladdin#3
传输协议:(例如:https)用来完成客户端和服务器端的数据(内容)传输的,类似于快递小哥负责把客户和商家的物品来回传递
- 客户端不仅可以向服务器发送请求,还可以把一些内容传递给服务器
- 服务器端也可以把内容返回给客户端
- 服务端和客户端传输的内容总成为HTTP报文,这些报文信息都是基于传输协议完成的传输,客户端传递给服务器叫做请求(Request),服务器返回给客户端叫做响应(Response),request+response两个阶段统称为:HTTP事务 (事务:一件完整的事情)
- 当客户端向服务端发送请求,此时客户端和服务端会建立一个传输通道,传输协议就是基于这个通道把信息进行传输的
- 当服务端接收到请求信息,把内容返回给客户端后,传输通道会自动销毁关闭
HTTP报文:
- 起始行
- 请求起始行
- 响应起始行
- 首部
- 请求头:内置请求头、自定义请求头
- 响应头:内置响应头、自定义响应头
- 通用头:请求和响应都有的
- 主体
- 请求主题
- 响应主题
请求XXX,都是客户端设置的信息,服务端获取这些信息
响应XXX,都是服务端设置的信息,客户端接收这些信息
总结:
- 客户端传递给服务端数据
- URL问号传参
- 设置请求头
- 设置请求主题
- 服务端返回给客户端内容
- 设置响应头
- 设置响应主题