算機(jī)網(wǎng)絡(luò)五層模型考點(diǎn)與學(xué)習(xí)路線全解析:從教材到DevOps實(shí)踐)
1. 先把教材和學(xué)習(xí)路線定下來(lái)再談怎么學(xué)1.1 謝希仁、王道、自頂向下、湖科大教書匠到底該選哪一套搜“計(jì)算機(jī)網(wǎng)絡(luò)課程”的人基本分成三類準(zhǔn)備408考研的、期末考前極限突擊的、工作之后回來(lái)補(bǔ)網(wǎng)絡(luò)基礎(chǔ)的尤其做DevOps和后端。這決定了你手里該放哪本書、該看誰(shuí)的視頻。我先說(shuō)結(jié)論再解釋為什么。教材/資源適合誰(shuí)優(yōu)點(diǎn)注意點(diǎn)謝希仁《計(jì)算機(jī)網(wǎng)絡(luò)》零基礎(chǔ)、期末復(fù)習(xí)、本科同步中文寫作通順知識(shí)框架完整貼合多數(shù)學(xué)校的教學(xué)大綱部分內(nèi)容偏老對(duì)408考試的靈活題型覆蓋不足王道《計(jì)算機(jī)網(wǎng)絡(luò)》408考生、沖刺刷題考點(diǎn)很集中選擇題和綜合題都按真題風(fēng)格設(shè)計(jì)不適合當(dāng)?shù)谝槐緯x更適合在學(xué)完基礎(chǔ)之后用來(lái)做題和拔高《計(jì)算機(jī)網(wǎng)絡(luò)自頂向下方法》工程向?qū)W習(xí)者、DevOps、想真正理解協(xié)議的人從應(yīng)用層切入能直接碰到HTTP、DNS這些實(shí)際協(xié)議配套Wireshark實(shí)驗(yàn)非常多原版英文閱讀有門檻中文版有時(shí)候翻譯得比較拗口且章節(jié)順序和國(guó)內(nèi)課程不一致湖科大教書匠計(jì)網(wǎng)系列期末408同步準(zhǔn)備動(dòng)畫演示做得特別清楚三次握手、擁塞控制這類動(dòng)態(tài)過程一看就懂視頻偏向“把教材講明白”光看不做題還是不行那“湖科大教書匠的計(jì)算機(jī)網(wǎng)絡(luò)適合考408嗎”這個(gè)熱搜問題我的回答是適合。它的講解細(xì)致程度和動(dòng)畫表達(dá)在計(jì)網(wǎng)教學(xué)視頻里屬于第一梯隊(duì)用來(lái)打基礎(chǔ)非常穩(wěn)。但408考的不只是“聽懂”還需要大量題型訓(xùn)練。我的實(shí)際組合是一輪用謝希仁配合湖科大教書匠視頻打底二輪直接把王道翻爛三輪再回到408真題。這個(gè)組合我身邊同時(shí)上岸的同學(xué)基本也是這么走的。1.2 自底向上和自頂向下兩種路線怎么選國(guó)內(nèi)課堂講計(jì)算機(jī)網(wǎng)絡(luò)幾乎清一色是自底向上物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層從第一章往后背。這種順序?qū)荚嚪浅S押靡驗(yàn)榭荚囶}目就是按這個(gè)模型出的。但它的致命缺點(diǎn)是你學(xué)完物理層、鏈路層可能還沒見過一個(gè)真實(shí)網(wǎng)頁(yè)請(qǐng)求長(zhǎng)什么樣很容易學(xué)著學(xué)著就放棄了?!蹲皂斚蛳隆返穆肪€則反過來(lái)先從你每天在用的HTTP、DNS講起再一步步往下挖到TCP、IP、以太網(wǎng)。工程向的人學(xué)起來(lái)會(huì)格外舒服因?yàn)槟隳苤庇^看到“我在瀏覽器輸入一個(gè)網(wǎng)址之后實(shí)際發(fā)生了什么”。但自頂向下不貼合大多數(shù)學(xué)校的期末考點(diǎn)如果只靠它復(fù)習(xí)容易漏掉國(guó)內(nèi)教材里那些“背多分”的細(xì)節(jié)。我用一個(gè)生活化類比自底向上像是先學(xué)會(huì)砌墻、埋水管再理解一套房子為什么這么設(shè)計(jì)自頂向下是你先住進(jìn)去再拆墻研究水電是怎么走線的。兩條路各有價(jià)值。如果你目標(biāo)是期末和408我建議以自底向上為主線這是性價(jià)比最高的選擇。如果你以后想長(zhǎng)期吃技術(shù)飯尤其是做DevOps或后端運(yùn)維那就額外花時(shí)間把自頂向下教材里應(yīng)用層和傳輸層的章節(jié)跳著看一遍這會(huì)彌補(bǔ)國(guó)內(nèi)教材“重原理、輕場(chǎng)景”的缺陷。2. 五層模型考點(diǎn)拆解不光要會(huì)背還要會(huì)算2.1 物理層與數(shù)據(jù)鏈路層選擇題最陰的地方很多人復(fù)習(xí)計(jì)網(wǎng)會(huì)很自然地跳過物理層和數(shù)據(jù)鏈路層覺得“背一背就完了”。實(shí)際上期末試卷和408選擇題最喜歡在這兩層埋坑尤其是那些邊界概念和計(jì)算公式。物理層核心是兩個(gè)公式奈奎斯特公式和香農(nóng)公式奈奎斯特公式C 2W log2V描述無(wú)噪聲信道的極限數(shù)據(jù)率其中W是帶寬V是信號(hào)電平的離散級(jí)數(shù)。香農(nóng)公式C W log2(1 S/N)描述有噪聲信道的信息傳輸速率上限。這兩條公式經(jīng)常放在同一道選擇題里比較問你“增大信噪比能提高什么、增大帶寬能提高什么”本質(zhì)就是區(qū)分“無(wú)噪聲理想模型”和“有噪聲實(shí)用模型”。數(shù)據(jù)鏈路層的重點(diǎn)就密集多了幀格式、透明傳輸、差錯(cuò)檢測(cè)、CSMA/CD、以太網(wǎng)MAC地址、交換機(jī)學(xué)習(xí)機(jī)制、VLAN、ARP每一個(gè)都是出題點(diǎn)。其中有兩個(gè)點(diǎn)我需要單獨(dú)提醒。第一個(gè)是CRC循環(huán)冗余校驗(yàn)。408和期末大題都愛考步驟很固定先用生成多項(xiàng)式確定除數(shù)和補(bǔ)零位數(shù)再做模2除法得到余數(shù)把余數(shù)追加到數(shù)據(jù)后面。我自己第一次做的時(shí)候犯過一個(gè)低級(jí)錯(cuò)誤就是把模2除法直接當(dāng)普通除法算結(jié)果余數(shù)全錯(cuò)。模2除法本質(zhì)是逐位異或不考慮進(jìn)位和借位這個(gè)習(xí)慣一定要先建立起來(lái)。第二個(gè)是CSMA/CD最短幀長(zhǎng)問題。公式是最短幀長(zhǎng) 2 × 單程傳播時(shí)延 × 數(shù)據(jù)傳輸速率。理解記憶法發(fā)送方必須保證在發(fā)送完一幀之前能檢測(cè)到可能發(fā)生的碰撞所以幀長(zhǎng)不能太短。考試常見變形是“兩臺(tái)主機(jī)相距多遠(yuǎn)”“集線器增加多少個(gè)”讓你重新算傳播時(shí)延和最短幀長(zhǎng)。我做這類題的習(xí)慣是先把已知單位統(tǒng)一比如km/s換算成m/μs再套公式能避免90%的粗心錯(cuò)誤。物理層和數(shù)據(jù)鏈路層的設(shè)備也是分辨題高發(fā)區(qū)中繼器、集線器工作在物理層交換機(jī)、網(wǎng)橋工作在數(shù)據(jù)鏈路層路由器工作在網(wǎng)絡(luò)層。這個(gè)表建議自己畫一遍考前每天掃一眼。2.2 網(wǎng)絡(luò)層IP、子網(wǎng)劃分和路由協(xié)議是重頭戲網(wǎng)絡(luò)層在考研408里占比最高在期末復(fù)習(xí)里也是大題固定區(qū)域。不客氣地說(shuō)子網(wǎng)劃分和路由協(xié)議這兩塊學(xué)透了計(jì)網(wǎng)這門課你就拿下了大半。子網(wǎng)劃分最重要的是CIDR表示法和可用主機(jī)數(shù)計(jì)算。我拿一道高頻例題說(shuō)說(shuō)思路某單位申請(qǐng)到一個(gè)地址塊 172.16.0.0/16需要?jiǎng)澐譃?個(gè)等長(zhǎng)子網(wǎng)。做法是先確定需要多少位子網(wǎng)號(hào)2的2次方4所以要向主機(jī)號(hào)借2位。新的子網(wǎng)掩碼就是16218位即255.255.192.0。四個(gè)子網(wǎng)分別是172.16.0.0/18可用地址 172.16.0.1 ~ 172.16.63.254172.16.64.0/18172.16.128.0/18172.16.192.0/18每個(gè)子網(wǎng)的主機(jī)位是14位所以可用主機(jī)數(shù)是 2^14 - 2 16382個(gè)。減2是因?yàn)榫W(wǎng)絡(luò)地址和廣播地址不可分配給主機(jī)。這個(gè)“減2”是考試?yán)镒钊菀讈G分的地方很多人算完2的N次方就激動(dòng)地寫上答案忘了扣掉網(wǎng)絡(luò)地址和廣播地址。路由協(xié)議對(duì)比也是基礎(chǔ)題??臀野阎饕獏^(qū)別列在下面協(xié)議類型核心算法/機(jī)制適用范圍RIP距離向量以跳數(shù)為度量周期性廣播整張路由表最大15跳小型網(wǎng)絡(luò)OSPF鏈路狀態(tài)洪泛鏈路狀態(tài)信息基于Dijkstra算法計(jì)算最短路徑收斂快中大型自治系統(tǒng)內(nèi)部BGP路徑向量在不同自治系統(tǒng)之間交換可達(dá)性信息策略豐富互聯(lián)網(wǎng)骨干做這類對(duì)比題時(shí)不用挨個(gè)死記關(guān)鍵記憶點(diǎn)是RIP“只問距離不問路況”O(jiān)SPF“掌握全網(wǎng)地圖自己算路”BGP“跨組織找鄰居靠策略選路”??荚囈坏┛嫉健奥酚森h(huán)路如何避免”就往RIP的毒性逆轉(zhuǎn)、水平分割、最大跳數(shù)上寫考到“鏈路狀態(tài)算法特點(diǎn)”就答每個(gè)路由器都知道全網(wǎng)的拓?fù)?。網(wǎng)絡(luò)層還有幾個(gè)零散但高頻的考點(diǎn)ICMP常用于差錯(cuò)報(bào)告和ping/traceroute的實(shí)現(xiàn)基礎(chǔ)ARP是把IP地址解析為MAC地址的協(xié)議DHCP嚴(yán)格說(shuō)屬于應(yīng)用層范疇但服務(wù)于網(wǎng)絡(luò)層地址配置。ARP這塊有個(gè)典型陷阱題目“主機(jī)A ping主機(jī)B第一次通信前ARP廣播的目標(biāo)MAC地址是全F廣播地址”這句話是對(duì)的但很多人以為是去查路由器的MAC。實(shí)際 ARP是逐跳解析的如果目標(biāo)不在同一子網(wǎng)ARP包是發(fā)給默認(rèn)網(wǎng)關(guān)的。2.3 傳輸層TCP的可靠性是面試和考試的雙重重點(diǎn)傳輸層是整個(gè)計(jì)網(wǎng)課程里含金量最高的一層也是408大題的偏愛之地。TCP三次握手、四次揮手、可靠傳輸、流量控制、擁塞控制每個(gè)知識(shí)點(diǎn)都能單獨(dú)出一道題。三次握手的過程我用最熟悉的描述再過一遍客戶端發(fā)送SYN報(bào)文初始序號(hào)為x。服務(wù)端回復(fù)SYNACK報(bào)文確認(rèn)號(hào)ackx1并帶上自己的初始序號(hào)y??蛻舳嗽侔l(fā)送ACK報(bào)文確認(rèn)號(hào)acky1。為什么不是兩次握手因?yàn)閮纱挝帐譄o(wú)法確認(rèn)“客戶端是否收到了服務(wù)端的連接確認(rèn)”。經(jīng)典解釋是若客戶端發(fā)出的連接請(qǐng)求在網(wǎng)絡(luò)中滯留超時(shí)后客戶端重發(fā)連接請(qǐng)求并成功建立連接并關(guān)閉此時(shí)舊連接請(qǐng)求才到達(dá)服務(wù)端兩次握手會(huì)讓服務(wù)端誤以為新連接建立白白分配資源。三次握手則通過第三次確認(rèn)避免了這種“歷史失效連接請(qǐng)求”造成的資源浪費(fèi)。四次揮手的過程也是高頻考點(diǎn)但期末更愛問的是每個(gè)階段的主動(dòng)關(guān)閉方和TIME_WAIT狀態(tài)。TIME_WAIT存在的原因有兩個(gè)一是確保最后的ACK能被對(duì)方收到二是因?yàn)榫W(wǎng)絡(luò)中可能還有殘留的數(shù)據(jù)報(bào)文需要等待足夠時(shí)間避免干擾新連接。工作后排查服務(wù)器大量TIME_WAIT連接時(shí)這些課程知識(shí)馬上就能用上。重點(diǎn)中的重點(diǎn)是擁塞控制王道和408都喜歡給一張“擁塞窗口隨時(shí)間變化”的圖讓你填空。核心機(jī)制是四個(gè)算法慢開始擁塞窗口從1個(gè)MSS開始每輪傳輸后翻倍指數(shù)增長(zhǎng)。擁塞避免窗口達(dá)到慢開始門限ssthresh后每輪加1線性增長(zhǎng)??熘貍魇盏?個(gè)重復(fù)ACK不等超時(shí)立即重傳丟失分組??旎謴?fù)發(fā)生快重傳后ssthresh減半擁塞窗口從減半后的ssthresh開始繼續(xù)線性增長(zhǎng)。如果發(fā)生超時(shí)更強(qiáng)的策略是ssthresh減半然后擁塞窗口直接降為1重新慢開始。我在做題時(shí)的心得是先判斷事件是“超時(shí)”還是“收到3個(gè)重復(fù)ACK”再?zèng)Q定窗口該降到1還是降到ssthresh位置。這一步判斷錯(cuò)了整道題的分就沒了。UDP那邊內(nèi)容相對(duì)輕但選擇題年年有。記住幾個(gè)特征無(wú)連接、不保證可靠交付、首部開銷小8字節(jié)、支持一對(duì)一/一對(duì)多/多對(duì)多通信。適用場(chǎng)景要能舉出來(lái)DNS查詢、視頻直播、語(yǔ)音通話、QUIC協(xié)議底層。面試和期末都喜歡問“既然TCP更可靠為什么視頻不用TCP”回答角度是TCP擁塞控制會(huì)帶來(lái)重傳和延遲實(shí)時(shí)性要求高的場(chǎng)景寧缺毋濫丟幾個(gè)包可以接受卡頓不能接受。2.4 應(yīng)用層離你最近的協(xié)議棧也是DevOps的日常應(yīng)用層在期末復(fù)習(xí)里是最“友好”的章節(jié)因?yàn)镠TTP、DNS、DHCP這些東西你每天都在用理解門檻低。但它也最瑣碎協(xié)議多、端口多、報(bào)文格式多是個(gè)純背功活。HTTP重點(diǎn)掌握請(qǐng)求報(bào)文和響應(yīng)報(bào)文結(jié)構(gòu)、狀態(tài)碼分類、HTTP和HTTPS的區(qū)別、Cookie與Session。狀態(tài)碼我建議按類記1xx信息、2xx成功、3xx重定向、4xx客戶端錯(cuò)誤、5xx服務(wù)端錯(cuò)誤。做DevOps之后你會(huì)發(fā)現(xiàn)工作中每天面對(duì)的是502網(wǎng)關(guān)錯(cuò)誤、504網(wǎng)關(guān)超時(shí)、499客戶端斷開考試和面試??嫉氖?01/302重定向、403禁止訪問、404不存在、500服務(wù)器內(nèi)部錯(cuò)誤。這些狀態(tài)碼不是死背而是調(diào)用鏈路上不同節(jié)點(diǎn)給你的反饋。DNS要掌握遞歸查詢和迭代查詢的區(qū)別。這里我分享一個(gè)真實(shí)排查場(chǎng)景某天線上服務(wù)出現(xiàn)間歇性502監(jiān)控看負(fù)載和進(jìn)程都正常后來(lái)抓包發(fā)現(xiàn)是部分請(qǐng)求解析到了舊負(fù)載均衡的IP上。原因就是本地緩存里TXT記錄的TTL還沒過期舊IP對(duì)應(yīng)的服務(wù)已經(jīng)下線。排查過程走了整整三個(gè)小時(shí)要是早把“先查DNS再看應(yīng)用”記在腦子里十分鐘就能定位。這也是我后來(lái)覺得計(jì)算機(jī)網(wǎng)絡(luò)對(duì)DevOps不是“輔修課”而是“保命課”的原因。DHCP抓包時(shí)你會(huì)看到經(jīng)典的四個(gè)報(bào)文DISCOVER、OFFER、REQUEST、ACK。記起來(lái)有個(gè)口訣發(fā)現(xiàn)、提供、選擇、確認(rèn)。實(shí)際使用中我還踩過DHCP的坑虛擬機(jī)克隆之后網(wǎng)卡MAC地址沒變和原虛擬機(jī)沖突導(dǎo)致其中一臺(tái)拿不到IP。這種問題只有親手配置過網(wǎng)絡(luò)環(huán)境的人才懂書上不會(huì)教你。FTP、SMTP、POP3、IMAP這些協(xié)議的默認(rèn)端口和應(yīng)用場(chǎng)景我建議做成一張小卡片放在錯(cuò)題本里不需要死記但考試前一定要混眼熟。HTTP 80、HTTPS 443、DNS 53、DHCP 67/68、FTP 20/21、SMTP 25、POP3 110這組端口號(hào)是選擇題高頻區(qū)丟了很可惜。3. 實(shí)驗(yàn)課是理解分層模型的最短路徑3.1 實(shí)驗(yàn)環(huán)境和工具Wireshark、Packet Tracer、虛擬機(jī)如果你正在做HNU計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)一這類課程設(shè)計(jì)或者看到類似的實(shí)驗(yàn)任務(wù)大概率是一道抓包分析題或者小型組網(wǎng)配置題。我強(qiáng)烈建議你動(dòng)手前先把三個(gè)工具準(zhǔn)備好Wireshark抓取和分析真實(shí)網(wǎng)絡(luò)流量能清清楚楚看到包頭的每一個(gè)字段。Cisco Packet Tracer / GNS3做拓?fù)淠M、配IP、配路由的利器適合實(shí)驗(yàn)里“搭建網(wǎng)絡(luò)并測(cè)試連通性”的部分。虛擬機(jī)VMware或VirtualBox搭一個(gè)多節(jié)點(diǎn)的虛擬局域網(wǎng)做真實(shí)的通信實(shí)驗(yàn)。三者的分工很清晰Packet Tracer幫你建立“結(jié)構(gòu)化”的網(wǎng)絡(luò)觀感Wireshark讓你看到“真實(shí)世界”的流量虛擬機(jī)則是連接這兩者的橋梁。我做實(shí)驗(yàn)一的流程是先在Packet Tracer里畫拓?fù)?、寫IP、連線路把流程跑通再在真實(shí)環(huán)境中用Wireshark抓包對(duì)比模擬和現(xiàn)實(shí)的差異。3.2 抓包實(shí)驗(yàn)的四個(gè)細(xì)節(jié)直接影響實(shí)驗(yàn)質(zhì)量抓包這件事看著簡(jiǎn)單打開Wireshark點(diǎn)綠色按鈕就行但想抓到有效數(shù)據(jù)有很多門道。我總結(jié)四個(gè)提高實(shí)驗(yàn)質(zhì)量的關(guān)鍵細(xì)節(jié)。第一個(gè)是過濾表達(dá)式。新手最容易犯的錯(cuò)是抓包過程中產(chǎn)生大量無(wú)關(guān)流量然后在一堆數(shù)據(jù)里找半天。正確做法是先抓再停然后用過濾表達(dá)式縮小范圍。ip.addr 192.168.1.5看某個(gè)主機(jī)的通信tcp.port 80看HTTPhttp.request只看請(qǐng)求報(bào)文。過濾之后再按時(shí)間排序觀察報(bào)文之間的因果順序會(huì)清晰很多。第二個(gè)是抓包前清理緩存。如果你要分析DNS解析過程不清理本地DNS緩存的話結(jié)果里只會(huì)看到一條“已從緩存讀取”的記錄完整的遞歸查詢鏈根本抓不到。Windows下用ipconfig /flushdnsmacOS用sudo dscacheutil -flushcache。同理分析ARP交互之前也要清ARP緩存否則看不到ARP廣播和應(yīng)答過程。第三個(gè)是用命令行工具代替瀏覽器抓包。我見過太多同學(xué)用Chrome訪問網(wǎng)頁(yè)抓TCP三次握手結(jié)果瀏覽器直接發(fā)起六七個(gè)并發(fā)連接Wireshark里全是SYN和ACK根本分不清哪組是一次握手。換成curl -v http://目標(biāo)地址一次請(qǐng)求只建立一條連接報(bào)文干凈利落。這條建議我強(qiáng)烈建議寫進(jìn)實(shí)驗(yàn)報(bào)告的“實(shí)驗(yàn)心得”里老師會(huì)高看你一眼。第四個(gè)是記錄關(guān)鍵字段并截圖。實(shí)驗(yàn)報(bào)告要有說(shuō)服力就必須有帶標(biāo)注的截圖。我通常把每次抓包的時(shí)間點(diǎn)、源IP、目的IP、關(guān)鍵Flag位用紅框標(biāo)出再把對(duì)應(yīng)字段的十進(jìn)制/十六進(jìn)制值寫在表格里。比如三次握手我會(huì)逐一截取SYN、SYNACK、ACK三個(gè)報(bào)文并記錄初始序號(hào)與確認(rèn)號(hào)的差值為1證明握手過程符合協(xié)議規(guī)范。3.3 實(shí)驗(yàn)報(bào)告怎么寫才能拿高分實(shí)驗(yàn)報(bào)告的核心不是過程堆砌而是三個(gè)字講清楚。講清楚你發(fā)現(xiàn)了什么、為什么是它、它能證明什么。如果實(shí)驗(yàn)任務(wù)是“抓取訪問網(wǎng)站的過程并分析TCP三次握手”我的報(bào)告結(jié)構(gòu)是這樣的先用一句說(shuō)明實(shí)驗(yàn)環(huán)境和訪問目標(biāo)然后用表格列出每次都握手報(bào)文的序號(hào)、方向、源端口、目的端口、TCP標(biāo)志位、序號(hào)、確認(rèn)號(hào)再寫出我觀察到的規(guī)律——第一次ACK的確認(rèn)號(hào)等于第一次SYN的序號(hào)加1最后用教材的分層模型回答思考題說(shuō)明TCP連接建立發(fā)生在傳輸層HTTP請(qǐng)求承載在TCP之上。寫報(bào)告時(shí)最忌諱照抄模板。同一個(gè)實(shí)驗(yàn)不同人抓到的數(shù)據(jù)一定不同至少源端口和序號(hào)是不同的。我見過有人用別人的截圖交差結(jié)果序號(hào)跟自己的抓包記錄對(duì)不上被老師一問就露餡了。實(shí)際上只要自己跑一遍實(shí)驗(yàn)過程真的花不了多少時(shí)間Wireshark抓一個(gè)包也就一兩分鐘的事。4. 期末和408的復(fù)習(xí)策略題庫(kù)怎么刷才有效率4.1 題庫(kù)按題型分組刷別一把抓“計(jì)算機(jī)網(wǎng)絡(luò)題復(fù)習(xí)題庫(kù)”能搜到很多資源但你拿到題庫(kù)后第一件事不是從第一題開始做而是把題目按題型拆開。計(jì)網(wǎng)的題大致分四類每一類的刷法完全不同。概念辨析題如“路由器工作在哪一層”“ARP的作用是什么”“TCP和UDP的區(qū)別”這類靠平時(shí)整理沒有捷徑錯(cuò)題本越厚越好。計(jì)算題子網(wǎng)劃分、香農(nóng)/奈奎斯特公式、CRC校驗(yàn)、CSMA/CD最短幀長(zhǎng)、RTT與HTTP響應(yīng)時(shí)間。這類題套路固定練到不出計(jì)算錯(cuò)誤就是滿分。流程分析題三次握手、四次揮手、擁塞窗口變化、DNS查詢過程。這類要會(huì)畫流程理解每一步的觸發(fā)條件和狀態(tài)變化。綜合應(yīng)用題408的大題通常把網(wǎng)絡(luò)層和傳輸層串起來(lái)比如給你一個(gè)網(wǎng)絡(luò)拓?fù)湟笈渲肐P、計(jì)算路由表、分析某次通信的過程。這類題需要完整思路建議按年份從真題里專項(xiàng)練。舉個(gè)具體的計(jì)算題例子。TCP建立連接或HTTP請(qǐng)求的響應(yīng)時(shí)間常用的模板是非持續(xù)連接時(shí)每請(qǐng)求一個(gè)對(duì)象都要重新建立TCP連接訪問一個(gè)包含1個(gè)HTML文件和10張圖片的頁(yè)面需要11次TCP連接持續(xù)連接時(shí)只在開始時(shí)建立一次連接后續(xù)對(duì)象在同一連接內(nèi)傳輸。這個(gè)題目變化不多但每次算RTT都得把“建立連接需要1個(gè)RTT”和“請(qǐng)求響應(yīng)需要1個(gè)RTT”分開數(shù)數(shù)錯(cuò)了整題就廢了。我的方法是做這類題時(shí)用草稿紙畫時(shí)間軸每個(gè)RTT用一格表示畫完再數(shù)很少出錯(cuò)。4.2 408和期末的差異決定了復(fù)習(xí)重點(diǎn)408計(jì)算機(jī)網(wǎng)絡(luò)這科的特點(diǎn)是“覆蓋廣、考點(diǎn)相對(duì)集中、喜歡考細(xì)節(jié)和邊角”。比如它不只問你HTTP默認(rèn)端口是80還把錯(cuò)誤選項(xiàng)藏在“HTTP使用TCP的80端口提供可靠傳輸服務(wù)”這種看似正確但表述不嚴(yán)謹(jǐn)?shù)牡胤?。所?08復(fù)習(xí)要更注重辨析能力同樣的知識(shí)點(diǎn)不能只背結(jié)論要能看出不同表述之間的差別。期末則更偏向教材原味。很多學(xué)校出題就是謝希仁教材課后題的翻版會(huì)考“數(shù)據(jù)鏈路層要解決哪三個(gè)基本問題”“CSMA/CD中的二進(jìn)制指數(shù)退避算法步驟”這類直白題目。期末復(fù)習(xí)把課件過一遍、課后題做一遍、再把課后題答案背熟基本能保住基礎(chǔ)分。你還要留意408和期末對(duì)同一個(gè)知識(shí)點(diǎn)要求的深度不一樣。期末考RIP知道它用距離向量、最多15跳就夠了408就可能給你一張路由表讓你寫出下一跳和“如果收到某路由更新RIP如何更新表項(xiàng)”。我的經(jīng)驗(yàn)是如果時(shí)間有限優(yōu)先吃透子網(wǎng)劃分、擁塞控制、TCP三次握手、HTTP報(bào)文結(jié)構(gòu)這四塊因?yàn)闊o(wú)論是期末還是408它們都是出題密度最高的區(qū)域。4.3 沖刺階段的高效操作思維導(dǎo)圖、錯(cuò)題本、限時(shí)模擬考前一周別再?gòu)念^翻教材了時(shí)間是浪費(fèi)不起的。我建議三件事并行。第一件事是畫分層思維導(dǎo)圖。以“物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層”為分支每一層下面掛三樣?xùn)|西協(xié)議、設(shè)備、封裝單位。比如傳輸層掛TCP/UDP封裝單位是報(bào)文段網(wǎng)絡(luò)層掛IP/ICMP/ARP/路由協(xié)議封裝單位是分組或數(shù)據(jù)報(bào)。這張圖畫完整個(gè)課程的地圖就在你腦子里了遇到任何題目都能快速定位“考的是哪一層”。第二件事是整理錯(cuò)題本。不要抄題只記“錯(cuò)因正確結(jié)論”。我的錯(cuò)題本分兩欄左側(cè)寫“我為什么錯(cuò)”右側(cè)寫“正確做法”。比如“子網(wǎng)劃分忘減2個(gè)地址”“CRC把模2除當(dāng)成普通除法”“擁塞控制誤以為超時(shí)后窗口減半而不是降為1”這些一句話的錯(cuò)因比長(zhǎng)篇筆記有用十倍??记翱匆槐殄e(cuò)題本相當(dāng)于把最容易丟分的坑重新踩了一遍。第三件事是限時(shí)模擬。408里面的計(jì)網(wǎng)部分建議整卷掐時(shí)間練選擇題控制在40分鐘內(nèi)完成綜合題按每題15到20分鐘分配。期末復(fù)習(xí)的同學(xué)找近三年的學(xué)校真題按真實(shí)考試時(shí)間做兩套重點(diǎn)適應(yīng)“選擇題猶豫”“大題沒時(shí)間”的節(jié)奏問題。這里再送一條突擊心得如果期末復(fù)習(xí)只剩三天不要再追求面面俱到。優(yōu)先復(fù)習(xí)子網(wǎng)劃分、CSMA/CD最短幀長(zhǎng)、TCP狀態(tài)過程、擁塞控制算法、HTTP報(bào)文格式和狀態(tài)碼、DNS和DHCP流程。這些內(nèi)容占期末試卷的大頭而且是短期記憶能有效覆蓋的。至于鏈路狀態(tài)協(xié)議SPF算法的具體計(jì)算、BGP策略細(xì)節(jié)這些邊角時(shí)間不夠就大膽放棄性價(jià)比太低。5. 從課程到DevOps這門課的后勁很大5.1 工作中真正高頻用到的網(wǎng)絡(luò)知識(shí)很多人覺得計(jì)算機(jī)網(wǎng)絡(luò)課程是為了應(yīng)付考試但等真做了DevOps工程師你會(huì)發(fā)現(xiàn)這門課幾乎每天都在用。我說(shuō)幾個(gè)工作中最常遇到的場(chǎng)景。DNS排障在運(yùn)維工作中是日常操作。線上域名解析慢、解析錯(cuò)誤、切換IP后不生效本質(zhì)上都在考你對(duì)遞歸查詢、迭代查詢、TTL緩存的理解。我記得有一次客戶反饋網(wǎng)站訪問時(shí)好時(shí)壞排查半天發(fā)現(xiàn)是DNS服務(wù)商切換后TTL設(shè)置成了48小時(shí)導(dǎo)致部分用戶還在請(qǐng)求舊IP。后來(lái)我們統(tǒng)一把關(guān)鍵域名的TTL調(diào)小再搞手動(dòng)緩存清理問題才算解決。這些知識(shí)課程里全都有只是當(dāng)時(shí)沒意識(shí)到會(huì)這么用。TCP狀態(tài)排障也很高頻。服務(wù)器出現(xiàn)大量TIME_WAIT連接你要能判斷是連接主動(dòng)關(guān)閉方的高頻訪問導(dǎo)致還是健康檢查配置太頻繁出現(xiàn)大量SYN_RECV要懷疑是不是有人在握手但不完成考慮調(diào)低syn backlog或者開啟syn cookies。大學(xué)里被逼著背的TCP狀態(tài)機(jī)到了生產(chǎn)環(huán)境就是救命稻草。負(fù)載均衡和反向代理理解本質(zhì)上也是網(wǎng)絡(luò)層和應(yīng)用層的連接。L4負(fù)載均衡工作在網(wǎng)絡(luò)層/傳輸層按IP和端口轉(zhuǎn)發(fā)L7負(fù)載均衡工作應(yīng)用層可以按URL、Cookie、Header做更精細(xì)的路由。工作中配置Nginx upstream時(shí)你得知道TCP連接怎么復(fù)用、超時(shí)時(shí)間怎么設(shè)置、健康檢查失敗后會(huì)有什么表現(xiàn)這些如果只懂“配置指令”而不懂底層握手流程出了問題就只能瞎試。HTTP狀態(tài)碼更是DevOps的日常語(yǔ)言。502表示網(wǎng)關(guān)拿到上游的無(wú)效響應(yīng)504表示上游超時(shí)499表示客戶端在nginx等待上游響應(yīng)時(shí)提前斷開。我處理過一次504問題剛開始以為是MySQL慢查詢后來(lái)發(fā)現(xiàn)是網(wǎng)關(guān)到上游服務(wù)之間的TCP連接被防火墻中斷重傳一直失敗。如果不懂“TCP握手建立后鏈路可能被中間設(shè)備靜默斷開”這個(gè)原理這類問題會(huì)排查到懷疑人生。5.2 課程沒講但是生產(chǎn)環(huán)境天天見的三個(gè)概念計(jì)算機(jī)網(wǎng)絡(luò)的課程內(nèi)容偏學(xué)術(shù)和真實(shí)的生產(chǎn)環(huán)境之間還隔著一層“翻譯”。有三個(gè)東西是教材上著墨不多、但DevOps工作中避不開的。第一個(gè)是NAT。家庭路由器就是最典型的NAT設(shè)備內(nèi)網(wǎng)主機(jī)共享一個(gè)公網(wǎng)IP上網(wǎng)。課程里講IP地址時(shí)你只需要算清楚內(nèi)網(wǎng)地址范圍但生產(chǎn)環(huán)境中NAT影響了日志排查、公網(wǎng)服務(wù)發(fā)布、安全組配置。比如排查日志時(shí)發(fā)現(xiàn)所有內(nèi)網(wǎng)用戶出口都是同一個(gè)公網(wǎng)IP你就得能理解這是NAT造成的不是服務(wù)器配置錯(cuò)了。第二個(gè)是代理。正向代理替客戶端訪問外部資源反向代理替后端服務(wù)器接收和分發(fā)請(qǐng)求。課程中極少講反向代理但現(xiàn)代Web架構(gòu)里Nginx、Ingress Controller、API Gateway全是反向代理。理解了TCP握手、HTTP協(xié)議才能真正理解為什么反向代理可以緩存響應(yīng)、可以提前斷開慢客戶端、可以做請(qǐng)求重試。第三個(gè)是Kubernetes里的Service和Ingress。K8s的Service本質(zhì)上是一組虛擬IP和負(fù)載均衡規(guī)則Ingress則是在HTTP或HTTPS層把外部流量路由到集群內(nèi)部服務(wù)。剛接觸K8s的DevOps人經(jīng)常一頭霧水但如果你把Service想成“自動(dòng)維護(hù)的VIP路由器”把Ingress想成“掛在前面的一層反向代理路由表”理解難度立刻下降一半。我和同行交流時(shí)經(jīng)常會(huì)說(shuō)一句話計(jì)算機(jī)網(wǎng)絡(luò)這門課考試考的是分層工作用的也是分層但工作里的分層比教材多了一層叫“現(xiàn)實(shí)”的干擾。教材教你路由器怎么轉(zhuǎn)發(fā)包現(xiàn)實(shí)里還有防火墻、安全組、負(fù)載均衡、容器網(wǎng)絡(luò)疊加在一起。所以我的建議是學(xué)完課程之后一定要把知識(shí)往真實(shí)場(chǎng)景上靠一靠否則永遠(yuǎn)停留在考試層面。如果讓我重學(xué)一遍計(jì)算機(jī)網(wǎng)絡(luò)我會(huì)調(diào)整一個(gè)順序先抓兩天包把HTTP、TCP、DNS這三樣玩明白再回去啃教材。因?yàn)楫?dāng)你親眼看到三次握手在Wireshark里一條條走過DNS查詢?cè)谀闱謇砭彺嬷笳鎸?shí)出現(xiàn)子網(wǎng)劃分在配置虛擬機(jī)網(wǎng)絡(luò)時(shí)變成剛需教材里那些抽象的定義就會(huì)自動(dòng)找到位置。最后分享一個(gè)我自己用過的、對(duì)所有人都適用的練手方法打開Wireshark抓一次自己訪問網(wǎng)頁(yè)的完整過程從DNS解析開始到TCP三次握手再到HTTP請(qǐng)求和響應(yīng)最后到四次揮手把每一步的報(bào)文截圖和關(guān)鍵字段整理成一張表。這個(gè)練習(xí)做完你對(duì)五層模型的理解會(huì)比背十遍教材都牢。