计算机网络是后端开发必须掌握的基础知识之一。无论是 Web 开发、分布式系统还是微服务架构都离不开网络通信。本文将系统整理计算机网络中的核心知识包括网络分层模型TCP / UDPHTTP / HTTPSSocket 与 WebSocket三次握手四次挥手常见网络面试题一、计算机网络分层模型计算机网络最经典的模型有两个模型层数OSI七层模型7层TCP/IP模型4层1 OSI七层模型OSI模型是理论模型层级名称作用第7层应用层为应用程序提供网络服务第6层表示层数据加密、压缩第5层会话层建立、管理会话第4层传输层端到端通信第3层网络层路由选择第2层数据链路层数据帧传输第1层物理层比特流传输2 TCP/IP四层模型实际使用实际互联网使用的是 TCP/IP 模型层级协议应用层HTTP、HTTPS、FTP、DNS传输层TCP、UDP网络层IP网络接口层Ethernet关系如下应用层 HTTP FTP DNS 传输层 TCP UDP 网络层 IP 数据链路层 Ethernet 物理层 网线二、TCP 与 UDP传输层最重要的两个协议TCPUDP1 TCP传输控制协议特点面向连接可靠传输有序传输有拥塞控制有流量控制TCP适合Web文件传输邮件数据库通信例如HTTP HTTPS MySQL FTP2 UDP用户数据报协议特点无连接不可靠传输快不保证顺序适合视频直播语音通话DNS例如DNS 视频直播 在线游戏3 TCP vs UDP特性TCPUDP是否连接面向连接无连接可靠性可靠不可靠速度较慢快顺序保证不保证应用HTTPDNS三、TCP 三次握手TCP 建立连接需要三次握手。过程客户端 服务器 SYN ----------- ----------- SYN ACK ACK -----------步骤第一次握手客户端发送SYN 1 seq x表示请求建立连接。第二次握手服务器返回SYN 1 ACK 1 seq y ack x1表示收到请求同意连接第三次握手客户端发送ACK 1 ack y1连接建立成功。为什么是三次原因防止历史连接请求导致错误连接。如果只有两次旧的请求可能被服务器误认为新的连接。四、TCP 四次挥手TCP断开连接需要四次挥手。客户端 服务器 FIN ------------ ------------ ACK ------------ FIN ACK ------------第一次挥手客户端发送FIN表示我没有数据发送了。第二次挥手服务器回复ACK表示收到。第三次挥手服务器发送FIN表示服务器也没有数据发送。第四次挥手客户端回复ACK连接关闭。五、HTTP 协议HTTP 是应用层协议。用于浏览器 - 服务器特点无连接HTTP1.0无状态基于 TCPHTTP请求结构HTTP请求包含请求行 请求头 请求体示例GET /index.html HTTP/1.1 Host: www.example.com User-Agent: ChromeHTTP响应结构状态行 响应头 响应体示例HTTP/1.1 200 OK Content-Type: text/html六、HTTP 常见状态码状态码含义200请求成功301永久重定向302临时重定向400请求错误401未认证403禁止访问404资源不存在500服务器错误502网关错误503服务不可用七、HTTP 与 HTTPSHTTP明文传输 不安全HTTPSHTTP SSL/TLS 加密传输HTTPS主要解决数据加密身份认证数据完整性HTTPS流程客户端请求 ↓ 服务器返回证书 ↓ 客户端验证证书 ↓ 协商对称密钥 ↓ 加密通信八、Socket 原理Socket 是网络通信的抽象接口通信流程客户端 Socket.connect() ↓ 服务器 Socket.listen() Socket.accept()简单流程客户端发送数据 ↓ 服务器接收数据 ↓ 服务器返回响应Java示例客户端Socket socket new Socket(127.0.0.1,8080); OutputStream os socket.getOutputStream(); os.write(hello.getBytes());服务器ServerSocket server new ServerSocket(8080); Socket socket server.accept(); InputStream is socket.getInputStream();九、WebSocketHTTP 是请求 - 响应而 WebSocket 是长连接 双向通信适用于聊天系统实时消息实时数据流程HTTP握手 ↓ 升级协议 ↓ WebSocket连接优点服务器可以主动推送数据实时性高减少HTTP请求十、常见计算机网络面试题1 TCP为什么需要三次握手防止历史连接请求造成错误连接。2 TCP为什么四次挥手因为发送数据 接收数据是两个独立过程。3 HTTP 是无状态的是什么意思服务器不会保存客户端的状态。解决方案Cookie Session Token4 GET 和 POST 的区别对比GETPOST参数URL请求体安全较低较高长度有限制理论无限缓存可以不可以十一、总结计算机网络核心知识网络分层模型 TCP / UDP 三次握手 四次挥手 HTTP / HTTPS Socket WebSocket对于后端开发来说理解这些原理非常重要。因为Web 请求本质是 HTTP微服务通信依赖 TCP实时系统依赖 WebSocket掌握计算机网络能够更好地理解整个互联网系统的运行机制。