圖解網絡-小林coding筆記(持續更新)

大綱

計算機網絡
基礎
HTTP
HTTP基本概念
GET與POST
HTTP特性
HTTP緩存技術
HTTP與HTTPS
HTTP演變
TCP
TCP基本認識
TCP連接建立
TCP連接斷開
Socket編程
UDP
IP
IP基本認識
IP地址的基礎知識
IP協議相關技術
網絡安全

基礎

TCP/IP網絡模型有哪幾層?

TCP/IP網絡通常是由上到下分成 4 層,分別是應用層,傳輸層,網絡層和網絡接口層。

  • 應用層:負責向用戶提供一組應用程序,比如HTTP、DNS、FTP等;
  • 傳輸層:負責端到端的通信,比如TCP、UDP等;
  • 網絡層:負責網絡包的封裝、分片、路由、轉發,比如IP、ICMP等;
  • 網絡接口層:負責網絡包在物理網絡中的傳輸,比如網絡包的封幀、MAC尋址、差錯檢測,以及通過網卡傳輸網絡幀等。

不過,我們常說的七層和四層負載均衡,是用OSI網絡模型來描述的,七層對應的是應用層,四層對應的傳輸層。

鍵入網址到網頁顯示,期間發生了什么?

Linux系統是如何收發網絡包的?

一、HTTP

HTTP 常見面試題

HTTP基本概念
HTTP 是什么?

HTTP是超文本傳輸協議,是一個在計算機世界里專門在「兩點」之間「傳輸」文字、圖片、音頻、視頻等「超?本」數據的「約定和規范」。

HTTP常見的狀態碼有哪些?

1xx 類狀態碼屬于提示信息,是協議處理中的?種中間狀態,實際?到的?較少。
2xx 類狀態碼表示服務器成功處理了客戶端的請求,也是我們最愿意看到的狀態。

  • 200 OK」是最常?的成功狀態碼,表示?切正常。如果是? HEAD 請求,服務器返回的響應頭都會有 body 數據。
  • 204 No Content」也是常?的成功狀態碼,與 200 OK 基本相同,但響應頭沒有 body 數據。
  • 206 Partial Content」是應?于 HTTP 分塊下載或斷點續傳,表示響應返回的 body 數據并不是資源的全部,?是其中的?部分,也是服務器處理成功的狀態。

3xx 類狀態碼表示客戶端請求的資源發?了變動,需要客戶端?新的 URL 重新發送請求獲取資源,也就是重定向

  • 301 Moved Permanently」表示永久重定向,說明請求的資源已經不存在了,需改?新的 URL 再次訪問。
  • 302 Found」表示臨時重定向,說明請求的資源還在,但暫時需要?另?個 URL 來訪問。

301 和 302 都會在響應頭?使?字段Location,指明后續要跳轉的 URL,瀏覽器會?動重定向新的URL。

  • 304 Not Modified」不具有跳轉的含義,表示資源未修改,重定向已存在的緩沖?件,也稱緩存重定向,也就是告訴客戶端可以繼續使?緩存資源,?于緩存控制。

4xx 類狀態碼表示客戶端發送的報?有誤,服務器?法處理,也就是錯誤碼的含義。

  • 400 Bad Request」表示客戶端請求的報?有錯誤,但只是個籠統的錯誤。
  • 403 Forbidden」表示服務器禁?訪問資源,并不是客戶端的請求出錯。
  • 404 Not Found」表示請求的資源在服務器上不存在或未找到,所以?法提供給客戶端。

5xx 類狀態碼表示客戶端請求報?正確,但是服務器處理時內部發?了錯誤,屬于服務器端的錯誤碼。

  • 500 Internal Server Error」與 400 類型,是個籠統通?的錯誤碼,服務器發?了什么錯誤,我們并不知道。
  • 501 Not Implemented」表示客戶端請求的功能還不?持,類似“即將開業,敬請期待”的意思。
  • 502 Bad Gateway」通常是服務器作為?關或代理時返回的錯誤碼,表示服務器?身?作正常,訪問后端服務器發?了錯誤。
  • 503 Service Unavailable」表示服務器當前很忙,暫時?法響應客戶端,類似“?絡服務正忙,請稍后重試”的意思。
HTTP常見字段有哪些?

