半学半猜,大胆整理一下,有误请指出。
客户端,浏览器中输入www.baidu.com
1、通过DNS查询域名对应IP
2、通过TCP与对方IP建立连接(3次握手)
3、发送http请求报文
- http_data = http_head + data
- tcp_data = tcp_head + http_data
- ip_data = ip_head + tcp_data
4、封装好的报文通过数据链路层,发送给服务端(链路层中还有ARP协议、以太网等)
服务端
5、解析报文,依次经过链路层、网络层、传输层、应用层解析,得到请求数据
6、服务端响应请求,生成response数据
7、经过HTTP、TCP、IP、数据链路层,封装数据,发送给客户端
客户端
8、TCP断开连接,4次挥手
9、各层解析报文,得到响应数据(html)
10、浏览器解析html,生成页面
附上各协议报文格式
HTTP:来自https://blog.csdn.net/yutiab69/article/details/82869239
响应报文结构图
TCP:来自https://blog.csdn.net/qq_38950316/article/details/81087809
IP:来自https://blog.csdn.net/mary19920410/article/details/59035804