計算機網絡通信 總結


 

OSI參考模型

在這裏插入圖片描述

物理層
①定義物理設備的標準,比如網線的類型、光纖接口的類型、各種傳輸介質的傳輸速率;②傳輸比特流,將比特流(二進制數據)轉換爲電信號、光信號進行傳輸,到達目的地後再轉換爲比特流,即模數轉換、數模轉換。網卡就是工作在這一層的
 

數據鏈路層
①傳輸比特流時可能會發生錯傳、數據傳輸不完整的問題,數據鏈路層定義瞭如何格式化數據、如何訪問物理機,提供錯誤檢測、糾正的功能,確保傳輸的可靠性;②將比特數據組裝成幀進行傳輸,交換機工作在這一層,交換機收到後對幀解碼,根據幀中包含的物理機信息把幀發送給正確的接收方
 

網絡層
①將網絡地址(ip地址)翻譯成對應的物理地址(mac地址),並決定數據如何從發送方路由到接收方,通過綜合考慮發送優先權、網絡擁塞程度、服務質量以及可選路由的時間花費,選擇從發送方到接收方的最佳路徑,路由器屬於這一層,這一層的數據稱爲數據包,這一層的主要協議是tcp/ip中的ip協議
 

傳輸層
傳輸層是OSI7層模型中最重要的一層,解決了主機將的數據傳輸、傳輸質量問題。①基於流量控制、接收方可接收數據的快慢程度規定適當的發送速率,②按照網絡傳輸的最大尺寸(帶寬),將數據強制切割爲較小的數據片,並對數據片編號,接收方收到數據片後根據編號排序,組裝數據片得到完整數據。這一層的主要協議是tcp/ip中的tcp、udp協議
 

會話層
管理應用程序之間的通信,自動收發包、自動尋址
 

表示層
進行數據的格式化、編碼解碼、加密解密、壓縮解壓
 

應用層
規定發送方、接收方必須使用固定長度的消息頭,消息頭必須含有指定部分,消息頭必須記錄消息體的數據長度等信息,以使應用更加方便地使用接收到的數據。這一層的主要協議是tcp/ip中的http協議
 

在這裏插入圖片描述

在這裏插入圖片描述
發送方是自上而下,接收方是自下而上。

 

TCP/IP

TCP/IP是一個協議簇,不僅僅是TCP、IP協議。OSI相當於網絡通信的規範,側重於理論設計,TCP/IP相當於具體實現,側重於實現。
在這裏插入圖片描述

在這裏插入圖片描述
處理頭部數據:發送方自上而下,接收方自下而上。
 
ip協議負責將數據包路由到目的地,但ip協議沒有確認數據包是否按順序發送、是否被破壞,ip協議是不可靠的,需要由上層協議來做出控制。

 

TCP

TCP是一種傳輸控制協議
 

TCP的報文結構

在這裏插入圖片描述
ip唯一標識主機,port唯一標識主機上的程序,ip、port共同組成套接字(socket)。

序號即數據包的編號,用於確認數據包是否丟失。滑動窗口用於控制流量、數據發送速率。校驗和用於確認數據包中的數據是否無誤。

 

TCP的特點

  • 面向連接、可靠、基於字節流,將應用層的數據流分割爲報文段,通過ip協議路由到目的地
  • 區分客戶端、服務端
  • 支持滑動窗口,通過滑動窗口來控制流量、數據發送速率
  • 支持錯誤重傳。tcp將數據包編號,對方收到則返回ack確認,如果在指定時間內未返回ack確認,則認爲傳輸失敗自動重傳,以此保證數據包不丟失(完整性)
  • 使用奇偶校驗和來檢驗數據是否有誤,保證數據的正確性。發送、接收時都要計算校驗和,比較發送、接收的奇偶校驗和是否一致

 

TCP的3次握手

爲什麼需要3次握手才能建立起連接?

爲了初始化Sequence Number,通信雙方都要告知對方自己的Sequence Number值,這個值要作爲後續數據通信的序號,tcp用這個值來拼接數據、保證接收到的數據不會亂序。

在這裏插入圖片描述

在這裏插入圖片描述

 

TCP的4次揮手

4次揮手由客戶端、服務端任一方的close()觸發。
 

爲什麼需要4次揮手才能斷開連接?
因爲tcp是全雙工的,發送方、接收方都需要FIN報文、ACK報文,2*2=4。全雙工:雙方都可以發送數據、接收數據,半雙工:只能一方發送、一方接收。

在這裏插入圖片描述

在這裏插入圖片描述
 

爲什麼會有TIME_WAIT狀態?

  • 確保有足夠的時間讓對方收到ack包
  • 避免新舊連接混淆

 

查看TIME_WAIT、CLOSE_WAIT、FIN_WAIT、ESTABLISHED"的數量

netstat -n | awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}'

 

服務器出現大量TIME_WAIT狀態的原因?

