计算机网络
本文最后更新于 2025年9月12日 上午
TCP/IP
五层模型
1)物理层:通过物质介质(光纤、电缆等)传输原始比特流,数据单位是比特。
2)链路层:在直接相连的节点间传输数据,处理物理寻址(MAC)和错误检测,数据单位是帧。
3)网络层:负责逻辑寻址、路由选择和分组转发,数据单位是包。
4)传输层:提供端到端的数据传输,流量控制和错误恢复,数据单位是段。
5)应用层:为用户提供网络服务接口,处理应用程序逻辑,数据单位是数据。
HTTP请求过程
从浏览器,操作系统,网络设备到服务器共同参与的协作过程。
过程:
1、URL解析
用户输入,浏览器解析(协议、域名、路径),浏览器检查
2、DNS域名解析
浏览器查找顺序(浏览器缓存 -> 操作系统缓存 -> 路由器缓存 -> 网络服务供应商的DNS服务器 -> 递归查询),返回IP
3、建立TCP连接(三次握手)
浏览器先和服务器建立一条可靠的传输通道,即TCP连接。
4、发送HTTP请求
浏览器发送请求报文
- 请求行:请求方法,请求的URL路径,HTTP协议版本。
GET /index.html HTTP/1.1
- 请求头:包含关于客户端和环境的信息的键值对。
Host: www.example.com(必需,指定域名)User-Agent(浏览器身份标识),Accept(客户端接收的内容类型)等
- 请求体:通常只在POST/PUT方法中存在,包含提交给服务器的数据。
5、服务器处理请求并返回HTTP响应
服务器收到请求报文后,会进行处理(例如,由Web服务器软件(如Nginx/Apache)处理静态请求,或由应用服务器(如Tomcat/Node.js)处理动态请求),然后返回一个HTTP响应报文。
服务器发送响应报文
- 状态行:HTTP协议版本、状态码和状态消息。
HTTP/1.1 200 OK,HTTP/1.1 404 Not Found,HTTP/1.1 500 Internal Server Error
- 响应头:包含关于服务器和响应主体的信息,键值对。
Content-Type,Content-Length,Set-Cookie
- 响应体:请求的真正资源内容,HTML文档、图片数据等。
6、浏览器解析渲染页面
浏览器收到响应后,会根据响应头中的 Content-Type来决定如何处理响应体。
生成DOM树,CSSOM树,合并构建渲染树,布局,绘制。
7、连接结束(四次握手)
HTTP是一种无状态协议,默认完成请求就会关闭连接。
8、后续交互
一个完整的页面通常需要加载很多资源(CSS, JS, 图片等)。对于HTTP/1.1,浏览器会对同一个域名建立多个TCP连接(通常是6-8个)来并行下载这些资源,以加快速度。HTTP/2则允许在一个TCP连接上进行多路复用,效率更高。
TCP和UDP的区别
| 特性 | TCP(传输控制协议) | UDP(用户数据报协议) |
|---|---|---|
| 连接性 | 面向连接 建立连接三次握手,释放连接四次握手。 |
无连接的 直接发送数据。 |
| 可靠性 | 高 通过确认,重传,校验,流量控制,拥塞控制等手段确保数据无差错,不丢失等。 |
低 不提供任何可靠机制,不确认是否收到,可能丢失,乱序或重复。 |
| 数据形式 | 面向字节流 无结构,无边界,应用程序自己处理粘包/拆包问题。 |
面向数据包 独立,有边界,一次发送就是一个完整报文。 |
| 速度和开销 | 速度慢,开销大 各种机制增加开销,减慢速度。 |
速度快,开销小 延迟极低,传输效率高。 |
| 传输模式 | 全双工 连接双方可以同时发送和接收数据。 |
支持单播,多播,广播。 |
| 应用场景 | 网页浏览(HTTP/HTPPS) 文件传输(FTP) 电子邮件(SMTP,IMAP) 远程登陆(SSH) |
视频流媒体,语音通话 在线游戏 DNS查询 TFTP(简单文件传输) 广播/多播 |
LocalStorage和SessionStorage的区别
LocalStorage适合存储需要长期保留的数据,而SessionStorage适合存储临时会话数据。
WebSocket
在单个TCP连接上进行全双工通信的应用层协议,解决HTTP协议在实时通信方面的局限性。
HTTP:无状态,单向请求-响应模式===>WebSocket:持久连接,双向实时通信。还免去了重复的HTTP头开销。
WebRTC
虽然设计为P2P通信技术,媒体流是双向传输,但需要借助信令服务器和STUN/TURN服务器。
信令服务器:交换SDP会话、房间管理;STUN:获取公网地址;TURN:数据中继。