E12. 网络模型
2.1. 端口监听隔离运行环境
端口是网络通信的“门牌号”,若多个程序争夺同一端口,网络服务将崩溃!
2.1.1. 常见程序端口示例
程序类型 | 默认端口 | 用途描述 |
---|---|---|
HTTP 服务 | 80 | Web 浏览器访问网页 |
HTTPS 服务 | 443 | 加密的 Web 通信 |
MySQL 数据库 | 3306 | 关系型数据库通信 |
SSH 服务 | 22 | 远程安全登录 |
Redis 缓存 | 6379 | 内存数据库 |
2.1.2. 端口冲突解决方案
bash
# 检查端口占用(Linux)
sudo ss -tulnp | grep 8000
# 修改程序端口配置(以 uwsgi 为例)
# 原配置:uwsgi --http-socket :8000
# 新配置:uwsgi --http-socket :8080
容器化隔离方案
bash
# Docker 示例:通过端口映射隔离服务
docker run -p 8000:80 --name webapp1 my_webapp
docker run -p 8080:80 --name webapp2 my_webapp
2.2. 80 端口和 443 端口
2.2.1. 核心区别
端口 | 协议 | 加密性 | 场景示例 |
---|---|---|---|
80 | HTTP | 无 | 普通网页浏览 |
443 | HTTPS | 有 | 金融交易、用户登录 |
2.2.2. HTTPS 必须签名的原因
bash
# 生成自签名证书(示例)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
# Nginx 配置 HTTPS(片段)
server {
listen 443 ssl;
ssl_certificate /path/cert.pem;
ssl_certificate_key /path/key.pem;
}
WARNING
直接使用自签名证书会导致浏览器警告!生产环境需购买商业证书(如 Let's Encrypt 免费证书)。
2.3. 局域网中的通信稳定且延迟低
2.3.1. 局域网优势
- 低延迟:设备间物理距离短(通常 <100 米),信号衰减小。
- 高带宽:局域网通常采用千兆/万兆以太网,传输速率快。
- 无路由损耗:数据直接在本地路由器内转发,无需经过运营商网络。
2.3.2. 典型场景
bash
# 局域网文件共享(Samba)
# 服务器端配置:
sudo nano /etc/samba/smb.conf
[shared] path = /shared/directory writable = yes
# 客户端访问:
smbclient //192.168.1.100/shared -U username
2.4. 公网通信不稳定且延迟高
2.4.1. 公网通信挑战
- 高延迟:数据需经过多级路由器,传输距离可能跨越大陆/海洋。
- 丢包风险:运营商网络拥塞或设备故障可能导致数据丢失。
- 不可靠性:极端情况下(如海底光缆中断)可能完全中断。
2.4.2. 应对策略
bash
# 使用 TCP 重传机制(示例)
nc -zv 8.8.8.8 53 # 测试 DNS 服务可达性
curl --connect-timeout 5 --max-time 10 http://example.com # 设置超时
TIP
编程最佳实践:在代码中添加重试逻辑和超时控制!
python
import requests
try:
response = requests.get('https://api.example.com', timeout=5)
except requests.exceptions.RequestException as e:
print("网络异常,重试...")
2.5. 公网带宽与流量是运营商掌管的付费资源
2.5.1. 带宽与流量定义
- 带宽:单位时间内可传输的最大数据量(如 100Mbps = 每秒 12.5MB)。
- 流量:实际传输的数据总量(如 1TB/月)。
2.5.2. 典型定价方案(国内云服务商)
资源类型 | 价格示例(2025) | 计费方式 |
---|---|---|
共享带宽 | $0.005/MB | 按实际流量计费 |
独享带宽 | $0.01/MB | 包年包月预付费 |
跨境带宽 | $0.03/MB | 高于国内带宽 |
2.5.3. 运营商收费原因
- 基础设施成本:骨干网、海底光缆建设维护费用。
- 流量峰值管理:需预留冗余带宽应对突发流量。
- 服务保障:SLA(服务等级协议)承诺的可用性需付费支持。
知识回顾
- 端口隔离:通过修改端口配置或使用容器化部署避免冲突。
- HTTPS 必要性:443 端口需 SSL 证书,保护数据隐私。
- 网络环境差异:局域网稳定低延迟,公网需设计重试机制。
- 带宽流量成本:公网资源按需付费,需合理规划预算。
课后练习
(单选)以下哪个端口通常用于加密的 Web 通信?
- A. 80
- B. 22
- C. 443
- D. 3306
(操作)编写一个 Python 脚本,每 5 秒检测公网服务器 80 端口是否可达。
(计算)假设某网站日均流量 10GB,按 $0.01/MB 计费,年成本是多少?
参考答案
- C
- 示例代码:python
import socket import time while True: try: sock = socket.create_connection(('example.com', 80), 2) print("端口 80 可达!") except Exception as e: print("端口 80 不可达!") time.sleep(5)
- 年成本 = 10GB × 365 × $0.01/MB = $36,500 (注意:1GB = 1024MB,需修正单位换算!)