TCP/IP 协议基础入门
1. 什么是 TCP/IP?
TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议族。就像人与人交流需要语言一样,计算机之间的网络通信也需要协议,TCP/IP 就是计算机世界的"通用语言"。
简单理解:
- IP(Internet Protocol):负责把数据送到正确的目标地址(像快递单)
- TCP(Transmission Control Protocol):负责确保数据可靠到达(像挂号信)
TCP/IP 不是单个协议,而是一组协议的总称,包括:
- HTTP/HTTPS:网页访问
- DNS:域名解析
- FTP:文件传输
- SMTP:邮件发送
- TCP:可靠传输
- UDP:快速传输
- IP:地址路由
2. 五层模型
网络协议分为五层,从上到下分别是:
应用层 - HTTP, DNS, FTP(用户直接使用的程序)
传输层 - TCP, UDP(端到端通信)
网络层 - IP, ARP, ICMP(地址与路由)
数据链路层 - Ethernet, Wi-Fi(局域网通信)
物理层 - 网线、光纤、无线电(比特流传输)
TCP/IP 五层模型
flowchart TB
subgraph L5["应用层 Application"]
A["HTTP / DNS / SMTP / FTP"]
end
subgraph L4["传输层 Transport"]
T["TCP / UDP"]
end
subgraph L3["网络层 Internet"]
N["IP / ICMP / ARP"]
end
L5 --> L4 --> L3
2.1 生活中的类比
想象你寄一封信:
- 应用层:写信的内容
- 传输层:信封(写上发件人、收件人地址)
- 网络层:邮局分拣和路由
- 数据链路层:运输工具(汽车、飞机)
- 物理层:道路、天空
学习技巧:建议从应用层往下学习,因为应用层最直观,容易理解。然后逐步深入到底层。
3. IP 地址
IPv4 地址分类
flowchart LR
A1["A类 0-127.x.x.x
1677万主机"]
A2["B类 128-191.x.x.x
65534主机"]
A3["C类 192-223.x.x.x
254主机"]
A4["D类 224-239.x.x.x
多播地址"]
A5["E类 240-255.x.x.x
实验用途"]
3.1 什么是 IP 地址?
IP 地址就像家庭的门牌号,每个接入网络的设备都有唯一的 IP 地址。当前主要使用的是 IPv4,由 4 个 0-255 的数字组成:
示例 IP 地址:
192.168.1.100
61.135.169.121
127.0.0.1(本地回环地址,即"我自己的电脑")
3.2 IP 地址分类
| 类型 | 范围 | 示例 | 用途 |
|---|---|---|---|
| A 类 | 1.0.0.0 - 126.255.255.255 | 10.0.0.1 | 大型企业 |
| B 类 | 128.0.0.0 - 191.255.255.255 | 172.16.0.1 | 中型网络 |
| C 类 | 192.0.0.0 - 223.255.255.255 | 192.168.1.1 | 小型网络 |
| D 类 | 224.0.0.0 - 239.255.255.255 | 224.0.0.1 | 多播/直播 |
| E 类 | 240.0.0.0 - 255.255.255.255 | - | 实验/保留 |
3.3 私有 IP 地址
私有 IP 不能直接访问互联网,需要通过 NAT 转换:
- 10.0.0.0 - 10.255.255.255:A 类私有(约 1677 万个)
- 172.16.0.0 - 172.31.255.255:B 类私有(约 65 万个)
- 192.168.0.0 - 192.168.255.255:C 类私有(约 6.5 万个)
家庭网络示例:你的路由器通常使用 192.168.1.1,手机、电脑连接后会被分配 192.168.1.2、192.168.1.3 等地址。这些都是私有地址,通过路由器的 NAT 功能共享公网 IP 访问互联网。
4. 子网掩码
子网划分示例
flowchart LR
N1["网络地址 192.168.1.0/24"]
N2["/24 = 255.255.255.0"]
N1 --> N2
4.1 什么是子网掩码?
子网掩码用来区分 IP 地址中的"网络部分"和"主机部分"。常见的子网掩码:
255.255.255.0 等于 /24 (常见于家庭网络)
255.255.0.0 等于 /16
255.0.0.0 等于 /8
4.2 如何计算
IP 地址:192.168.1.100
子网掩码:255.255.255.0
计算网络地址(IP 与子网掩码按位 AND):
192.168.1.100
AND 255.255.255.0
------------------
= 192.168.1.0 (这就是网络地址)
可用主机数:2^8 - 2 = 254 台
(减去网络地址和广播地址)
简化记忆:/24 表示前 24 位是网络号,后 8 位是主机号。8 位能表示 256 个地址,减去网络和广播地址,可用 254 个。
5. 端口号
5.1 为什么需要端口号?
IP 地址用于定位到某台电脑,但一台电脑可能运行多个程序(浏览器、邮箱、游戏),端口号用来区分电脑上的不同程序。
类比:IP 地址像是酒店地址,端口号像是房间号。有了地址找到酒店,再通过房间号找到具体的人。
5.2 常见端口号
| 端口 | 协议 | 用途 |
|---|---|---|
| 21 | FTP | 文件传输 |
| 22 | SSH | 远程登录(加密) |
| 25 | SMTP | 邮件发送 |
| 53 | DNS | 域名解析 |
| 80 | HTTP | 网页访问 |
| 443 | HTTPS | 安全网页访问 |
| 3306 | MySQL | 数据库 |
| 8080 | HTTP 代理 | Web 服务(开发环境) |
5.3 端口范围
- 0-1023:系统端口(需要管理员权限)
- 1024-49151:注册端口(已登记的软件使用)
- 49152-65535:动态端口(客户端随机使用)
6. 数据封装与解封装
6.1 发送数据时的封装
当你在浏览器输入网址时,数据经过层层封装:
应用层: HTTP 请求(我要访问某个网页)
↓ 加上应用层头
传输层: TCP 头 + 数据(源端口 52345,目标端口 80)
↓ 加上传输层头
网络层: IP 头 + TCP 数据(源 IP 192.168.1.100,目标 IP 61.135.169.121)
↓ 加上网络层头
数据链路层: Ethernet 头 + IP 数据(源 MAC XX:XX:XX:XX:XX:XX,目标 MAC 路由器)
↓ 加上链路层尾
物理层: 转换为电信号/光信号,在网线/光纤中传输
6.2 接收数据时的解封装
目标电脑收到数据后,层层解封装:
物理层: 接收电信号/光信号
↓ 去掉物理层头
数据链路层: 解析 Ethernet 头,检查 MAC 地址
↓ 去掉数据链路层头
网络层: 解析 IP 头,检查目标 IP 地址
↓ 去掉网络层头
传输层: 解析 TCP 头,检查目标端口,交付给对应应用
↓ 去掉传输层头
应用层: HTTP 请求,浏览器显示网页
理解要点:每一层只关心自己的头部信息,不需要了解其他层的细节。就像寄信时你只需要写好信封,邮局不需要知道信的内容是什么。