計算機網路(英語:computer network),通常也簡稱網路,是指容許節點分享資源的數位電信網路。在電腦網路,電腦裝置會透過節點之間的連線(資料鏈路)互相交換資料。傳輸媒介可分為有線及無線兩類——有線的可用到雙絞線、光纖電纜等媒介;無線則可用到Wi-Fi、NFC。 往期推薦: 給俺的女神翠花發郵件告白,我學會了這些網路基礎知識 史上最全的Linux常用命令彙總(超全面!超詳細!)收藏這一篇就夠了!
由於博主的個人能力有限,文中部分內容來源於維基百科,面試題來源於電子版的計算機網路面試題總結
分層的概念
應用層(資料):確定程序之間通訊的性質以滿足使用者需要以及提供網路與使用者應用 表示層(資料):主要解決擁護資訊的語法表示問題,如加密解密 對談層(資料):提供包括存取驗證和對談管理在內的建立和維護應用之間通訊的機制,如伺服器驗證使用者登入便是由對談層完成的 傳輸層(段):實現網路不同主機上使用者程序之間的資料通訊,可靠與不可靠的傳輸,傳輸層的錯誤檢測,流量控制等 網路層(包):提供邏輯地址(IP)、選路,資料從源端到目的端的傳輸 資料鏈路層(幀):將上層資料封裝成幀,用 MAC 地址存取媒介,錯誤檢測與修正 物理層(位元流):裝置之間位元流的傳輸,物理介面,電氣特性等
詳細瞭解可以看我的部落格:給俺的女神翠花發郵件告白,我學會了這些網路基礎知識
知道各個層使用的是哪個資料交換裝置(交換機、路由器、閘道器)
閘道器:應用層、傳輸層(閘道器在傳輸層上以實現網路互連,是最複雜的網路互連裝置,僅用於兩個高層協定不同的網路互連。閘道器的結構也和路由器類似,不同的是互連層。閘道器既可以用於廣域網互連,也可以用於區域網互連) 路由器:網路層(路由選擇、儲存轉發) 交換機:資料鏈路層、網路層(識別封包中的 MAC 地址資訊,根據 MAC 地址進行轉發,並將這些 MAC 地址與對應的埠記錄在自己內部的一個地址表中) 網橋:資料鏈路層(將兩個 LAN 連起來,根據 MAC 地址來轉發幀) 集線器(Hub):物理層(純硬體裝置,主要用來連線計算機等網路終端) 中繼器:物理層(在位元級別對網路訊號進行再生和重定時,從而使得它們能夠在網路上傳輸更長的距離
資料鏈路層
ARP協定
ARP協定的作用? ARP為IP地址對應的硬體地址提供動態對映
對等鏈路使用ARP嗎? 在對等鏈路中不使用ARP,實際上在對等網路中也不使用MAC地址,因為在此類網路中分別已經獲取了對端的IP地址。
ARP高效運轉的關鍵是什麼? 關鍵是每個主機上都有一個ARP的快取記憶體
ARP報文的各個欄位以及含義? 幀型別: ARP: 0x0806 (2) ARP 首部: 硬體型別:硬體地址的型別, 1 表示乙太網地址。(2) 協定型別:協定地址的型別, 0x0800 表示 IP 地址。 (2) 硬體地址長度: 位元組為單位 6 (1) 協定地址長度: 位元組為單位 4 (1) 操作型別: 2 個位元組。 ARP 請求 1, ARP 回覆 2, RARP 請求 3, RARP 應答 4。(2) 傳送者硬體地址: 6 個位元組(6) 傳送者 IP 地址: 4 個位元組(4) 目標硬體地址: 6 個位元組(6) 目標 IP 地址: 4 個位元組(4) CRC 校驗: 4 個位元組 (4) 總結: ARP總共 28 個位元組。 記憶方法: 乙太網先目地後源, ARP 先傳送端後目地端。先硬體後協定。
ARP協定有什麼弱點? 1)快取:主機的地址對映是基於快取記憶體的,動態更新的。地址重新整理是有時間限制的。 可以通過下次更新之前修改計算機上的地址快取,造成拒絕服務攻擊或者 ARP 欺騙。 2)廣播: 攻擊者可以偽裝 ARP 應答。 3) ARP 應答沒有認證,都是合法的。可以在不接受到請求的時候就發出應答包。
ARP代理的概念和應用場景? 若 ARP 請求是從一個網路的主機傳送給另一個網路上的主機,那麼連線這兩個網路的路由器就可以回答該請求,這個過程叫做 ARP 代理。 ARP 代理路由器響應 ARP 請求的 MAC 地址為路由器的 MAC 地址而非 ARP 請求的主機的 MAC 地址。 ARP 代理的應用環境: 兩個物理網路之間的路由是使用相同的網路號,兩個路由器設定成 ARP 代理,實現相互隱瞞物理網路。
免費ARP 指主機傳送 ARP 查詢自己的 IP 地址,即資料鏈路層 SIP=DIP作用有兩個: 1)一個主機使用免費 ARP 確定是有存在有其他主機設定了相同的 IP 地址 2)如果傳送免費 ARP 的主機改變了 MAC 地址,可以通過傳送免費 ARP 的方式告知其他主機端更新 ARP 表
資料鏈路層MTU的最大值和最小值是多少?
資料鏈路層的最小MTU 為 64 位元組。對於 IEEE802.3,兩個站點的最遠距離不超過 2500m,由 4 箇中繼器連線而成,其衝突視窗為 51.2us(2 倍電纜傳播延遲加上 4 箇中繼器的雙向延遲)。對於 10Mbps 的 IEEE802.3 來說,這個時間等於傳送 64 位元組,即 512 位的時間, 64 位元組就是由此而來的。如果一個站點已經傳輸了 512bit,就認為它已經佔用了這個通道。 資料鏈路層的最大 MTU 為 1500 位元組,即資料欄位的最大長度
網路層
IP協定
如何理解 IP 的不可靠和無連線 不可靠:指的是不能保證資料包能成功地到達目的地。發生錯誤時候,丟棄該封包,傳送 ICMP 訊息給信源端。 可靠性由上層提供。 無連線: IP 不維護關於後續資料包的狀態資訊。體現在, IP 資料可以不按順序傳送和接收。 A 傳送連續的資料包,到達 B 不一定是連續的,來回路由選擇可能不一樣,路線也不一樣,到達先後順序也不一樣。IP 報文的格式和各個欄位的含義
版本號: IPV4 就是 4, IPV6 就是 6 (4) 首部長度: 4 個位元組為單位。最小為 5,最大為 15。所以最小長度 20 個位元組,最大為 60個位元組(4) 服務型別: Qos 用,目前不怎麼使用。(8) 總長度:位元組為單位。 最多可以傳送 65535 位元組的 IP 封包。(16) 標識欄位(8) 標誌 (3) 段偏移(5)與分片有關。 生存時間 TTL:經過一個路由器減一。 欄位為 0 時,資料包被丟棄,並且傳送 ICMP 報文通知源主機。 目的是防止資料包在選路時無休止地在網路中流動。(8) 協定:區分上層協定 (8) 首部校驗和: 僅對首部進行校驗。(16)【對比: ICMP, IGMP, TCP, UDP:對首部和資料進行校驗】 源地址:(32) 目的地址: (32)
為什麼 IP 首部中要有總長度欄位? 因為一些資料鏈路(乙太網)需要填充一些資料以達到最小長度。因為乙太網幀的最小長度 是 46 個位元組,但是 IP 長度可能更短,所以需要總長度來確定 IP 資料部分的內容。
IP 首部校驗和怎麼計算的,與 ICMP, IGMP, TCP, UDP 的首部校驗和有什麼區別與共同點? (1) 先把校驗和欄位置 0。 (2) 對首部中每個 16 位位元進行二進位制反碼求和。 (3) 結果存在檢驗和欄位中。 (4) 收到一份 IP 封包後,同樣對首部中每個 16bit 二進位制反碼求和。 (5) 最後結果全為 1,表示正確,否則表示錯誤。 (6) 如果是錯誤的, IP 就丟棄該資料包,但是不生成差錯報文,由上層去處理。 共同點:用到的演演算法都是一樣的。 區別: IP 計算的時候沒有將資料包括在內。 ICMP, IGMP, TCP, UDP 同時覆蓋首部和資料檢驗碼。
主機和路由器本質區別是? 主機從不把資料包從一個介面轉發到另一個介面,而路由器則要轉發資料包。
IP 路由選擇的過程是怎麼樣的? 根據最長匹配原則,找到條目,傳送到指定的路由器。如果不能找到,返回一個「主機不可達」或「網路不可達」的錯誤。
IP 路由選擇的特性有什麼? (1) IP 路由選擇是逐跳進行的。IP 並不知道到達任何目的的完整路徑,只提供下一跳地址。 (2) 為一個網路指定一個路由器,而不是為每個主機指定一個路由器。這樣可以縮小路由表規模。
IP 搜尋路由表的步驟 搜尋匹配的主機地址 ---->搜尋匹配的網路地址 ---->搜尋預設選項 IP 層進行的選路實際上是一種選路機制,它搜尋路由表並決定向哪個網路介面傳送分組。
如果路由表中沒有預設項,而又沒有找到匹配項,這時如何處理? 結果取決於該 IP 資料包是由主機產生的還是被轉發的。 如果資料包是由本機產生的,那麼就給傳送該資料包的應用程式返回一個差錯,或者是「主 機不可達差錯」或者是「網路不可達差錯」。 如果是被轉發的資料包,就給原始傳送一份 ICMP 主機不可達的差錯報文。
IP 地址的分類,如何劃分的,及會計算各類地址支援的主機數
A 類地址:首位為 0, 1.0.0.1~~126.255.255.254;主機號 24 位 B 類地址:首位為 10, 128.0.0.1~~191.255.255.254;主機號 16 位 C 類地址:首位為 110, 192.0.0.1~~223.255.255.254;主機號 8 位 D 類地址(多播地址,也叫做組播地址):首位為 1110, 224.0.0.1~~239.255.255.254 E 類地址:此類地址是保留地址,首位為 11110, 240.0.0.1~~254.255.255.254
ICMP協定
ICMP 的層次和作用 ICMP 一般認為是在三層的。主要傳遞一些差錯報文和其他需要注意的資訊。ICMP報文分類? ICMP 分為兩類,一類是 ICMP 查詢報文,另一類是 ICMP 差錯報文。 ICMP 的主機不可達報文是在什麼情況下發出的? 三層裝置(路由器)給該主機尋路時,沒有找到相應路徑,向源 IP 發回 ICMP 主機不可達什麼情況不會導致產生 ICMP 差錯報文? 1) ICMP 差錯報文。 2) 目的地址是廣播地址或者多播地址的 IP 資料包。 3) 鏈路層廣播的資料包 4) 不是 IP 分片的第一片 5) 源地址不是單個主機的封包。ICMP 重定向差錯報文是怎麼來的,在何種場合出現?
1) 主機傳送 IP 資料包給 R1,因為主機的預設路由指向的下一跳是 R1。 2) R1 收到資料包並且檢查它的路由表,發現 R2 是傳送該資料包的下一跳。當他將資料包傳送給 R2 的時候,發現傳送的介面與接受的埠是一樣的,因此同時傳送一個 ICMP 重定向報文給主機。 3) R1 接受到 ICMP 重定向報文後,接下來的資料包就傳送給 R2,而不再傳送給 R1。
重定向報文有什麼規則? 重定向報文只能有路由器生成。 重定向報文是為主機而不是為路由器使用的。Ping 命令的具體過程是怎麼樣的? 參考知乎的這個回答,介紹的比較詳細對於Ping的過程,你真的瞭解嗎?
傳輸層
UDP協定
UDP 和 TCP 的簡單介紹 UDP 是一個簡單的面向資料包的運輸層協定:程序的每個輸出操作都正好產生一個 UDP 數 據報,並組裝成一份待傳送的 IP 資料包。 TCP 是面向流字元,應用程式產生的全體資料與真正傳送的單個 IP 資料包可能沒什麼聯絡。UDP 報頭欄位和含義?
源埠號(2) 目地埠號(2) UDP 長度:是 UDP 的報文總長度,是多於的。 IP 總長度減去首部長度就是此值。(2) UDP 校驗和:注意點:校驗和是可選的。 (TCP 是必選的)校驗和覆蓋 UDP 首部和資料(TCP 也一樣覆蓋首部和資料,但是 IP 指覆蓋首部) (2)
UDP 的校驗和是怎麼計算的? UDP 的校驗和要計算首部和資料部分。首部還包括偽首部。 多了 12 個位元組的偽首部。 注意點: UDP 長度計算兩次。如果檢驗和有錯,則 UDP 資料包被悄悄丟棄,不產生任何差錯報文。為什麼要加有偽首部? 目的是讓 UDP 兩次檢查資料是否已經正確到達目的地。 IP 接受正確的目的地址,傳送到正確的上層程式。 所有偽首部包括:源 IP 地址,目的 IP 地址, 0,協定號, UDP 長度。
TCP協定
TCP 通過哪些方式來保證可靠性? 1) 應用資料被分割成 TCP 認為最適合傳送的資料塊。 2) 確認機制,傳送報文後,等待確認。 3) 重發機制,沒有收到確認,將重發資料段。 4) 保持它首部和資料的校驗和。 確認資料的準確性。 5) 排序,丟棄重複的,流量控制。TCP 與 UDP 的概念相互的區別及優劣
TCP 面向連線, UDP 面向無連結 TCP 面向報文, UDP 面向位元組流 TCP 提供可靠傳輸服務(資料順序、正確性), UDP 傳輸不可靠 TCP 協定傳輸速度慢, UDP 協定傳輸速度快 TCP 協定對系統資源要求多(頭部開銷大), UDP 協定要求少
TCP、 UDP 為什麼存在偽包頭? UDP(TCP)檢驗和:是根據 UDP(TCP)資料包和偽報頭計算得到的差錯檢測值。
偽報頭包含源和目的 IP 地址,以及來自 IP 資料包報頭的協定值。 IP 資料包在網路中傳送時包含 UDP 資料包。偽報頭並不會在網路中傳送,校驗和中所包含的偽報頭內容可以避免目的端錯誤地接收錯誤路由的資料包。校驗和值的計算方法和 IP 報頭檢驗和的計算方法類似。
為什麼要 3 次握手, 4 次揮手? 3 次握手:防止已過期的連線請求報文突然又傳送到伺服器,因而產生錯誤 4 次揮手:確保資料能夠完成傳輸,但關閉連線時,當收到對方的 FIN 報文通知時,它 僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以 未必會馬上會關閉 SOCKET,也即你可能還需要傳送一些資料給對方之後,再傳送 FIN 報文 給對方來表示你同意現在可以關閉連線了,所以它這裡的 ACK 報文和 FIN 報文多數情況下 都是分開傳送的TCP 的流量控制機制 慢啟動(慢開始) :
慢開始不是指 cwnd 的增長速度慢(指數增長),而是指 TCP 開始傳送設定 cwnd=1。 思路:不要一開始就傳送大量的資料,先探測一下網路的擁塞程度,也就是說由小到大 逐漸增加擁塞視窗的大小。這裡用報文段的個數的擁塞視窗大小舉例說明慢開始演演算法,實時 擁塞視窗大小是以位元組為單位的。 為了防止 cwnd 增長過大引起網路擁塞,設定一個慢開始門限(ssthresh 狀態變數) 當 cnwd< ssthresh,使用慢開始演演算法 當 cnwd=ssthresh,既可使用慢開始演演算法,也可以使用擁塞避免演演算法 當 cnwd> ssthresh,使用擁塞避免演演算法 擁塞避免 : 擁塞避免並非完全能夠避免擁塞,是說在擁塞避免階段將擁塞視窗控制為按線性規律增長,使網路比較不容易出現擁塞。 思路:讓擁塞視窗 cwnd 緩慢地增大,即每經過一個往返時間 RTT 就把傳送方的擁塞控制視窗加一。 無論是在慢開始階段還是在擁塞避免階段,只要傳送方判斷網路出現擁塞(其根據就是沒有收到確認,雖然沒有收到確認可能是其他原因的分組丟失,但是因為無法判定,所以都當做擁塞來處理),就把慢開始門限設定為出現擁塞時的傳送視窗大小的一半。然後把擁塞視窗設定為 1,執行慢開始演演算法。 如圖所示: 快速重傳 : 1 . 快重傳要求接收方在收到一個失序的報文段後就立即發出重複確認(為的是使傳送方及早知道有報文段沒有到達對方)而不要等到自己傳送資料時捎帶確認。快重傳演演算法規定,傳送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段,而不必繼續等待設定的重傳計時器時間到期。 2 . 由於不需要等待設定的重傳計時器到期,能儘早重傳未被確認的報文段,能提高整個網路的吞吐量。 快速恢復 : 1 . 當傳送方連續收到三個重複確認時,就執行「乘法減小」演演算法,把 ssthresh 門限減半。但是接下去並不執行慢開始演演算法。 2 . 考慮到如果網路出現擁塞的話就不會收到好幾個重複的確認,所以傳送方現在認為網路可能沒有出現擁塞。所以此時不執行慢開始演演算法,而是將 cwnd 設定為 ssthresh 的大小,然後執行擁塞避免演演算法。
應用層
-DNS 的概念,用途, DNS 查詢的實現演演算法
操作方式 資料位置 明文密文 資料安全 長度限制 應用場景 GET HTTP包頭 明文 不安全 長度較小 查詢資料 POST HTTP正文 可明可密 安全 支援較巨量資料傳輸 修改資料
cookie 是一種傳送到客戶瀏覽器的文字串控制程式碼,並儲存在客戶機硬碟上,可以用來在 某個 WEB 站點對談間持久的保持資料 session 其實指的就是存取者從到達某個特定主頁到離開為止的那段時間。 Session 其 實是利用 Cookie 進行資訊處理的,當使用者首先進行了請求後,伺服器端就在使用者瀏覽器 上建立了一個 Cookie,當這個 Session 結束時,其實就是意味著這個 Cookie 就過期 了 cookie 資料儲存在使用者端, session 資料儲存在伺服器端
一次完整的 HTTP 請求所經歷的步驟 http2.0 和 http1.1 的區別
不積小流無以成江河,不積跬步無以至千里 。而我想要成為萬里羊,就必須堅持學習來獲取更多知識,用知識來改變命運,用部落格見證成長,用行動證明我在努力。 如果我的部落格對你有幫助、如果你喜歡我的部落格內容,記得「點贊」 「評論」 「收藏」一鍵三連 哦!聽說點讚的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我部落格看看。