内容提要
文章以电商应用调用API为例,说明网络请求的复杂过程:先经DNS解析IP,可能指向负载均衡器;操作系统决定数据包路由;HTTP请求前需建立TCP连接并完成TLS握手,之后请求才安全发送,由负载均衡器转发至应用实例并返回响应。文章强调网络知识对开发者至关重要,并介绍网络基础术语。
延伸解读
一次API调用背后的网络链路
文章以电商应用调用订单API为例,拆解了看似简单的请求背后涉及的多个环节:DNS解析、操作系统选路、TCP连接、TLS握手,再到负载均衡器转发。这说明开发者日常写的一行调用代码,实际依赖多层网络机制协同工作,理解这些环节有助于在出现延迟或失败时快速定位问题所在。
负载均衡器为何出现在DNS之后
文中指出DNS可能返回负载均衡器的地址,而非具体应用服务器。这意味着客户端并不直接感知后端实例,请求先到负载均衡器,再由它选择健康的实例转发。对开发者而言,这种架构解释了为什么后端扩容或实例故障时,客户端调用方式通常无需改变,但排查问题时要意识到中间多了一层。
HTTPS请求前的两次握手
文章强调,在HTTP请求真正发送之前,传统HTTPS需要先建立TCP连接并完成TLS握手。TCP握手让双方确认连接已建立,TLS握手则保障后续通信安全。这两个步骤都会增加请求的初始延迟,因此理解它们的顺序和必要性,有助于开发者判断性能瓶颈是出在连接建立阶段还是应用处理阶段。
Q&A
电商应用调用API时,网络请求在底层经历了哪些主要步骤?
首先,客户端向DNS查询API端点对应的IP地址,DNS可能返回负载均衡器的地址而非具体应用服务器。然后操作系统决定数据包的路由方式,可能通过本地网络、ISP或多个路由器。接着,客户端与目标服务器建立TCP连接并进行握手,之后完成TLS握手,才能安全发送HTTP请求。负载均衡器接收请求,选择健康的应用程序实例并转发,应用处理后将响应沿相同路径返回。
为什么DNS可能返回负载均衡器的IP地址而不是应用服务器的IP?
因为DNS可能返回负载均衡器的地址,而不是特定应用服务器的地址。这样负载均衡器可以接收请求,选择健康的应用程序实例并转发,从而实现负载均衡和高可用性。
在发送HTTP请求之前,为什么需要建立TCP连接和进行TLS握手?
因为HTTP请求需要先建立连接才能发送。传统HTTPS中,客户端和服务器通过交换初始数据包进行TCP握手,确认连接已建立。之后进行TLS握手,确保HTTP请求可以安全发送。只有完成这些步骤,请求才能被安全地传输。
操作系统在数据包发送过程中扮演什么角色?
操作系统决定数据包如何发送到目标IP地址。它可能选择通过本地网络、互联网服务提供商(ISP)或多个其他路由器来发送,最终目标是让数据包到达目的网络。
负载均衡器在接收到HTTP请求后做了什么?
负载均衡器接收到HTTP请求后,会选择一个健康的应用程序实例,并将请求转发给该实例。应用程序执行工作后,将响应通过相同的路径返回。
为什么网络知识对开发者来说非常重要?
因为网络无处不在,网络已成为开发者必须掌握的一门极其重要的学科。理解网络基础有助于开发者更好地处理应用程序中的网络通信问题。