Host字段:客戶端發送請求時,?來指定服務器的域名。
Connection字段:Connection 字段最常?于客戶端要求服務器使?「HTTP ?連接」機制,以便其他請求復?。
Content-Length字段:服務器在返回數據時,會有 Content-Length 字段,表明本次回應的數據?度。
Content-Type字段:?于服務器回應時,告訴客戶端,本次數據是什么格式。
Content-Encoding字段:說明數據的壓縮?法。
Accept-Encoding字段:客戶端在請求時,?該字段說明??可以接受哪些壓縮?法。

GET與POST
GET和POST有什么區別?

GET 的語義是請求獲取指定的資源。 GET ?法是安全、冪等、可被緩存的。
POST 的語義是根據請求負荷(報?主體)對指定的資源做出處理,具體的處理?式視資源類型?不同。POST 不安全,不冪等,(?部分實現)不可緩存。

HTTP緩存技術
HTTP緩存有哪些實現方式?

對于?些具有重復性的 HTTP 請求,?如每次請求得到的數據都?樣的,我們可以把這對「請求-響應」的數據都緩存在本地,那么下次就直接讀取本地的數據,不必在通過?絡獲取服務器的響應了,這樣的話HTTP/1.1 的性能肯定?眼可?的提升。
HTTP 緩存有兩種實現?式,分別是強制緩存和協商緩存

什么是強制緩存?

強緩存指的是只要瀏覽器判斷緩存沒有過期,則直接使?瀏覽器的本地緩存,決定是否使?緩存的主動性在于瀏覽器這邊。

強緩存是利?下?這兩個 HTTP 響應頭部(Response Header)字段實現的,它們都?來表示資源在客戶端緩存的有效期:

  • Cache-Control,是一個相對時間;
  • Expires,是一個絕對時間。

如果 HTTP 響應頭部同時有 Cache-Control 和 Expires 字段的話, Cache-Control 的優先級?于 Expires

Cache-control 選項更多?些,設置更加精細,所以建議使? Cache-Control 來實現強緩存。具體的實現流程如下:

  • 當瀏覽器第一次請求訪問服務器資源時,服務器會在返回這個資源的同時,在Response頭部加上Cache-Control,并在Cache-Control中設置了過期時間大小;
  • 瀏覽器再次請求訪問服務器中的該資源時,會先通過請求資源的時間與Cache-Control中設置的過期時間大小,來計算出該資源是否過期,如果沒有,則使用該緩存,否則重新請求服務器;
  • 服務器再次收到請求后,會再次更新Response頭部的Cache-Control。
什么是協商緩存?

當我們在瀏覽器使?開發者?具的時候,你可能會看到過某些請求的響應碼是304,這個是告訴瀏覽器可以使?本地緩存的資源,通常這種通過服務端告知客戶端是否可以使?緩存的?式被稱為協商緩存。
協商緩存就是與服務端協商之后,通過協商結果來判斷是否使用使用本地緩存。

協商緩存可以基于兩種頭部來實現。
第一種:請求頭部中的If-Modified-Since字段與響應頭部中的Last-Modified字段實現,這兩個字段的意思是:

  • 響應頭部中的Last-Modified:標識這個響應資源的最后修改時間;
  • 請求頭部中的If-Modified-Since:當資源過期了,發現響應頭中具有Last-Modified聲明,則再次發起請求的時候帶上 Last-Modified 的時間,服務器收到請求后發現有 If-Modified-Since 則與被請求資源的最后修改時間進?對?(Last-Modified),如果最后修改時間較新(?),說明資源?被改過,則返回最新資源, HTTP 200 OK;如果最后修改時間較舊(?),說明資源?新修改,響應HTTP 304 ?緩存。

第二種:請求頭部中的If-None-Match字段與響應頭部中的Etag字段,這兩個字段的意思是:

  • 響應頭部中的Etag:唯一標識響應資源;
  • 請求頭部中的If-None-Match:當資源過期時,瀏覽器發現響應頭里有Etag,則再次向服務器發起請求時,會將請求頭If-None-Match值設置為Etag的值,服務器收到請求后進行比對,如果資源沒有變化返回304,如果資源變化了返回200。

第?種實現?式是基于時間實現的,第?種實現?式是基于?個唯?標識實現的,相對來說后者可以更加準確地判斷?件內容是否被修改,避免由于時間篡改導致的不可靠問題。

