资讯详情

资讯详情

网络参考模型详解:从OSI到TCP/IP,掌握数据封装与排障思路

2. 网络参考模型想搞懂华为数通方向的HCIA网络参考模型是绝对绕不开的第一道门槛。不管你以后是去调路由器、配交换机还是跟人家排查一个“网络不通”的问题最后都会回到这张图上数据到底是怎么从一台设备跑到另一台设备中间每一层都干了什么活出了问题该找哪一层。这篇文章就把这块内容掰开揉碎讲清楚适合刚接触数通、准备考HCIA或者工作中经常跟网络打交道但一直没系统梳理过基础的人。2.1 为什么非要有个“参考模型”先回答一个很多人心里嘀咕的问题网络通信已经这么复杂了为什么还要搞一套模型出来这不是给自己添麻烦吗想象一下你往外地寄一个包裹。你要做的其实是一连串动作先把东西装进箱子、封好胶带、写上收件人地址然后交给快递站点快递公司负责把箱子从A城运到B城到了之后有派件员按地址送到收件人手里收件人拆开箱子拿出里面的东西。整个过程里你不需要自己开车跑一趟快递公司也不知道箱子里面具体装的是什么东西。网络通信就是这个逻辑只不过这套“寄包裹”的流程被定义得极其严格。OSI参考模型把整个通信过程拆成七层每一层只干自己那一摊事层与层之间有清晰的接口。这样做最大的好处有三个一是各层独立演进比如底层的传输介质从铜缆换成光纤上层的应用和服务完全不受影响二是各厂商可以按层分工做设备只要遵守层间接口标准不同厂商的设备就能互相通信三是排查问题时有明确边界——“物理层通了但应用还是不行”那你就不用去怀疑光模块坏了先去看上层协议配置。不过在实际的数通领域真正被广泛采用的是TCP/IP模型。HCIA考试和日常配置里你打交道最多的也是TCP/IP模型。它比OSI更精简把七层合并成四层也有教材写成五层但核心思想一脉相承。后面讲的内容我主要基于TCP/IP模型展开同时会对比OSI的对应关系方便你在不同资料之间切换时不迷糊。2.2 四层模型的分工逻辑一句话各是什么TCP/IP模型从上到下是应用层、传输层、网络层、网络接口层也有人叫数据链路层物理层不同教材划分略有差异。为了不让你被各种叫法绕晕我这里先给出一张对应关系表后面详细展开。TCP/IP模型分层OSI模型对应分层核心职责典型协议/技术数据单位应用层应用层、表示层、会话层为用户提供网络应用服务HTTP、HTTPS、FTP、DNS、Telnet、SSH数据流Message传输层传输层端到端的连接管理与数据传输可靠性TCP、UDP段Segment/数据报Datagram网络层网络层逻辑寻址、路径选择与分组转发IP、ICMP、ARP不同教材归属不同包Packet网络接口层数据链路层、物理层物理传输介质访问、帧封装、差错检测Ethernet、PPP、HDLC帧Frame/比特Bit提示初学阶段不用死记每一层的数据单位名称但你看到“帧”“包”“段”这些词时要能条件反射地想到它们分别属于哪一层。这在你后面做抓包分析时会非常有用因为抓包工具里每一行数据都标注了对应层级。每一层说白了都是在干两件事对上一层提供“服务”同时对下一层使用“服务”。数据从你的电脑发出时是自顶向下逐层封装数据到达目标设备时是自底向上逐层解封装。这就是常说的“封装”和“解封装”过程是整个网络模型最核心的运转方式。2.3 应用层离用户最近但最容易背忽略的一层应用层是唯一直接面向用户的一层。你在浏览器里输入网址、用微信发消息、用客户端收邮件这些动作最终都是通过应用层协议把数据“翻译”成网络能理解的形式。应用层要干的事不仅是“传输数据”还包括数据格式的约定、会话的建立与维护、身份认证等等。比如HTTP协议它定义了客户端怎么发起请求、服务器怎么返回响应请求行、状态行、报文头、报文体这些格式全都标准化了。你打开一个网页实际上就是你的浏览器和服务器之间通过HTTP协议做了一次“对话”。在华为数通的HCIA考试里应用层的考点主要集中在两方面一是常见应用层协议的特点二是域名解析流程。DNS是常客它负责把人类容易记忆的域名转换成设备能识别的IP地址。很多人觉得DNS不就是在“查表”吗有什么好学的但实际上DNS用的是分层递归查询本地缓存、根域名服务器、顶级域名服务器、权威域名服务器之间的协作关系加上UDP端口53的报文封装方式这些都值得仔细看。考试不会直接问你“DNS的端口是多少”这种送分题而是把查询失败、缓存过期、DNS劫持这类场景混在一起考你排查思路。个人经验在HCIA学习阶段不要急着去背所有应用层协议。先把HTTP、DNS、FTP、Telnet、SSH这五个搞熟尤其要搞清楚HTTP与HTTPS的差异、Telnet与SSH的差异因为后面配置设备远程登录时天天和它们打交道。2.4 传输层可靠传输和端口号的大本营从应用层下来的数据到了传输层要干两件大事一是对数据进行分段Segmentation给每一段加上传输层头部二是负责端到端的可靠或不可靠传输。这里就引出了两个最重要的协议TCP和UDP。很多人会觉得TCP“可靠、面向连接”所以“更好”UDP“不可靠、无连接”所以“更差”。这种认知太粗糙了。可靠性是有代价的TCP的三次握手、确认重传、滑动窗口、拥塞控制每一样都在消耗带宽和时延。如果你的应用场景是视频直播、语音通话、在线游戏偶尔丢一两帧数据完全没关系但绝对不能等重传这时候UDP反而更合适。而HTTP、FTP、邮件这些要求数据完整性的应用才需要TCP托底。端口号也是传输层的重点。一台服务器上可能同时跑着Web服务、FTP服务、SSH服务传输层靠端口号来区分这些不同的应用进程。源端口、目的端口各占16位取值范围0~65535其中0~1023是知名端口比如HTTP是80、HTTPS是443、FTP是21、SSH是22、DNS是53。考试里会让你判断某个端口对应的协议或者反过来根据协议判断端口。这个没什么技巧就是熟。传输层的头部结构也值得细看。TCP头部里除了源端口、目的端口还有序号、确认号、标志位、窗口大小、校验和等字段。其中标志位里的SYN、ACK、FIN在三次握手和四次挥手过程中起着关键作用。UDP头部就简单多了源端口、目的端口、长度、校验和一共8个字节。注意在很多HCIA教材的练习题里容易混淆的是“TCP可靠传输靠什么保证”。答案不是单一的“重传机制”而是序号确认重传流量控制这整套协同机制。如果你只记住“重传”做题时一旦选项里同时出现“序号”“窗口”就容易犹豫说明你对可靠性的理解还停留在表面。2.5 网络层IP地址、路由和“找路”的艺术网络层是整个TCP/IP模型里最“数通”的一层。路由器的核心工作基本都在这一层完成维护路由表、根据目的IP地址做最长匹配、决定从哪个接口把数据包转发出去。HCIA的考试重点也集中在这里——IP地址规划、子网划分、路由协议基础。IP协议是网络层的核心。IPv4地址是32位二进制通常写成点分十进制比如192.168.1.1。这32位里网络位和主机位的边界由子网掩码决定。子网掩码的作用就是告诉你“哪些位属于网络位哪些位属于主机位”。比如255.255.255.0意味着前24位是网络位最后8位是主机位。为什么要做子网划分最直接的原因是节省IP地址。一个C类地址段默认有256个地址但如果你只需要20台主机直接用一个完整的C类段会造成大量浪费。这时候把主机位借几位出来当子网位就能把一个段切成多个小段按需分配。这里有一个HCIA里常考的点计算可用主机数。公式是“2的n次方减2”n是主机位数减掉的两个地址一个是网络地址主机位全0一个是广播地址主机位全1。很多初学者会纠结“是不是所有地址都不能用”其实不是是你不能把网络地址和广播地址分配给主机接口。可用地址永远是2^n - 2。另一个容易被忽视的点是ARP协议。很多人把ARP归到网络层但华为的教材有时候会把它放在网络接口层或者单独提出来。ARP的作用是从已知的IP地址解析出对应的MAC地址。数据要在一个广播域内从一个设备到另一个设备网络层只认识IP地址而数据链路层只认MAC地址ARP就是这两个世界之间的“翻译官”。实战补充在华为设备上敲命令的时候你经常会看到“display arp”这条命令。它查看的是设备的ARP缓存表。排查网络不通时如果发现网关的MAC地址解析不出来大概率是二层链路的问题如果解析出来了但还是不通再往三层和路由方向查。这个思路比一上来就看路由表高效得多。2.6 网络接口层帧封装、MAC地址与物理传输到了最底层数据变成了比特流在介质上传输。这一层在TCP/IP模型里被合并成“网络接口层”对应OSI的数据链路层和物理层。虽然简化成了一层但实际工作一点也不简单。数据链路层把网络层发下来的IP报文封装成帧Frame加上帧头帧尾。帧头里有目的MAC地址、源MAC地址、类型字段等帧尾有FCS校验。这里有一个考试常考的区分MAC地址是48位通常写成十六进制比如00-1C-42-5A-3F-87。MAC地址是烧录在网卡上的理论上全球唯一但通过软件也可以修改。数通设备上很多接口都支持MAC地址克隆、替换这在做网络实验时经常用到。以太网是这一层最常见的协议。传统以太网用CSMA/CD机制避免冲突不过现在交换机组网基本都是全双工模式CSMA/CD只有在半双工的古老场景里才会触发。你只需要理解以太网帧的结构即可前导码、目的MAC、源MAC、类型/长度、数据、FCS。到了物理层关注点变成接口类型、线缆类型、光模块、信号编码这些东西。华为设备上常见的物理接口有RJ45电口、光口SFP/QSFP、console口等。一个容易踩的坑很多人在排查“链路不通”时先查IP地址和路由折腾半天发现是网线没插紧、光模块型号不匹配这种物理层问题。所以遇到故障先看接口状态指示灯再在设备上看接口的up/down状态这些信息在华为设备上用“display interface”就能看。物理层通了才有资格谈上层。2.7 数据封装与解封装的完整旅程前面把每一层都拆开讲了现在把它们串起来走一遍完整的流程。这是理解网络参考模型最关键的一环也是HCIA考试里经常出现的综合题场景。假设你在电脑上打开浏览器访问一个网站的首页。数据从你按下回车键开始应用层浏览器构造一个HTTP请求报文包含请求行、请求头部、请求体。这份“数据”被当作应用层数据交给下一层。传输层TCP把HTTP数据分段加上TCP头部。TCP头部的关键字段包括源端口随机高位端口、目的端口80或443、序号、确认号、标志位。这时数据单位叫“段”。网络层IP协议在TCP段外层套上IP头部写上源IP你的电脑IP和目的IP目标网站服务器IP。这时数据单位叫“包”。网络接口层以太网协议在IP包外层套上帧头和帧尾填写源MAC你的网卡MAC和目的MAC下一跳设备的MAC很可能是网关的MAC。这时数据单位叫“帧”。物理层帧被转换成比特流通过网线、交换机的级联链路、运营商网络一站一站地转发。数据到达服务器后从下往上逐层解封装物理层收到比特流还原成帧链路层检查MAC地址和FCS校验网络层读取IP地址传输层根据端口号找到对应进程应用层把HTTP报文解析出来服务器程序做出响应。服务器响应时又会走一遍同样但方向相反的封装过程。理解这个流程有什么实际价值抓包分析的时候你看到的数据包每一层都有对应字段抓包工具有时会故意把IP头部、TCP头部、应用层数据分开高亮。如果脑子里没有“每一层加了什么头”这个过程你看抓包就是看天书。反过来一旦脑子里能自动“拆包”你看到任何一个数据包都能快速定位问题出在哪一层。华为设备上也有一条和这个模型强相关的常用命令——tracert。它利用的是ICMP报文中的TTL超时机制让路径上的每一台路由器都向你返回一个超时消息从而实现“逐跳追踪”。这条命令在跨设备排查路径问题时非常有用和封装解封装的过程配合起来可以非常直观地理解数据经过网络设备时的状态变化。2.8 华为设备视角常用命令与参考模型的对应关系学网络参考模型不能只停留在纸面上还得跟设备命令挂钩。这里谈谈华为数通设备上常见命令和模型各层的对应关系方便你在实验环境里边敲命令边加深理解。物理层和链路层相关命令display interface查看接口状态。输出里你会看到up/down状态、速率、双工模式、MAC地址、物理层和链路层信息。如果显示“down”先怀疑物理层问题。display mac-address查看MAC地址表。交换机是靠MAC地址表做二层转发的这张表记录着哪个MAC地址在哪个接口上。MAC地址表有问题二层通信就会出问题。display arp查看ARP表前面提过这是IP地址和MAC地址的映射关系表。网络层相关命令display ip interface brief查看接口的IP地址、状态。这是排查三层问题时最常用的开局命令。display ip routing-table查看路由表。路由器转发数据包靠的就是这张表。看路由表时重点关注路由的来源、目的网段、下一跳、出接口。ping最基础的三层连通性测试命令。华为设备上可以带源IP、带次数、带大小等参数。ping不通不一定是网络层问题但ping通了至少能说明三层可达。传输层相关命令display tcp status查看TCP连接状态。排查服务器端口问题时很有用能看到ESTABLISHED、LISTEN、TIME_WAIT这些状态。telnet / ssh远程登录命令本身就是应用层和传输层协作的产物。学习建议在模拟器里搭一个最简单的实验——两台路由器直连两端的环回口各配一个地址然后在两端ping对方。通了之后再分别查看路由表、ARP表、MAC地址表的变化。你会发现“封装解封装”不再是抽象概念而是能对应到设备上的一张张表。这是我认为最有效的入门训练方式。2.9 常见误区这些坑我踩过你不要再踩了学到这里很多人会觉得自己懂了但一做题还是错。说几个典型误区。第一个误区把MAC地址当作IP地址一样去“路由”。MAC地址只在同一个广播域内有意义路由器不会拿MAC地址去做跨网段转发。你Ping通一个跨网段地址中间经过的每一跳路由器都在网络层做转发决策ARP只负责解决“当前段里IP到MAC的映射”。所以不要用MAC地址去解释跨网段通信。第二个误区认为TCP比UDP“高级”。我之前强调过它们只是适用于不同场景。HCIA考试里经常有一道题是用表格列出若干应用让你选出哪些适合TCP哪些适合UDP。做错的人往往是因为死记硬背而不是真正理解“可靠性需求”和“实时性需求”之间的权衡。第三个误区把子网掩码算错边界。尤其遇到借位创建子网的题目很多人在计算时忘记“网络位向主机位借1位后子网数量是2的借位数次方但每个子网可用主机数要减2”。还有些人在算地址范围时忽略网络地址和广播地址。我的建议是做题时先画一张简单的二进制表不要把十进制换算当唯一解法一眼看出来二进制位变化会更稳定。第四个误区忽略TTL。IP头部里TTL字段的值每经过一台路由器就减1减到0时数据包被丢弃并返回一个ICMP超时消息。HCIA的基础题里关于TTL的考点不算多但这是理解tracert原理的前提。不要觉得TTL只是“防环”的工具它也是路径追踪的基础。第五个误区混淆“半双工”和“全双工”。物理层和链路层的内容在HCIA占分不高但偶尔会出概念题。全双工时设备可以同时收发数据不需要额外协调半双工时同一时刻只能一方发一方收需要碰撞检测机制来协调。理解这个区别再回头去看以太网CSMA/CD机制就会顺畅很多。2.10 实验验证用华为模拟器还原一套完整通信过程理论讲了这么多最后给一个可以直接照做的实验。你需要在模拟器里完成一个小拓扑自己动手观察封装、解封装、路由转发这些过程。拓扑结构很简单两台路由器加两台PC。路由器R1和R2用一条链路直连左边PC1接在R1上右边PC2接在R2上。IP地址规划如下设备接口IP地址掩码PC1以太网口192.168.1.10255.255.255.0R1GE0/0/0接PC1192.168.1.1255.255.255.0R1GE0/0/1接R210.0.12.1255.255.255.252R2GE0/0/0接R110.0.12.2255.255.255.252R2GE0/0/1接PC2192.168.2.1255.255.255.0PC2以太网口192.168.2.10255.255.255.0先把R1和R2的接口IP配上。在R1上输入三条命令[R1]interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 [R1-GigabitEthernet0/0/0]quit [R1]interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1]ip address 10.0.12.1 255.255.255.252R2同理配192.168.2.1和10.0.12.2。配完后在PC1上Ping PC2PC1 ping 192.168.2.10第一次Ping大概率会显示“Request time out”或者丢包。别慌这不是配置错误很可能是ARP还没建立。Ping工具会先通过ARP解析网关192.168.1.1的MAC地址然后发送ICMP请求报文。多Ping两次就能通。通了之后按顺序执行以下查看命令PC1 arp -a你会看到PC1的ARP表里有192.168.1.1对应的MAC地址这个MAC地址是R1左侧接口的MAC不是PC2的MAC。说明PC1只知道下一跳MAC它根本不需要知道PC2的MAC。再在R1上执行[R1]display arp [R1]display ip routing-table路由表里应该能看到192.168.2.0/24的路由下一跳是10.0.12.2出接口是GE0/0/1。同时R1的ARP表里应该有10.0.12.2对应的MAC这是R2右侧接口的MAC。最后在R2上执行[R2]display ip routing-table路由表里会有192.168.1.0/24的路由下一跳是10.0.12.1。做完这套实验你再回头看封装的完整过程PC1发数据时数据从应用层到网络层是完整的IP包到了链路层才封装成帧MAC地址在每一跳都会重新封装IP地址始终不变。这个观察结论就是你理解整个网络参考模型的最佳证据。如果还想继续深入可以在R1和R2之间开启链路层抓包看看帧的内容或者把R1到R2的接口改成子接口、加一条静态路由观察路由表的变化。整个HCIA阶段网络参考模型这块内容不需要背太多命令关键是建立“数据经过每一层时发生了什么”的画面感。这个画面感建立了后面学路由协议、学VLAN、学ACL都会轻松很多。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →