36張圖,一次性補全網(wǎng)絡(luò)基礎(chǔ)知識
在公眾號后臺回復:JGNB,可獲取杰哥原創(chuàng)的 PDF 手冊。
轉(zhuǎn)自:網(wǎng)絡(luò)工程師筆記
OSI和TCP/IP是很基礎(chǔ)但又非常重要的知識,很多知識點都是以它們?yōu)榛A(chǔ)去串聯(lián)的,作為底層,掌握得越透徹,理解上層時會越順暢。今天這篇網(wǎng)絡(luò)基礎(chǔ)科普,就是根據(jù)OSI層級去逐一展開的。

0 1 計算機網(wǎng)絡(luò)基礎(chǔ)
01 ?計算機網(wǎng)絡(luò)的分類
按照網(wǎng)絡(luò)使用者:公用網(wǎng)絡(luò)、專用網(wǎng)絡(luò)。
02 ?計算機網(wǎng)絡(luò)的層次結(jié)構(gòu)

TCP/IP四層模型與OSI體系結(jié)構(gòu)對比:

03 ?層次結(jié)構(gòu)設(shè)計的基本原則
- 各層之間是相互獨立的;
- 每一層需要有足夠的靈活性;
- 各層之間完全解耦。

04 ?計算機網(wǎng)絡(luò)的性能指標
0 2 物理層
物理層的作用: 連接不同的物理設(shè)備,傳輸比特流。該層為上層協(xié)議提供了一個傳輸數(shù)據(jù)的可靠的物理媒體。簡單的說,物理層確保原始的數(shù)據(jù)可在各種物理媒體上傳輸。
物理層設(shè)備:
- 中繼器【Repeater,也叫放大器】:同一局域網(wǎng)的再生信號;兩端口的網(wǎng)段必須同一協(xié)議;5-4-3規(guī)程:10BASE-5以太網(wǎng)中,最多串聯(lián)4個中繼器,5段中只能有3個連接主機;
- 集線器:同一局域網(wǎng)的再生、放大信號(多端口的中繼器);半雙工,不能隔離沖突域也不能隔離廣播域。
- 單工通信信道:只能一個方向通信,沒有反方向反饋的信道;
- 半雙工通信信道:雙方都可以發(fā)送和接受信息,但不能同時發(fā)送也不能同時接收;
- 全雙工通信信道:雙方都可以同時發(fā)送和接收。
0 3
數(shù)據(jù)鏈路層
01 ?數(shù)據(jù)鏈路層概述
該層的作用包括:物理地址尋址、數(shù)據(jù)的成幀、流量控制、數(shù)據(jù)的檢錯、重發(fā)等。
有關(guān)數(shù)據(jù)鏈路層的重要知識點:
- 數(shù)據(jù)鏈路層為網(wǎng)絡(luò)層提供可靠的數(shù)據(jù)傳輸;
- 基本數(shù)據(jù)單位為幀;
- 主要的協(xié)議:以太網(wǎng)協(xié)議;
- 兩個重要設(shè)備名稱:網(wǎng)橋和交換機。

透明傳輸:“透明”是指即使控制字符在幀數(shù)據(jù)中,但是要當做不存在去處理。即在控制字符前加上轉(zhuǎn)義字符ESC。

02 ?數(shù)據(jù)鏈路層的差錯監(jiān)測
- 奇偶校驗碼–局限性:當出錯兩位時,檢測不到錯誤。
- 循環(huán)冗余檢驗碼:根據(jù)傳輸或保存的數(shù)據(jù)而產(chǎn)生固定位數(shù)校驗碼。
03 ?最大傳輸單元MTU
路徑MTU:由鏈路中MTU的最小值決定。

04 ?以太網(wǎng)協(xié)議詳解
以太網(wǎng)協(xié)議:是一種使用廣泛的局域網(wǎng)技術(shù),是一種應用于數(shù)據(jù)鏈路層的協(xié)議,使用以太網(wǎng)可以完成相鄰設(shè)備的數(shù)據(jù)幀傳輸:

