Linux网络:基于OS网络基础架构


前言

在开发软件方面,学习计算机网络能让你理解和实现不同设备、不同程序之间的数据通信,这意味着你不再局限于写单机应用,而是可以开发 联网软件(如聊天工具、网络游戏、Web服务、云应用等),并能掌握常见的 协议TCP/UDP/HTTP 与 客户端-服务器架构,从而具备构建真正互联网应用的能力。

一,局域网与广域网

局域网 LAN

定义:局域网是覆盖范围较小的计算机网络,通常限制在一个家庭、办公室、一栋楼、一个学校或工厂车间内。

特点:覆盖范围小(几十米 ~ 几公里),传输速度高(常见 100Mbps、1Gbps、10Gbps),成本低,可以由个人或企业自己建设(家里的 Wi-Fi 就是最典型的 LAN),网络拓扑常见:星型(交换机为中心)、总线型、环型,技术常见:以太网(Ethernet)、Wi-Fi


广域网 WAN
定义:广域网是覆盖范围极大的网络,跨越城市、省份、国家甚至全球。WAN 通常由电信运营商来建设和管理,用于连接多个局域网。

特点:覆盖范围大(几十公里 ~ 几千公里甚至全球),传输速度相对较低(受限于距离和设备,常见 Mbps 到 Gbps),建设和维护成本高,需要大量设备(光纤、卫星链路、路由器),使用复杂的传输技术:MPLS、专线、4G/5G、卫星通信等,典型代表:互联网(Internet)就是最大的 WAN


LAN 与 WAN 的关系

  • LAN 是“局部小网络”,WAN 是“连接这些局部网络的大网络”。

  • LAN 就像一个个 小院子,设备之间能快速沟通;WAN 就像 公路和高速,把这些小院子串联起来。

  • 你家里的 LAN(Wi-Fi) → 通过电信运营商的 WAN → 连接到全球互联网(其他人的 LAN)。

  • 互联网(Internet) 就是由 无数 LAN + WAN 互相连接组成的超级大网。


举个例子

  • 在家里,手机和电脑通过 Wi-Fi 互相传文件,这是 LAN

  • 你用电脑打开 B 站、访问谷歌,这是通过家里的 LAN 连接到 电信运营商的 WAN,再经过互联网到达远方服务器所在的 LAN

  • 整个过程:你的设备 (LAN) → 家用路由器 → 电信运营商 WAN → 互联网(WAN) → 目标服务器所在 LAN → 服务器


二,OSI模型

OSI 模型(Open Systems Interconnection,开放系统互连模型)是 国际标准化组织(ISO) 在 1984 年提出的一个网络通信参考模型。它把计算机网络通信划分为 七层:

名称作用
应用层直接面向用户应用(HTTP、FTP、SMTP、DNS 等)
表示层处理数据表示(加密/解密、压缩/解压缩、数据格式转换)
会话层管理通信会话(建立、保持、终止会话)
传输层负责端到端通信可靠性(TCP、UDP)
网络层负责寻址和路由(IP 协议)
数据链路层负责点到点传输(MAC 地址、以太网帧)
物理层负责比特传输(电信号、光信号)

其实在网络角度,OSI定的协议7层模型其实非常完善,但是在实际操作的过程中,会话层、表示层
是不可能接入到操作系统中的,所以在工程实践中,最终落地的是5层协议

在这里插入图片描述


2-1 OSI模型和操作系统有什么关系

  • OSI 模型是 网络通信的理论框架,把复杂的网络通信过程拆成 7 层:物理层数据链路层网络层传输层会话层表示层应用层
    它就像“快递公司流程图”:取件、分拣、运输、派送,每一步都有明确分工

  • 操作系统是一个 管理计算机资源的软件,它管:CPU内存硬盘显卡网卡网络通信
    它就像“快递公司本身”,有员工、有流程,真正帮你把货送到

两者的关系你可以这样理解:

  • OSI 模型是理论蓝图 —— 规定了“快递”要分几步走。

  • 操作系统是实际实现者 —— 它按照这个蓝图,在计算机里完成网络通信。

在实际操作系统里:

  • 物理层、数据链路层:由网卡硬件 + 驱动实现(驱动在操作系统里)。

  • 网络层(IP)、传输层(TCP/UDP):由操作系统的 协议栈 实现。

  • 会话层、表示层、应用层:多数由应用程序或库来实现,比如浏览器、加密库。

也就是说:操作系统主要负责底层(传输层以下),应用程序负责上层(会话层以上)


三,协议

3-1 TCP/IP协议

它规定了 数据在网络中如何发送、传输和接收,是互联网的核心协议,简单理解:TCP/IP 就是计算机之间“互相说话的语言”。

TCP/IP 协议就是计算机在网络上通信的一套 规则。
TCP(传输控制协议):保证数据可靠传输,不丢、不乱序。
IP(网际协议):负责把数据送到正确的电脑地址。


3-2 协议和结构体

可以把协议想象成 双方都认识的结构体:每一条字段(field)对应协议里的一个数据元素(比如消息类型、长度、内容)。发送方填充结构体,把它的二进制内容发出去。接收方用同样的结构体解析收到的数据

假设我们设计一个简单的消息协议:

// 定义协议结构体
struct Message {
    uint8_t type;      // 消息类型
    uint16_t length;   // 消息长度
    char content[100]; // 消息内容
};

发送方填好这个结构体,然后发到网络上,接收方用同样的结构体解析,就能正确理解数据
协议 = 数据结构(struct)规则:

  • 发送方 = 填结构体
  • 接收方 = 按结构体解析
  • 只要双方都遵循同一个“结构体定义”,通信就不会出错。

协议就像双方都认得的结构体,规定了数据的字段和顺序,让发送和接收双方能正确理解信息。


3-3 MAC地址

MAC 地址是 网络设备的唯一硬件标识。每个网卡(网卡可以是电脑的、有线网卡、Wi-Fi 模块)都有一个全球唯一的 MAC 地址。格式一般是 6 个字节(48 位),用十六进制表示,如:

00:1A:2B:3C:4D:5E

MAC 地址的作用:

唯一标识网络设备:就像身份证号,每台设备在局域网里都有唯一标识。

局域网通信:局域网(LAN)里,交换机用 MAC 地址决定把数据包送给哪台设备。

不依赖 IPMAC 地址在硬件层(链路层)工作,不管设备的 IP 地址如何变化,它本身不变


四,网络相关命令

4-1 ifconfig

ifconfigLinux 系统中 查看和配置网络接口 的命令。

演示代码:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.31.1.107  netmask 255.255.240.0  broadcast 172.31.15.255
        inet6 fe80::f816:3eff:fe1d:ff69  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:1d:ff:69  txqueuelen 1000  (Ethernet)
        RX packets 2871073  bytes 1143072304 (1.1 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3100639  bytes 1711873451 (1.7 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 848593  bytes 128534029 (128.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 848593  bytes 128534029 (128.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0 概览

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  • eth0 → 网络接口名(通常是第一块以太网网卡)

  • flags → 接口状态标志:

    • UP → 接口已启用

    • BROADCAST → 支持广播

    • RUNNING → 驱动已加载,接口正在工作

    • MULTICAST → 支持多播

  • mtu 1500 → 最大传输单元,每个数据包最大 1500 字节


IP 地址相关

inet 172.31.1.107  netmask 255.255.240.0  broadcast 172.31.15.255
  • inet 172.31.1.107 → IPv4 地址

  • netmask 255.255.240.0 → 子网掩码,用于划分网络和主机

  • broadcast 172.31.15.255 → 广播地址,用于向网络中所有设备发送信息

inet6 fe80::f816:3eff:fe1d:ff69  prefixlen 64  scopeid 0x20<link>
  • inet6 → IPv6 地址(链路本地地址)

  • prefixlen 64 → 子网前缀长度

  • scopeid 0x20<link> → 链路本地作用域,仅本地网络有效


MAC 地址

ether fa:16:3e:1d:ff:69  txqueuelen 1000  (Ethernet)
  • ether → MAC 地址(网卡唯一硬件标识)

  • txqueuelen 1000 → 发送队列长度,表示缓冲区可存储 1000 个待发送数据包


网络流量统计

RX packets 2871073  bytes 1143072304 (1.1 GB)
RX errors 0  dropped 0  overruns 0  frame 0

  • RX → 接收(Receive)统计

    • packets 2871073 → 接收的数据包数量

    • bytes 1143072304 (1.1 GB) → 接收的总字节数

    • errors/dropped/overruns/frame → 接收错误、丢包、缓冲溢出、帧错误数量

TX packets 3100639  bytes 1711873451 (1.7 GB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  • TX → 发送(Transmit)统计

    • packets 3100639 → 发送的数据包数量

    • bytes 1711873451 (1.7 GB) → 发送的总字节数

    • errors/dropped/overruns/carrier/collisions → 发送错误、丢包、缓冲溢出、物理故障、碰撞统计


4-2 ping

ping 命令作用:ping 用来 测试你的计算机能否到达目标主机,同时测量 网络延迟(响应时间)。它通过 ICMP 协议发送“回显请求”,目标主机收到后返回“回显应答”。

演示代码:

root@hcss-ecs-f59a:~# ping www.bilibili.com
PING a.w.bilicdn1.com (221.204.56.94) 56(84) bytes of data.
64 bytes from 94.56.204.221.adsl-pool.sx.cn (221.204.56.94): icmp_seq=1 ttl=49 time=13.7 ms
.......

输出解析

PING a.w.bilicdn1.com (221.204.56.94) 56(84) bytes of data.
  • a.w.bilicdn1.com → ping 命令解析出来的目标域名的 实际服务器名

  • 221.204.56.94 → 目标服务器的 IP 地址

  • 56(84) bytes of data → 发送的数据包大小

    • 56 字节 → ICMP 数据部分

    • 84 字节 → ICMP 报头 + IP 头 + 数据总长度


64 bytes from 94.56.204.221.adsl-pool.sx.cn (221.204.56.94): icmp_seq=1 ttl=49 time=13.7 ms
  • 64 bytes → 收到的数据包大小(通常比发送少 20 字节 IP 头,因此显示 64)

  • from 94.56.204.221.adsl-pool.sx.cn (221.204.56.94) → 源地址

    • 显示域名 + IP
  • icmp_seq=1 → ICMP 序列号,第 1 个回显请求

  • ttl=49 → Time To Live(生存时间)

    • 数据包在网络中最多经过多少路由器

    • 每经过一个路由器减 1

  • time=13.7 ms → 往返延迟时间(RTT, Round-Trip Time),即你发送包到收到回应的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值