TCP/IP(Transmission Control Protocol / Internet Protocol,传输控制协议 / 网际协议)是互联网的核心通信协议簇,并非单一协议,而是一套用于实现设备间跨网络通信的规则集合,定义了数据如何在网络中传输、寻址、封装和接收,所有接入互联网的设备(电脑、手机、服务器等)都遵循这套标准。
类比理解:TCP/IP 就像全球通用的 “快递物流体系”——IP 负责 “定位收件地址”(设备寻址),TCP 负责 “确保包裹完好、有序送达”(数据可靠传输),二者协同完成数据从源设备到目标设备的完整传递。
TCP/IP 协议簇的分层结构(4层)
TCP/IP 采用 “分层设计”,每一层负责特定功能,层与层之间通过 “接口” 协作,上层依赖下层提供的服务,下层为上层屏蔽细节(核心优势:模块化,便于维护和扩展)。从下到上分为 4 层,每层对应核心协议如下:
1. 网络接口层(最底层,链路层)
- 核心功能:负责物理传输(将数据转化为电信号 / 光信号),处理设备与局域网的连接(如网卡、交换机),定义数据在 “本地链路”(同一局域网)的传输规则。
- 核心协议 / 技术:以太网(Ethernet)、Wi-Fi、PPP(拨号上网)、MAC 地址(设备物理地址)。
- 类比:快递的 “小区内配送”,负责将包裹从快递站送到小区门口。
2. 网络层(核心层,寻址与路由)
- 核心功能:负责跨网络寻址和路由转发—— 确定数据从源网络到目标网络的 “最佳路径”,解决 “不同局域网之间如何通信” 的问题。
- 核心协议:
- IP(网际协议):最核心,给每台联网设备分配唯一的 “IP 地址”(如 192.168.1.1),相当于设备的 “网络身份证”,用于定位设备所在网络。
- ICMP(互联网控制消息协议):辅助 IP,用于检测网络连通性(如 ping 命令就是基于 ICMP)、报告错误(如数据丢失)。
- ARP(地址解析协议):将 IP 地址转化为 MAC 地址(因为网络接口层只认识 MAC 地址)。
- 类比:快递的 “跨城市运输”,负责将包裹从北京快递站转发到上海快递站,确定运输路线。
3. 传输层(可靠传输层)
- 核心功能:负责端到端的可靠数据传输,解决 “数据传输过程中丢失、错乱、重复” 的问题,同时控制数据传输速率(流量控制)。
- 核心协议(两大核心,二选一使用):
- TCP(传输控制协议):面向连接、可靠、有序(核心特点)。
- 工作逻辑:传输前先建立连接(三次握手),传输中确认数据接收(ACK 应答),丢失数据自动重传,传输结束后释放连接(四次挥手)。
- 适用场景:对可靠性要求高的场景(网页浏览、文件传输、聊天消息、邮件)。
- UDP(用户数据报协议):无连接、不可靠、无序,但传输速度快、开销小。
- 工作逻辑:无需建立连接,直接发送数据,不确认接收、不重传丢失数据。
- 适用场景:对实时性要求高、可容忍少量数据丢失的场景(视频通话、直播、游戏、DNS 查询)。
- TCP(传输控制协议):面向连接、可靠、有序(核心特点)。
- 类比:TCP = 顺丰快递(上门取件、确认签收、丢件补发),UDP = 普通平邮(直接投递、不确认签收、速度快)。
4. 应用层(最上层,用户交互层)
- 核心功能:为具体应用程序提供通信接口,定义应用层面的数据格式和交互规则(用户直接接触的功能,都依赖这一层)。
- 核心协议(日常高频):
- HTTP/HTTPS:网页浏览(如打开百度、知乎)。
- FTP/SFTP:文件传输(上传、下载文件)。
- SMTP/POP3/IMAP:邮件发送与接收。
- DNS:域名解析(将www.baidu.com转化为 IP 地址,因为网络层只认识 IP)。
- SSH:远程登录(如 Linux 服务器远程管理)。
- Telnet:老式远程登录(安全性低,现在少用)。
- 类比:快递的 “用户收发件”,比如你在淘宝下单(应用),商家发货、你签收(应用层交互)。
TCP/IP 的核心工作流程
- 应用层:你打开浏览器输入www.baidu.com,浏览器调用 HTTP 协议,向百度服务器发起 “请求网页” 的指令。
- 传输层:HTTP 协议将请求数据交给 TCP,TCP 对数据进行分段、封装,建立与百度服务器的 TCP 连接(三次握手),确保数据可靠传输。
- 网络层:TCP 数据交给 IP,IP 给数据封装上 “源 IP(你的电脑 IP)” 和 “目标 IP(百度服务器 IP)”,通过 ICMP、路由协议找到从你的电脑到百度服务器的最佳路径。
- 网络接口层:IP 数据交给网卡,转化为电信号,通过 Wi-Fi / 网线传输到路由器,再逐级转发到百度服务器所在的网络。
- 反向流程:百度服务器接收数据后,从下到上逐层解封装,最终通过 HTTP 协议返回网页数据,再通过 TCP/IP 传回你的电脑,浏览器渲染网页。
握手:
TCP 三次握手(建立连接):
- 第一次:客户端→服务器,发送 SYN(同步)报文,请求建立连接。
- 第二次:服务器→客户端,发送 SYN+ACK(同步 + 确认)报文,确认接收并请求同步。
- 第三次:客户端→服务器,发送 ACK(确认)报文,连接建立完成。
- 核心目的:确保双方 “发送能力” 和 “接收能力” 都正常,避免无效连接。
TCP 四次挥手(释放连接):
- 第一次:客户端→服务器,发送 FIN(结束)报文,告知 “我要关闭发送通道”。
- 第二次:服务器→客户端,发送 ACK 报文,确认接收 “关闭请求”。
- 第三次:服务器→客户端,发送 FIN 报文,告知 “我也关闭发送通道”。
- 第四次:客户端→服务器,发送 ACK 报文,确认接收,连接释放。
- 核心目的:确保双方都已完成数据传输,避免数据丢失(因为 TCP 是双向传输,需要双向关闭)。