局域網(wǎng)分類:
- 以太網(wǎng)第一個廣泛部署的高速局域網(wǎng);
- 以太網(wǎng)數(shù)據(jù)速率快;
- 以太網(wǎng)硬件價格便宜,網(wǎng)絡(luò)造價成本低。
以太網(wǎng)幀結(jié)構(gòu)
- 類型:標識上層協(xié)議(2字節(jié));
- 目的地址和源地址:MAC地址(每個6字節(jié));
- 數(shù)據(jù):封裝的上層協(xié)議的分組(46~1500字節(jié));
- CRC:循環(huán)冗余碼(4字節(jié));
-
以太網(wǎng)最短幀:以太網(wǎng)幀最短64字節(jié);以太網(wǎng)幀除了數(shù)據(jù)部分18字節(jié);數(shù)據(jù)最短46字節(jié)。
MAC地址(物理地址、局域網(wǎng)地址)
- MAC地址長度為6字節(jié),48位;
- MAC地址具有唯一性,每個網(wǎng)絡(luò)適配器對應一個MAC地址;
- 通常采用十六進制表示法,每個字節(jié)表示一個十六進制數(shù),用 - 或 : 連接起來;
- MAC廣播地址:FF-FF-FF-FF-FF-FF。
04
網(wǎng)絡(luò)層
網(wǎng)絡(luò)層中涉及眾多的協(xié)議,其中包括最重要的協(xié)議,也是TCP/IP的核心協(xié)議——IP協(xié)議。IP協(xié)議非常簡單,僅僅提供不可靠、無連接的傳送服務。IP協(xié)議的主要功能有:無連接數(shù)據(jù)報傳輸、數(shù)據(jù)報路由選擇和差錯控制。
與IP協(xié)議配套使用實現(xiàn)其功能的還有地址解析協(xié)議ARP、逆地址解析協(xié)議RARP、因特網(wǎng)報文協(xié)議ICMP、因特網(wǎng)組管理協(xié)議IGMP。
具體的協(xié)議我們會在接下來的部分進行總結(jié),有關(guān)網(wǎng)絡(luò)層的重點為:
1、網(wǎng)絡(luò)層負責對子網(wǎng)間的數(shù)據(jù)包進行路由選擇。此外,網(wǎng)絡(luò)層還可以實現(xiàn)擁塞控制、網(wǎng)際互連等功能;
2、基本數(shù)據(jù)單位為IP數(shù)據(jù)報;
3、包含的主要協(xié)議:
- IP協(xié)議(Internet Protocol,因特網(wǎng)互聯(lián)協(xié)議);
- ICMP協(xié)議(Internet Control Message Protocol,因特網(wǎng)控制報文協(xié)議);
- ARP協(xié)議(Address Resolution Protocol,地址解析協(xié)議);
- RARP協(xié)議(Reverse Address Resolution Protocol,逆地址解析協(xié)議)。

路由器相關(guān)協(xié)議:

01 ?IP協(xié)議詳解
虛擬互聯(lián)網(wǎng)絡(luò)的產(chǎn)生:實際的計算機網(wǎng)絡(luò)錯綜復雜;物理設(shè)備通過使用IP協(xié)議,屏蔽了物理網(wǎng)絡(luò)之間的差異;當網(wǎng)絡(luò)中主機使用IP協(xié)議連接時,無需關(guān)注網(wǎng)絡(luò)細節(jié),于是形成了虛擬網(wǎng)絡(luò)。
IP協(xié)議使得復雜的實際網(wǎng)絡(luò)變?yōu)橐粋€虛擬互聯(lián)的網(wǎng)絡(luò);并且解決了在虛擬網(wǎng)絡(luò)中數(shù)據(jù)報傳輸路徑的問題。

其中,版本指IP協(xié)議的版本,占4位,如IPv4和IPv6;
首部位長度表示IP首部長度,占4位,最大數(shù)值位15;
總長度表示IP數(shù)據(jù)報總長度,占16位,最大數(shù)值位65535;
TTL表示IP數(shù)據(jù)報文在網(wǎng)絡(luò)中的壽命,占8位;
協(xié)議表明IP數(shù)據(jù)所攜帶的具體數(shù)據(jù)是什么協(xié)議的,如TCP、UDP。
02 ? IP協(xié)議的轉(zhuǎn)發(fā)流程

03 ?IP地址的子網(wǎng)劃分

A類(8網(wǎng)絡(luò)號+24主機號)、B類(16網(wǎng)絡(luò)號+16主機號)、C類(24網(wǎng)絡(luò)號+8主機號)可以用于標識網(wǎng)絡(luò)中的主機或路由器,D類地址作為組廣播地址,E類是地址保留。

