简单的举个栗子:
当我们需要打开京东的官网时, 从打开到最后呈现; 会经过五个步骤:
- DNS解析
- TCP连接三次握手
- HTTP请求
- 服务器响应之后, 渲染引擎开始渲染页面
- TCP四次挥手
DNS解析:
什么是DNS?
DNS就是一个将域名和ip地址互相映射的分布式数据库, 简答的理解就是将域名解析成ip地址的东西.
为什么需要DNS解析?
因为我们访问外网的时候, 它是不识别域名的; 只会识别ip地址. 例如: 查询百度
其实这两个是一个东西, 可以理解为ip就是网络身份证; 而DNS就是网络姓名, 一个安全一个比较不安全而已.
TCP连接三次握手:
什么是TCP?
原名传输控制协议, 它是面向连接的, 安全的, 可靠的, 基于更底层的传输层通讯协议. 简单的来说就是一种传输控制协议.
TCP的作用是什么?
保证HTTP网络传输是否安全, 可靠. 简单的理解就是查看通讯双方的硬件是否能正常工作, 能不能发送请求. 例如:
我给你打电话, 并不是我通电话的按钮按下去就可以立即和你说话; 而是在这之间有一段响彩铃的时间. 这个事件就是在检测你手机是否有话费? 是否有电等等, 并且对方也有这么一段时间.
哪三次握手?
(1) 客户端给服务器发送请求, 检测客户端的网卡是否正常 (发送成功, 说明客户端发送网口正常) [第一次握手]
(2) 服务器接收请求, 并回复; 检测客户端的网卡是否正常 (接收回复成功, 说明服务器接收和发送网口正常) [第二次握手]
(3) 客户端收到回复, 再次向服务器回复 (接收成功, 说明客户端接收网口正常) [第三次握手]
HTTP请求:
客户端发送请求报文 + 服务器处理请求 + 服务器发送响应报文
请求报文分为什么?
请求行(请求方式method和请求地址url) + 请求头(content-type) + 请求体(通常是post请求中的参数)
响应报文分为什么?
响应行(服务器ip和响应状态码(code)) + 响应头(content-type) + 响应体(服务器返回的数据)
页面渲染:
(1) 页面渲染的第一步是渲染盒子模型
(2) 渲染样式(颜色, 文本, 图片等等)
TCP四次挥手:
哪四次挥手?
(1) 客户端请求断开连接 [第一次挥手] (服务器收到请求, 即将第二次挥手)
(2) 至此客户端到服务器的连接已断开. 但是存在服务器还有部分数据没有发完的情况, 当服务器将全部数据发完之后, 向客户端发送断开连接请求 [第二次挥手] (客户端收到请求, 即将第三次挥手)
(3) 客户端收到服务器发送来的断开连接请求, 并回复服务器消息已收到 [第三次挥手] (服务器收到请求, 即将第四次挥手)
(4) 服务器表示已收到客户端发送的请求 [第四次挥手]
至此客户端到服务器的连接关闭, 服务器到客户端的连接也正式关闭; 四次挥手保证了通讯双方正确的结束连接.