第一部分:IP地址
理解IP地址在网络通信中的核心作用
学习目标
掌握IPv4与IPv6的区别、IP地址分类及子网掩码的作用
IPv4地址
32位地址,通常表示为点分十进制格式
特点: 4个8位组,范围0-255
IPv6地址
128位地址,通常表示为冒号分隔的十六进制格式
特点: 解决IPv4地址耗尽问题
IP地址分类
- A类:1.0.0.0 - 126.255.255.255
- B类:128.0.0.0 - 191.255.255.255
- C类:192.0.0.0 - 223.255.255.255
- D类:224.0.0.0 - 239.255.255.255(组播)
- E类:240.0.0.0 - 255.255.255.255(保留)

IPv4地址结构:网络部分 + 主机部分
特殊IP地址
1. 127.0.0.1:本地回环地址
2. 192.168.x.x:私有地址
3. 169.254.x.x:自动配置地址
4. 0.0.0.0:默认路由
5. 255.255.255.255:广播地址
第二部分:端口
理解端口在网络通信中的作用
学习目标
掌握端口分类、常见端口号及端口扫描原理
端口号 | 协议 | 服务 | 描述 |
---|---|---|---|
21 | FTP | 文件传输 | 文件传输协议 |
22 | SSH | 安全Shell | 安全远程登录 |
80 | HTTP | Web服务 | 超文本传输协议 |
443 | HTTPS | 安全Web服务 | 安全HTTP |
3306 | MySQL | 数据库 | MySQL数据库服务 |
注意事项
1. 不要使用低于1024的端口,除非有管理员权限
2. 避免使用已知服务端口(如80、443)
3. 动态端口范围是49152-65535
4. 端口扫描可能违反安全策略
第三部分:网络协议
理解网络通信的核心协议
学习目标
掌握TCP/IP协议栈及各层协议功能
应用层
HTTP, FTP, SMTP, DNS
传输层
TCP, UDP
网络层
IP, ICMP, ARP
数据链路层
Ethernet, PPP
物理层
电缆, 光纤, 无线电
TCP/IP协议栈
- 应用层:提供应用程序接口
- 传输层:提供端到端通信
- 网络层:处理数据包路由
- 链路层:处理物理网络连接
OSI模型
- 应用层(7)
- 表示层(6)
- 会话层(5)
- 传输层(4)
- 网络层(3)
- 数据链路层(2)
- 物理层(1)
协议选择建议
1. 需要可靠传输:使用TCP
2. 需要快速传输:使用UDP
3. 文件传输:使用FTP或SFTP
4. Web服务:使用HTTP/HTTPS
5. 实时通信:使用WebSocket
第四部分:TCP与UDP
掌握两种核心传输层协议
学习目标
理解TCP与UDP的区别、适用场景及Java实现
TCP协议
传输控制协议(可靠连接)
- 面向连接
- 可靠传输
- 流量控制
- 拥塞控制
- 顺序传输
适用场景: Web浏览、文件传输、邮件
UDP协议
用户数据报协议(无连接)
- 无连接
- 不可靠传输
- 低延迟
- 无流量控制
- 无拥塞控制
适用场景: 视频流、在线游戏、DNS查询
特性 | TCP | UDP |
---|---|---|
连接类型 | 面向连接 | 无连接 |
可靠性 | 高 | 低 |
速度 | 较慢 | 较快 |
数据顺序 | 保证顺序 | 不保证顺序 |
头部大小 | 20-60字节 | 8字节 |
流量控制 | 有 | 无 |
选择建议
1. 需要可靠传输:选择TCP
2. 需要低延迟:选择UDP
3. 大数据量传输:选择TCP
4. 实时应用:选择UDP
5. 简单查询:选择UDP
第五部分:InetAddress类
掌握Java中处理IP地址的核心类
学习目标
理解InetAddress类的使用及常见方法
InetAddress基本使用
InetAddress核心方法
- getLocalHost():获取本地主机地址
- getByName():通过主机名获取地址
- getAllByName():获取主机所有地址
- getHostAddress():获取IP地址字符串
- getHostName():获取主机名
- isReachable():检查主机可达性
常见错误
- UnknownHostException:主机名无法解析
- SecurityException:安全管理器限制
- IOException:网络连接问题
- IPv4与IPv6兼容性问题
第六部分:常见错误与解决方案
避免网络编程中的常见问题
1. 主机名解析失败
UnknownHostException异常
解决方案:检查主机名拼写、DNS配置或使用IP地址
2. 端口已被占用
BindException异常
解决方案:选择其他端口或释放被占用的端口
3. 连接超时
ConnectException或SocketTimeoutException
解决方案:检查网络连接、防火墙设置或增加超时时间
4. 防火墙阻止
无法建立连接
解决方案:检查服务器防火墙设置,确保端口开放
5. IPv4/IPv6兼容问题
连接失败或性能下降
解决方案:明确指定协议栈偏好
6. 资源未关闭
资源泄漏导致性能下降
解决方案:使用try-with-resources确保资源关闭
第七部分:练习与测验
通过练习巩固网络基础知识
动手练习
- 实现一个简单的端口扫描器
- 编写程序获取本机所有网络接口信息
- 创建一个简单的TCP客户端/服务器
- 实现主机可达性检测工具
网络知识测验
学习资源推荐
1. 《Java网络编程》- Elliotte Rusty Harold
2. Oracle官方文档:java.net包
3. Wireshark网络协议分析工具
4. TCP/IP详解 卷1:协议