協商緩存這兩個字段都需要配合強制緩存中 Cache-Control 字段來使?,只有在未能命中強制緩存的時候,才能發起帶有協商緩存字段的請求。

HTTP特性
HTTP/1.1的優點有哪些?
  1. 簡單:HTTP 基本的報?格式就是 header + body ,頭部信息也是 key-value 簡單?本的形式, 易于理解,降低了學習和使?的?檻。
  2. 靈活和易于擴展:HTTP 協議?的各類請求?法、URI/URL、狀態碼、頭字段等每個組成要求都沒有被固定死,都允許開發?員?定義和擴充。
  3. 應用廣泛和跨平臺
HTTP/1.1 的缺點有哪些?
  1. 無狀態雙刃劍
  2. 明?傳輸雙刃劍
  3. 不安全
HTTP/1.1的性能如何?

HTTP 協議是基于 TCP/IP,并且使?了「請求 - 應答」的通信模式。

  1. 長連接
  2. 管道網絡傳輸
  3. 隊頭阻塞
HTTP與HTTPS
HTTP與 HTTPS 有哪些區別?
  • HTTP是超文本傳輸協議,信息是明文傳輸,存在安全風險的問題。HTTPS則解決HTTP不安全的缺陷,在TCP和HTTP網絡層之間加入了SSL/TLS安全協議,使得報文能夠加密傳輸。
  • HTTP連接建立相對簡單,TCP三次握手之后便可進行HTTP的報文傳輸。而HTTPS在TCP三次握手之后,還需進行SSL/TLS的握手過程,才可進入加密報文傳輸。
  • 兩者的默認端口不一樣,HTTP默認端口是80,HTTPS默認端口是443。
  • HTTPS協議需要向CA(證書權威機構)申請數字證書,來保證服務器的身份是可信的。
HTTPS 解決了 HTTP 的哪些問題?

HTTP由于是明文傳輸,所以安全上存在三個風險:

  • 竊聽風險
  • 篡改風險
  • 冒充風險

在這里插入圖片描述
HTTPS 在 HTTP 與 TCP 層之間加?了 SSL/TLS 協議,可以很好的解決了上述的風險:

  • 信息加密
  • 校驗機制
  • 身份證書

HTTPS是如何解決上面的三個風險的?

  • 混合加密的方式實現信息的機密性,解決了竊聽的風險。
  • 摘要算法的方式來實現完整性,它能夠為數據生成獨一無二的「指紋」,指紋用于校驗數據的完整性,解決了篡改的風險。
  • 將服務器公鑰放入到數字證書中,解決了冒充的風險。
HTTPS是如何建立連接的?其間交互了什么?

SSL/TLS協議基本流程:

  • 客戶端想服務器索要驗證服務器的公鑰。
  • 雙方協商生產「會話秘鑰」。
  • 雙方采用「會話秘鑰」進行加密通信。
HTTPS的應用數據是如何保證完整性的?
HTTPS一定安全可靠嗎?
HTTP/1.1、HTTP/2、HTTP/3演變

HTTP/1.1 如何優化?

如何避免發送HTTP請求?
如何減少HTTP請求次數?
如何減少HTTP響應的數據大小?

HTTPS RSA 握手解析

TLS握手過程
RSA握手過程
RSA算法的缺陷

HTTPS ECDHE握手解析

HTTPS如何優化?

HTTP/2 牛逼在哪?

HTTP/3強勢來襲

既然有HTTP協議,為什么還要有RPC?

既然有HTTP協議,為什么還要有WebSocket?

二、TCP

TCP三次握手與四次揮手面試題

TCP重傳、滑動窗口、流量控制、擁塞控制

TCP實戰抓包分析

TCP半連接隊列和全連接隊列

如何優化TCP?

如何理解是TCP面向字節流協議?

為什么TCP每次建立連接時,初始化序列號都要不一樣呢?

SYN報文什么時候情況下會被丟棄?

已建立連接的TCP,收到SYN會發生什么?

四次揮手中收到序的FIN包會如何處理?

在TIME_WAIT狀態的TCP連接,收到SYN后會發生什么?

TCP連接,一端斷電和進程崩潰有什么區別?

拔掉網線后,原本的TCP連接還存在嗎?

