Java EE初阶——网络初识
1. 网络初始
网络互联::将多台计算机连接在⼀起,完成数据共享。
1. 局域网LAN




2. ⼴域⽹WAN
交换机 (Switch)
- 工作层次:数据链路层 (OSI 模型第 2 层)
- 主要功能:根据 MAC 地址转发数据帧
- 适用场景:连接局域网内的设备,如计算机、服务器、打印机等
- 转发方式:通过 MAC 地址表实现端口到端口的转发
- 隔离范围:仅隔离冲突域,所有设备仍在同一广播域内
路由器 (Router)
- 工作层次:网络层 (OSI 模型第 3 层)
- 主要功能:根据 IP 地址转发数据包,连接不同网络
- 适用场景:连接不同网络,如局域网与广域网的连接
- 转发方式:通过路由表决定数据包的下一跳
- 隔离范围:同时隔离冲突域和广播域,分割网络为不同子网
3. IP 地址
1. 作用
- 标识网络中的设备位置
- 作为数据传输的源地址和目标地址
- 帮助路由器确定数据传输路径
2. 格式
- IPv4:32 位二进制数,通常表示为点分十进制(如
192.168.1.1
)都是0~255之间的⼗进制整数。 - IPv6:128 位二进制数,通常表示为冒分十六进制(如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
)
3. 分类
- 公有地址:全球唯一,可直接访问互联网
- 私有地址:用于局域网内部,不可直接访问互联网
- 特殊地址:保留用于特定用途(如回环地址、广播地址)
4. 如何查看自己的 IP 地址?
-
Windows:
cmd
→ 输入ipconfig
-
Mac/Linux:终端输入
ifconfig
或ip a
-
公网 IP:访问 ipinfo.io 或搜索 "What is my IP"
4. 端口号
端口号(Port Number)是计算机网络中用于区分同一设备上不同应用程序或服务的标识符。它与 IP 地址一起构成网络通信的基础寻址机制,确保数据能够准确到达目标应用程序。
1. 作用
- 标识主机上的特定应用程序或服务
- 作为传输层协议(TCP/UDP)的寻址机制
- 使多个应用程序能够共享同一 IP 地址进行通信
2. 结构
- 16 位无符号整数(0-65535)
- 分为源端口和目标端口
- 源端口:随机分配(通常 > 1023)
- 目标端口:指定接收方服务的端口号
3. 端口号分类
- 系统端口(0-1023):
- 由 IANA(互联网号码分配机构)分配
- 用于知名服务(如 HTTP:80, HTTPS:443, SSH:22)
- 注册端口(1024-49151):
- 需向 IANA 注册
- 用于特定应用程序(如 MySQL:3306, PostgreSQL:5432)
- 动态 / 私有端口(49152-65535):
- 无需注册
- 用于临时连接(如客户端随机端口)
2. 协议
协议(Protocol)是计算机网络中设备之间通信的规则和标准,它规定了数据如何封装、传输、路由和接收,确保不同厂商的设备能够互相理解。协议定义了通信的格式、时序、错误处理等机制,是网络通信的基础。
1. 作用
- 定义通信双方的 "语言" 和 "语法"
- 确保数据在传输过程中的完整性和可靠性
- 提供错误检测和纠正机制
- 协调通信双方的操作时序
2. 协议栈
- 一组相互关联的协议集合
- 通常按层次结构组织
- 上层协议会调用下层协议的功能
- 下层协议为上层协议提供服务
1. 协议分层
1. OSI七层模型(基本不使用)
2. TCP/IP五层(或四层(不包括物理层))模型
分层 | 协议示例 | 作用 |
---|---|---|
应用层 | HTTP、HTTPS、FTP、DNS、SMTP | 用户直接使用的服务(如网页、邮件) |
传输层 | TCP、UDP | 端到端可靠/高效传输 |
网络层 | IP(IPv4/IPv6)、ICMP、ARP | 寻址和路由(数据包如何到达目标) |
数据链路层 | Ethernet、Wi-Fi(802.11)、PPP | 物理设备间的数据帧传输 |
物理层 | 光纤、电缆、无线电波 | 实际比特流的传输 |
两台计算机通过TCP/IP协议通讯过程:
3. 封装和分⽤

