計算機網絡整理(超全)

一、網絡 7 層架構(ISO/OSI協議參考模型)

  1. 物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由 1、0 轉化爲電流強弱來進行傳輸,到達目的地後在轉化爲1、0,也就是我們常說的模數轉換與數模轉換)。這一層的數據叫做比特。
  2. 數據鏈路層:主要將從物理層接收的數據進行 MAC 地址(網卡的地址)的封裝與解封裝。常把這一層的數據叫做幀。在這一層工作的設備是交換機,數據通過交換機來傳輸。
  3. 網絡層:主要將從下層接收到的數據進行 IP 地址(例 192.168.0.1)的封裝與解封裝。在這一層工作的設備是路由器,常把這一層的數據叫做數據包。
  4. 傳輸層:定義了一些傳輸數據的協議和端口號(WWW 端口 80 等),如:TCP(傳輸控制協議,傳輸效率低,可靠性強,用於傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,與 TCP 特性恰恰相反,用於傳輸可靠性要求不高,數據量小的數據,如 QQ 聊天數據就是通過這種方式傳輸的)。 主要是將從下層接收的數據進行分段進行傳輸,到達目的地址後在進行重組。常常把這一層數據叫做段。
  5. 會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數據傳輸的通路。主要在你的系統之間發起會話或或者接受會話請求(設備之間需要互相認識可以是 IP 也可以是 MAC 或者是主機名)
  6. 表示層:主要是進行對接收的數據進行解釋、加密與解密、壓縮與解壓縮等(也就是把計算機能夠識別的東西轉換成人能夠能識別的東西(如圖片、聲音等))
  7. 應用層:主要是一些終端的應用,比如說FTP(各種文件下載),WEB(IE瀏覽),QQ之類的(你就把它理解成我們在電腦屏幕上可以看到的東西.就 是終端應用)。

在這裏插入圖片描述

二、TCP/IP 原理

TCP/IP 協議不是 TCP 和 IP 這兩個協議的合稱,而是指因特網整個 TCP/IP 協議族。從協議分層模型方面來講,TCP/IP 由四個層次組成:網絡接口層、網絡層、傳輸層、應用層。
在這裏插入圖片描述

1、網絡訪問層(Network Access Layer)

   網絡訪問層(Network Access Layer)在 TCP/IP 參考模型中並沒有詳細描述,只是指出主機必須使用某種協議與網絡相連。

2、網絡層(Internet Layer)

  網絡層(Internet Layer)是整個體系結構的關鍵部分,其功能是使主機可以把分組發往任何網絡,並使分組獨立地傳向目標。這些分組可能經由不同的網絡,到達的順序和發送的順序也可能不同。高層如果需要順序收發,那麼就必須自行處理對分組的排序。互聯網層使用因特網協議(IP,Internet Protocol)。

3、傳輸層(Tramsport Layer-TCP/UDP)

    傳輸層(Tramsport Layer)使源端和目的端機器上的對等實體可以進行會話。在這一層定義了兩個端到端的協議:傳輸控制協議(TCP,Transmission Control Protocol)和用戶數據報協議(UDP,User Datagram Protocol)。TCP 是面向連接的協議,它提供可靠的報文傳輸和對上層應用的連接服務。爲此,除了基本的數據傳輸外,它還有可靠性保證、流量控制、多路複用、優先權和安全性控制等功能。UDP 是面向無連接的不可靠傳輸的協議,主要用於不需要 TCP 的排序和流量控制等功能的應用程序。

4、應用層(Application Layer)

    應用層(Application Layer)包含所有的高層協議,包括:虛擬終端協議(TELNET,TELecommunications NETwork)、文件傳輸協議(FTP,File Transfer Protocol)、電子郵件傳輸協議(SMTP,Simple Mail Transfer Protocol)、域名服務(DNS,Domain Name Service)、網上新聞傳輸協議(NNTP,Net News Transfer Protocol)和超文本傳送協議(HTTP,HyperText Transfer Protocol)等

三、TCP 三次握手/四次揮手

1、三次握手

第一次握手: 主機 A 發送位碼爲 syn=1,隨機產生 seq number=1234567 的數據包到服務器主機 B,由 SYN=1 知道,A 要求建立聯機;
第二次握手: 主機 B 收到請求後要確認聯機信息,向 A 發 送 ack number=( 主 機 A 的seq+1),syn=1,ack=1,隨機產生 seq=7654321 的包
第三次握手: 主機 A 收到後檢查 ack number 是否正確,即第一次發送的 seq number+1,以及位碼ack 是否爲 1,若正確,主機 A 會再發送 ack number=(主機 B 的 seq+1),ack=1,主機 B 收到後確認。
在這裏插入圖片描述