tcp_tw_reuse 為什么默認是關閉的?

HTTPS 中 TLS 和 TCP 能同時握手嗎?

TCP Keepalive 和 HTTP Keep-Alive 是一個東西嗎?

TCP協議有什么缺陷?

如何基于UDP協議實現可靠傳輸?

服務端沒有isten,客戶端發起連接建立,會發生什么?

用了TCP協議,數據一定不會丟嗎?

TCP四次揮手,可以變成三次嗎?

TCP序列號和確認號是如何變化的?

三、IP

IP基礎知識全家桶

ping 的工作原理

斷網了,還能ping通127.0.0.1嗎?

四、網絡安全

說說有哪些安全攻擊?

DNS 劫持了解嗎?

什么是 CSRF 攻擊?如何避免?

什么是 DoS、DDoS、DRDoS 攻擊?

什么是 XSS 攻擊,如何避免?

對稱加密與非對稱加密有什么區別?

RSA 和 AES 算法有什么區別?

資料

  • 小林圖解網絡
  • 二哥的Java進階之路:面渣逆襲-計算機網絡
  • JavaGuide-計算機網絡常見面試題總結

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916630.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安寶特案例丨AR+AI+SOP?3大技術融合革新軍工航天領域

軍工、航空、航天領域存在 “小批量、多品種、依賴人工經驗裝配”的特性,這長期制約著生產效率與產品質量的提升。 技術融合應用案例 1 Arbigtec 裝配效率提升類: 某型導彈制導系統裝配:采用 AR 眼鏡與 AI 視覺引導系統,200 精…

ip link show 查看/配置網絡接口

ip link show(或簡寫為 ip link)是 Linux 系統中用于查看和配置網絡接口(網卡、虛擬接口等)的命令,屬于 iproute2 工具集的一部分。它是現代 Linux 系統中替代傳統 ifconfig 命令的更強大工具。命令詳解 基本語法 ip l…

電科金倉新一代數據庫一體機:以 “云數據庫 - AI 版” 引領 AI 時代數據庫變革

前言 AI時代的數據庫一體機市場,只能用兩個詞來形容:高手云集,戰況激烈! 國際巨頭仍在高端市場占據主導地位,但在國產替代的沖擊下,也開始另尋突破口;國內科技大廠攻勢迅猛,通過開源…

IT運維的365天--033 跨交換機部署沒有單獨供電口的愛快AP到另一個地方去

前情提要:由于工作需要,領導要求在車間也添加一個無線網絡供員工和設備使用,之前公司已經有一個愛快網絡供員工使用,且物理隔絕部署在集團辦公樓這邊了。我一向是不喜歡碰到一個小事就拉一條網線,那樣不得搞的跟蜘蛛網…

Flutter開發實戰之路由與導航

第5章:路由與導航 在移動應用開發中,頁面間的跳轉是最基本也是最重要的功能之一。就像我們在現實生活中需要從一個房間走到另一個房間一樣,在App中,用戶需要在不同的界面間自由切換。Flutter提供了強大而靈活的路由系統來管理這些頁面跳轉,本章將深入探討Flutter的路由與…

Android 圖像編輯實戰指南:從基礎操作到進階效果

在移動應用中,圖像編輯功能已成為標配 —— 社交 APP 需要裁剪頭像,電商 APP 需要給商品圖加水印,工具 APP 需要提供濾鏡效果。看似簡單的 “裁剪”“縮放” 背后,實則涉及 Bitmap 像素操作、內存管理、性能優化等核心技術。很多開…

Java從入門到精通!第十八天(JDK17安裝以及網絡編程) 完結篇!!!

三、網絡編程1.網絡編程概述Java 是 Internet 上的語言,它從語言級上提供了對網絡應用程序的支持,程序員能夠很容易開發常見的網絡應用程序。2.網絡的基礎(1)計算機網絡把分布在不同地理區域的計算機與專門…

C++ STL常用容器總結(vector, deque, list, map, set)

C STL常用容器總結(vector, deque, list, map, set)1. vector(動態數組)特點定義和初始化常用操作遍歷方法2. deque(雙端隊列)特點定義和初始化常用操作3. list(雙向鏈表)特點定義和…

智能小車(F103C8T6)RT-THREAD版

