網絡協議
C\S架構,B\S架構
C:客戶端Client
B:瀏覽器Browser
S:服務器Server
C\S架構就是說Client\Server架構:比如QQ,微信,游戲等(軟件);打印機(硬件)
? 優點: 安全性高,個性化設置,功能全面.響應速度快.
? 缺點: 開發成本高,維護成本高.(基于App),面向的客戶固定.
B\S架構就是說Browser\Server架構:瀏覽器和各個網站服務端進行的通信
? 優點: 開發維護成本低,,面向用戶廣泛.
? 缺點: 安全性相對低,響應速度相對慢,個性化的設置單一.
osi七層協議
互聯網的本質
兩臺計算機之間的通信如下:
- 首先通過各種物理連接介質連接
- 找準對方計算機(準確到軟件)的位置
- 通過統一的標準(一攬子協議)進行數據的收發
osi七層協議
互聯網協議按照功能不同分為osi七層或TCP/IP五層或TCP/IP四層
每層常見物理設備及主要作用:
物理層
計算機之間要通信必須完成組網,而物理層就是數據傳輸的物理介質
物理層功能:主要是基于電氣特性發送高低電平(電信號),高電平對應數字1,低電平對應0
數據鏈路層
數據鏈路層功能:將數據封裝成幀,將電信號按幀分組
以太網協議
以太網協議規定一組電信號構成一個數據報,叫做幀,每個數據幀分成報頭head和數據data兩部分
head包含:(固定18個字節)
? 發送者/源地址,6個字節
? 接收者/目標地址,6字節
? 數據類型,6字節
data包含:(最短46字節,最長1500字節)數據包的具體內容
head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送
mac地址
即網卡地址,長度為48位2進制,通常由12位16進制數表示(前6位是廠商編號,后6位是流水線編號)
同一網絡中當A用戶第一次向B用戶發送數據時(通過arp協議獲取B的mac地址,并將源mac與目標mac封裝到幀中),采用的就是廣播方式,所有用戶都會收到A發出的數據,通過對數據幀拆分找到目標mac并與自己比較,如果一致則接收,如果不一致就丟棄。
ARP協議
ARP協議功能:廣播的方式發送數據包,獲取目標主機的mac地址
協議工作方式:每臺主機IP都是已知的,例如:主機172.16.10.10/24訪問172.16.10.11/24
首先通過IP地址和子網掩碼區分出自己所處的子網
如果是同一子網,在數據包地址中封裝目標主機mac及目標主機IP
如果是不同子網,在數據包地址中封裝網關mac及目標IP
分析172.16.10.10/24與172.16.10.11/24處于同一網絡(如果不是同一網絡,那么下表中目標ip為172.16.10.1,通過ARP獲取的是網關的mac)
源mac | 目標mac | 源IP | 目標IP | |
---|---|---|---|---|
發送端主機 | 發送端mac | FF:FF:FF:FF | 172.16.10.10/24 | 172.16.10.11/24 |
這個包會以廣播的方式在發送端所處的子網內傳輸,所有主機接收后拆包,發現目標IP為自己就響應,并返回自己的mac
網絡層
網絡層功能:引入網絡地址用來區分不同的局域網
IP協議
? 規定網絡地址的協議叫IP協議,它定義的地址叫IP地址,廣泛使用IPv4,它規定網絡地址由32位2進制表示,范圍0.0.0.0—255.255.255.255;一個IP地址通常寫成四段十進制數,例:172.16.10.1
IP地址分兩部分
網絡部分:標識子網
主機部分:標識主機
單純的IP地址段只是標識了IP地址的種類,從網絡部分或主機部分都無法辨識一個IP所處的子網
子網掩碼
表示子網絡特征的一個參數。是一個32位的二進制數字,網絡部分全部為1,主機部分全部為0比如,IP地址172.16.10.1,如果已知網絡部分是前24位,主機部分是后8位,那么子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。
通過將兩個IP地址與子網掩碼分別進行and運算,然后比較結果是否相同,可以判定這兩個IP是否是同一子網絡。比如:
'''比如,已知IP地址172.16.10.1和172.16.10.2的子網掩碼都是255.255.255.0,請問它們是否在同一個子網絡?''' #兩者與子網掩碼分別進行AND運算, 172.16.10.1:10101100.00010000.00001010.000000001 255255.255.255.0:11111111.11111111.11111111.00000000 AND運算得網絡地址結果:10101100.00010000.00001010.000000001->172.16.10.0 172.16.10.2:10101100.00010000.00001010.000000010 255255.255.255.0:11111111.11111111.11111111.00000000 AND運算得網絡地址結果:10101100.00010000.00001010.000000001->172.16.10.0 #結果都是172.16.10.0,因此它們在同一個子網絡。
作用:
為每臺計算機分配IP地址
確定哪些地址在同一子網絡
IP數據包
IP數據包也分為head和data部分,無需為IP包定義單獨的欄位,直接放入以太包的data部分
head:長度為20到60 字節
data:最長為65515字節
而以太網數據包的“數據”部分,最長只有1500字節,因此,如果IP數據包超過了1500字節,就需要分割成幾個以太網數據包分開發送
傳輸層
傳輸層功能:建立端口到端口的通信,端口即應用程序與網卡關聯的編號(范圍0—65535,0—1023為系統占用端口)
TCP協議
? 可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但為了保證網絡效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割
TCP報文
序號:Seq序號,占32位,用來標識TCP源端向目的端發送的字節流,發送數據時對此進行標記。
確認序號:Ack序號,占32位,只有Ack標志位為1時,確認序號字段才有效,Ack=Seq+1
標志位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
URG:緊急指針有效
ACK:確認序號有效
PSH:接收方應該盡快將這個報文交給應用層
RST:重置連接
SYN:發起一個新的連接
FIN:釋放一個連接
不要將確認序號Ack與標志位ACK搞混;確認方Ack=發起方Req+1,兩端配對
三次握手
? TCP在建立連接時需卻認通信雙方的收發信息的能力是正常的,因此需要進行多次驗證,俗稱“三次握手”。
? 所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。在socket編程中,這一過程由客戶端執行connect來觸發,整個流程如下圖所示:
? (1)第一次握手:Client將標志位SYN置為1,隨機產生一個值seq=x,并將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
? (2)第二次握手:Server收到數據包后由標志位SYN=1知道Client請求建立連接,Server將標志位SYN和ACK都置為1,ack=x+1,隨機產生一個值seq=K,并將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。
? (3)第三次握手:Client收到確認后,檢查ack是否為x+1,ACK是否為1,如果正確則將標志位ACK置為1,ack=y+1,并將該數據包發送給Server,Server檢查ack是否為y+1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨后Client與Server之間可以開始傳輸數據了。
四次握手
? 所謂四次揮手(Four-Way Wavehand)即終止TCP連接,就是指斷開一個TCP連接時,需要客戶端和服務端總共發送4個包以確認連接的斷開。在socket編程中,這一過程由客戶端或服務端任一方執行close來觸發,整個流程如下圖所示:
? 由于TCP連接時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成數據發送任務后,發送一個FIN來終止這一方向的連接,收到一個FIN只是意味著這一方向上沒有數據流動了,即不會再收到數據了,但是在這個TCP連接上仍然能夠發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,上圖描述的即是如此。
? (1)第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
? (2)第二次揮手:Server收到FIN后,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態。
? (3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
? (4)第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。
SYN攻擊:
在三次握手過程中,Server發送SYN-ACK之后,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),此時Server處于SYN_RCVD狀態,當收到ACK后,Server轉入ESTABLISHED狀態。SYN攻擊就是Client在短時間內偽造大量不存在的IP地址,并向Server不斷地發送SYN包,Server回復確認包,并等待Client的確認,由于源地址是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間占用未連接隊列,導致正常的SYN請求因為隊列滿而被丟棄,從而引起網絡堵塞甚至系統癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接狀態且源IP地址是隨機的,則可以斷定遭到SYN攻擊了.
特點:TCP(Transmission Control Protocol)可靠的、面向連接的協議(eg:打電話)、傳輸效率低全雙工通信(發送緩存&接收緩存)、面向字節流。使用TCP的應用:Web瀏覽器;文件傳輸程序。
UDP協議
不可靠傳輸,“報頭”部分一共只有8字節,總長度不超過65535字節,正好放進一個IP數據包。
特點:UDP(User Datagram Protocol)不可靠的、無連接的服務,傳輸效率高(發送前時延小),一對一、一對多、多對一、多對多、面向報文(數據包),盡最大努力服務,無擁塞控制。使用UDP的應用:域名系統 (DNS);視頻流;IP語音(VoIP)。
應用層
應用層功能:規定應用程序的數據格式。
例:TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那么,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了”應用層”。
編輯:hfy
-
IP協議
+關注
關注
3文章
85瀏覽量
21647 -
子網掩碼
+關注
關注
2文章
41瀏覽量
11019 -
UDP協議
+關注
關注
0文章
69瀏覽量
12694 -
TCP協議
+關注
關注
1文章
91瀏覽量
12070
發布評論請先 登錄
相關推薦
評論