目錄
OSPF(Open Shortest Path First)
NAT(Network Address Translation)
ICMP?(Internet Control Message Protocol)
HTTPS(SSL/TLS加密)
HTTPS協議
1. 對稱加密
2. 非對稱加密
3. 證書驗證
4. 回顧https協議傳輸流程
HTTP TCP UDP
1. TCP:建立可靠的連接
?2.UDP:快速但不可靠的傳輸
3.HTTP:Web應用的通信語言
工作原理
QUIC(了解下 HTTP3 用的)
ARP
DNS(了解他的遞歸解析流程)
域名解析過程
RTP RTSP RTCP(這三個一般用流媒體了解就行)
RTP(Real-time Transport Protocol)
?RTSP(Real-Time Streaming Protocol)
.RTCP(Real-time Transport Control Protocol)
一個遠程客戶端通過域名向某個子網內的一臺電腦里虛擬機請求http接口的全鏈路
1.?域名解析(DNS)
2.?ARP(地址解析協議)
3.?建立TCP連接(TCP三次握手)
4.?NAT(網絡地址轉換)
5.?路由(OSPF或其他路由協議)
6.?ARP(子網內地址解析)
7.?虛擬機網絡轉發
8.?HTTP請求處理
9.?HTTPS加密(如果使用HTTPS)
10.?響應返回
11.?連接關閉(TCP四次揮手)
12.?流媒體相關(如果涉及RTP/RTSP/RTCP)
總結
OSPF(Open Shortest Path First)
OSPF(開放最短路徑優先)協議是一種內部網關協議(IGP),用于在單個自治系統(AS)內部分發IP路由信息。它使用鏈路狀態路由算法,確保每個路由器都有整個網絡拓撲的完整視圖。OSPF協議是基于IP協議的,使用協議號89。它支持無類別域間路由(CIDR)和變長子網掩碼(VLSM),允許網絡管理員更有效地使用IP地址空間。
OSPF通過發送Hello包來發現和維護鄰居路由器關系,并使用鏈路狀態通告(LSA)來交換鏈路狀態信息。路由器根據這些信息構建鏈路狀態數據庫(LSDB),然后使用迪杰斯特拉(Dijkstra)算法計算到達網絡中每個目的地的最短路徑。
NAT(Network Address Translation)
NAT協議是將IP數據報頭中的IP地址轉換為另外一個IP地址的過程,主要用于實現私有網絡訪問公有網絡的功能。這種通過使用少量的IP地址代表較多的私有IP地址的方式,將有助于減少IP地址空間的枯竭。
IPv4地址隨著用戶的增多壓力不斷增大,但是每一個路由器的IP地址下面都有很多的私有地址,外部消息只需要找到這個路由器,這個路由器把消息找到真正目的主機傳遞給它即可。
每一個路由器都可以分配很多私有地址,并且不同路由器的私有地址可以重復,通過這種地址轉換,能夠大大增加地址的容量。
私有地址有三種:
①10.0.0.0~10.255.255.255/8
②172.16.0.0~172.31.255.255/12
③192.168.0.0~192.168.255.255/16
這些地址可以在任何組織或企業內部使用,和其他Internet地址的區別就是,僅能在內部使用,不能作為全球路由地址
對于有Internet訪問需求而內部又使用私有地址的網絡,就要在組織的出口位置部署NAT網關,在報文離開私網進入Internet時,將源IP替換為公網地址,通常是出口設備的接口地址
一個對外的訪問請求在到達目標以后,表現為由本組織出口設備發起,因此被請求的服務端可將響應由Internet發回出口網關
網關再將目的地址替換為私網的源主機地址,發回內部。這樣一次由私網主機向公網服務端的請求和響應就在通信兩端均無感知的情況下完成了。
依據這種模型,數量龐大的內網主機就不再需要公有IP地址了。NAT的轉換示意圖如下所示:
ICMP?(Internet Control Message Protocol)
ICMP協議簡介ICMP是“Internet Control Message Protocol”(Internet控制消息協議)的縮寫。它是TCP/IP協議族的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用。
我們在網絡中經常會使用到ICMP協議,只不過我們覺察不到而已。比如我們經常使用的用于檢查網絡通不通的Ping命令,這個“Ping”的過程實際上就是ICMP協議工作的過程。
HTTPS(SSL/TLS加密)
HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,至于為什么不安全,看了下面這張圖就一目了然了
HTTP 在傳輸數據的過程中,所有的數據都是明文傳輸,自然沒有安全性可言,特別是一些敏感數據,比如用戶密碼和信用卡信息等,一旦被第三方獲取,后果不堪設想。為了解決這問題,需要對數據進行加密。https就是在這種場景下產生的?
HTTPS協議
HTTPS 并非獨立的通信協議,而是對 HTTP 的擴展,兩者關系如下圖。也就是說 HTTPS = HTTP + SSL / TLS
?HTTPS 的整個通信過程如下圖,可以分為兩大階段:證書驗證和數據傳輸階段,數據傳輸階段又可以分為非對稱加密和對稱加密兩個階段
針對HTTPS的傳輸過程,下面分別對對稱加密,非對稱,證書驗證進行詳細介紹
1. 對稱加密
1.1 對稱加密傳輸過程
對稱加密,顧名思義就是加密和解密都是使用同一個密鑰,常見的對稱加密算法有?DES、3DES 和 AES?等。在https協議中,對稱加密用于對真正的業務數據進行加密解密,對應圖《HTTPS加密、解密、驗證及數據傳輸過程》中步驟7,8。
1.2 對稱加密優缺點
優點:算法公開、計算量小、加密速度快、加密效率高,適合加密比較大的數據。
缺點:
- 交易雙方需要使用相同的密鑰,也就無法避免密鑰的傳輸,而密鑰在傳輸過程中無法保證不被截獲,因此對稱加密的安全性得不到保證。
- 每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的惟一密鑰,這會使得發收信雙方所擁有的鑰匙數量急劇增長,密鑰管理成為雙方的負擔。對稱加密算法在分布式網絡系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。
?1.3 使用對稱加密數據傳輸的問題
客戶端和服務器端需要使用相同的密鑰,也就無法避免密鑰的傳輸,而密鑰在傳輸過程中無法保證不被截獲,因此對稱加密的安全性得不到保證。當黑客獲取到對稱加密的密鑰后,可以在網絡傳輸中任意獲取用戶信息,且可以對用戶信息進行篡改。
如上圖所示,黑客在網絡中獲取用戶發送的加密數據后,用密鑰進行解密后,得到用戶信息,并修改了用戶的密碼password=abcd123。在這種情況下,服務器對獲取到的數據進行解密后,得到的用戶密碼為abcd123。可以想象,如果這個操作是用來配置銀行卡密碼的,該有多恐怖。?
2. 非對稱加密
非對稱加密,顧名思義,就是加密和解密需要使用兩個不同的密鑰:公鑰(public key)和私鑰(private key)。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;如果用私鑰對數據進行加密,那么只有用對應的公鑰才能解密。非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰并將其中的一把作為公鑰對外公開;得到該公鑰的乙方使用公鑰對機密信息進行加密后再發送給甲方;甲方再用自己保存的私鑰對加密后的信息進行解密。如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然后發給你,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。常用的非對稱加密算法是 RSA 算法。
在HTTPS協議中,使用公鑰進行加密,私鑰進行解密。
2.1 非對稱加密傳輸過程
在https協議中,客戶端通過非對稱加密把密鑰 KEY 發送給服務器。客戶端在拿到服務器的公鑰后,會生成一個隨機碼 (用 KEY 表示,這個 KEY 就是后續雙方用于對稱加密的密鑰),然后客戶端使用公鑰把 KEY 加密后再發送給服務器,服務器使用私鑰將其解密,這樣雙方就有了同一個密鑰 KEY,然后雙方再使用 KEY 進行對稱加密交互數據。在非對稱加密傳輸 KEY 的過程中,即便第三方獲取了公鑰和加密后的 KEY,在沒有私鑰的情況下也無法破解 KEY (私鑰存在服務器,泄露風險極小),也就保證了接下來對稱加密的數據安全。而上面這個流程圖正是 HTTPS 的雛形,HTTPS 正好綜合了這兩種加密算法的優點,不僅保證了通信安全,還保證了數據傳輸效率。
2.2 非對稱加密優缺點:
優點:算法公開,加密和解密使用不同的鑰匙,私鑰不需要通過網絡進行傳輸,安全性很高。
缺點:計算量比較大,加密和解密速度相比對稱加密慢很多。
?2.3 非對稱加密存在的問題
公開密鑰加密方式還是存在一些問題的。那就是無法證明公開密鑰本身就是貨真價實的公開密鑰。比如,正準備和某臺服務器建立公開密鑰加密方式下的通信時,如何證明收到的公開密鑰就是原本預想的那臺服務器發行的公開密鑰。或許在公開密鑰傳輸途中,真正的公開密鑰已經被攻擊者替換掉了。
為了解決上述問題,可以使用由數字證書認證機構(CA,CertificateAuthority)和其相關機關頒發的公開密鑰證書。
3. 證書驗證
數字證書認證機構處于客戶端與服務器雙方都可信賴的第三方機構的立場上。作為交互中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。CA中心為每個使用公開密鑰的用戶發放一個數字證書,數字證書的作用是證明證書中列出的用戶合法擁有證書中列出的公開密鑰。CA機構的數字簽名使得攻擊者不能偽造和篡改證書。它負責產生、分配并管理所有 參與網上交易的個體所需的數字證書,因此是安全電子交易的核心環節。
4. 回顧https協議傳輸流程
讓我們再回顧一遍整個HTTPS數據傳輸流程:
1) 客戶端請求 HTTPS 網址,然后連接到 server 的 443 端口 (HTTPS 默認端口,類似于 HTTP 的80端口)。
2)采用 HTTPS 協議的服務器必須要有一套數字 CA (Certification Authority)證書,證書是需要申請的,并由專門的數字證書認證機構(CA)通過非常嚴格的審核之后頒發的電子證書 (當然了是要錢的,安全級別越高價格越貴)。頒發證書的同時會產生一個私鑰和公鑰。私鑰由服務端自己保存,不可泄漏。公鑰則是附帶在證書的信息中,可以公開的。證書本身也附帶一個證書電子簽名,這個簽名用來驗證證書的完整性和真實性,可以防止證書被篡改。
3)服務器響應客戶端請求,將證書傳遞給客戶端,證書包含公鑰和大量其他信息,比如證書頒發機構信息,公司信息和證書有效期等。Chrome 瀏覽器點擊地址欄的鎖標志再點擊證書就可以看到證書詳細信息。
4)客戶端解析證書并對其進行驗證。如果證書不是可信機構頒布,或者證書中的域名與實際域名不一致,或者證書已經過期,就會向訪問者顯示一個警告,由其選擇是否還要繼續通信。就像下面這樣:
如果證書沒有問題,客戶端就會從服務器證書中取出服務器的公鑰A。然后客戶端還會生成一個隨機碼 KEY,并使用公鑰A將其加密。
5)客戶端把加密后的隨機碼 KEY 發送給服務器,作為后面對稱加密的密鑰。
6)服務器在收到隨機碼 KEY 之后會使用私鑰B將其解密。經過以上這些步驟,客戶端和服務器終于建立了安全連接,完美解決了對稱加密的密鑰泄露問題,接下來就可以用對稱加密愉快地進行通信了。
7)服務器使用密鑰 (隨機碼 KEY)對數據進行對稱加密并發送給客戶端,客戶端使用相同的密鑰 (隨機碼 KEY)解密數據。
8)雙方使用對稱加密愉快地傳輸所有數據。
HTTP TCP UDP
TCP和UDP都是傳輸層協議,它們的主要區別在于TCP提供可靠的數據傳輸,而UDP提供快速但不可靠的傳輸。HTTP則是一個應用層協議,通常運行在TCP之上,用于Web瀏覽器和服務器之間的通信(也是前后端交互使用最多的通信)。
對比表格(面試從這幾個方面說就行)
TCP、UDP和 HTTP 的詳細介紹
1. TCP:建立可靠的連接
工作原理
TCP(傳輸控制協議)是一種面向連接、可靠的協議。它的工作過程可以比作打電話:首先,撥號(建立連接);然后,進行通話(數據傳輸);最后,掛斷電話(斷開連接)。
建立連接(三次握手):
客戶端發送一個SYN(同步序列編號)包到服務器以開啟一個連接。
服務器響應以SYN-ACK(同步確認)包確認收到。
客戶端回送一個ACK(確認)包,完成連接建立。
簡易速記版
真實版
第一次握手:客戶端將請求報文標志位SYN置為1,請求報文的Sequence Number字段(簡稱seq)中填入一個隨機值J,并將該數據包發送給服務器端,客戶端進入SYN_SENT狀態,等待服務器端確認。
第二次握手:服務器端收到數據包后由請求報文標志位SYN=1知道客戶端請求建立連接,服務器端將應答報文標志位SYN和ACK都置為1,應答報文的Acknowledgment Number字段(簡稱ack)中填入ack=J+1,應答報文的seq中填入一個隨機值K,并將該數據包發送給客戶端以確認連接請求,服務器端進入SYN_RCVD狀態。
第三次握手:客戶端收到應答報文后,檢查ack是否為J+1,ACK是否為1,如果正確則將第三個報文標志位ACK置為1,ack=K+1,并將該數據包發送給服務器端,服務器端檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,客戶端和服務器端進入ESTABLISHED狀態,完成三次握手,隨后客戶端與服務器端之間可以開始傳輸數據了。
數據傳輸:一旦連接建立,數據可以雙向傳輸。TCP保證數據按序到達,沒有丟失或錯誤。
斷開連接(四次揮手):通信結束后,雙方各自發送FIN(結束)包和ACK包來關閉連接。
?2.UDP:快速但不可靠的傳輸
工作原理
UDP(用戶數據報協議)是一種無連接、不可靠的協議。它就像寄信,你把信件投入郵筒,但不保證信件能夠到達目的地。
無連接:UDP不需要建立和斷開連接,數據可以直接發送給接收者。
不可靠性:UDP不保證數據的順序、完整性或安全性。如果數據在傳輸過程中丟失,UDP不會嘗試重新發送。
3.HTTP:Web應用的通信語言
工作原理
HTTP(超文本傳輸協議)是一種無
狀態的應用層協議,它基于TCP協議。每次HTTP請求都是獨立的,服務器不會記住之前的請求。
- 無狀態:每個請求都包含了完成操作所需的全部信息。
- 基于請求/響應:客戶端發送一個請求到服務器,服務器返回一個響應。
QUIC(了解下 HTTP3 用的)
基于UDP的傳輸協議,用于HTTP/3。
-
特點:
-
內置TLS加密,減少握手延遲。
-
支持多路復用,避免隊頭阻塞。
-
快速連接遷移(切換網絡時無需重新握手)。
-
-
適用場景:高延遲、不穩定網絡環境。
ARP
ARP(地址解析協議,Address Resolution Protocol) 是一種網絡層協議,用于將IP地址映射到MAC地址。ARP通常用于局域網(LAN)中,幫助設備找到通過IPv4網絡通信時的硬件地址。
在局域網內,當一臺設備(例如計算機)需要與另一臺設備通信時,網絡協議棧首先根據目標設備的IP地址來查找目標設備的MAC地址。ARP就是用來解決這個問題的協議,它允許一個設備通過廣播的方式在局域網內查詢某個IP地址對應的MAC地址。
DNS(了解他的遞歸解析流程)
DNS即域名系統(Domain Name System)是用來將域名與IP地址建議映射的協議。
DNS服務器是高可用、高并發和分布式的樹樁層次結構
- 根DNS服務器:返回頂級域DNS的服務器IP地址
- 頂級域DNS服務器:返回權威DNS服務器IP地址
- 權威DNS服務器:返回相應主機的IP地址
- 本地域名服務器:如果設計通過DHCP配置,本地DNS由你的網絡服務商(ISP),如電信移動等自動分配,它通常就在你的網絡服務商的某個機房。
域名解析過程
域名的解析總體可以分為兩大步驟。
1.本級向本地域名服務器(本地DNS)發送DNS請求報文,報文里攜帶需要查詢的域名如www.163.com。
2.本地DNS收到來自客戶端的請求。如果能找到www.163.com,它就直接返回IP地址。如果沒有,本地DNS去問它的根域名服務器。
3.根域名服務器收到來自本地DNS的請求,發現后綴是.com,然后發送頂級域名服務器的地址
4.本地DNS向頂級DNS請求,頂級域名服務器返回www.163.com區域的權威DNS服務器的地址。
5.本地DNS轉向問權威DNS服務器,權限DNS服務器查詢后將對應IP地址告訴本地DNS。
6.本地DNS將IP地址返給客戶端,客戶端和目標建立連接。
RTP RTSP RTCP(這三個一般用流媒體了解就行)
-
RTP(Real-time Transport Protocol)
-
作用:用于實時傳輸音視頻數據。
-
特點:
-
基于UDP,支持時間戳和序列號。
-
通常與RTCP配合使用。
-
-
適用場景:視頻會議、流媒體。
?RTSP(Real-Time Streaming Protocol)
-
作用:用于控制流媒體服務器(如播放、暫停)。
-
特點:
-
類似HTTP的文本協議。
-
通常與RTP配合使用。
-
-
適用場景:視頻點播、直播。
.RTCP(Real-time Transport Control Protocol)
-
作用:監控RTP傳輸質量,提供反饋信息。
-
特點:
-
發送接收報告、丟包率、延遲等統計信息。
-
與RTP共用端口號。
-
-
適用場景:實時音視頻傳輸的質量控制。
一個遠程客戶端通過域名向某個子網內的一臺電腦里虛擬機請求http接口的全鏈路
?
1.?域名解析(DNS)
-
客戶端行為:
-
客戶端輸入目標域名(如?
example.com
)。 -
客戶端檢查本地DNS緩存,如果沒有緩存,向本地DNS服務器發送DNS查詢請求。
-
-
DNS解析過程:
-
本地DNS服務器向根DNS服務器查詢。
-
根DNS服務器返回頂級域(TLD)服務器地址。
-
本地DNS服務器向TLD服務器查詢。
-
TLD服務器返回權威DNS服務器地址。
-
本地DNS服務器向權威DNS服務器查詢,獲得目標域名的IP地址(如?
203.0.113.1
)。
-
-
結果:客戶端獲得目標服務器的IP地址。
2.?ARP(地址解析協議)
-
客戶端行為:
-
客戶端需要將數據包發送到網關(默認路由)。
-
客戶端通過ARP協議獲取網關的MAC地址。
-
-
ARP過程:
-
客戶端發送ARP請求廣播,詢問網關的MAC地址。
-
網關回復ARP響應,包含自己的MAC地址。
-
-
結果:客戶端知道網關的MAC地址,可以將數據包發送到網關。
3.?建立TCP連接(TCP三次握手)
-
客戶端行為:
-
客戶端向目標IP地址(
203.0.113.1
)和端口(HTTP默認80或HTTPS默認443)發起TCP連接請求。 -
發送SYN包,開始三次握手。
-
-
TCP三次握手:
-
客戶端發送SYN包到服務器。
-
服務器回復SYN-ACK包。
-
客戶端發送ACK包,連接建立。
-
-
結果:客戶端和服務器之間建立了一條可靠的TCP連接。
4.?NAT(網絡地址轉換)
-
子網網關行為:
-
客戶端的數據包到達子網網關。
-
網關檢查目標IP地址(
203.0.113.1
)。 -
如果目標IP是公網IP,網關將數據包的源IP地址(客戶端的私有IP)轉換為網關的公網IP,并記錄NAT表項。
-
-
結果:數據包被正確轉發到目標服務器。
5.?路由(OSPF或其他路由協議)
-
網絡行為:
-
數據包經過多個路由器,路由器根據OSPF等路由協議選擇最優路徑。
-
數據包最終到達目標子網的網關。
-
-
結果:數據包被路由到目標子網。
6.?ARP(子網內地址解析)
-
目標子網網關行為:
-
目標子網網關接收到數據包,檢查目標IP地址(
192.168.1.100
,假設是虛擬機所在主機的IP)。 -
網關通過ARP協議獲取目標主機的MAC地址。
-
-
ARP過程:
-
網關發送ARP請求廣播,詢問目標主機的MAC地址。
-
目標主機回復ARP響應,包含自己的MAC地址。
-
-
結果:網關知道目標主機的MAC地址,可以將數據包發送到目標主機。
7.?虛擬機網絡轉發
-
主機行為:
-
目標主機接收到數據包,檢查目標端口。
-
如果虛擬機是通過端口映射或橋接網絡配置的,主機會將數據包轉發到虛擬機。
-
-
虛擬機行為:
-
虛擬機接收到數據包,檢查目標端口和HTTP請求。
-
虛擬機內的Web服務器(如Nginx、Apache)處理請求。
-
8.?HTTP請求處理
-
Web服務器行為:
-
Web服務器解析HTTP請求(如GET或POST)。
-
根據請求路徑和參數,執行相應的業務邏輯。
-
生成HTTP響應(如返回JSON數據或HTML頁面)。
-
-
結果:Web服務器將響應數據發送回客戶端。
9.?HTTPS加密(如果使用HTTPS)
-
TLS/SSL握手:
-
客戶端發送ClientHello,支持加密套件列表。
-
服務器返回ServerHello,選擇加密套件并發送證書。
-
客戶端驗證證書,生成預主密鑰并用服務器公鑰加密發送。
-
雙方通過預主密鑰生成會話密鑰,用于對稱加密通信。
-
-
結果:HTTP數據通過TLS加密傳輸,確保安全性。
10.?響應返回
-
虛擬機行為:虛擬機將HTTP響應數據封裝成TCP數據包,發送回主機。
-
主機行為:主機將數據包轉發到子網網關。
-
網關行為:網關根據NAT表項將數據包的目標IP地址轉換為客戶端的私有IP地址。
-
客戶端行為:客戶端接收到HTTP響應,解析并顯示結果(如渲染網頁或處理數據)。
11.?連接關閉(TCP四次揮手)
-
TCP四次揮手:
-
客戶端發送FIN包,請求關閉連接。
-
服務器回復ACK包,確認關閉請求。
-
服務器發送FIN包,請求關閉連接。
-
客戶端回復ACK包,確認關閉請求。
-
-
結果:TCP連接關閉。
12.?流媒體相關(如果涉及RTP/RTSP/RTCP)
-
RTP:用于傳輸音視頻數據。
-
RTSP:用于控制流媒體服務器(如播放、暫停)。
-
RTCP:用于監控RTP傳輸質量。
-
適用場景:如果HTTP接口涉及流媒體傳輸,這些協議會被使用。
總結
在整個鏈路中,以下協議被使用:
-
DNS:域名解析。
-
ARP:獲取MAC地址。
-
TCP:建立可靠連接。
-
NAT:地址轉換。
-
OSPF:路由選擇。
-
HTTP/HTTPS:應用層通信。
-
TLS/SSL:加密通信(如果使用HTTPS)。
-
RTP/RTSP/RTCP:流媒體傳輸(如果涉及)。
通過梳理這些協議的作用和交互過程,可以清晰地理解遠程客戶端訪問子網內虛擬機HTTP接口的全鏈路。