Linux网络基础详解
1. 局域网(LAN)与广域网(WAN)
局域网(Local Area Network):
范围:覆盖较小区域(如家庭、办公室、校园)。
技术:以太网(Ethernet)、Wi-Fi(IEEE 802.11)。
特点:高速、低延迟、设备间直接通信,常用私有IP地址(如192.168.x.x)。
设备:交换机(数据链路层,基于MAC地址转发帧)。
广域网(Wide Area Network):
范围:跨越城市、国家或全球(如互联网)。
技术:光纤、卫星、租用线路;协议如PPP、MPLS、SD-WAN。
特点:依赖ISP,延迟较高,使用公网IP或NAT技术。
设备:路由器(网络层,基于IP地址路由数据包)。
2. 网络协议
TCP/IP协议族(实际应用最广):
四层模型:
网络接口层:物理传输(如以太网、Wi-Fi)。
网络层:IP协议(寻址和路由)、ICMP(错误检测)。
传输层:TCP(可靠传输,三次握手)、UDP(无连接,高效)。
应用层:HTTP、FTP、DNS、SSH等。
关键协议:
IP:无连接,负责将数据包发送到目标IP。
TCP:面向连接,通过确认机制和重传保证可靠性。
UDP:适用于实时应用(如视频流、DNS查询)。
OSI七层模型(理论参考):
物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层。
3. 网络传输基本流程
以访问网页为例:
DNS解析:浏览器查询DNS服务器,将域名转换为IP地址。
建立TCP连接:客户端与服务器通过三次握手建立连接。
发送HTTP请求:应用层生成HTTP请求,经传输层(TCP)分段、网络层(IP)封装、链路层成帧。
数据路由:路由器根据IP地址选择路径,跨越多个网络。
服务器处理:服务器解包数据,处理请求并生成响应。
响应返回:数据反向传输,客户端接收并渲染页面。
断开连接:四次挥手释放TCP连接。
数据封装与解封装:
应用数据 → 添加TCP/UDP头 → 添加IP头 → 添加帧头/尾 → 物理传输 → 反向解析。
4. 端口号(Port)
作用:标识主机上的应用进程,范围0-65535。
分类:
知名端口(0-1023):如HTTP(80)、HTTPS(443)、SSH(22)。
注册端口(1024-49151):分配给用户应用(如MySQL默认3306)。
动态端口(49152-65535):临时分配给客户端进程。
TCP与UDP端口独立:同一端口号可分别用于TCP和UDP(如DNS 53端口)。
5. 网络字节序
问题背景:不同CPU架构的字节序可能不同(大端序/小端序)。
解决方案:网络传输统一使用大端序(Big-Endian)。
转换函数:
htons():主机序 → 网络序(16位)。
htonl():主机序 → 网络序(32位)。
ntohs()/ntohl():网络序 → 主机序。
应用场景:所有跨网络传输的二进制数据(如IP地址、端口号、自定义协议字段)。
6. 关键概念联系
NAT(网络地址转换):将私有IP转换为公网IP,解决IPv4短缺问题。
Socket编程:结合IP地址和端口号实现进程间通信。
示例代码片段(字节序转换):
uint16_t host_port = 12345;
uint16_t net_port = htons(host_port); // 转换为网络字节序
7. 常见问题
为何需要三次握手? 确保双方收发能力正常,防止失效请求建立连接。
UDP比TCP快的原因? 无连接、无拥塞控制、不保证可靠性。
如何选择端口号? 服务端使用知名端口,客户端使用动态端口。
通过理解这些基础概念,能够更深入地学习Linux网络编程、网络故障排查及优化策略。


















暂无评论内容