游客发表
打开浏览器,使送在地址栏敲下几个字符,用进按下回车——这个过程里,行信息传你的使送计算机已经向某台服务器发出了一个HTTP请求。服务器收到后,用进把你要的行信息传网页内容塞进响应报文里扔回来。就这么简单,使送一次信息传送完成了。用进每天全球有几十亿次这样的行信息传往返,大多数人根本不会多想,使送但它背后那套机制其实挺有意思。用进
HTTP协议本身不复杂。行信息传它规定了请求和响应的使送格式,头部放元信息,用进主体放实际数据。行信息传你访问一个新闻网站,浏览器先发个GET请求,服务器回一段HTML。这段HTML里可能嵌着图片链接、CSS文件、JavaScript脚本,浏览器再挨个去请求这些资源。一个页面加载完,背后可能跑了上百个请求。我打开开发者工具看过,有些电商首页的请求数量能到三四百个,密密麻麻的瀑布图看着都累。
数据在网络上跑,不是直接从A飞到B。它得经过路由器、交换机、光缆,有时候还绕地球半圈。TCP协议负责把这些数据切成小包,编号,确保对方按顺序收到。丢包了就重传。这套机制保证了可靠性,代价是延迟。你从北京访问一台位于美国的服务器,一个来回大概要150毫秒以上。如果页面需要多次往返才能加载完,用户就能明显感觉到卡顿。CDN就是来解决这个问题的——把内容缓存到离用户更近的节点上。我第一次用CDN加速一个静态博客时,加载时间从三秒多掉到不到一秒,变化非常直观。
Web信息传送不只是“拉”的过程,还有“推”。早期只有客户端主动请求,服务器没法主动发消息。后来有了WebSocket,建立一条持久连接,双方随时可以互发数据。在线聊天、实时股价、多人协作文档都靠这个。我参与过一个实时协作编辑器的开发,用WebSocket同步光标位置和文本变更,延迟控制在50毫秒以内,体验接近本地编辑。换成轮询的话,服务器压力大,延迟也高,完全不是一回事。
安全性方面,HTTP是明文的。你在公共WiFi下访问一个HTTP网站,同一网络里稍微懂点技术的人就能看到你传输的内容——包括你填的表单、cookie。HTTPS在HTTP和TCP之间加了一层TLS,把数据加密。现在主流网站基本都上了HTTPS,浏览器对HTTP站点会标“不安全”。这个变化其实没几年,2015年的时候HTTPS占比还不到一半,现在超过95%了。
表单提交是另一种常见的信息传送方式。用户在页面上填完内容,点提交,浏览器把数据编码后发给服务器。默认用application/x-www-form-urlencoded,上传文件时用multipart/form-data。我见过有人用GET提交登录表单,用户名密码直接出现在URL里,服务器日志、浏览器历史、代理服务器全都能看到。这种写法现在看很业余,但早些年确实不少见。
Web信息传送的底层其实就这么几件事:请求、响应、连接管理、加密。但组合起来,支撑起了整个互联网应用层。你刷一条短视频,背后是几十次HTTP请求加上可能的分段下载;你发一条消息,背后是WebSocket帧的封装和解析。这些细节平时藏在浏览器和服务器里,看不见,但每次点击、每次滑动,它们都在跑。
写这些不是要讲什么大道理。只是下次你打开一个网页觉得“怎么这么慢”的时候,可以按F12看看网络面板,那些请求和响应里,藏着答案。
```友情链接