前言 前面幾章學會了PWM,超聲波等,現在剛好結合起來控制智能小車 1:環境 KEIL5.38 RT-THREAD 3.1.3 STM32F103C8T6 2:硬件配件(原來網上買的一套) STM32F103C8T6 一個 MCU底板 一個 SG90 舵機 一個 紅外避障 2個 hc-…

Linux 遠程連接與文件傳輸:從基礎到高級配置

Linux 遠程連接與文件傳輸:從基礎到高級配置 在 Linux 系統管理中,遠程連接和文件傳輸是核心技能。SSH 協議提供了安全的遠程訪問方式,而基于 SSH 的 SFTP 和 SCP 則解決了跨服務器文件傳輸的需求。下面將詳細解析 SSH 服務配置、三種遠程操作…

17. 如何修改 flex 主軸方向

總結 flex-direction: row | row-reverse | column | column-reverse;一、作用說明 在 Flex 布局中,默認的主軸(main axis)方向是 水平向右(即 row)。 通過設置 flex-direction 屬性,可以靈活改變主軸的方向…

【Linux】重生之從零開始學習運維之mysql用戶管理

mariadb用戶管理創建用戶create user test210.0.0.% identified by 123456;用戶改名rename user test210.0.0.% to test310.0.0.%;用戶刪除 drop user test310.0.0.%;mysql用戶管理創建用戶create user test210.0.0.% identified by 123456;用戶改名rename user test210.0.0.% …

matlab小計

3.變量命名_嗶哩嗶哩_bilibili clc 清空頁面 文件名:字母開頭 clc:清除命令行窗口 clear all:清除工作區變量 編譯器里面 %%注釋 24 2-4 2*4 4/2 cumsum累計和 312 6123 movsum:滑窗計算數值 eg步長是3 1236 2349 6 9 ... 按列求最大值 先列…

getdents64系統調用及示例

getdents64 函數詳解 1. 函數介紹 getdents64 是 Linux 系統中用于讀取目錄內容的底層系統調用。可以把這個函數想象成一個"目錄內容掃描儀"——它能夠高效地掃描目錄中的所有文件和子目錄,就像超市的掃描槍快速讀取商品條碼一樣。 與高級的目錄操作函數(如 rea…

HBuilder X打包發布微信小程序

一、獲取AppId 二、獲取微信小程序AppId 三、發行->微信小程序,調起微信開發者工具 四、點擊上傳,上傳至微信公眾平臺 五、微信公眾平臺查看版本管理 完結!!!

docker排查OOM

思路: 1.先從代碼程序上排查,線程池創建是否使用ThreadPoolExecutor,線程池各項設置是否合理。 任務對象是否釋放,網關是否需要限流。 2.服務器內存大小,cpu使用率,存儲空間大小,java程序啟動…

Web后端進階:springboot原理(面試多問)

1.配置優先級 3種配置文件: application.properties server.port8081application.yml server:port: 8082application.yaml server:port: 80822種外部屬性的配置(Java系統屬性、命令行參數): Java系統屬性配置 (格式: -Dkeyvalue) -Dserver.po…

第十天:字符菱形

每日一道C題&#xff1a;字符菱形 問題&#xff1a;給定一個字符&#xff0c;用它構造一個對角線長5個字符&#xff0c;傾斜放置的菱形。 要求&#xff1a;輸入只有一行&#xff0c; 包含一個字符&#xff1b;輸出該字符構成的菱形。 最基礎的做法&#xff1a; #include <io…

Qt 多線程編程最佳實踐

在現代軟件開發中&#xff0c;多線程編程是提升應用性能和響應性的關鍵技術。Qt 作為一個強大的跨平臺框架&#xff0c;提供了豐富的多線程支持&#xff0c;包括 QThread、QtConcurrent、信號槽機制等。本文將深入探討 Qt 多線程編程的最佳實踐&#xff0c;幫助開發者避免常見陷…

Photo Studio PRO 安卓版:專業級照片編輯的移動解決方案

Photo Studio PRO 安卓版是一款功能強大的專業級照片編輯應用&#xff0c;旨在為用戶提供豐富而強大的編輯工具和特效&#xff0c;幫助用戶輕松地對照片進行美化和修飾。無論是攝影愛好者還是專業攝影師&#xff0c;都能通過這款應用實現從基礎調整到高級合成的全流程編輯。 核…