3.1 分配给套接字的IP地址与端口号
2025/10/2大约 3 分钟
3.1 分配给套接字的IP地址与端口号
[!quote]
IP 是Internet protocol 的简写,IP地址 是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为了区分程序中创建的套接字而分配给套接字的序号。
网络地址
构成:32位,4字节。划分为两个部分:网络ID、主机ID
整体每个字节的值用十进制表示,字节间使用 "." 间隔。
192.168.56.1
分类
根据网络ID的值划分
| 类型 | 1字节 | 1字节 | 1字节 | 1字节 | 首字节范围 | 保留的网络号 | 可分配的网络ID数 | 可分配的主机ID数量 |
|---|---|---|---|---|---|---|---|---|
| A | 网络ID 首位为0 | 主机ID | 0~127 | 0:本网络;127:本地回环 | 126(剔除保留的0 和 127) | 2^24-2(剔除全0以及全1的两个主机ID) | ||
| B | 网络ID 10 | 主机ID | 128~191 | 128.0 | 16383 | 65534 | ||
| C | 网络ID 110 | 主机ID | 192~223 | 192.0.0 | 2097151(2^21 -1)前3bits固定为110,剩余21bits,再剔除保留的1个地址 | 254 | ||
| D | 1110 多播地址 | 224~239 | ||||||
| E | 1111 保留 | 240~255 |
问:为什么C类网络ID使用110而不是11?
C类地址使用110,为了保证分类的地址不会重叠。B类是10,如果C类是11,那么所有以1开始的网络不是B就是C,没办法再区分出其他类型
主机ID全部为0 或 全部为1有特殊含义或用途
特殊的网络地址:
| 网络号 | 主机号 | 用途 |
|---|---|---|
| 127 | 非全0 或 全1 | 本地回环:网络测试用 |
我只知道127.0.0.1 是本地,没试过其他127的地址当作本地地址。
CIDR Classless Inter-Domain Routing
无分类域间路由选择
构成:网络前缀,主机号
表示方法:a.b.c.d / n, 其中n是网络前缀的长度。n的取值范围:0~32
对于128.14.32.0/20 的IP地址,其网络号为 IP地址的前20位,主机号为剩下的12位。
地址块
网络号相同,主机号从0开始直到最大值,所构成IP地址就是一个地址块
对于128.14.32.0/20, 共有2^12 个主机地址。
地址块可以用块中第一个IP地址表示(主机号全部为0)
地址(子网)掩码 address mask
用于计算网络号的值,同样使用点分十进制表示。网络前缀全部取1,剩下的取0,得到的就是地址掩码。
| 分类 | 地址掩码 |
|---|---|
| A | 255.0.0.0 |
| B | 255.255.0.0 |
| C | 255.255.255.0 |
网络号 = IP地址 & 地址掩码
特殊的CIDR 地址块
| 网络前缀 | 网络掩码 | 说明 |
|---|---|---|
| /32 | 255.255.255.255 | ip地址不属于网络(地址块内不包含IP地址),用于主机路由 |
| /31 | 255.255.255.254 | 地址块包含两个IP地址,用于点对点链路 |
| /0 | 0.0.0.0 | 所有的ip地址都属于一个网络(地址块包含所有的IP地址),用于默认路由 |
端口号
[!qutoe]
IP用于区分计算机。端口号区分套接字。
- 端口号和套接字绑定,无法将一个端口非陪给不同的套接字
- 端口号由16位构成,可分配范围:0~65535
- 0~1023 已经分配给特定软件/服务 使用
- TCP 和 UPD 套接字不会共用端口:可以把同一个端口分配给一个TCP socket 和 一个 UPD socket
| 端口号 | 协议 | 服务 | 全称 | 服务描述 |
|---|---|---|---|---|
| 20/21 | TCP | FTP | File Transfer Protocol | 文件传输协议(数据/控制连接) |
| 22 | TCP | SSH | Secure Shell | 安全外壳协议,加密远程管理 |
| 23 | TCP | Telnet | Telnet Protocol | 远程终端协议 |
| 25 | TCP | SMTP | Simple Mail Transfer Protocol | 简单邮件传输协议 |
| 53 | TCP/UDP | DNS | Domain Name System | 域名解析系统 |
| 80 | TCP | HTTP | Hypertext Transfer Protocol | 超文本传输协议 |
| 443 | TCP | HTTPS | Hypertext Transfer Protocol Secure | 安全超文本传输协议 |