TCP/IP协议概述
1. 应用层(Application Layer)
1.1 功能
应用层是用户直接接触的层次,负责为用户提供具体的应用功能,比如浏览网页(HTTP)、发送邮件(SMTP)、文件传输(FTP)等。应用层的数据称为消息(Message)或报文(Message) 。
1.2 用户态和内核态
应用层工作在操作系统的用户态,而传输层及以下工作在内核态。应用层通过系统调用(如send()
、recv()
)与内核态的网络协议栈交互。
2. 传输层(Transport Layer)
2.1 功能
传输层负责为应用层提供端到端的通信支持,主要协议是TCP和UDP。传输层的数据称为段(Segment)(TCP)或数据报(Datagram)(UDP)。
2.2 TCP和UDP的区别
- TCP(传输控制协议):提供可靠传输,支持流量控制、超时重传、拥塞控制等特性。适用于需要可靠传输的场景,如HTTP、FTP、电子邮件等。
- UDP(用户数据报协议):提供不可靠传输,不保证数据包是否到达对方。适用于实时性要求高的场景,如视频流、在线游戏等。
2.3 端口号
传输层通过端口号区分不同的应用。例如,Web服务器通常使用80端口,SSH使用22端口。客户端操作系统会为每个应用分配临时的端口号。
3. 网络层(Internet Layer)
3.1 功能
网络层负责将数据包从源设备传输到目标设备,主要协议是IP协议。网络层的数据称为包(Packet)。
3.2 IP地址
每个设备都有一个唯一的IP地址,用于标识设备。IPv4地址由32位组成,通常表示为四段数字(如192.168.1.1)。
3.3 子网掩码
子网掩码用于划分IP地址的网络号和主机号。例如,192.168.1.1/24表示前24位是网络号,后8位是主机号。通过按位与运算,可以计算出网络地址和主机地址。
3.4 路由
网络层通过路由算法决定数据包的传输路径。路由器根据目标IP地址的子网,将数据包转发到下一个节点。
3.5 例子
当你的电脑访问一个网站时,网络层会将目标IP地址(如93.184.216.34)添加到IP包头中,并通过路由算法找到传输路径。
4. 网络接口层(Link Layer)
4.1 功能
网络接口层负责在物理网络上发送原始数据包,主要协议是以太网(Ethernet)和Wi-Fi。网络接口层的数据称为帧(Frame)。
4.2 MAC地址
每个网络设备都有一个唯一的MAC地址,用于标识设备。MAC地址由48位组成,通常表示为六段十六进制数(如00:1A:2B:3C:4D:5E)。
4.3 ARP协议
ARP(地址解析协议)用于将IP地址解析为MAC地址。例如,当你的电脑需要发送数据包到192.168.1.1时,它会通过ARP协议获取目标设备的MAC地址。
4.4 例子
当你的电脑发送数据包时,网络接口层会将目标MAC地址添加到以太网帧中,并通过网卡发送到物理网络。
5. 数据包在各层的封装
5.1 发送数据包
- 应用层:生成HTTP请求(消息)。
- 传输层:添加TCP头,封装为TCP段。
- 网络层:添加IP头,封装为IP包。
- 网络接口层:添加以太网头,封装为以太网帧。
5.2 接收数据包
- 网络接口层:剥离以太网头,得到IP包。
- 网络层:剥离IP头,得到TCP段。
- 传输层:剥离TCP头,得到HTTP请求。
- 应用层:处理HTTP请求。