04 ?網(wǎng)絡(luò)地址轉(zhuǎn)換NAT技術(shù)
NAT 工作原理: 從內(nèi)網(wǎng)出去的IP數(shù)據(jù)報,將其IP地址替換為NAT服務器擁有的合法的公共IP地址,并將替換關(guān)系記錄到NAT轉(zhuǎn)換表中;
從公共互聯(lián)網(wǎng)返回的IP數(shù)據(jù)報,依據(jù)其目的的IP地址檢索NAT轉(zhuǎn)換表,并利用檢索到的內(nèi)部私有IP地址替換目的IP地址,然后將IP數(shù)據(jù)報轉(zhuǎn)發(fā)到內(nèi)部網(wǎng)絡(luò)。
05 ?ARP協(xié)議與RARP協(xié)議
ARP 是即插即用的,一個ARP表是自動建立的,不需要系統(tǒng)管理員來配置。

RARP(Reverse Address Resolution Protocol)協(xié)議指逆地址解析協(xié)議,可以把數(shù)據(jù)鏈路層MAC48位地址轉(zhuǎn)化為網(wǎng)絡(luò)層32位地址。
06 ?ICMP協(xié)議詳解

ICMP協(xié)議的應用:
- Ping應用:網(wǎng)絡(luò)故障的排查;
- Traceroute應用:可以探測IP數(shù)據(jù)報在網(wǎng)絡(luò)中走過的路徑。
07 ?網(wǎng)絡(luò)層的路由概述
自治系統(tǒng)AS: 指處于一個管理機構(gòu)下的網(wǎng)絡(luò)設(shè)備群,AS內(nèi)部網(wǎng)絡(luò)自治管理,對外提供一個或多個出入口,其中自治系統(tǒng)內(nèi)部的路由協(xié)議為內(nèi)部網(wǎng)關(guān)協(xié)議,如RIP、OSPF等;自治系統(tǒng)外部的路由協(xié)議為外部網(wǎng)關(guān)協(xié)議,如BGP。
靜態(tài)路由: 人工配置,難度和復雜度高。
動態(tài)路由:
- 鏈路狀態(tài)路由選擇算法LS:向所有隔壁路由發(fā)送信息收斂快;全局式路由選擇算法,每個路由器計算路由時,需構(gòu)建整個網(wǎng)絡(luò)拓撲圖;利用Dijkstra算法求源端到目的端網(wǎng)絡(luò)的最短路徑;Dijkstra(迪杰斯特拉)算法;
- 距離-向量路由選擇算法DV:向所有隔壁路由發(fā)送信息收斂慢、會存在回路;基礎(chǔ)是Bellman-Ford方程(簡稱B-F方程)。
08 ?內(nèi)部網(wǎng)關(guān)路由協(xié)議之RIP協(xié)議
RIP協(xié)議特性:
- RIP在度量路徑時采用的是跳數(shù)(每個路由器維護自身到其他每個路由器的距離記錄);
- RIP的費用定義在源路由器和目的子網(wǎng)之間;
- RIP被限制的網(wǎng)絡(luò)直徑不超過15跳;
- 和隔壁交換所有的信息,30主動一次(廣播)。
09 ?內(nèi)部網(wǎng)關(guān)路由協(xié)議之OSPF協(xié)議
OSPF協(xié)議優(yōu)點:
- 安全;
- 支持多條相同費用路徑;
- 支持區(qū)別化費用度量;
- 支持單播路由和多播路由;
- 分層路由。

10 ?外部網(wǎng)關(guān)路由協(xié)議之BGP協(xié)議
0 5 傳輸層 第一個端到端,即主機到主機的層次。傳輸層負責將上層數(shù)據(jù)分段并提供端到端的、可靠的或不可靠的傳輸。
此外,傳輸層還要處理端到端的差錯控制和流量控制問題。
傳輸層的任務是根據(jù)通信子網(wǎng)的特性,最佳的利用網(wǎng)絡(luò)資源,為兩個端系統(tǒng)的會話層之間,提供建立、維護和取消傳輸連接的功能,負責端到端的可靠數(shù)據(jù)傳輸。
在這一層,信息傳送的協(xié)議數(shù)據(jù)單元稱為段或報文。
網(wǎng)絡(luò)層只是根據(jù)網(wǎng)絡(luò)地址將源結(jié)點發(fā)出的數(shù)據(jù)包傳送到目的結(jié)點,而傳輸層則負責將數(shù)據(jù)可靠地傳送到相應的端口。
有關(guān)網(wǎng)絡(luò)層的重點:
- 傳輸層負責將上層數(shù)據(jù)分段并提供端到端的、可靠的或不可靠的傳輸以及端到端的差錯控制和流量控制問題;
- 包含的主要協(xié)議:TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)、UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議);
- 重要設(shè)備:網(wǎng)關(guān)。


01 ?UDP協(xié)議詳解

