返回 网络世界的奇思妙想
TCP/IP协议族(Transmission Control Protocol/Internet Protocol Suite)是互联网的基础通信协议集合,它定义了数据如何在网络中进行封装、传输、路由和接收。TCP/IP协议族不仅仅包含TCP和IP两个协议,而是由多个不同层次的协议组成的完整协议体系。
TCP/IP协议族是互联网的基石,它使得不同类型、不同厂商、不同操作系统的计算机能够通过网络进行通信。无论是浏览网页、发送电子邮件、文件传输还是视频通话,几乎所有的互联网应用都建立在TCP/IP协议族之上。
TCP/IP协议族采用分层的设计思想,通常被划分为四个层次,从下到上依次为:
网络接口层是TCP/IP模型的最底层,负责处理物理网络的细节,包括如何在物理网络上传输数据帧。这一层对应于OSI模型的数据链路层和物理层。
主要功能包括:
- 硬件地址(MAC地址)的识别和处理
- 数据帧的封装和解封装
- 物理介质上的比特流传输
常见的网络接口层技术包括以太网、Wi-Fi、PPP等。
网络层负责数据包的路由和转发,是整个TCP/IP协议族的核心。这一层的主要协议是IP协议(网际协议)。
主要功能包括:
- IP地址的分配和管理
- 数据包的路由选择
- 数据包的分片和重组
- 拥塞控制
网络层的核心协议是IP(Internet Protocol),目前主要有两个版本:IPv4和IPv6。
传输层负责提供端到端的通信服务,确保数据能够可靠、有序地从源主机传输到目标主机。传输层主要有两个协议:TCP和UDP。
主要功能包括:
- 端口号的管理,用于标识不同的应用程序
- 数据的分段和重组
- 可靠传输(TCP)
- 流量控制和拥塞控制(TCP)
应用层是TCP/IP模型的最高层,直接为用户的应用程序提供网络服务。这一层包含了大量的应用层协议,如HTTP、FTP、SMTP、DNS等。
主要功能包括:
- 提供各种网络应用服务
- 数据的格式化和编码
- 会话管理
- 用户认证和授权
IP协议是网络层的核心协议,负责数据包的路由和转发。IP协议是一种无连接的协议,它不保证数据包的可靠传输,也不保证数据包按顺序到达。
IPv4:
- 使用32位地址,理论上最多可以有43亿个地址
- 地址格式:点分十进制,如192.168.1.1
- 由于地址空间有限,已经不能满足互联网的发展需求
IPv6:
- 使用128位地址,地址空间极其庞大
- 地址格式:冒分十六进制,如2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 是未来互联网的发展方向
TCP协议是传输层的重要协议,它是一种面向连接的、可靠的传输协议。
主要特点:
- 面向连接:通信前需要先建立连接,通信结束后需要释放连接
- 可靠传输:通过确认机制、重传机制、序号和确认号等保证数据的可靠传输
- 全双工通信:连接建立后,双方可以同时发送和接收数据
- 流量控制:通过滑动窗口机制控制发送速率,防止接收方被淹没
- 拥塞控制:通过慢启动、拥塞避免等算法控制网络拥塞
UDP协议也是传输层的协议,但与TCP不同,它是一种无连接的、不可靠的传输协议。
主要特点:
- 无连接:通信前不需要建立连接,直接发送数据
- 不可靠:不保证数据一定能到达,也不保证按顺序到达
- 开销小:头部只有8字节,相比TCP的20字节头部要小得多
- 速度快:没有连接建立、确认、重传等机制,传输效率高
UDP适用于对实时性要求高、可以容忍少量丢包的场景,如视频通话、在线游戏、直播等。
- ICMP(互联网控制消息协议):用于在IP网络中发送控制消息,如ping命令就是使用ICMP协议
- ARP(地址解析协议):用于将IP地址解析为MAC地址
- HTTP(超文本传输协议):用于网页浏览
- FTP(文件传输协议):用于文件传输
- SMTP(简单邮件传输协议):用于电子邮件发送
- DNS(域名系统):用于域名解析
TCP建立连接需要经过三次握手,也就是三个数据包的交换:
- 第一次握手:客户端向服务器发送一个SYN(同步)包,请求建立连接。此时客户端进入SYN_SENT状态。
- 第二次握手:服务器收到SYN包后,回复一个SYN+ACK(同步+确认)包,表示同意建立连接。此时服务器进入SYN_RCVD状态。
- 第三次握手:客户端收到SYN+ACK包后,再发送一个ACK(确认)包,表示确认收到。此时客户端和服务器都进入ESTABLISHED状态,连接建立完成。
为什么需要三次握手?主要是为了防止已失效的连接请求报文段突然又传送到了服务器,导致服务器错误地建立连接。
TCP断开连接需要经过四次挥手:
- 第一次挥手:主动关闭方发送一个FIN(结束)包,表示没有数据要发送了,请求关闭连接。
- 第二次挥手:被动关闭方收到FIN包后,回复一个ACK包,表示确认收到。此时主动关闭方到被动关闭方的连接关闭了,但被动关闭方到主动关闭方的连接还在。
- 第三次挥手:被动关闭方发送完所有数据后,发送一个FIN包,表示也没有数据要发送了,请求关闭连接。
- 第四次挥手:主动关闭方收到FIN包后,回复一个ACK包,表示确认收到。等待一段时间后,连接完全关闭。
为什么建立连接是三次握手,而断开连接是四次挥手?因为建立连接时,服务器的SYN和ACK可以一起发送;而断开连接时,被动关闭方可能还有数据要发送,所以FIN和ACK不能一起发送,需要分开发送。
在IPv4中,IP地址被分为五类:
- A类地址:第一个字节的第一位为0,范围是1.0.0.0到126.0.0.0,适用于大型网络
- B类地址:第一个字节的前两位为10,范围是128.0.0.0到191.255.0.0,适用于中型网络
- C类地址:第一个字节的前三位为110,范围是192.0.0.0到223.255.255.0,适用于小型网络
- D类地址:第一个字节的前四位为1110,范围是224.0.0.0到239.255.255.255,用于组播
- E类地址:第一个字节的前五位为11110,范围是240.0.0.0到255.255.255.255,保留用于实验
子网掩码用于区分IP地址中的网络位和主机位。通过子网掩码,可以将一个大的网络划分为多个小的子网,提高IP地址的利用率。
例如,一个C类地址192.168.1.0,默认子网掩码是255.255.255.0,可以容纳254台主机。如果使用子网掩码255.255.255.128,就可以将这个网络划分为两个子网,每个子网可以容纳126台主机。
- 公网IP:可以直接在互联网上访问的IP地址,由ISP分配,全球唯一
- 私网IP:只能在内部网络中使用的IP地址,不能直接在互联网上访问
私网IP地址范围:
- A类:10.0.0.0 到 10.255.255.255
- B类:172.16.0.0 到 172.31.255.255
- C类:192.168.0.0 到 192.168.255.255
私网IP需要通过NAT(网络地址转换)才能访问互联网。
在一台计算机上,可能同时运行着多个网络应用程序,如浏览器、邮件客户端、QQ等。当数据到达计算机时,如何知道应该交给哪个应用程序处理呢?答案就是通过端口号。
端口号是一个16位的数字,范围是0到65535。每个网络应用程序都会绑定一个或多个端口号,当数据到达时,操作系统根据端口号将数据交给对应的应用程序处理。
一些常用的服务有固定的端口号:
- HTTP:80端口
- HTTPS:443端口
- FTP:21端口
- SSH:22端口
- Telnet:23端口
- SMTP:25端口
- DNS:53端口
- POP3:110端口
- IMAP:143端口
端口号0到1023被称为知名端口,分配给常用的服务使用;1024到49151是注册端口;49152到65535是动态端口,通常由客户端程序临时使用。
套接字是IP地址和端口号的组合,用于唯一标识网络中的一个通信端点。一个TCP连接由两个套接字(源IP+源端口,目标IP+目标端口)唯一确定。
例如,当你用浏览器访问百度时,你的电脑可能使用端口54321,百度服务器使用端口443,那么这个连接就可以表示为(你的IP:54321, 百度IP:443)。
TCP/IP协议族是现代互联网的基础,其重要性体现在以下几个方面:
- 开放性:TCP/IP是开放的标准协议,不属于任何公司或组织,任何人都可以使用
- 互操作性:不同厂商、不同操作系统的设备都可以通过TCP/IP进行通信
- 可扩展性:TCP/IP的分层设计使得它能够不断发展和扩展,适应新的需求
- 普遍性:几乎所有的网络设备和操作系统都支持TCP/IP协议
TCP/IP协议族的应用非常广泛,几乎所有的互联网服务都基于TCP/IP,包括:
- 网页浏览(HTTP/HTTPS)
- 电子邮件(SMTP/POP3/IMAP)
- 文件传输(FTP/SFTP)
- 即时通讯
- 视频会议
- 在线游戏
- 云计算
- 物联网
可以说,没有TCP/IP协议族,就没有今天的互联网。