核心概念
网络通信基础是计算机之间通过协议与规则进行信息交换的技术体系。其核心可以类比为“数字世界的快递系统”:每个包裹(数据)必须包含收件人地址(IP)、快递单号(端口)、运输方式(协议),才能实现跨区域(网络)精准投递。掌握这些基础对排查网络问题、优化通信效率至关重要。
基础语法
OSI七层模型分层
OSI模型将通信过程分为7个层级,各司其职:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建TCP套接字(传输层)
s.connect(("example.com", 80)) # 建立连接(应用层)
s.send(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n") # 发送HTTP请求(应用层)
response = s.recv(4096) # 接收响应数据(传输层)
s.close() # 关闭连接(应用层)
TCP与UDP协议对比
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立可靠连接
s.connect(("localhost", 8080))
s.send(b"data") # 自动分片与重组
s.close()
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 无连接通信
s.sendto(b"data", ("localhost", 8080)) # 直接发送
s.close()
进阶特性
| 协议类型 | 用途 | 特点 | 示例 |
|---|---|---|---|
| HTTP/HTTPS | Web通信 | 无状态、文本协议 | requests.get("https://example.com") |
| WebSocket | 实时通信 | 持久化双向连接 | ws.send("实时消息") |
| FTP | 文件传输 | 专用协议 | ftplib.FTP("example.com") |
| MQTT | 物联网通信 | 轻量级发布/订阅 | client.publish("topic", "消息") |
实战应用
HTTP客户端构建
import requests
response = requests.get("https://example.com", timeout=5) # 设置超时时间
if response.status_code == 200:
# 输出网页HTML内容
print(response.text) # 获取响应文本
WebSocket服务器实现
// Node.js WebSocket服务器
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 }); // 创建服务器
wss.on('connection', (ws) => {
ws.on('message', (message) => {
console.log('收到消息:', message); // 处理客户端消息
ws.send(`服务器回复: ${message}`); // 发送响应
});
});
注意事项
- IP地址与端口混淆:IP地址是设备标识(如192.168.1.1),端口是服务标识(如80/443),需严格区分使用
- 协议选择不当:实时音视频建议用UDP,文件传输必须用TCP
- 超时设置缺失:所有网络请求必须配置超时参数,避免永久阻塞
- 数据序列化问题:不同协议要求不同编码方式(如HTTP需UTF-8,MQTT支持二进制)
总结
掌握网络通信基础能帮助开发者准确理解数据传输机制,快速定位协议层问题并构建稳定网络应用。