[toc]
1. DHCP分配ip地址
- 新主机,尚未分配ip地址,就会采取DHCP协议分配ip地址
- DHCP协议基于UDP
DHCP的执行过程
- 客户端广播发送discover发现报文
- 多个DHCP服务器为客户端分配IP地址并广播
- 客户端选择一个DHCP服务器的响应,发request请求广播全网
- 其他DHCP服务器收到该消息会收回原分配的地址,选中的DHCP服务器会广播一条ACK消息
- 客户端收到ACK消息,将IP绑定到网卡
2. ARP地址解析
- 将ip地址解析为mac地址
- 网络层
ARP协议过程
- 主机A会查找本地缓存是否有主机B的MAC时
- 主机A广播ARP数据包
- 主机B收到后单播告诉A其MAC地址
- 主机A写入此映射到ARP高速缓存
3. DNS域名解析
- 将域名解析为ip地址
- 基于UDP
域名解析过程
- 浏览器会检查缓存中是否有对应映射关系
- 查找本地缓存是否有映射,没有向本地域名服务器请求
- 本地域名服务器没有,请求跟域名服务器
- 请求顶级域名服务器
- 请求权威域名服务器,得到ip地址返回
4. TCP三次握手
- 前两个阶段都会消耗1个序号
- 三次握手是为了保证双方都收到了彼此确认连接的消息。第三次握手防止失效请求到达服务端
三次握手过程
- 服务端处于监听状态,等待接受客户端的连接请求
- 客户端向服务端发送连接请求报文,SYN=1,选择一个初始序号x
- 服务端收到连接请求报文,如果同意连接,发送客户端确认连接报文。SYN=1,ACK=1,确认号x+1,选择初始序号y
- 客户端收到服务端发送的确认连接报文,发送确认给B,确认号y+1,序号x+1
- 服务端收到客户端的确认报文,建立连接
5. 浏览器生成http请求
- 发送给http服务器请求
http请求报文,包括请求
- 请求行(request line)
- 请求头部(header)
- 空行
- 请求数据
6. 服务端解析http请求,返回相应结果
- http服务器生成响应报文,发还主机
- HTTP响应报文包括
响应行
、响应头
、空行
、响应体
7. TCP四次挥手
- FIN报文段会消耗一个序号
- 服务端会先结束连接。客户端会等待2个MSL再结束连接
四次挥手过程
- 客户端想关闭连接,向服务端发送连接释放报文,停止发送数据。FIN=1,序号是 u
- 服务端收到连接释放报文,发出确认报文同意连接释放。ACK=1,确认号是 u+1 (此时服务端处于CLOSE_WAIT状态)
- 客户端收到服务器的确认请求后,此时,客户端等待服务器发送连接释放报文,进入终止状态
- 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,序号w
- 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1
- 服务器只要收到了客户端发出的确认,立即进入CLOSED状态
8. 浏览器渲染
- 解析html页面,生成DOM树,解析css,生成渲染树
- 浏览器布局渲染,计算css的样式,将最终页面传递给用户