2、四次揮手

  1. TCP 建立連接要進行三次握手,而斷開連接要進行四次。這是由於 TCP 的半關閉造成的。因爲 TCP 連接是全雙工的(即數據可在兩個方向上同時傳遞),所以進行關閉時每個方向上都要單獨進行關閉。這個單方向的關閉就叫半關閉。當一方完成它的數據發送任務,就發送一個 FIN 來向另一方通告將要終止這個方向的連接。
  2. 關閉客戶端到服務器的連接:首先客戶端 A 發送一個 FIN,用來關閉客戶到服務器的數據傳送,然後等待服務器的確認。其中終止標誌位 FIN=1,序列號 seq=u
  3. 服務器收到這個 FIN,它發回一個 ACK,確認號 ack 爲收到的序號加 1。
  4. 關閉服務器到客戶端的連接:也是發送一個 FIN 給客戶端。
  5. 客戶段收到 FIN 後,併發回一個 ACK 報文確認,並將確認序號 seq 設置爲收到序號加 1。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。
    在這裏插入圖片描述

主機 A 發送 FIN 後,進入終止等待狀態, 服務器 B 收到主機 A 連接釋放報文段後,就立即給主機 A 發送確認,然後服務器 B 就進入 close-wait 狀態,此時 TCP 服務器進程就通知高層應用進程,因而從 A 到 B 的連接就釋放了。此時是“半關閉”狀態。即 A 不可以發送給B,但是 B 可以發送給 A。此時,若 B 沒有數據報要發送給 A 了,其應用進程就通知 TCP 釋放連接,然後發送給 A 連接釋放報文段,並等待確認。A 發送確認後,進入 time-wait,注意,此時 TCP 連接還沒有釋放掉,然後經過時間等待計時器設置的 2MSL 後,A 才進入到close 狀態。

四、TCP 長連接與短連接

1、長連接和短連接使用原因

當網絡通信時採用TCP協議時,在真正的讀寫操作之前,server與client之間必須建立一個連接,當讀寫操作完成後,雙方不再需要這個連接時它們可以釋放這個連接,連接的建立是需要三次握手的,而釋放則需要4次揮手,所以說每個連接的建立都是需要資源消耗和時間消耗的。

2、HTTP的長連接和短連接

HTTP的長連接和短連接本質上是TCP長連接和短連接。

在HTTP/1.0中默認使用短連接。也就是說,客戶端和服務器每進行一次HTTP操作,就建立一次連接,任務結束就中斷連接。當客戶端瀏覽器訪問的某個HTML或其他類型的Web頁中包含有其他的Web資源(如JavaScript文件、圖像文件、CSS文件等),每遇到這樣一個Web資源,瀏覽器就會重新建立一個HTTP會話。

而從HTTP/1.1起,默認使用長連接,用以保持連接特性。使用長連接的HTTP協議,會在響應頭加入這行代碼:

Connection:keep-alive

在使用長連接的情況下,當一個網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP連接不會關閉,客戶端再次訪問這個服務器時,會繼續使用這一條已經建立的連接。Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同的服務器軟件(如Apache)中設定這個時間。實現長連接需要客戶端和服務端都支持長連接。

3、TCP—長連接

​ 所謂長連接,指在一個TCP連接上可以連續發送多個數據包,在TCP連接保持期間,如果沒有數據包發送,需要雙方發檢測包以維持此連接,一般需要自己做在線維持(不發生RST包和四次揮手)。

  • 連接→數據傳輸→保持連接(心跳)→數據傳輸→保持連接(心跳)→……→關閉連接(一個TCP連接通道多個讀寫通信);
  • 這就要求長連接在沒有數據通信時,定時發送數據包(心跳),以維持連接狀態;

​ TCP保活功能,保活功能主要爲服務器應用提供,服務器應用希望知道客戶主機是否崩潰,從而可以代表客戶使用資源。如果客戶已經消失,使得服務器上保留一個半開放的連接,而服務器又在等待來自客戶端的數據,則服務器將應遠等待客戶端的數據,保活功能就是試圖在服務器端檢測到這種半開放的連接。

4、TCP—短連接

​ 短連接是指通信雙方有數據交互時,就建立一個TCP連接,數據發送完成後,則斷開此TCP連接(管理起來比較簡單,存在的連接都是有用的連接,不需要額外的控制手段);

​ 連接→數據傳輸→關閉連接;

