输入url到显示主页的详细过程

从浏览器地址输入url到显示主页的过程?

主要分为:DNS解析,TCP连接,发送HTTP请求,服务器处理请求,浏览器接收HTTP响应,断开连接

DNS解析:

浏览器发起一个DNS请求到DNS服务器,将域名解析为服务器的Ip地址

TCP连接:

浏览器通过解析得到Ip地址与服务器建立TCP连接(通常通过443端口进行加密HTTPS连接)。这一步涉及到TCP的三次握手过程,确保双方都准备好数据传输。

发送HTTP请求:

浏览器构建HTTP请求,包含请求行(get、http)、请求头(包含用户代理、接收的内容类型等信息)和请求体(如果有);将请求发送到服务器。

服务器处理请求:

接收到HTTP请求后,根据请求的资源路径,经过后端处理(可能包括数据库查询等),生成HTTP响应信息;响应信息包括状态行(http/1.1 200 OK),响应头(内容类型、缓存控制等消息),响应体(请求的资源内容)

浏览器接收HTTP响应:

浏览器接收到服务器HTTP响应,开始解析响应体中的HTML内容;然后构建DOM树、解析CSS和JavaScript文件等,最终渲染页面。

断开连接:

TCP四次挥手,连接结束。

DNS解析过程

DNS,domain name system 域名解析系统。作用:域名和IP相互映射。

开始,检查浏览器缓存,是否对应IP,

没有,看本地DNS服务器是否缓存对应的域名和ip

没有,请求根服务器,返回顶级域名服务器

请求顶级域名服务器,返回权威域名服务器

请求权限域名服务器,返回对应的ip地址

