全是通俗易懂的講解,如果你本節之前的知識都掌握清楚,那就速速來看我的筆記吧~?
自己寫自己的八股!讓未來的自己看懂! (全文手敲,受益良多)?
數據鏈路層
我們來重新理解一下這個圖:
把數據從A主機送到B主機,我們要先把數據交到路由器A吧。IP解決的是AB之間跨網絡傳輸的問題,再怎么跨網絡,得先達到下一跳吧,一步一步走。
數據鏈路層解決的是:直接相連的主機(也包括路由器),進行數據交付的問題。
Mac地址
每一個網卡都有自己的mac地址,mac地址的作用:在同一局域網中,區分不同的主機。
我們來看一看mac幀的報頭:
這個數據部分,大部分情況就是IP交給該層的IP報文。Mac幀就是這個報文,數據部分稱為有效載荷。
問題1:Mac幀如何做到解包和封裝
???? Mac幀解包用到的是定長報文,收到報文的時候就可以把報頭和有效載荷進行分離
問題2:Mac幀如何做到分用(交給上層的誰)
???? 通過類型,如果是0800說明數據是IP數據報…
目的地址: 就是要去的下一跳主機對應的mac地址
源地址:當前主機的mac地址
局域網的通信原理
??
?? 發送方把mac報頭填好目的地址,源地址。然后發到局域網中,局域網中每一臺機器都看到了這個報頭然后進行比較,如果是給自己的才拿上來。
數據碰撞
局域網中有很多數據的時候,就會發生數據碰撞。要進行數據碰撞避免算法,本質就是讓主機停發,避免過多數據碰撞。局域網中,主機數越多,發生數據碰撞的概率越大。
如何看待局域網??
局域網被多臺主機共享,又要避免數據碰撞,所以我們可以將其看作多臺主機的臨界資源。通過網絡層的IP協議,知道要去哪個路由器,然后在Mac幀上填上目標Mac地址(IP地址轉Mac地址ARP協議)。到達這個路由器的時候,再根據Mac幀的類型向上交付給網絡層,網絡層去掉Mac的報頭,然后再找到下一個要去的路由器,再由Mac幀重新填上目標Mac地址。依次類推,直到找到目標主機!
Mac幀只在局域網中有效!Mac幀的源地址和目的地址一直在變化的!
局域網中,主機數越多,發生數據碰撞的概率越大。怎么辦呀?
?? 隨著局域網的主機變多,我們引入新的設備——交換機。交換機可以識別到碰撞發生在哪一側,如果左邊發生碰撞,就不把數據給右邊了,防止右邊也發生碰撞。交換機可以劃分碰撞域,減少局域網碰撞。
反正局域網都會發生碰撞,那我發生長一點的數據幀好呢?還是短一點的好呢?
? 數據越長,時間就越長,發生碰撞概率就變大了。所以要求數據大小有范圍【46,1500】字節。
數據鏈路層最多允許上層傳1500字節(MTU),這會逼著網絡層進行分片,可是分片不太好。我們要在協議里減少分片,我們如何減少分片呢?而IP傳多少由TCP決定。所以減少分片的問題根源在TCP。IP報頭為20字節,所以TCP最多只能傳1480字節,TCP報頭標準大小為20字節,所以真正的數據為1460。因為TCP有自己的發送緩沖區,所以每次最多取1460來發就可以了。這個1460就稱為MSS(最大發送的數據段)。MMS雙方三次握手的時候也會相互交互。
所謂的數據發送到目標網絡,本質是通過無數個連續的子網實現的
ARP協議
? 也是局域網協議,它要做到:在局域網中,將目標主機的IP地址轉化為Mac地址!!!才可以實現路由器的跳轉。
?? 如何讓入口路由器R得到,主機B的Mac地址呢?
1.先談ARP原理:
??
在局域網中廣播一條消息:我是主機A,要找某某IP地址,它的Mac地址是什么?這個消息被主機B收到了,然后告訴其自己的Mac地址。
ARP報文:
ARP協議,屬于MAC幀上層,但是歸屬到數據鏈路層。
硬件類型:表示鏈路層網絡類型,1為以太網(固定寫法)
協議類型:要傳換的地址類型,0x0800為IP地址(固定寫法)
硬件地址長度:對于以太網為6字節(固定寫法)
協議地址長度:對于IP地址為4字節(固定寫法)
op字段:1表示ARP請求,2表示ARP應答
目的以太網地址不知道,填為全F
2.模擬ARP過程
當主機R要找目的主機B的Mac地址的時候,先填ARP 報頭:
,然后向下交付給數據鏈路層。再添加Mac幀報頭,
填寫之后如下:
然后流向局域網,每臺主機都會收到處理這個ARP報文。對于非目的主機,先對Mac幀報頭的分離,發現目的地址為全F(廣播地址),要受理這個報文,根據0806(類型)交付給該機器的ARP軟件層,然后分析報文,發現目的IP地址并不是自己的IP地址,然后就把報文丟棄了。可是任何一臺主機都可以發起ARP請求,所以任何一臺主機都會收到ARP應答,和別人的ARP請求。所以我們要看op字段(1為請求,2為應答)。只有目的主機(B主機)的IP地址才可以對上,然后進行ARP應答~
重新寫APR報文,把請求變為應答
然后再把應答的報文,廣播給局域網,然后被主機R拿到,這樣就可以拿到主機B的Mac地址啦。
結論:先看op,為1,看目的IP地址。為2看,源Mac地址。主機的mac地址和IP地址會被主機臨時緩存起來。
ARP的周邊問題
- ARP 工作機制:ARP(地址解析協議)用于將 IP 地址解析為 MAC 地址。主機通常會緩存 IP - MAC 映射關系。只有當緩存中的對應記錄失效(比如緩存超時 、對應網絡設備更改等情況 )時,才會再次發起 ARP 請求來重新獲取 MAC 地址。
- 獲取主機 IP 和 MAC 方法(理論設想):通過自身 IP 地址和子網掩碼可確定所在網絡號。理論上可通過拼接該網絡號內的 IP 地址,然后使用 ping 命令探測網絡內主機。在 ping 過程中,主機間交互會觸發 ARP 過程,從而獲取到對應主機的 MAC 地址。但實際中,這種操作可能受網絡權限(如防火墻限制 )、廣播域等因素影響。
- ARP 應答處理:當主機收到多次相同 IP 地址的 ARP 應答時,一般會以最新收到的應答為準更新自身的 ARP 緩存。這是因為最新應答可能反映了網絡中設備當前真實的 MAC 地址情況,確保后續通信能正確尋址。
ARP 欺騙是針對 ARP 協議的攻擊技術 。利用 ARP 協議無驗證機制的漏洞,攻擊者發送偽造 ARP 數據包,使目標主機將攻擊者 MAC 地址錯當成網關或目標主機 MAC 地址 。
DNS協議
實際上訪問的網站是IP地址,因為IP地址不方便記憶。所以用域名,進行域名解析成IP地址就可以了。
瀏覽器中輸入url后,發生的事情(就是輸入一個域名后)
?分三個階段:
- http過程+域名解析
先域名解析,拿到目標IP地址,瀏覽器會構建http請求,填充請求行,請求報頭空行,如果需要的話,還可以帶正文。在構建http請求之前要三次握手。進行網絡轉發,到達目的主機,構建http應答,還有響應報文,再通過TCP鏈接,把響應返回,瀏覽器得到之后對報文做解析,提取正文,對正文進行解釋,再由瀏覽器渲染就可以看到結果了。 - https提一下
剛剛的都是最簡單的,現在都是https,雙方在通信之前除了建立鏈接,在正常通信之前進行密鑰協商… - 談論細節
我們底層http的數據其實就是數據流,最后拷貝到TCP的發送緩沖區,那些策略,流量控制,擁塞控制,超時重傳,三次握手,面向連接,還問就是IP層,子網劃分,查路由表,IP分片,分片和組裝,再往下就是Mac幀…
?
ICMP協議
?
?? ICMP是網絡層的協議。可以對網絡當中出現問題時,對IP報文進行應答的。
????????ping 命令基于 ICMP, 是在網絡層. 而端口號, 是傳輸層的內容. 在 ICMP 中根本就不關
注端口號這樣的信息.
NAT技術(重點)
?我們之前講過,源IP地址在經過路由器的時候會被替換成WAN口地址。NAT技術本質還是緩解IP地址不足的問題。
可是怎么把收回來的數據,從路由器到源主機呢??
我們有NAPT,NAT轉化表
內網中源地址一定是唯一的,我們提前建立映射關系。即使將來通過路由器轉換后的地址都相同,但是收回數據的時候,可以根據映射關系來區分是哪個主機的數據。
NAT在替換的時候不僅僅會替換。會加端口號,通過端口號找到源地址~
NAT的缺陷
- 無法從NAT外部向內部建立連接
- 轉換表的生成和銷毀都需要額外開銷
- 如果NAT路由器異常了,所有的TCP連接都會斷開
內網穿透:通過一個公共的服務器,實現2個局域網主機的相互通信
代理服務器
正向代理(Forward Proxy)是一種常見的網絡代理方式,它位于客戶端和目標
服務器之間,代表客戶端向目標服務器發送請求。正向代理服務器接收客戶端的請
求,然后將請求轉發給目標服務器,最后將目標服務器的響應返回給客戶端。通過這
種方式,正向代理可以實現多種功能,如提高訪問速度、隱藏客戶端身份、實施訪問
控制等。
工作原理
? 客戶端將請求發送給正向代理服務器。
? 正向代理服務器接收請求,并根據配置進行處理,如緩存查找、內容過濾等。
? 正向代理服務器將處理后的請求轉發給目標服務器。
? 目標服務器處理請求,并將響應返回給正向代理服務器。
? 正向代理服務器將響應返回給客戶端。
反向代理
概述
? 反向代理服務器是一種網絡架構模式,其作為 Web 服務器的前置服務器,接收
來自客戶端的請求,并將這些請求轉發給后端服務器,然后將后端服務器的響應返回
給客戶端。這種架構模式可以提升網站性能、安全性和可維護性等基本原理
? 反向代理服務器位于客戶端和 Web 服務器之間,當客戶端發起請求時,它首先
會到達反向代理服務器。反向代理服務器會根據配置的規則將請求轉發給后端的 Web
服務器,并將 Web 服務器的響應返回給客戶端。在這個過程中,客戶端并不知道實際
與哪個 Web 服務器進行了交互,它只知道與反向代理服務器進行了通信。
下篇文章我將更新——多路轉接~期待你的關注👉【A charmer】?