5、應用場景

​ **長連接:**多用於操作頻繁(讀寫),點對點的通訊,而且連接數不能太多情況,。每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接,再操作的話那麼處理速度會降低很多,所以每個操作完後都不斷開,次處理時直接發送數據包就OK了,不用建立TCP連接。

例如:數據庫的連接用長連接, 如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創建也是對資源的浪費。

​ **短連接:**像WEB網站的http服務一般都用短鏈接(http1.0只支持短連接,1.1keep alive 帶時間,操作次數限制的長連接),因爲長連接對於服務端來說會耗費一定的資源,而像WEB網站這麼頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都佔用一個連接的話,那可想而知吧。所以併發量大,但每個用戶無需頻繁操作情況下需用短連好;

五、 HTTP 原理

  HTTP 是一個無狀態的協議。無狀態是指客戶機(Web 瀏覽器)和服務器之間不需要建立持久的連接,這意味着當一個客戶端向服務器端發出請求,然後服務器返回響應(response),連接就被關閉了,在服務器端不保留連接的有關信息.HTTP 遵循請求(Request)/應答(Response)模型。客戶機(瀏覽器)向服務器發送請求,服務器處理請求並返回適當的應答。所有 HTTP 連接都被構造成一套請求和應答。

1、地址解析

如用客戶端瀏覽器請求這個頁面:http://www.lydms.com:8080/index.htm 從中分解出協議名、主機名、端口、對象路徑等部分,對於我們的這個地址,解析得到的結果如下:
協議名: http
主機名: www.lydms.com
端口: 8080
對象路徑: /index.htm
在這一步,需要域名系統 DNS 解析域名 localhost.com,得主機的 IP 地址。

2、封裝 HTTP 請求數據包

把以上部分結合本機自己的信息,封裝成一個 HTTP 請求數據包

3、封裝成 TCP 包並建立連接

封裝成 TCP 包,建立 TCP 連接(TCP 的三次握手)

4、客戶機發送請求命

客戶機發送請求命令:建立連接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶機信息和可內容。

5、服務器響應

服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括服務器信息、實體信息和可能的內容。

6、服務器關閉 TCP 連接

一般情況下,一旦 Web 服務器向瀏覽器發送了請求數據,它就要關閉 TCP 連接,然後如果瀏覽器或者服務器在其頭信息加入了這行代碼 Connection:keep-alive,TCP 連接在發送後將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了爲每個請求建立新連接所需的時間,還節約了網絡帶寬。

六、HTTPS

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP 通道,簡單講是 HTTP 的安全版。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL。其所用的端口號是 443。 過程大致如下:

1、SSL/TLS之間的關係

SSL 是英文“Secure Sockets Layer”的縮寫,中文叫做“安全套接層”。它是在上世紀90年代中期,由網景公司設計的。
爲啥要發明 SSL 這個協議呢?因爲原先互聯網上使用的 HTTP 協議是明文的,存在很多缺點——比如傳輸內容會被偷窺(嗅探)和篡改。發明 SSL 協議,就是爲了解決這些問題。

到了1999年,SSL 因爲應用廣泛,已經成爲互聯網上的事實標準。IETF 就在那年把 SSL 標準化。標準化之後的名稱改爲 TLS(是“Transport Layer Security”的縮寫),中文叫做“傳輸層安全協議”。

很多人都把這兩者並列稱呼(SSL/TLS),因爲這兩者可以視作同一個東西的不同階段

2、建立連接獲取證書

SSL 客戶端通過 TCP 和服務器建立連接之後(443 端口),並且在一般的 tcp 連接協商(握手)過程中請求證書。即客戶端發出一個消息給服務器,這個消息裏面包含了自己可實現的算法列表和其它一些需要的消息,SSL 的服務器端會迴應一個數據包,這裏面確定了這次通信所需要的算法,然後服務器向客戶端返回證書。(證書裏面包含了服務器信息:域名。申請證書的公司,公共祕鑰)。

3、證書驗證

Client 在收到服務器返回的證書後,判斷簽發這個證書的公共簽發機構,並使用這個機構的公共祕鑰確認簽名是否有效,客戶端還會確保證書中列出的域名就是它正在連接的域名。

4、數據加密和傳輸

如果確認證書有效,那麼生成對稱祕鑰並使用服務器的公共祕鑰進行加密。然後發送給服務器,服務器使用它的私鑰對它進行解密,這樣兩臺計算機可以開始進行對稱加密進行通信。

在這裏插入圖片描述

六、CDN 原理

CND 一般包含分發服務系統、負載均衡系統和管理系統。

