🔌 几种常见的 Socket 套接字 类型介绍
Socket(套接字)是应用程序通过网络进行通信的端点。不同类型的 Socket,决定了它的传输协议、通信方式、使用场景等。以下是几种常见的 Socket 类型及其特点。
1. 流式套接字(Stream Socket):对应TCP 协议**
📚 定义
- 流式套接字是基于 TCP 协议 的。
- 使用 面向连接 的通信方式,确保数据可靠传输。
📌 特点
- 数据传输 可靠,不会丢包,不乱序。
- 面向字节流(数据连续传输,没有明确分界)。
- 需要建立连接(
connect())才能通信,三次握手建立连接。 - 适合对数据完整性要求高的应用。
🎯 应用场景
- 网页浏览(HTTP)
- 文件传输(FTP)
- 邮件服务(SMTP、POP3)
- 即时通讯
💡 编程常见类型
SOCK_STREAM
2. 数据报套接字(Datagram Socket):UDP 协议
📚 定义
- 数据报套接字基于 UDP 协议。
- 是 无连接 通信方式,每个数据报独立传输。
📌 特点
- 不保证可靠性,可能丢包或乱序。
- 面向报文(一次发送/接收的消息是完整的单位)。
- 速度快,适合实时性高、对数据完整性要求不高的应用。
- 不需要建立连接,直接发送和接收数据。
🎯 应用场景
- 实时视频/音频传输(RTP)
- 局域网广播
- 在线游戏
- DNS 查询
💡 编程常见类型
SOCK_DGRAM
3. 原始套接字(Raw Socket)
📚 定义
- 原始套接字允许开发者访问 网络协议的底层,可以自己构造数据包(包括 IP 头和协议头)。
- 常用于自定义协议实现、网络工具开发和抓包分析。
📌 特点
- 高度灵活,能控制数据包的格式。
- 需要 管理员权限 或 超级用户 权限。
- 不常用于常规应用,主要在协议测试、网络诊断工具中出现。
🎯 应用场景
- 抓包分析(如 Wireshark)
- 自定义协议实现
- 网络探测(如 ping、traceroute)
💡 编程常见类型
SOCK_RAW
4. 序列包套接字(Sequenced Packet Socket)
📚 定义
- 保证消息顺序和完整性,面向连接。
- 比较少见,通常和某些特定协议一起使用(如 SCTP)。
📌 特点
- 可靠传输、顺序传递、报文完整。
- 每个消息是独立传输单元,不会分片交付。
- 主要用于多流数据传输或传输有序、完整消息的应用。
🎯 应用场景
- SCTP(流控制传输协议)
- 电信领域、大型分布式系统的传输协议
💡 编程常见类型
SOCK_SEQPACKET
5. Unix 域套接字(UNIX Domain Socket)
📚 定义
- 用于同一台主机上不同进程间的通信(IPC,进程间通信)。
- 不走网络协议栈,不依赖 IP 协议。
📌 特点
- 速度快、效率高,因为不经过 TCP/IP 协议栈。
- 文件系统路径作为地址绑定标识。
- 只用于本地通信,不能跨主机。
🎯 应用场景
- 本地服务通信(如 MySQL、Nginx 本地套接字通信)
- IPC 高性能进程通信
💡 编程常见类型
AF_UNIX或AF_LOCAL
⚙️ 各套接字类型对比(简要)
| 类型 | 传输协议 | 连接方式 | 可靠性 | 使用场景 |
|---|---|---|---|---|
| 流式套接字(SOCK_STREAM) | TCP | 面向连接 | 可靠 | HTTP、FTP、聊天 |
| 数据报套接字(SOCK_DGRAM) | UDP | 无连接 | 不可靠 | DNS、视频流 |
| 原始套接字(SOCK_RAW) | 自定义 | 不定 | 不定 | 抓包、ping、traceroute |
| 序列包套接字(SOCK_SEQPACKET) | SCTP | 面向连接 | 可靠 | 多流数据传输 |
| Unix 域套接字(AF_UNIX) | 本地通信 | 面向连接/无连接 | 可靠 | 进程通信 IPC |
✅ 总结
- SOCK_STREAM → 面向连接,可靠传输,TCP 协议。
- SOCK_DGRAM → 无连接,快速传输,UDP 协议。
- SOCK_RAW → 底层控制,抓包和自定义协议。
- SOCK_SEQPACKET → 可靠报文传输,常用于 SCTP。
- UNIX Domain Socket → 本地进程通信,效率高,不走网络。
🌐 IP地址(Internet Protocol Address)详解
IP地址是为网络中的每个设备分配的唯一标识符,就像每台电脑或手机在互联网中的“门牌号”。它的作用是在网络中定位和识别主机,实现设备之间的通信。
1. IP地址的基本概念
IP 地址用于标识网络上的主机。主机发送数据时,需要知道目标的 IP 地址,以便数据能够正确到达。
IP 地址分为两个部分:
- 网络号:标识主机属于哪个网络。
- 主机号:标识网络中具体的某一台主机。
2. IP地址的分类
① IPv4(Internet Protocol version 4):[主要使用]
- 最常用的 IP 协议版本,由 32 位二进制数表示。
- 通常写成 点分十进制,如
192.168.1.1。
🟢 IPv4 地址结构
- 网络部分 + 主机部分
- 共有 4 个字节(8位 × 4 = 32位),范围
0.0.0.0 ~ 255.255.255.255
🟢 IPv4 地址分类
| 类别 | 范围 | 用途 | |
|---|---|---|---|
| A类 | 1.0.0.0 ~ 126.255.255.255 | 大型网络 | |
| B类 | 128.0.0.0 ~ 191.255.255.255 | 中型网络 | 局域网的IP |
| C类 | 192.0.0.0 ~ 223.255.255.255 | 小型网络 | |
| D类 | 224.0.0.0 ~ 239.255.255.255 | 多播 | 组播IP |
| E类 | 240.0.0.0 ~ 255.255.255.255 | 实验和保留 | (四个255)全网广播 |
🟢 常见地址类型
- 公网地址:互联网上使用的全球唯一 IP。
- 私有地址:局域网内部使用,不能直接访问互联网。
例如:- A类私有地址:
10.0.0.0/8 - B类私有地址:
172.16.0.0/12 - C类私有地址:
192.168.0.0/16
- A类私有地址:
- 特殊地址:
- 127.0.0.1 → 本地主机(loopback 地址)
- 0.0.0.0 → 未指定地址
- 255.255.255.255 → 广播地址
② IPv6(Internet Protocol version 6)
- 下一代 IP 地址标准,由 128 位二进制数表示。
- 写作 8 组 16 位十六进制数,用冒号分隔,如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
🟢 IPv6 的优势
- 地址空间巨大(几乎无限):
2^128个地址。 - 消除 NAT 问题,每台设备都有全球唯一地址。
- 改进了路由和安全机制(IPSec 集成)。
- 支持自动地址配置(无须 DHCP)。
3. IP地址的表示方法
① 点分十进制(IPv4)
- 四个十进制数字,用
.分隔
例子:192.168.1.1
② 二进制
- 每个十进制数字转为 8 位二进制
例子:192.168.1.1→11000000.10101000.00000001.00000001
③ CIDR 表示法(无类域间路由)
- 通过斜杠
/指定网络前缀长度
例子:192.168.1.0/24,表示前 24 位是网络号,剩下 8 位是主机号。
4. 子网划分(Subnetting)
📌 为什么要划分子网?
- 提高地址利用率,避免地址浪费。
- 增强网络安全性和管理性。
📌 子网掩码
- 用于区分 IP 地址中的 网络部分 和 主机部分。
例子:- 子网掩码
255.255.255.0→ 网络部分前 24 位 - 通过掩码,主机可以判断目的 IP 是否在同一网络。
- 子网掩码
5. 动态与静态 IP 地址
动态 IP(Dynamic IP)
- 自动分配(通常通过 DHCP 协议)。
- IP 地址可能会变化。
静态 IP(Static IP)
- 手动配置,IP 地址固定不变。
- 适用于服务器、网络设备等需要长期固定地址的设备。
6. IP地址的工作流程
- 设备连接网络,获得 IP 地址(动态或静态)。
- 通过 IP 地址,发送和接收数据包。
- 路由器通过 IP 地址决定数据包的转发路径。
- IP 地址与 MAC 地址相结合,实现数据链路层到网络层的映射(通过 ARP 协议)。
7. 总结
| 类型 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 表示方法 | 点分十进制 192.168.1.1 | 十六进制 2001:db8::1 |
| 地址总数 | 约 42 亿 | 2^128 个(340 万亿亿亿亿) |
| 子网划分 | 依赖子网掩码 | 无需子网掩码,自动分配 |
| 是否支持 NAT | 必须(IPv4地址不足) | 不需要 NAT,全球唯一地址 |
| 主要用途 | 现有网络主流协议 | 下一代互联网,智能设备、大规模应用 |
📌 常见的知名端口号
- HTTP(Web服务器):80HTTP(Web服务器) :80
- HTTPS(加密的Web服务器):443HTTPS(加密的Web服务器) :443
- FTP(文件传输协议):21
- SSH(安全外壳协议):22
- SMTP(邮件发送协议):25
- POP3(邮件接收协议):110
- DNS(域名系统):53
- Telnet(远程登录协议):23
📌 常见的注册端口号
- MySQL数据库:3306
- PostgreSQL数据库:5432
- Microsoft SQL Server:1433微软 SQL 服务器:1433
- Oracle数据库:1521
🌐 广播IP(Broadcast IP)与组播IP(Multicast IP)详解
广播(Broadcast)和组播(Multicast)是IP网络中两种常用的通信方式,它们允许数据包向多个设备发送,而不是仅仅针对单个设备。这两种方式常用于提高网络通信效率,特别是在大规模网络中。
1. 广播IP(Broadcast IP)
📌 定义
广播IP用于将数据包发送到同一网络中的所有设备。广播方式让发送者无需指定每个接收者,只需将消息发送到广播地址,网络上的所有设备都会接收到这个消息。
📌 广播的类型
- 直接广播(Direct Broadcast):目标是当前网络上的所有主机,而不管它们是否在本地网络。
- 示例:
255.255.255.255(局域网广播地址)或者192.168.1.255(如果子网掩码是255.255.255.0)。
- 示例:
- 有限广播(Limited Broadcast):用于设备在不知道自己的网络时向全网发送的广播消息。
- 示例:
255.255.255.255(局部网络广播)仅限本地网络中的设备接收。
- 示例:
📌 广播地址的结构
- 广播地址的最后一部分(主机部分)全部是
1,例如在子网掩码为255.255.255.0时,广播地址为192.168.1.255,其中192.168.1为网络号,255为广播标识。
📌 广播的应用
- 用于局域网中的设备发现、服务发现(例如 DHCP、ARP 协议)等。
- 在一个广播域内的所有主机都会接收广播包,可能会引起网络拥塞,尤其是当广播包的数量较多时。
2. 组播IP(Multicast IP)
📌 定义
组播IP是指将数据包发送给多个特定的接收者,这些接收者构成一个组。与广播不同,组播只将数据包发送给订阅了该组播地址的设备,而不是发送给整个网络的所有设备。组播通信比广播更高效,能够节省带宽。
📌 组播的工作原理
- 在组播中,发送者发送的数据包会根据指定的组播地址发送给所有订阅了该组播地址的设备。
- 组播地址属于 IP 地址的特定范围,这些地址从
224.0.0.0到233.255.255.255,专用于组播。
📌 组播地址的范围
- D类地址:组播IP地址使用IPv4的 D类地址(224.0.0.0 到 233.255.255.255),其中:
224.0.0.0 ~ 224.0.0.255用于本地网络(例如:设备发现、路由协议等)。225.0.0.0 ~ 233.255.255.255是用于更广泛范围的组播通信。
📌 组播与广播的区别
| 特性 | 广播(Broadcast) | 组播(Multicast) |
|---|---|---|
| 目标 | 网络中所有设备 | 仅针对订阅的设备 |
| 地址范围 | 255.255.255.255(有限广播)或 网络的广播地址 | 224.0.0.0 ~ 233.255.255.255 |
| 资源效率 | 不高,所有设备都会收到广播包 | 高,只有需要的设备会收到数据包 |
| 应用场景 | 网络发现(如ARP、DHCP) | 视频会议、流媒体传输、实时数据分发 |
| 路由支持 | 所有路由器会转发广播包 | 需要支持组播的路由协议(如 PIM、IGMP) |
📌 组播的应用
- 组播广泛应用于需要同时将数据发送到多个设备的场景,例如:
- 流媒体广播:如视频和音频的实时传输。
- 视频会议:多个参与者通过组播共享视频和音频流。
- 实时数据分发:股票行情、天气预报等实时信息。
📌 IGMP(Internet Group Management Protocol)
- IGMP是IPv4中用于管理组播成员资格的协议。它允许设备加入或离开组播组,从而实现对组播流的管理。
- IGMP通过协议帮助路由器判断哪些设备需要接收特定的组播流。
3. 总结
- 广播IP:向同一网络中的所有设备发送数据。广播的接收者是整个网络,但会占用较多的带宽,可能影响网络性能。
- 组播IP:向订阅特定组播地址的多个设备发送数据。组播的接收者是特定的设备组,比广播更高效,能够节省带宽。

被折叠的 条评论
为什么被折叠?