附录
  1. DNS 解析阶段

    • 主要涉及网络层和应用层
      • 网络层 :当用户在浏览器输入网址(如https://www.example.com/index.html)后,浏览器首先会检查本地缓存中是否有对应的域名 - IP 地址映射。如果没有,就会向本地 DNS 服务器发送 DNS 请求。这个请求在网络层被封装为 IP 数据包,包含源 IP 地址(用户计算机的 IP 地址)和目的 IP 地址(本地 DNS 服务器的 IP 地址),在数据链路层封装为帧,通过物理层传输到本地 DNS 服务器。
      • 应用层:DNS 请求本身是基于 DNS 协议构建的应用层数据,包含要查询的域名等信息。本地 DNS 服务器收到请求后,在应用层按照 DNS 协议解析请求,通过查询自身缓存或者向其他 DNS 服务器递归查询,最终找到目标域名对应的 IP 地址,并将结果返回给浏览器。这个过程中,数据在各层的封装和解封装与请求过程类似,只是方向相反。
  2. TCP 连接阶段

    • 主要涉及传输层、网络层、数据链路层和物理层
      • 传输层:在得到目标服务器的 IP 地址后,浏览器(客户端)会发起 TCP 连接请求。这个请求在传输层被封装为 TCP 数据段,其中包含源端口(浏览器随机分配的端口)、目的端口(对于 HTTP 通常是 80 或 443,这里假设是 443 用于 HTTPS)、SYN(同步)标志位等信息,用于与服务器建立连接。
      • 网络层:TCP 数据段随后被封装为 IP 数据包,包含源 IP 地址和目标服务器的 IP 地址,用于在网络中路由。
      • 数据链路层:IP 数据包被封装为数据帧,添加源 MAC 地址和目标 MAC 地址(通过 ARP 获取下一跳设备的 MAC 地址),用于在本地网络或通过交换机进行转发。
      • 物理层:数据帧被转换为物理信号(如电信号或光信号)进行传输,经过网络设备(如路由器、交换机)传输到目标服务器。服务器收到连接请求后,会返回带有 SYN - ACK(同步 - 确认)标志位的 TCP 数据段,经过同样的各层处理后返回给客户端。客户端再发送 ACK(确认)数据段,完成 TCP 连接的三次握手过程。
  3. 发送 HTTP 请求阶段

    • 涉及应用层、表示层、传输层、网络层、数据链路层和物理层
      • 应用层 :浏览器按照 HTTP 协议构建请求,如GET /index.html HTTP/1.1等信息,这是应用层数据。如果是 HTTPS 请求,在表示层会对 HTTP 请求进行加密(如使用 SSL/TLS 协议),转换为加密后的二进制数据格式。
      • 传输层:加密后的请求数据被封装为 TCP 数据段,添加源端口、目的端口、序列号等信息,确保可靠传输。
      • 网络层:TCP 数据段被封装为 IP 数据包,包含源 IP 地址和目标服务器的 IP 地址,用于在网络中路由。
      • 数据链路层:IP 数据包被封装为数据帧,添加源 MAC 地址和目标 MAC 地址,通过交换机等设备转发。
      • 物理层:数据帧被转换为物理信号传输到服务器。
  4. 服务器处理请求阶段

    • 主要涉及应用层和表示层(如果有加密)
      • 应用层 :服务器在应用层接收到浏览器发送的 HTTP 请求(如果是加密请求,先在表示层进行解密),按照服务器端的应用程序(如 Web 服务器软件)的逻辑进行处理。例如,根据请求的资源路径(如/index.html)查找对应的文件或者动态生成页面内容。
      • 表示层(如果有加密):如果请求是加密的,服务器在表示层进行解密操作,将数据恢复为应用层能够理解的 HTTP 请求格式。
  5. 浏览器接收 HTTP 响应阶段

    • 涉及物理层、数据链路层、网络层、传输层和应用层
      • 物理层:服务器生成的 HTTP 响应数据首先在物理层被转换为物理信号,通过网络介质传输。
      • 数据链路层:物理信号被转换为数据帧,通过交换机等设备转发,数据帧中包含源 MAC 地址(服务器网卡 MAC 地址)和目的 MAC 地址(客户端网卡 MAC 地址)。
      • 网络层:数据帧被解封装为 IP 数据包,包含源 IP 地址(服务器 IP 地址)和目的 IP 地址(客户端 IP 地址),在网络中经过路由器等设备路由到客户端。
      • 传输层:IP 数据包被解封装为 TCP 数据段,根据 TCP 协议的序列号等信息进行重组和校验,确保数据的完整性和顺序正确。
      • 应用层:TCP 数据段被解封装为 HTTP 响应,浏览器在应用层按照 HTTP 协议解析响应,如解析响应头来获取内容类型、编码方式等信息,解析响应体来获取网页内容等。
  6. 断开连接阶段

    • 主要涉及传输层、网络层、数据链路层和物理层
      • 传输层:浏览器或服务器(通常是浏览器先发起)会发送带有 FIN(结束)标志位的 TCP 数据段,表示要关闭连接。对方收到后会返回 ACK 数据段确认收到,然后可能也会发送 FIN 数据段,双方通过一系列的四次握手过程来关闭 TCP 连接。这些 TCP 数据段在传输层生成后,经过网络层封装为 IP 数据包,包含源 IP 地址和目的 IP 地址。
      • 网络层:IP 数据包在数据链路层被封装为数据帧,添加源 MAC 地址和目标 MAC 地址,通过交换机等设备转发。
      • 物理层:数据帧被转换为物理信号传输,完成连接的断开过程。
相关推荐
@Dream-fennel2 分钟前
计算机网络错题
服务器·网络·计算机网络
小红卒3 小时前
计算机网络技术基础:1.计算机网络的产生与发展
网络·计算机网络
爱吃生蚝的于勒5 小时前
计算机基础 原码反码补码问题
经验分享·笔记·计算机网络·其他·1024程序员节
CQU_JIAKE7 小时前
12.5【计算机网络】【Study】
网络·计算机网络
沃和莱特9 小时前
Ubuntu上源码编译安装snort,使用snort进行数据检测和防御(简单示例)
linux·运维·计算机网络·ubuntu·scala·snort
CQU_JIAKE11 小时前
12.4【计算机网络】【Study】
运维·服务器·计算机网络
EQUINOX11 天前
四、网络层:数据平面,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》
计算机网络·平面·智能路由器
下雪了 ~1 天前
HTTP和HTTPS的区别有哪些?
服务器·前端·笔记·网络协议·计算机网络
EQUINOX11 天前
三、传输层,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》
网络·计算机网络