1、分發服務系統

其基本的工作單元就是各個 Cache 服務器。負責直接響應用戶請求,將內容快速分發到用戶;同時還負責內容更新,保證和源站內容的同步。根據內容類型和服務種類的不同,分發服務系統分爲多個子服務系統,如:網頁加速服務、流媒體加速服務、應用加速服務等。每個子服務系統都是一個分佈式的服務集羣,由功能類似、地域接近的分佈部署的 Cache 集羣組成。在承擔內容同步、更新和響應用戶請求之外,分發服務系統還需要向上層的管理調度系統反饋各個Cache 設備的健康狀況、響應情況、內容緩存狀況等,以便管理調度系統能夠根據設定的策略決定由哪個 Cache 設備來響應用戶的請求。

2、負載均衡系統

負載均衡系統是整個 CDN 系統的中樞。負責對所有的用戶請求進行調度,確定提供給用戶的最終訪問地址。使用分級實現。最基本的兩極調度體系包括全局負載均衡(GSLB)和本地負載均衡(SLB)。GSLB 根據用戶地址和用戶請求的內容,主要根據就近性原則,確定向用戶服務的節點。一般通過 DNS解析或者應用層重定向(Http 3XX 重定向)的方式實現。SLB 主要負責節點內部的負載均衡。當用戶請求從 GSLB 調度到 SLB 時,SLB 會根據節點內各個Cache 設備的工作狀況和內容分佈情況等對用戶請求重定向。SLB 的實現有四層調度(LVS)、七層調度(Nginx)和鏈路負載調度等。

3、管理系統

分爲運營管理和網絡管理子系統。網絡管理系統實現對 CDN 系統的設備管理、拓撲管理、鏈路監控和故障管理,爲管理員提供對全網資源的可視化的集中管理,通常用 web 方式實現。運營管理是對 CDN 系統的業務管理,負責處理業務層面的與外界系統交互所必須的一些收集、整理、交付工作。

包括用戶管理、產品管理、計費管理、統計分析等。

七、TCP/IP協議族

TCP/IP只提供無連接、不可靠的服務。

傳輸之前需要進行三次握手。

IP的主要功能包括將上層數據(如TCP、UDP數據)或者同層的其它數據(如ICMP數據)封裝到IP數據報中,將IP數據報傳送到最終目的地;爲了使數據能夠在鏈路層上進行傳輸,對數據進行分段,確定數據報到達其它網絡中的目的地的路徑。

1、應用層協議—文件傳輸服務(FTP)

用來在計算機之間傳輸文件。

實際Internet的FTP服務是一種匿名(anonymous)FTP服務,設置一個特殊的用戶名-anonymous,供公衆使用。

匿名登錄到FTP服務器後,其工作方式與常規FTP相同。通常處於安全目的,大多數匿名FTP服務器只允許下載,不允許上傳文件。

FTP在客戶端到服務器建立2條TCP連接,一條是控制連接,主要用於傳輸命令和參數(端口21);另一條是數據連接,主要用於傳輸文件(端口號20)。

2、應用層協議—遠程登錄協議(Telnet)

遠程登錄服務實在Telnet協議的支持下,將用戶計算機和遠程主機連接起來,在遠程計算機上運行程序,用戶輸入的信息通過Telnet協議發送給遠程主機,主機在TCP端口監聽用戶請求,並處理後,將結果通過Telnet協議返回給客戶。客戶再經過適當的轉換顯示在計算機屏幕上。因爲使用Telnet命令進行遠程登錄,所有稱爲Telnet遠程登錄。

由客戶端軟件、服務器軟件以及Telnet通用協議三部分組成。

3、應用層協議—電子郵件協議(SMTP)

電子郵件(E-mail)利用計算機進行信息交換的電子媒體信件。

基於客戶端/服務器模式,有E-mail客戶端軟件、E-mail服務器、通信協議三部分組成。發送郵件,首先到達自己註冊的郵件服務器主機,再在網絡傳輸中經過多個計算機和路由中轉到達目的地的郵件服務器主機,進入收件人的電子郵箱,最後郵件的接收者上網並啓動電子郵件管理程序,會自動下載到自己計算機,完成接受郵件。

SMTP:簡單郵件傳輸協議

MIME:Internet郵件擴充協議

PEM:增強私密郵件保護協議

POP:來保管用戶未能及時取走的郵件,簡單的純文本協議,每次傳輸以正規E-mail爲單位,不提供部分傳輸。

4、傳輸層協議—TCP

