OSI与TCP/IP:网络协议栈深度解析

OSI模型与TCP/IP协议栈对比

OSI七层模型

  • 应用层:提供网络服务接口(HTTP、FTP、DNS等)。
  • 表示层:数据格式转换、加密/解密。
  • 会话层:建立、管理、终止会话。
  • 传输层:端到端通信(TCP/UDP)。
  • 网络层:路由选择与IP寻址。
  • 数据链路层:物理地址寻址(MAC)、帧封装。
  • 物理层:比特流传输(电缆、光纤等)。

TCP/IP四层模型

  • 应用层:合并OSI的应用层、表示层、会话层(HTTP、DNS等)。
  • 传输层:TCP(可靠)、UDP(高效)。
  • 网络层:IP协议、ICMP(Ping)、路由协议(OSPF)。
  • 接口层:合并OSI的数据链路层与物理层(ARP、网卡驱动)。

关键协议与功能

  • DNS:域名解析(网址→IP)。
  • DHCP:动态分配IP地址。
  • ARP/RARP:IP与MAC地址转换。
  • ICMP :网络诊断(如ping)。

IP地址与网络配置

  • IPv4结构 :网络位 + 主机位(如192.168.1.10/24)。
  • 配置方法 :
    • 永久配置:修改/etc/network/interfaces后重启网络服务。
    • 临时配置:ifconfig ens33 192.168.0.13/24 up(重启失效)。
  • 测试命令 :ping www.baidu.com、netstat -anp(查看网络连接)。

UDP协议特性

  • 特点:无连接、低延迟、可能丢包(无阻塞控制)。
  • 数据报边界:需匹配发送/接收次数,避免读阻塞。

Socket编程基础

核心函数

  • socket():创建套接字(参数:AF_INET、SOCK_DGRAM)。
  • bind():绑定IP/端口(服务端必需)。
  • sendto()/recvfrom():UDP数据收发(需指定目标地址)。

地址结构

c 复制代码
struct sockaddr_in {
    short sin_family;    // AF_INET
    unsigned short sin_port; // 端口(网络字节序)
    struct in_addr sin_addr; // IP地址
};

字节序

  • 网络字节序:大端(统一标准)。
  • 主机字节序:小端(x86/ARM默认)。

示例代码片段

UDP服务端伪代码

c 复制代码
int sock = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = INADDR_ANY;
bind(sock, (struct sockaddr*)&addr, sizeof(addr));
recvfrom(sock, buffer, sizeof(buffer), 0, NULL, NULL);

UDP客户端伪代码

c 复制代码
sendto(sock, data, strlen(data), 0, 
       (struct sockaddr*)&server_addr, sizeof(server_addr));

注意事项

  • 端口范围:1-65535(0-1024为系统保留)。
  • 错误处理 :检查所有系统调用的返回值(如socket返回-1时需处理)。
  • 数据丢失:UDP需应用层实现重传或确认机制。
相关推荐
Apipi*3 小时前
30天速通Linux 第五章Linux 进程管理
linux·运维·服务器
杨云龙UP3 小时前
PostgreSQL 四种常见部署模式快速理解:单实例、流复制、repmgr、Patroni
linux·运维·数据库·postgresql·流复制·高可用ha
流浪0013 小时前
Linux系统篇46——线程(十一) 生产者消费者模型,三种关系和一个交易场所
linux·线程·并发·同步·互斥·阻塞队列·生产者消费者模型
Jason_zhao_MR4 小时前
新一代电能数据采集终端方案
linux·人工智能·嵌入式硬件·fpga开发·嵌入式
qetfw4 小时前
Debian SSH 安全配置:端口、来源限制与免密登录
linux·安全·debian·ssh
东鹏特饮4 小时前
15个实用Linux运维脚本
linux·运维·shell·脚本·redhat·常用生产脚本
远牧4 小时前
Ubuntu 26 升级踩坑实录:hermes-agent venv 重建全过程
linux·ubuntu·ai·agent
新时代牛马4 小时前
Linux PREEMPT_RT 详解(5.10.268-rt164)
linux·运维·服务器
眼不痛请看我4 小时前
Ubuntu_22.04_LTS虚拟机安装指南
linux·数据库·ubuntu
哎呦,帅小伙哦4 小时前
查看网卡配置连接工具组合——nmcli + nmtui
linux