UDP協(xié)議的特點:
- UDP是無連接協(xié)議;
- UDP不能保證可靠的交付數(shù)據(jù);
- UDP是面向報文傳輸?shù)模?/span>
- UDP沒有擁塞控制;
- UDP首部開銷很小。

02 ?TCP協(xié)議詳解

TCP協(xié)議的功能:
- 對應用層報文進行分段和重組;
- 面向應用層實現(xiàn)復用與分解;
- 實現(xiàn)端到端的流量控制;
- 擁塞控制;
- 傳輸層尋址;
- 對收到的報文進行差錯檢測(首部和數(shù)據(jù)部分都檢錯);
-
實現(xiàn)進程間的端到端可靠數(shù)據(jù)傳輸控制。
- TCP是面向連接的協(xié)議;
- TCP是面向字節(jié)流的協(xié)議;
- TCP的一個連接有兩端,即點對點通信;
- TCP提供可靠的傳輸服務;
- TCP協(xié)議提供全雙工通信(每條TCP連接只能一對一)。
TCP報文段結(jié)構(gòu):
最大報文段長度:報文段中封裝的應用層數(shù)據(jù)的最大長度。
TCP首部:
- 序號字段:TCP的序號是對每個應用層數(shù)據(jù)的每個字節(jié)進行編號;
- 確認序號字段:期望從對方接收數(shù)據(jù)的字節(jié)序號,即該序號對應的字節(jié)尚未收到。用ack_seq標識;
- TCP段的首部長度最短是20B ,最長為60字節(jié)。但是長度必須為4B的整數(shù)倍。

03 ?可靠傳輸?shù)幕驹?/span>
基本原理:
- 不可靠傳輸信道在數(shù)據(jù)傳輸中可能發(fā)生的情況:比特差錯、亂序、重傳、丟失;
-
基于不可靠信道實現(xiàn)可靠數(shù)據(jù)傳輸采取的措施。
確認:接收方向發(fā)送方反饋接收狀態(tài)。
重傳:發(fā)送方重新發(fā)送接收方?jīng)]有正確接收的數(shù)據(jù)。?
序號:確保數(shù)據(jù)按序提交。?
計時器:解決數(shù)據(jù)丟失問題。
停止等待協(xié)議:是最簡單的可靠傳輸協(xié)議,但是該協(xié)議對信道的利用率不高。
連續(xù)ARQ(Automatic Repeat reQuest:自動重傳請求)協(xié)議:滑動窗口+累計確認,大幅提高了信道的利用率。
TCP協(xié)議的可靠傳輸:
TCP協(xié)議的流量控制:

04 ?TCP協(xié)議的擁塞控制
慢開始和擁塞避免:
- 【慢開始】擁塞窗口從1指數(shù)增長;
- 到達閾值時進入【擁塞避免】,變成+1增長;
- 【超時】,閾值變?yōu)楫斍癱wnd的一半(不能<2);
- 再從【慢開始】,擁塞窗口從1指數(shù)增長。

快重傳和快恢復:
- 發(fā)送方連續(xù)收到3個冗余ACK,執(zhí)行【快重傳】,不必等計時器超時;
- 執(zhí)行【快恢復】,閾值變?yōu)楫斍癱wnd的一半(不能<2),并從此新的ssthresh點進入【擁塞避免】。

05 ?TCP連接的三次握手(重要)

面試常客:為什么需要三次握手?
- 第一次握手:客戶發(fā)送請求,此時服務器知道客戶能發(fā);
- 第二次握手:服務器發(fā)送確認,此時客戶知道服務器能發(fā)能收;
- 第三次握手:客戶發(fā)送確認,此時服務器知道客戶能收。
第二次:服務器發(fā)回確認報文段,同意建立新連接的確認段(SYN=1),確認序號字段有效(ACK=1),服務器告訴客戶端報文段序號是y(seq=y),表示服務器已經(jīng)收到客戶端序號為x的報文段,準備接受客戶端序列號為x+1的報文段(ack_seq=x+1);服務器由LISTEN進入SYN_RCVD (同步收到狀態(tài));
第三次:客戶對服務器的同一連接進行確認.確認序號字段有效(ACK=1),客戶此次的報文段的序列號是x+1(seq=x+1),客戶期望接受服務器序列號為y+1的報文段(ack_seq=y+1);當客戶發(fā)送ack時,客戶端進入ESTABLISHED 狀態(tài);當服務收到客戶發(fā)送的ack后,也進入ESTABLISHED狀態(tài);第三次握手可攜帶數(shù)據(jù)。

