计算机网络

本文最后更新于 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 OKHTTP/1.1 404 Not FoundHTTP/1.1 500 Internal Server Error
  • 响应头:包含关于服务器和响应主体的信息,键值对。
    • Content-TypeContent-LengthSet-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.png

LocalStorage适合存储需要长期保留的数据,而SessionStorage适合存储临时会话数据。

WebSocket

在单个TCP连接上进行全双工通信的应用层协议,解决HTTP协议在实时通信方面的局限性。

HTTP:无状态,单向请求-响应模式===>WebSocket:持久连接,双向实时通信。还免去了重复的HTTP头开销。

WebRTC

虽然设计为P2P通信技术,媒体流是双向传输,但需要借助信令服务器和STUN/TURN服务器。

信令服务器:交换SDP会话、房间管理;STUN:获取公网地址;TURN:数据中继。


计算机网络
http://example.com/2025/08/22/computerNetworks/
发布于
2025年8月22日
更新于
2025年9月12日
许可协议