浏览器通过http获取服务器资源的过程
在 HTTP 客户端向服务器发送报文之前,需要用在客户端和服务器之间建立一条 TCP/IP 连接。
要想建立TCP/IP 连接连接,需要知道服务器的 IP 地址以及与服务器上运行的特定软件相关的 TCP 端口号。
但最初怎么获得 HTTP 服务器的 IP 地址和端口号呢?
当然是通过 URL 了!我们前面曾提到过,URL 就是资源的地址,所以自然能够为我们提供存储资源的机器的 IP 地址。我们来看几个 URL:
http://207.200.83.29:80/index.html
http://www.netscape.com:80/index.html
http://www.netscape.com/index.html
第一个 URL 使用了机器的 IP 地址,207.200.83.29 以及端口号 80。
第二个 URL 没有使用数字形式的 IP 地址,它使用的是文本形式的域名,或者称为主机名(www.netscape.com)。
主机名就是 IP 地址比较人性化的别称。
可以通过一种称为域名服务(Domain Name Service,DNS)的机制方便地将主机名转换为 IP 地址,这样所有问题就都解决了。
最后一个 URL 没有端口号。HTTP 的 URL 中没有端口号时,可以假设默认端口号是 80。
有了 IP 地址和端口号,客户端就可以很方便地通过 TCP/IP 进行通信了。
浏览器是怎样通过 HTTP 显示位于远端服务器中的某个简单 HTML 资源的?
步骤如下:
(a) 浏览器从 URL 中解析出服务器的主机名;
(b) 浏览器通过域名解析机制将服务器的主机名转换成服务器的 IP 地址;(如何直接使用了IP而不是域名,a,b步骤可省略)
(c) 浏览器将端口号(如果有的话)从 URL 中解析出来;
(d) 浏览器通过IP地址和端口号建立一条与 Web 服务器的 TCP 连接;
(e) 浏览器向服务器发送一条 HTTP 请求报文;
(f) 服务器向浏览器回送一条 HTTP 响应报文;
(g) 关闭连接,浏览器显示文档。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)