在IP提供的不可靠數據服務的基礎上爲應用程序提供一個可靠的、面向連接的、全雙工的數據傳輸服務。TCP在源主機和目的之間建立和關閉連接操作是,均需要通過三次握手來確認建立和關閉是否成功。TCP雖然提供了一個可靠的數據傳輸服務,但是以犧牲通信量來實現的。

**TCP採用了重發技術:**發送數據時,啓動定時器,在規定時間內沒有收到確認信息,就重新發送數據包。

5、傳輸層協議—UDP

用戶數據報協議是一種不可靠、無連接的協議,與同層面向連接的TCP相比,UDP是一種無連接的協議(無錯誤檢測功能)。TCP有助於提供可靠的連接,UDP有助於提高傳輸的高速率性。不負責重新發送丟失的包,不對接收的數據進行排序,不消除重複的IP數據報,不負責建立和終止連接。(都是UDP應用程序負責的)

TCP:交互式會話應用程序(FTP等)。

UDP:自己進行錯誤檢測、不需要檢測錯誤(DNS、SNMP)。

6、網際層協議—IP

IP只提供無連接、不可靠的服務,把差錯檢測和流量控制之類的服務授權給了其他層的協議。
IP的主要功能:

  1. 將上層數據(TCP、UDP數據)或同層其他數據(ICMP數據)封裝到IP數據報中;
  2. 將IP數據報傳送到最終目的地;
  3. 爲了使數據能夠在鏈路層上進行傳輸,對數據進行分段;
  4. 確定數據報到達其它網絡中的目的地的路徑。

7、網際層協議—ICMP

Internet控制信息協議,用於發送查錯報文的協議。ICMP讓IP更加穩固。也是利用IP來傳送報文的。ping工具就是利用ICMP報文進行目標是否可達測試。

5種差錯報文:(源抑制、超時、目的不可達、重定向和要求分段)

4種信息報文:迴應請求、迴應應答、地址屏蔽碼請求和地址屏蔽碼應答。

8、網際層協議—ARP和RARP

地址解析協議(ARP)和反地址解析協議(RARP)

ARP的作用是將IP地址轉爲物理地址,RARP的作用是將物理地址轉爲IP地址。每臺設備都有唯一的物理地址(通過網卡給出),爲了屏蔽底層協議及物理地址上的差異,IP協議又使用了IP地址。因此,在傳輸過程中,必須對IP地址和物理地址進行相互轉換。

9、網絡接口層協議—以太網(Ethernet IEEE 802.3

Ethernet IEEE 802.3:標準局域網,速度10Mps,傳輸介質爲銅纜。
Ethernet IEEE 802.3u:快速以太網,速度100Mps,傳輸介質爲雙絞線。
Ethernet IEEE 802.3z:千兆以太網,速度1000Mps,傳輸介質爲光纖或雙絞線。

10、網絡接口層協議—令牌環網(Ethernet IEEE 802.5)

1、只有擁有令牌纔可以發送數據。

2、發送數據時,需要捕獲一個令牌。

3、令牌不爲空,需要等待。

11、網絡接口層協議—光纖分佈式數據接口(FDDI)

以光纖爲傳輸介質。

採用雙環體系結構,兩環上的信息反方向流動。雙環中一環稱爲主環,另一個環稱爲次環。正常情況下,主環傳輸數據,次環處於空閒狀態。

雙環設計的目的是提供高可靠性和穩定性。FDDI定義的傳輸介質有單模光纖和多模光纖兩種。

12、網絡接口層協議—點對點協議(PPP)

主要用於”撥號上網“這種廣域連接模式。優點簡單、具備用戶驗證功能、可以解決IP分配等。爲各種主機、網橋和路由器之間簡單連接的一種通用解決方案。

利用以太網(Ethernet)資源在以太網上運行PPP來進行用戶認證接入的方式成爲PPPoE。是目前ADSL接入方式中最廣泛的技術標準。

ATM網絡撒花姑娘運行PPP來管理用戶再認證的方式成爲PPPoA。

PPPoA和PPPoE運行原理相同,不同的是運行環境的不同。

13、其他—ADSL(非對稱用戶數據線)

ADSL Modem上網撥號方式有3中,即專線方式(靜態IP)、PPPoA和PPPoE。

ADSL獨享帶寬,安全可靠。費用低廉,使用過去的電話線路,可以分離電話機和ADSL Modem(上網)。

14、其他—IPv4和IPv6

IPv4:32位二進制,能表示IP地址個數:2^32=40億

IPv6:128位二級制,能表示IP地址個數:2128=3.4*1038。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章