浏览器的【网络进程】开始发起http请求,具体步骤如下:
应用层【也就是浏览器的网络进程】发起http请求
传输层 tcp 三次握手建立连接
http 请求加上 tcp 头部,包括源端口号,目的端口号和用于校验数据完整性的序号,向下传输【这里的上下是计算机网络模型中抽象的上下】
网络层在数据包上加上 ip 头部,包括源 ip 地址和目的 ip 地址,向下传输
数据链路层/物理层?通过物理网络传输给服务器主机
服务器主机网络层收到数据包,解析 ip 头部,识别数据部分,向上传输
服务器主机传输层收到数据包,解析 tcp 头部,识别端口,识别数据部分,向上传输到应用层
服务器主机应用层 http 解析请求头和请求体,根据各种头部信息进行后续操作
301/302重定向,根据location字段重定向
304 使用缓存
200 成功,返回响应数据
响应数据原路返回应用层-传输层-网络层-网络层-传输层-应用层
数据传输完成,浏览器的网络进程收到响应数据
这里面有个面试题,网络的OSI 七层模型 和 五层模型分别是那些?
(1)ISO 组织制定的OSI七层模型分别是
- 应用层 (SMTP / FTP/ http / dns)
- 表示层
- 会话层 (tls /ssl)
- 传输层(tcp / udp )
- 网络层 (ip)
- 数据链路层( MAC 地址)
- 物理层
(2)tcp/ip的五层模型
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层