06 ?TCP連接的四次揮手(重要)
釋放連接(四次揮手) 第一次:客戶向服務器發(fā)送釋放連接報文段,發(fā)送端數(shù)據(jù)發(fā)送完畢,請求釋放連接(FIN=1),傳輸?shù)牡谝粋€數(shù)據(jù)字節(jié)的序號是x(seq=x);客戶端狀態(tài)由ESTABLISHED進入FIN_WAIT_1(終止等待1狀態(tài));
第二次:服務器向客戶發(fā)送確認段,確認字號段有效(ACK=1),服務器傳輸?shù)臄?shù)據(jù)序號是y(seq=y),服務器期望接收客戶數(shù)據(jù)序號為x+1(ack_seq=x+1);服務器狀態(tài)由ESTABLISHED進入CLOSE_WAIT(關(guān)閉等待);客戶端收到ACK段后,由FIN_WAIT_1進入FIN_WAIT_2;
第三次:服務器向客戶發(fā)送釋放連接報文段,請求釋放連接(FIN=1),確認字號段有效(ACK=1),表示服務器期望接收客戶數(shù)據(jù)序號為x+1(ack_seq=x+1);表示自己傳輸?shù)牡谝粋€字節(jié)序號是y+1(seq=y+1);服務器狀態(tài)由CLOSE_WAIT 進入 LAST_ACK (最后確認狀態(tài));
第四次:客戶向服務器發(fā)送確認段,確認字號段有效(ACK=1),表示客戶傳輸?shù)臄?shù)據(jù)序號是x+1(seq=x+1),表示客戶期望接收服務器數(shù)據(jù)序號為y+1+1(ack_seq=y+1+1);客戶端狀態(tài)由FIN_WAIT_2進入TIME_WAIT,等待2MSL時間,進入CLOSED狀態(tài);服務器在收到最后一次ACK后,由LAST_ACK進入CLOSED。


為什么需要等待2MSL?
- 最后一個報文沒有確認;
- 確保發(fā)送方的ACK可以到達接收方;
- 2MSL時間內(nèi)沒有收到,則接收方會重發(fā);
- 確保當前連接的所有報文都已經(jīng)過期。
0 6
應用層
為操作系統(tǒng)或網(wǎng)絡(luò)應用程序提供訪問網(wǎng)絡(luò)服務的接口。應用層重點:
- 數(shù)據(jù)傳輸基本單位為報文;
- 包含的主要協(xié)議:FTP(文件傳送協(xié)議)、Telnet(遠程登錄協(xié)議)、DNS(域名解析協(xié)議)、SMTP(郵件傳送協(xié)議),POP3協(xié)議(郵局協(xié)議),HTTP協(xié)議(Hyper Text Transfer Protocol)。
01 ?DNS詳解
域名解析的順序:
- 瀏覽器緩存;
- 找本機的hosts文件;
- 路由緩存;
- 找DNS服務器(本地域名、頂級域名、根域名)->迭代解析、遞歸查詢。
域名由點、字母和數(shù)字組成,分為頂級域(com,cn,net,gov,org)、二級域(baidu,taobao,qq,alibaba)、三級域(www)(12-2-0852)。

02 ?DHCP協(xié)議詳解
03 ?HTTP協(xié)議詳解
HTTP(HyperText Transfer Protocol:超文本傳輸協(xié)議)【TCP,端口80】:是可靠的數(shù)據(jù)傳輸協(xié)議,瀏覽器向服務器發(fā)收報文前,先建立TCP連接,HTTP使用TCP連接方式(HTTP自身無連接)。
HTTP請求報文方式:
- GET:請求指定的頁面信息,并返回實體主體;
- POST:向指定資源提交數(shù)據(jù)進行處理請求;
- DELETE:請求服務器刪除指定的頁面;
- HEAD:請求讀取URL標識的信息的首部,只返回報文頭;
- OPETION:請求一些選項的信息;
- PUT:在指明的URL下存儲一個文檔。


(1)HTTP工作的結(jié)構(gòu)

(2) HTTPS協(xié)議詳解
推薦閱讀:
網(wǎng)絡(luò)中的三張表 - ARP表、MAC表、路由表
10 張圖詳解計算機網(wǎng)絡(luò)協(xié)議
123 張圖詳解 177 個計算機網(wǎng)絡(luò)名詞
計算機網(wǎng)絡(luò)層次劃分及協(xié)議了解
40 張最全計算機網(wǎng)絡(luò)基礎(chǔ)思維導圖

