HTTP(超文本传输协议)是协议信息你此刻正在使用的协议。你看到这行字,进行浏览器向服务器发出请求,传送服务器返回HTML文档,协议信息用的进行就是HTTP。它跑在TCP/IP之上,传送默认端口80,协议信息加密版本HTTPS则走443端口。进行
但HTTP只是传送冰山一角。网页里嵌着图片、协议信息视频、进行样式表,传送这些资源大多也走HTTP,协议信息可如果某个页面需要实时更新——比如股票行情或在线聊天——HTTP就露馅了。进行它是传送个“请求-响应”模型,服务器不能主动推送数据,只能等客户端来问。于是有了WebSocket。这个协议在HTTP握手后升级连接,让双向通信成为可能。我见过一个交易系统,用HTTP轮询时延迟能到三秒,换成WebSocket后降到毫秒级,那感觉就像从拨号上网换成了光纤。
DNS协议同样关键,只是你感知不到。你在地址栏输入域名,浏览器先问DNS服务器“这个域名对应哪个IP”,得到答案后才发起HTTP请求。没有DNS,你只能记一串数字,跟上世纪九十年代一样痛苦。我偶尔用命令行查DNS记录,看到那串A记录或CNAME,总觉得这像互联网的电话簿——但它比电话簿更脆弱,被污染或者被劫持时,你访问的网站可能根本不是你想去的那个。
再往下层看,TCP负责把数据拆包、排序、重传。HTTP/1.1时代每个请求都要单独建立TCP连接,慢得让人抓狂。HTTP/2引入了多路复用,多个请求共享一个连接,效率提升明显。到了HTTP/3,干脆把底层换成了UDP之上的QUIC协议——它减少了握手次数,还解决了TCP队头阻塞的问题。我测试过一个视频流服务,从HTTP/2切到HTTP/3后,弱网环境下的卡顿少了大概四成,那种流畅感是能直接感受到的。
还有些协议藏在更深处。比如TLS,它给HTTP套上加密外壳,变成HTTPS。没有它,你输入的密码就是明文在网络上裸奔。每次浏览器地址栏出现小锁图标,都是TLS在替你挡着偷窥者。另外,QUIC本身也内嵌了TLS加密,这年头,不加密的协议已经很难混下去了。
别忘了那些辅助角色。OCSP协议用于检查数字证书是否被吊销,CORS协议规定浏览器何时允许跨域请求——后者常让前端开发者头疼,但它是防止恶意脚本乱调接口的护城河。还有WebRTC,它让浏览器之间能直接传音视频,不走服务器中转,视频会议延迟能压到几百毫秒。
说到底,Web没有单一协议。它是一层叠一层的组合拳:DNS找到路,TCP保证不丢包,TLS守住隐私,HTTP传递语义,WebSocket补上实时性。哪天某个环节出了毛病,网页就卡住转圈,你会骂一句“网断了”,其实是这一整套协议栈里某个默默无闻的家伙在罢工。