ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

计算机网络速记指南:分层模型、TCP/IP与高频考点一网打尽

计算机网络速记指南:分层模型、TCP/IP与高频考点一网打尽 不知道你有没有过这种经历一门《计算机网络》学完教材翻了几遍课也听了笔记也抄了可一到考试、面试或者实际排查网络问题的时候脑子里只剩下一堆零散的名词。TCP、UDP、IP、ARP、HTTP、DNS……每个都认识但串不起来更别说讲清楚它们之间怎么配合工作。后来我自己准备面试和带新人时把计算机网络重新梳理了一遍发现这门课其实特别适合速记。它不是靠死记硬背而是要抓住一条主线、几个高频考点把散落的知识点挂到一个框架上。这篇文章就是想把我在实际复习和排查问题中沉淀下来的这套计算机网络速记思路完整分享出来内容包括分层模型怎么记、高频协议怎么串、子网划分怎么算不懵、面试和考试常问的题目怎么答以及我自己踩过的一些坑。适合正在准备考试、考研复试、校招面试或者工作中需要快速捡起网络基础的朋友花一晚上通读一遍配合文末的速查表效果会很直观。1. 速记的前提先搭骨架再填肉1.1 别急着背协议先建立分层思维很多人学网络最大的问题就是上来就背协议名、端口号结果越背越乱。我一开始也是这样直到后来用分层模型把整个知识体系串起来才真正开窍。计算机网络的分层模型本质上就是把这个复杂系统切成几个只关心自己那层事的模块。你可以把它类比成一个快递物流系统上门取件的快递员只关心把你的包裹收走、贴个面单转运中心只关心包裹从哪个城市发到哪个城市干线运输只关心货车或飞机怎么走最后一公里配送只关心怎么把包裹送到你手上。每一层都不需要知道其他层怎么运作只要按约定把东西交给下一层就行。考试和面试中最常考的是OSI七层模型和TCP/IP四层模型。很多人纠结要不要背七层我的建议是七层要记但不用太较真因为实际工作中我们几乎天天打交道的只有 TCP/IP 模型。但这两种模型怎么对照着记是个高频考点。TCP/IP 四层模型可以简化成一句话记应用层想的是我要发什么内容传输层想的是我怎么把内容可靠地送给你网络层想的是我在茫茫网络中怎么找到你链路层想的是我在同一根网线或同一个局域网里怎么把数据递到你手上。用这个思维去记忆比硬背每一层叫什么要牢固得多。OSI七层只是在TCP/IP四层的基础上把应用层拆成了应用层、表示层、会话层把链路层拆成了数据链路层和物理层。本质上没有多出什么高科技只是拆得更细。1.2 用一次HTTP请求串起全部协议有了分层框架之后下一步就是往里面挂协议。这一步我建议不要一个个孤立地记而是用你在浏览器里输入一个网址按回车到页面显示出来这个过程把主要协议串成一个完整的故事。这个故事大概是这样的你在浏览器输入www.example.com浏览器先问 DNS这个域名对应的IP是多少应用层 DNS默认端口53DNS返回IP地址比如93.184.216.34。浏览器用这个IP向服务器发起连接先走 TCP 三次握手传输层 TCP建立可靠连接。连接建立后浏览器发送 HTTP 请求报文请求首页内容应用层 HTTP默认端口80。服务器返回 HTTP 响应报文浏览器解析渲染页面展示出来。但这里有一个很关键的问题上面这几步只描述了逻辑上发生了什么。实际上数据从你的电脑发出去经过网卡、路由器、光猫到达服务器中间还涉及到网络层的 IP 寻址和路由选择链路层的 MAC 地址寻址、ARP、以太网帧封装物理层的光电信号转换。数据每往下走一层就加一个头部这个操作叫做封装到了对端再从下往上每层剥掉头部叫做解封装。把这个流程在脑子里过一遍再回头去看协议你就会发现HTTP 是为了解决浏览器和服务器之间怎么约定内容格式的问题TCP 是为了解决数据丢了、乱了、重复了怎么办的问题IP 是为了解决数据要从哪台机器送到哪台机器的问题ARP 是为了解决同一个局域网内只知道IP地址怎么找到对应网卡的MAC地址的问题。每个协议都是在解决一个具体问题这样记起来就不费劲了。2. 应用层速记记住端口号就记住了一半2.1 高频协议与端口的联想记忆法应用层是离我们最近的一层协议多、端口号多很容易搞混。我的经验是不需要背所有协议只背高频的然后用端口号联想的方式记忆。先看一张高频协议和端口对照表协议端口作用记忆锚点HTTP80网页传输明文80长得像发网页发给所有人看HTTPS443网页安全传输加密443中有一个4像一把小锁的侧面DNS53域名解析成IP记忆可以调皮一点5388像扒扒出域名背后的真实身份IPDHCP67/68自动分配IP地址67/68一个是服务器一个是客户端像一个发号施令一个乖乖领号FTP20/21文件传输20传输数据、21传输控制先聊好规则再动手传SSH22远程安全登录22像两只手握在一起安全的加密连接Telnet23远程登录明文23和22差一点安全性差很多SMTP25发送邮件25让人想起我2和5组成我的谐音我发出去POP3110接收邮件110像报警电话把邮件拉回来IMAP143接收邮件同步记住POP3是下载到本地IMAP是服务器同步IMAP更现代这个方法的核心逻辑是记忆端口号时不要孤立地记25是SMTP而是要给这个端口编一个故事或者锚点哪怕这个锚点很无厘头只要你能记住就算赢。我备考的时候最喜欢用的就是这种带点画面感的记忆方式比单纯重复背诵效率高得多。2.2 HTTP与HTTPS的核心要点速记HTTP是面试和考试的重灾区几乎必考。这里不需要把RFC背下来但几个核心要点必须清清楚楚。HTTP请求报文的结构可以记成三件套请求行 请求头 请求体请求行里包含方法、URL、版本号。高频方法就5个可以按语义分组记查GET请求资源只读不改。建POST创建资源提交数据。改PUT整体更新资源PUT好的资源放上去。删DELETE删除资源。附加PATCH局部更新。这个如果觉得多可以先放一放但面试偶尔会问。关于GET和POST的区别网上说法很多我直接给你一个经过验证的、比较全面的回答框架GET和POST本质都是TCP连接没有谁比谁更安全。区别主要在语义GET是幂等的发多少次结果都一样适合查询POST不是幂等的每次可能产生新资源适合提交数据。具体表现上GET参数放在URL后面有长度限制POST参数放在请求体里没有长度限制实际取决于服务器配置。另外GET可以被缓存、被收藏、被分享POST不行。这个回答框架是面试中非常实用的几乎每次讲HTTP都会用到。HTTPS重点记一点它不是一种新协议而是HTTP报文通过SSL/TLS协议进行加密后再传输。握手过程中会涉及到证书验证、密钥交换、对称加密和非对称加密这个知识点容易考但答案可以固定化HTTPS握手分两步先用非对称加密协商出一个会话密钥解决密钥分发的安全问题再用对称加密传输实际数据解决加密速度的问题。非对称加密很安全但慢对称加密快但不安全地分发密钥两者结合是最优解。DNS这块高频考点是域名解析过程和DNS用TCP还是UDP。答案一般是DNS默认用UDP 53端口因为一次DNS查询的响应很小UDP快、开销低但区域传送和数据量较大的响应会走TCP 53。记住查询用UDP传送用TCP就够了。3. 传输层速记TCP是重头戏UDP是对照系3.1 三次握手与四次挥手的最小剧本传输层基本可以分成两半TCP和UDP。TCP的重头戏就是三次握手和四次挥手这是几乎所有网络相关笔试面试的必考题。三次握手记住一个核心目的让通信双方都确认我能发你能收这件事。用生活化的剧本记客户端先发一个SYN1, seqx的报文意思是你好我这边准备好了我的初始序号是x。服务器回应SYN1, ACK1, seqy, ackx1意思是我收到你的请求了ackx1说明确认收到了x我这边也准备好了我的初始序号是y。客户端再返回ACK1, seqx1, acky1意思是我收到你的确认了。这三次发完之后双方都知道对面能收我的包我能收对面的包。连接就建立起来了。很多人会问为什么不是两次为什么中间那次要同时带上SYN和ACK我的理解是如果只有两次握手服务器无法确认客户端是否收到了自己发出的初始序号。假设服务器发了SYN给客户端但客户端没收到那服务器还在傻等客户端却认为连接已经建了两边状态不一致。第三次握手就是专门用来解决这个问题的。这个逻辑讲清楚了面试官就认为你真正理解了三次握手。四次挥手记住一个核心目的TCP连接是全双工的每一方都要单独关闭自己的数据发送通道。主动关闭方发FIN1表示我的数据发完了我想关闭了。第一次挥手被动关闭方回ACK1表示我知道了你等一下我可能还有数据没发完。第二次挥手被动关闭方数据发完后也发FIN1表示我的数据也发完了现在可以关了。第三次挥手主动关闭方回ACK1表示收到那我关了。第四次挥手这里有个面试高频追问第四次挥手后主动关闭方为什么要等2MSL最大报文段生存时间我自己的记忆方法是因为最后一次ACK可能会丢。如果丢了被动关闭方收不到ACK会重发FIN。主动关闭方需要留出时间等这些重传的报文到达并处理掉。同时也要让本连接中所有旧报文在网络中彻底消失避免污染新连接。3.2 可靠传输、滑动窗口与拥塞控制的速记逻辑TCP作为可靠传输的代名词有三个核心机制非常容易考停止等待协议、滑动窗口、拥塞控制。这三个概念是递进关系停止等待是基础版就是发一个包等确认收到确认再发下一个。优点简单缺点慢一条链路利用率极低。滑动窗口是升级版允许连续发多个包然后累计确认。窗口大小表示我没收到确认之前最多能发多少数据这个值实际上是接收方剩余缓冲区的容量。窗口越大吞吐量越高但如果网络本身拥塞发得再多也是白费。所以引出了拥塞控制。拥塞控制是发送方主动限制发送速率的手段避免把网络挤爆。记住四个算法慢开始、拥塞避免、快重传、快恢复。我的速记口诀是四个字慢、加、快、回。慢开始拥塞窗口 cwnd 从1开始每轮翻倍指数增长。拥塞避免当cwnd增长到慢开始门限 ssthresh 时改为每轮加1加法增长。快重传如果收到3个重复的ACK不用等超时立即重传丢失报文。快恢复发生快重传后把 ssthresh 减半cwnd 设为新的 ssthresh直接进入拥塞避免阶段而不是重新慢开始。把这四个机制放在一条传输速度-时间的曲线上走一遍你就会发现TCP其实非常怂不确定网络情况时先用指数增长快速试探到达一定水平后转为线性增长小心推进一旦发现丢包立刻减半宁可降低速度也不能把网络搞崩。这种性格特征记下来拥塞控制的逻辑就永远不会忘。3.3 TCP与UDP对比速查UDP虽然内容没有TCP多但它的存在感恰恰来自和TCP的对比。我整理了一个速查表几乎覆盖了所有比较类考点对比项TCPUDP连接状态面向连接先握手再传输无连接直接发可靠性可靠确认、重传、排序不可靠发出去就不管了传输方式字节流有顺序保证数据报每个报文独立速度相对慢快头部开销至少20字节固定8字节流量控制/拥塞控制有没有典型应用HTTP、FTP、SMTP、SSHDNS查询、视频直播、语音通话、游戏面试常问视频通话为什么用UDP不用TCP我的回答思路是视频通话允许少量丢包但不能等重传。如果用TCP一旦丢包就重传会导致声音和画面卡顿、延迟增大而UDP虽然会丢包但至少实时性有保障丢一两帧画面人眼感知不明显但等重传导致延迟拉长互动体验会崩掉。为了时效性牺牲可靠性是UDP最重要的存在意义。4. 网络层速记IP地址与路由的快递思维4.1 IP地址与子网划分的计算技巧网络层的核心是IP协议而IP地址的相关计算是很多人的噩梦。其实只要理清几个概念计算题就变成套公式。IPv4地址是32位二进制通常写成点分十进制。它分成网络号和主机号两部分靠子网掩码来划分边界。子网掩码中连续的1表示网络号连续的0表示主机号。比如255.255.255.0前24位是1意思是前24位是网络号后8位是主机号也就是192.168.1.x/24这样的写法。子网划分的本质是从主机号部分借若干位出来作为子网号。我来说一个不懵的计算流程先确定需要多少个子网或者每个子网需要多少台主机。假设需要4个子网2的2次方等于4所以要借2位新掩码比原来多2位。借位后的子网个数是2^借位数每个子网可用主机数是2^主机位数 - 2减掉的是网络地址主机位全0和广播地址主机位全1。举个例子192.168.1.0/24需要划分成4个子网借2位新掩码是 /26也就是255.255.255.192。子网块大小是 256 - 192 64也可以用2^(32-26)64算出来。4个子网分别是192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26。以第一个子网为例网络地址是192.168.1.0广播地址是192.168.1.63可用主机范围是192.168.1.1 ~ 192.168.1.62共62台。很多人算到这里就蒙其实只要记住三个数网络地址是主机位全0、广播地址是主机位全1、可用范围是去掉这两个之后的中间部分。多做两道题就熟了。4.2 路由协议速记距离矢量vs链路状态路由协议这块面试和考试常考的基本就是RIP、OSPF、BGP三兄弟。记它们不需要纠缠细节先抓住分类维度。RIP路由信息协议基于距离矢量算法以跳数作为度量值最大跳数15跳16跳即不可达。适合小型网络。收敛慢容易产生路由环路用水平分割毒性逆转等机制解决。OSPF开放最短路径优先基于链路状态算法每台路由器都收集全网拓扑用Dijkstra算法计算最短路径。收敛快适合中大型网络。区域划分机制Area能减少路由计算量。BGP边界网关协议用于不同自治系统AS之间的路由选择。与其说它是选路不如说它是选策略它关心的是可达性和策略约束而不是单纯的速度快慢。速记口诀RIP靠跳数小网凑合OSPF算拓扑大网靠谱BGP管全局跨网互联。IP地址这块还需要记住几个特殊地址127.0.0.1是环回地址localhost0.0.0.0代表本网络或默认路由255.255.255.255是有限广播地址169.254.x.x是链路本地地址DHCP分配失败时自动生成。其中169.254.x.x特别容易考看到电脑上冒出这个地址第一反应就是DHCP出问题了。5. 链路层与物理层速记知道名字和用途就行5.1 ARP协议与链路层核心概念到了数据链路层难度明显下降考试和面试的考点也很集中。最重要的就是ARP地址解析协议它的作用是在同一个局域网内根据目标的IP地址查出目标的MAC地址。ARP的工作流程可以记成一个广播一个单播主机A想和主机B通信但不知道B的MAC地址于是发送一个广播帧谁是192.168.1.5请告诉我你的MAC地址。主机B收到后发现问的是自己就回复一个单播帧我是192.168.1.5我的MAC地址是 XX:XX:XX:XX:XX:XX。记住这个一问一答之后还要知道ARP缓存的概念为了不每次都广播主机会把查询到的映射关系缓存一段时间可以通过arp -a命令查看Windows和Linux下的ARP缓存表。面试中万一问ARP欺骗的原理回答思路就是ARP响应不验证合法性攻击者伪装成网关回复我就是网关把受害者发往网关的流量都引到自己这里来。链路层还有一个高频考点是MTU最大传输单元。以太网的MTU默认是1500字节如果IP层传来的数据包超过这个值IP层要对数据包进行分片。这个考点经常和UDP、TCP一起出现TCP有MSS最大报文段长度机制会在握手时协商好一个不会触发分片的大小而UDP不协商发送的数据超过路径MTU时可能触发IP分片导致性能下降和丢包率上升。5.2 物理层与常见设备速记物理层的内容不多但有几个概念几乎每套卷子都会碰到。双绞线最常见的有线传输介质分屏蔽双绞线STP和非屏蔽双绞线UTP。交叉线和直通线的区别要知道同种设备电脑连电脑、交换机连交换机用交叉线不同种设备电脑连交换机用直通线。现代设备大多支持自动协商但考试依然爱考。光纤单模光纤传得远、带宽大适用于长距离主干多模光纤传得近、成本低适用于短距离机房内连接。记住单模贵且远多模便宜且近。中继器和集线器工作在物理层主要功能是再生信号、扩大传输距离。集线器是共享总线型设备所有端口在同一冲突域同时只有一台设备能发数据效率很低现在已经基本被交换机替代。物理层不常单独出大题但它是填空题和选择题的常客混个脸熟就够了。6. 一张纸速记大表考前/面试前必背清单6.1 分层模型与协议挂载速查为了能在考前最后一晚、或者面试候场时快速过一遍我把所有高频考点压缩成了一张一张纸清单。平时不用看重要时刻直接背这一张就够了。先看分层模型与协议对照OSI层TCP/IP层核心设备核心协议/技术应用层应用层计算机、应用程序HTTP、HTTPS、DNS、FTP、SMTP、POP3、DHCP表示层应用层—数据加密、压缩、格式转换TLS/SSL可归入会话或表示层附近理解会话层应用层—会话管理、断点续传传输层传输层防火墙部分TCP、UDP网络层网络层路由器IP、ICMP、ARP严格说ARP更偏链路层考试按教材来、RIP、OSPF数据链路层链路层交换机、网桥以太网帧、MAC地址、VLAN物理层链路层中继器、集线器双绞线、光纤、电压/光脉冲注意ARP到底归哪一层不同教材说法不完全一致有的归网络层有的归链路层。考试时以教材为准面试时可以说ARP工作在数据链路层和网络层之间主要目的是解析链路层地址所以通常放在数据链路层来看待这个回答既严谨又不容易被反驳。6.2 TCP标志位与HTTP状态码速查TCP报文段头部的标志位也是高频考点总共6个位可以按分组记SYN建立连接时的同步标志握手必备。ACK确认标志表示确认序号有效。FIN关闭连接时的结束标志。RST连接异常中断时置位表示别聊了重新来吧。PSH接收方应立即把数据交给应用层不要等在缓冲区里。URG紧急指针有效紧急数据插队发送。HTTP状态码是应用层的另一个高频考点不用全背记住常见的十五个以内就够了。我给的速记方法是按数字开头分类1开头代表信息2开头代表成功3开头代表重定向4开头代表客户端错误5开头代表服务器错误。具体到常用状态码状态码含义快速理解200请求成功一切正常301永久重定向网站换了新地址以后都去新地址302临时重定向暂时去别处下次还回原地址304未修改缓存可用服务器让你直接用本地缓存400请求语法错误客户端发的包格式不对401未认证没登录请先证明你是谁403禁止访问登录了但没权限拒绝404资源不存在地址写错或资源被删了500服务器内部错误服务器自己崩了502网关错误上游服务器返回无效响应503服务不可用服务器过载或正在维护稍后再试504网关超时上游服务器没来得及响应这张表建议直接截图保存或者抄在笔记里面试前扫一眼很有用。我每次带新人排查问题第一件事就是让他先看状态码是几开头这个习惯能省很多无用功。7. 常见问题与排查技巧实录7.1 一个案例学会分层定位法理论知识背得再好最终还是要在实际中解决问题。我从自己的运维经历里挑一个真实案例带你走一遍五层排查法。有一次同事反应网页打不开我第一反应不是去看代码而是按照物理层-链路层-网络层-传输层-应用层逐层排查物理层先看网线有没有松网卡灯亮不亮ipconfig看本地IP是否正常显示。结果发现IP是169.254.x.x说明DHCP没分配成功问题大概率在上层。链路层用ping 网关IP测试发现能通说明链路层没问题MAC地址学习和交换机转发都正常。网络层ping 8.8.8.8不通但网关通说明路由有问题可能是出口路由器或运营商线路故障。传输层telnet 目标IP 80超时进一步确认TCP端口无法建立连接。应用层等出网恢复后nslookup检查DNS解析发现解析正常页面恢复。你看整个过程不需要什么高深技术就是一层一层排除。这个方法的精髓是先确认哪一层出了问题再精确到具体是什么问题避免直接瞎猜。7.2 速记中常踩的坑与应对建议最后分享几个我备考和带人过程中踩过的坑权当给各位提个醒。第一个坑是只背端口号不理解协议关系。以前我有个同事把端口背得滚瓜烂熟但问他浏览器访问HTTPS网站时数据怎么从TCP到HTTP再到SSL的他就含含糊糊了。端口号只是协议的门牌号真正重要的是协议之间的关系和交互顺序。建议学的时候多画几遍HTTP请求全流程图把各层协议串起来。第二个坑是计算子网时总忘减2。网络地址和广播地址不能分配给主机使用所以每个子网可用的主机数一定是2^n - 2。很多题目表面上问你有多少可用IP其实就是在考这个坑。我的笨办法是算完以后心里默念一遍网络、广播去掉了没养成习惯就不容易错。第三个坑是TCP和UDP的应用场景记反。我给你一个不会错记忆锚点所有需要实时交互的用UDP所有需要完整可靠的用TCP。视频通话需要实时用UDP文件传输需要完整用TCPDNS查询虽然是UDP但它有应用层重传机制兜底所以要单独记。第四个坑是不看抓包只看理论。很多概念比如三次握手的seq、ack变化光看文字容易懵但只要用Wireshark抓一次包看一遍实际报文立刻就通了。我强烈建议学网络的时候配合抓包工具把每个协议看一遍真实的样子这是最好的速记方式。计算机网络这门课内容是真多但高频考点其实就集中在分层模型、TCP机制、IP计算、HTTP和DNS这几个板块上。我的整体心得是不要试图记住所有细节先把主干框架吃透再往框架上挂细节。考试前拿出这篇文章里的速查表过一遍面试前把三次握手、四次挥手、GET和POST区别、TCP和UDP对比、子网计算这几块反复练几遍基本上就能应付绝大多数场景了。最后再分享一个小技巧每次学完一个大章节试着不看书在一张白纸上默写出分层模型、各层协议和端口号写不出来的地方就是你的薄弱点重点补就对了。这套方法我自己用了很多年也带过不少新人实践下来确实管用。
返回列表