linux——网络基础

张开发
2026/4/11 1:04:14 15 分钟阅读

分享文章

linux——网络基础
一、互联网是怎么来的历史背景1. 互联网的诞生冷战的产物1957 年苏联发射卫星美国为了打造「不被核打击摧毁的通信网络」成立了DARPA国防部高级研究计划署。1968 年 DARPA 搭建了ARPANet阿帕网这是互联网的最早雏形核心目标是「让多台电脑互联、资源共享」。早期 ARPANet 用的是NCP网络控制协议但它只能连同类型电脑没有纠错能力无法大规模推广。2. TCP/IP 协议互联网的「通用语言」1973 年Robert Kahn 和 Vinton Cerf互联网之父为 ARPANet 开发了新协议1974 年发布第一版 TCP 协议但丢包时无法纠错后来把 TCP 拆成两个协议TCP传输控制协议负责数据传输的可靠性不丢、不错、不乱序IP互联网协议负责不同网络之间的互联从此TCP/IP 协议族诞生成为互联网的「通用语言」让全世界不同电脑、不同系统都能通信。二、核心逻辑网络为什么要「分层」体系结构1. 分层的本质分而治之就像寄快递你只需要写地址、打包应用层快递员负责揽件、运输传输层 / 网络层快递站负责分拣、配送数据链路层 / 物理层每一层只做自己的事不用管其他层怎么实现这就是分层思想。2. 两大经典模型对比表格模型层数特点现状OSI 七层模型应用层、表示层、会话层、传输层、网络层、数据链路层、物理层理论化、完整但实现复杂仅作为理论参考实际几乎不用TCP/IP 四层模型应用层、传输层、网络层、网络接口 / 物理层简洁、实用、可落地互联网的实际工业标准3. TCP/IP 四层模型表格层级核心作用代表协议通俗理解应用层直接给用户提供服务HTTP/HTTPS、FTP、DNS、SMTP你用的浏览器、微信、邮箱都在这一层传输层给应用层提供「端到端」的传输服务TCP、UDP决定数据是「可靠送达」还是「快速送达」网络层给数据选路由、找路径IP、ICMP、IGMP相当于快递的「地址系统」负责把数据送到目标网络网络接口 / 物理层把数据变成电信号 / 光信号在物理网络传输以太网、WiFi、4G/5G相当于快递的「运输工具」货车、飞机负责实际传输三、逐层拆解每一层到底在干嘛核心概念1. 网络接口 / 物理层数据的「物理载体」核心作用把二进制数据转换成电信号 / 光信号在网线、光纤、无线电中传输同时负责接收信号还原成数据。关键概念MAC 地址48 位全球唯一是网络设备的「物理身份证」比如网卡的硬件地址出厂就固定。ARP 协议地址解析协议通过 IP 地址找到对应的 MAC 地址相当于「查通讯录通过名字找手机号」。RARP 协议反向地址解析通过 MAC 地址找 IP 地址现在很少用。PPP 协议拨号协议用于 GPRS/3G/4G 等移动网络。2. 网络层数据的「导航系统」核心作用给数据分组数据包选择传输路径实现跨网络通信。关键概念IP 地址互联网中主机的「逻辑地址」IPv4 是 32 位如 192.168.1.1IPv6 是 128 位每个数据包都必须携带源 IP 和目标 IP路由器靠它选路由。ICMP 协议互联网控制管理协议我们常用的ping命令就属于 ICMP用来检测网络连通性。IGMP 协议互联网分组管理协议用于广播和组播比如视频会议、直播。3. 传输层数据的「快递服务」核心作用给应用层提供「端到端」的传输服务决定数据的传输质量。两大核心协议对比必背表格协议特点适用场景通俗理解TCP面向连接、可靠、一对一、有流量控制对传输质量要求高的场景如文件传输、网页访问、登录「顺丰快递」必须签收保证不丢、不错、不乱序UDP无连接、不可靠、不保证顺序、速度快对实时性要求高的场景如直播、语音通话、游戏「平邮快递」不保证送达速度快适合小数据、实时传输SCTPTCP 的增强版支持多主机、多链路通信用于电信等专业场景。4. 应用层用户直接接触的「服务层」核心作用直接给用户提供各种网络服务是用户能感知到的一层。常见协议HTTP/HTTPS网页访问协议HTTPS 是加密版更安全POP3/SMTP/IMAP邮件收发协议POP3 收、SMTP 发、IMAP 可只收部分邮件FTP文件传输协议上传 / 下载文件Telnet/SSH远程登录协议SSH 是加密版更安全NTP网络时钟协议同步网络时间SNMP简单网络管理协议管理网络设备RTP/RTSP音视频传输协议用于安防监控、直播四、数据传输全流程封包 拆包1. 数据传输的「封装封包」过程发送方就像寄快递每一层都会给数据「加个信封」应用层用户数据如 HTTP 请求加上应用层头部传输层加上 TCP/UDP 头部源端口、目标端口网络层加上 IP 头部源 IP、目标 IP数据链路层加上以太网头部源 MAC、目标 MAC和尾部校验物理层把封装好的帧转换成电信号发送到网络中。2. 数据传输的「解封装拆包」过程接收方就像收快递从外到内一层一层拆物理层把电信号还原成二进制数据数据链路层拆以太网头部校验数据交给网络层网络层拆 IP 头部根据目标 IP 交给对应主机传输层拆 TCP/UDP 头部根据目标端口交给对应应用应用层拆应用层头部把数据交给用户程序如浏览器。3. 数据包结构以太网头部 (14B)IP 头部 (20B)TCP 头部 (20B)应用层头部用户数据以太网尾部总长度在 46-1500 字节之间这就是以太网的「最大传输单元MTU」。五、网络编程核心Socket套接字1. 什么是 SocketSocket 是网络编程的接口相当于「网络通信的端点」是一个特殊的文件描述符支持read/write/close等操作。它不局限于 TCP/IP既支持面向连接的 TCP也支持无连接的 UDP。2. Socket 的三大类型表格类型对应协议特点适用场景流式套接字 (SOCK_STREAM)TCP面向连接、可靠、有序、无长度限制网页访问、文件传输、远程登录数据包套接字 (SOCK_DGRAM)UDP无连接、不可靠、无序、独立数据包直播、语音通话、游戏、DNS 查询原始套接字 (SOCK_RAW)自定义协议直接访问底层协议如 IP、ICMP网络抓包、自定义协议开发六、IP 地址、端口号、字节序1. IP 地址特殊 IP 地址局域网 IP192.xxx.xxx.xxx、10.xxx.xxx.xxx内网使用不直接连互联网广播 IPxxx.xxx.xxx.255、255.255.255.255全网广播容易引发网络风暴组播 IP224.xxx.xxx.xxx ~ 239.xxx.xxx.xxx用于组播通信IP 地址转换函数inet_aton()/inet_addr()把点分十进制 IP 转成 32 位二进制仅 IPv4不支持 255.255.255.255inet_ntoa()把二进制 IP 转成点分十进制inet_pton()/inet_ntop()支持 IPv4/IPv6能正确处理广播地址是现代推荐用法2. 端口号16 位数字范围 1-65535用来区分同一台主机上的不同进程相当于「快递的收件人」。端口分类预留端口1-1023如 FTP:21、SSH:22、HTTP:80、HTTPS:443保留端口1024-5000不建议手动使用可用端口5000-65535可自由分配给自定义程序网络通信的唯一标识IP地址 端口号缺一不可。3. 字节序大小端问题不同 CPU 存储多字节数据的顺序不同小端模式X86/ARM 架构PC、手机常用低位字节存低地址大端模式PowerPC / 部分 ARM路由器常用高位字节存低地址网络字节序统一采用大端模式避免不同主机通信时的字节序错误。字节序转换函数主机序→网络序htonl()32 位、htons()16 位网络序→主机序ntohl()32 位、ntohs()16 位七、学习逻辑链历史层ARPANet → TCP/IP 诞生 → 互联网通用语言分层层TCP/IP 四层模型 → 每一层的作用、协议传输层TCP/UDP 的区别 → 传输质量的选择数据层封包 / 拆包流程 → 数据从发送到接收的完整路径编程层Socket → 网络编程的接口细节层IP 地址、端口号、字节序 → 通信的基础要素

更多文章