客戶端關閉socket,服務器忙於讀、寫,沒有及時關閉連接。解決方式:

  • 檢查釋放資源部分的代碼
  • 檢查處理請求的線程配置

 

UDP

UDP的報文結構

在這裏插入圖片描述
 

UDP特點

  • 不面向連接,不維護連接狀態,可以同時向多個主機發送同一條消息
  • 數據包小,不支持滑動窗口、錯誤重傳,傳輸速度更快
  • 不區分客戶端、服務端
  • 是不可靠傳輸,盡最大努力交付,不保證交付成功

 

TCP、UDP的區別

  • tcp面向連接、要維護連接狀態,區分客戶端、服務端;UDP不面向連接、不維護連接狀態,不區分客戶端、服務端
  • tcp提供可靠傳輸,udp不可靠,只是盡最大努力交付
  • tcp接收報文無序,但最終要報頭攜帶的序號進行組裝,udp無序
  • tcp報頭體積大,udp報頭體積小
  • tcp速度慢,udp速度快

 

HTTP

http是超文本傳輸協議
 

HTTP的請求結構

在這裏插入圖片描述
 

HTTP的響應結構

在這裏插入圖片描述
 

HTTP 請求-響應過程

  • 客戶端連接到web服務器
  • 客戶端發送http請求
  • 服務器接收http請求並返回響應
  • 釋放tcp連接
  • 客戶端解析響應

 

瀏覽器地址欄輸入url,按下Enter以後的過程

  • dns解析,獲取域名對應的ip地址
  • 建立tcp連接
  • 瀏覽器發送http請求
  • 服務器處理請求並返回http報文
  • 瀏覽器解析響應
  • 連接結束

 

HTTP狀態碼

  • 1xx:服務器已接收請求,正在處理
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客戶端錯誤
  • 5xx:服務端錯誤

 

HTTP的特點

  • 使用客戶端/服務器模式
  • 簡單快速、靈活
  • 無連接、無狀態(不維護連接狀態)

 

GET、POST的區別

  • http報文層面:get將請求參數放在url中,不安全,攜帶的數據有限制;post放在請求體中,安全,攜帶的數據量無限制
  • 數據庫層面:get冪等、安全,post非冪等、不安全
  • 緩存:get請求可以被緩存、收藏,post則不能

 

Session、Cookie

http不能保持連接狀態,用會話保存用戶信息,常用的會話技術有2種:Cookie、Session。
 

Cookie
當用戶訪問某個網站時,服務器用cookie存儲用戶信息,把cookie放在響應頭中傳給瀏覽器,瀏覽器把cookie存儲到本地計算機上。當用戶再次訪問該網站時,瀏覽器自動在請求頭中加上該網站的cookie,cookie隨http請求一起發送給該網站的服務器,服務器解析請求頭中的cookie,獲取用戶信息。

 

Session
使用session對象存儲會話信息,保存在服務器內存中,使用SessionId來唯一標識一個session對象 ,SessionId通過Cookie技術進行存儲。服務器自動把SessionId放到cookie中保存到瀏覽器上,瀏覽器訪問網站時自動在http請求頭中攜帶該網站的cookie,服務器自動從請求頭的cookie中獲取SessionID,確定對應的session對象。

session超時:如果客戶端、服務器在指定時間(默認30min)內未進行過通信,服務器會自動刪除內存中對應的session對象。如果session中可能有需要持久化的數據,應該設置監聽,session超時時自動持久化session中的數據到數據庫。

 

Cookie、Sessio的比較

  • cookie把會話信息保存在瀏覽器上,session把會話信息保存在服務器上內存中
  • cookie把數據存儲在用戶計算機上,不安全;session把數據存儲在服務器上,更加安全,但會加大服務器的內存開銷
  • 如果考慮減輕服務器負擔,使用cookie

 

HTTP、HTTPS

在這裏插入圖片描述http請求發送的數據、http響應返回的數據很容易被截獲,https是安全版的http,在http的基礎上增加了安全防護。

ssl (安全套接層)是爲網絡通信安全、數據完整性提供的一種協議,是操作系統對外提供的API,ssl3.0後更名爲tls,ssl採用身份驗證、數據加密保證網絡通信的安全、數據的完整性。

 

加密方式

  • 對稱加密:加密、解密使用同一個祕鑰。安全性低但性能高
  • 非對稱加密:加密、解密使用的祕鑰不相同,分爲公鑰、私鑰,使用其中一個來加密,另一個來解密。安全性高但性能低。
  • 哈希算法:將任意長度的數據轉換爲固定長度的值,算法不可逆,常見的比如md5加密
  • 數字簽名:在原數據的末尾添加一段加密後的哈希值,以確保數據不被修改,證明數據、文件的身份

單一使用某種加密算法不安全,https使用加密算法+證書的方式。

 

https的數據傳輸過程
在這裏插入圖片描述
 

http、https的區別
在這裏插入圖片描述
https比http安全很多,但不是絕對安全。

 

IP是網絡層協議,TCP、UDP是傳輸層協議,HTTP是應用層協議

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