計算機網絡是一門很重要的專業課,我把之前上課學習的內容和常見的一些問題做了簡單的彙總,記錄在此,方便自己以後查閱以及供其他需要者參考。
1.OSI,TCP/IP以及五層協議的體系結構
- 物理層:主要定義物理設備的標準,例如網線的接口類型、光線的接口類型、各種傳輸介質的傳輸速率等
-
數據鏈路層:定義瞭如何讓數據格式化並進行傳輸,通常還提供了錯誤檢測和糾正,以保證數據的可靠傳輸。
-
網絡層:在位於不同地理位置的網絡中的兩個主機之間提供連接和路徑選擇
-
運輸層:定義了一些傳輸數據的協議和端口號,如:傳輸控制協議TCP和用戶數據報協議UDP
-
會話層:通過運輸層建立數據傳輸的通路,主要在系統之間發起會話或者就受會話請求(設備之間需要相互知道對方的IP地址或者MAC地址或者主機名)。
-
表示層:可以確保一個系統的應用層所發送的信息可以被另一個系統的應用層讀取,如有必要,表示層會通過使用一種通用格式來實現多種數據格式之間的轉換。
-
應用層:是最靠近用戶的OSI層,爲用戶的應用程序提供網絡服務
2.TCP的三次握手和四次揮手
TCP進行三次握手的目的是爲了建立可靠通信,確保數據的發送和接收正常。
- 第一次握手:客戶端發送帶有SYN標誌的數據包給服務器
- 第二次握手:服務器發送帶有SYN/ACK標誌的數據包給客戶端
- 第三次握手:客戶端發送帶有ACK標誌的數據包給服務器
(用通俗的話來說就是A跟B說我要和你建立連接,B跟A說你要和我建立連接嗎,A回答B說我真的要和你建立連接)
建立連接成功,傳輸完數據,任何一方都可以發出釋放連接的請求,而連接的釋放需要經過四次揮手
- 第一次揮手:客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送
- 第二次揮手:服務器收到這個FIN,發回一個ACK,確認序號爲收到的序號加一
- 第三次揮手:服務器關閉與客戶端的連接,發送一個FIN給客戶端
- 第四次揮手:客戶端發回ACK報文確認,並將確認序號設置爲收到的序號加一
發送方發送釋放連接的請求之後,接收方確認了請求,發送方就會進入半關閉狀態,當接收方也沒有數據要發送時,就也會發出釋放連接的通知,在另一方確認之後就完全關閉了TCP連接。
(比如A和B打電話,電話快打完的時候,A會和B說我的話都說完了,B回答說我知道了,但是B可能還有話要說,等B把該說的都說完了,B纔對A說我也講完了,A回答知道了,這樣通話纔算結束)
3.TCP協議如何保證傳輸的可靠性
對於可靠性,TCP通過以下方式進行保證:
-
數據包校驗:檢測數據在傳輸過程中的任何變化,若校驗有差錯,TCP將丟棄這個報文段並且不給出響應,不會確定接受到這個報文段
-
對失序數據包重排序:TCP報文段作爲IP數據報來傳輸,而IP數據報的到達可能會失序。應用數據被TCP分成一個個數據包,並對每一個包進行編號,接收方會對數據包進行排序,再把有序的數據傳送給應用層。
-
擁塞控制:當網絡擁塞時,會減少數據的發送
-
超時重傳:當TCP發出一個報文段後,會啓動一個定時器,等待接收端確認收到這個報文段,如果不能及時確認收到消息,將重發這個報文段
-
流量控制:TCP連接的每一方都有固定大小的緩衝空間,TCP的接收端只允許發送端發送接收端緩衝區所能接納的數據,當接收方來不及處理髮送方發來的數據時,能提示發送方降低發送速率,防止包丟失
4.TCP協議和UDP協議的區別
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬於傳輸層協議,它們之間的區別主要爲:
-
TCP是面向連接的,可靠的,在傳送數據之前必須先建立連接,傳送數據結束後要釋放連接,以字節流方式傳輸,只支持點對點通信,傳輸效率低,一般應用於文件傳輸,郵件傳輸等
-
UDP是無連接的,不可靠的,在傳送數據之前不需要先建立連接,以報文方式傳輸,支持一對一、一對多、多對一、多對多的通信模式,傳輸效率高,一般用於視頻通話,直播等
5.對稱加密與非對稱加密的區別
- 對稱加密:密鑰只有一個,加密和解密使用的是同一個密鑰,加密速度快,這種方式存在的最大問題就是密鑰發送問題,即如何安全地將密鑰發給對方,典型的對稱加密算法有DES和AES等
- 非對稱加密:密鑰是成對的,即有公鑰和私鑰,公鑰可以公開,但私鑰只有自己知道。發送密文的一方使用對方的公鑰進行加密處理,對方接收到加密信息後,再用自己的私鑰進行解密,典型的非對稱加密算法有RSA和DSA等
因爲非對稱加密的不需要發送用來解密的私鑰,所以可以保證其安全性;但是和對稱加密相比,速度較慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去。