web服务器的本质

【一】从浏览器输入一个地址到看到页面信息的过程

【1】在浏览器中输入网址(URL)

【2】DNS解析

  • 浏览器会先检查是否有缓存过该域名的IP地址,如果有缓存则直接使用,否则浏览器会向本机的DNS缓存查找域名对应的IP地址。

  • 如果找不到,则浏览器会向递归解析服务器发送DNS查询请求。

  • 这个过程中可能包括本地Hosts文件的解析、本地DNS缓存的查询以及顶级域名服务器(Root DNS Server),依次通过多级的DNS服务器逐步解析出目标域名的IP地址。

【3】建立TCP连接

  • 浏览器使用获取到的IP地址和默认的端口号(通常是80)与目标服务器建立TCP连接。

  • 这个过程涉及到TCP/IP的三次握手,确保客户端和服务器之间建立稳定可靠的连接。

【4】发送HTTP请求

  • 一旦TCP连接建立成功,浏览器

  • 会发送一个HTTP请求给目标服务器。

  • 该请求会包含一些重要信息,例如请求方法(GET、POST等)、请求头(User-Agent、Cookies等)和请求体(如果有数据需要上传)。

【5】服务器处理请求

  • 目标服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。

  • 这个过程会涉及到后端服务的运行,例如使用Nginx作为反向代理服务器将请求转发给后端Web框架(如Django、Flask等)

【6】服务器发生HTTP响应

  • 服务器处理完请求后,会生成一个HTTP响应,该响应包括状态码、响应头和响应体。

  • 状态码表示服务器对请求的处理结果,响应头包含了一些元信息,而响应体包含了请求的实际内容。服务器将该HTTP响应发送回客户端浏览器。

【7】接收并渲染页面

  • 浏览器接收到服务器发送的HTTP响应后,会根据响应的内容进行解析和渲染。

  • 浏览器会根据Content-Type等响应头信息确定如何展示内容,如果内容是HTML页面,则浏览器会解析HTML标记、加载外部样式表和脚本文件,并将页面渲染出来。

【8】断开TCP连接

  • 页面渲染完成后,如果没有keep-alive机制或者WebSocket等长连接技术,浏览器会发送一个关闭TCP连接的请求给服务器,进而两者断开连接。

  • 需要注意的是,上述过程中还涉及到重定向、HTTPS安全连接以及其他一些特殊情况的处理,但基本的流程如上所述。

  • 此外,还有一些细节可以进一步扩展和讨论,例如HTTP/2、HTTP/3等协议的特点及优化。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值