当你在浏览器地址栏敲下回车,比如访问 www.example.com,不到一秒钟页面就出来了。这个过程背后,其实是一连串精确配合的通信动作——HTTP通信。
第一步:DNS解析,把域名变IP
浏览器只知道“example.com”是个名字,但网络通信靠的是IP地址。它得先去问DNS服务器:“这名字对应哪个IP?”就像查电话簿一样。假设查出来是 93.184.216.34,接下来就能建立连接了。
第二步:TCP三次握手,搭好通信通道
拿到IP后,浏览器发起TCP连接请求。这个过程叫“三次握手”:
- 客户端发个SYN:“我在,你在线吗?”
- 服务端回SYN+ACK:“我也在,可以通话。”
- 客户端再发ACK:“收到,开始吧。”
这三步完成后,一条可靠的双向通道就建立了。
第三步:发送HTTP请求
通道建好,浏览器就开始发HTTP请求。最常见的就是GET请求,比如:
GET /index.html HTTP/1.1\r\nHost: www.example.com\r\nUser-Agent: Mozilla/5.0...\r\nAccept: text/html\r\n\r\n
这些头信息告诉服务器:我要哪个资源、用什么浏览器、能接受什么格式。服务器一看就明白该怎么处理。
第四步:服务器处理并返回响应
服务器收到请求后,查找对应的页面或数据。如果一切正常,就返回一个HTTP响应:
HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: 1024\r\n\r\n<html><body>Hello World</body></html>
开头的 200 OK 表示成功,后面跟着响应头和实际内容。如果是图片、JSON或错误页面,状态码和类型也会相应变化,比如404或500。
第五步:浏览器渲染页面
浏览器拿到HTML后,开始解析并渲染。如果发现里面还有CSS、JavaScript、图片等资源,就会对每个资源重新走一遍HTTP流程——发请求、收响应。
这也是为什么有时候页面主结构出来了,图片却还在转圈加载。
第六步:TCP四次挥手,关闭连接
数据传完,连接不会一直挂着。双方通过四次挥手断开TCP连接:
- 客户端说:“我发完了。”
- 服务端回:“我知道你发完了。”
- 服务端说:“我也发完了。”
- 客户端回:“好,断吧。”
等这四步走完,这次通信才算彻底结束。
HTTPS多了一层加密握手
如果你访问的是 https:// 开头的网站,比如网银或登录页,在TCP握手之后、发HTTP请求之前,还会多一个“TLS握手”过程。双方交换密钥,确保后续通信内容被加密,防止被中间人窃听或篡改。
整个HTTP通信流程看似复杂,实则在毫秒级内完成。正是这套机制,支撑着我们每天刷网页、看视频、点外卖的日常操作。