交换机工作在数据链路层:光电信号经过物理层解析为以太网数据帧,数据链路层对以太网数据帧进行解析取出载荷再加上新的帧头帧尾发送。
路由器工作在网络层:光电信号经过物理层解析为以太网数据帧,数据链路层将以太网数据帧去掉帧头帧尾取出载荷得到IP数据报,网络层将IP数据报去掉IP首部,取出载荷,再加上新的IP首部得到新的IP数据报,数据链路层加上新的帧头帧尾得到新以太网数据帧发送。
4.TCP vs UDP
特性 | TCP(传输控制协议) | UDP(用户数据报协议) |
---|---|---|
连接方式 | 面向连接(三次握手) | 无连接(直接发送) |
可靠性 | 可靠(丢包重传、顺序保证) | 不可靠(可能丢包、乱序) |
传输单位 | 字节流 | 数据报 |
缓冲区 | 有接收缓冲区,也有发送缓冲区 | 有接收缓冲区,⽆发送缓冲区 |
通信 | 全双工(信道可双向通信) | 全双工 |
速度 | 较慢(开销大) | 极快(开销小) |
适用场景 | 网页(HTTP)、邮件(SMTP) | 视频流(RTP)、游戏(UDP)、DNS |
1. 有连接
通信双方在数据传输前需先建立一条逻辑连接通道,传输过程中维护连接状态,传输完成后释放连接。
核心特点:先建连 → 再传输 → 后断连。
建立连接(三次握手)
- 客户端发送同步报文(SYN)请求连接。
- 服务器确认请求(SYN+ACK)。
- 客户端再次确认(ACK),连接建立完成
数据传输
- 双方通过已建立的连接按顺序传输数据,确保可靠性(如丢包重传、流量控制)。
断开连接(四次挥手)
- 一方发起断开请求(FIN),另一方确认并释放资源,最终双向关闭连接
2. 无连接
通信双方无需提前建立连接,直接发送独立的数据包,每个数据包携带完整的目标地址,无连接状态维护。
核心特点:直接发 → 不维护连接 → 无顺序保证。
典型流程(以 UDP 为例)
- 发送方直接将数据包(数据报)封装目标地址后发送,接收方收到后无需确认。
- 每个数据包独立路由,可能乱序或丢失。
3. 可靠传输
数据从发送方到接收方的过程中,确保所有数据准确、有序到达,且不重复、不丢失。即使网络出现拥塞或丢包,协议也能通过内置机制自动修复问题。
(1)确认应答(ACK)
-
接收方每收到一个数据包,必须返回 ACK 确认。
(2)超时重传
-
发送方启动定时器,若未收到 ACK 则重传数据。
-
自适应重传时间:根据网络延迟动态调整超时阈值(RTO)。
(3)序列号与排序
-
每个字节分配唯一 序列号(Seq),接收方按序重组数据。
-
解决乱序问题:即使数据包乱序到达,最终按 Seq 排序交付。
(4)流量控制(滑动窗口)
-
接收方通过 窗口大小(Window) 告知发送方可接收的数据量。
-
防止接收方过载:动态调整发送速率。
(5)拥塞控制
-
通过算法(如慢启动、拥塞避免)探测网络容量,避免拥塞崩溃。
-
核心指标:拥塞窗口(cwnd)、阈值(ssthresh)。
4. 不可靠传输
数据传输过程中不保证数据一定到达、不保证顺序、不处理重复,仅尽最大努力交付(Best-Effort Delivery)。丢包、乱序等问题需由应用层自行处理。
-
无确认机制
- 发送方发送数据报后,不等待接收方确认,直接继续发送后续数据。
-
无重传机制
- 若数据报丢失,协议层不自动重传,需应用层(如游戏客户端)检测并处理。
-
无流量 / 拥塞控制
- 发送方以固定速率发送数据,不感知网络状态,可能导致拥塞或丢包