天天看點

@網絡通信原理

文章目錄

  • ​​一. 網際網路的一些網絡協定​​
  • ​​1.作業系統簡述:​​
  • ​​1>.網絡介紹:​​
  • ​​2>.什麼是網絡:​​
  • ​​2.計算機網際網路協定簡述​​
  • ​​3 .網際網路協定的功能:​​
  • ​​4.網際網路七層協定:​​
  • ​​5.網際網路七層協定詳解:​​
  • ​​1)實體層:​​
  • ​​2)資料鍊路層:​​
  • ​​1>以太網協定:​​
  • ​​2>mac位址:​​
  • ​​3.>區域網路廣播:​​
  • ​​3).網絡層:​​
  • ​​4>.ip資料包:​​
  • ​​5>.ARP協定:​​
  • ​​4)傳輸層:​​
  • ​​5).應用層:​​

一. 網際網路的一些網絡協定

1.作業系統簡述:

對于隻設有硬體的上的作業系統,還有裝上軟體才可以正常使用,但是然而你自己隻能使用一些硬體之上計算機每個人都有屬于自己的計算機,然而卻彼此孤立,無法通信。      
@網絡通信原理

1

1>.網絡介紹:

用戶端與伺服器:     Client -------網絡--------- Server

浏覽器與伺服器:  Browser ------網絡---------- Server      

2>.什麼是網絡:

網絡=實體連結媒體+網際網路通信協定      

2.計算機網際網路協定簡述

計算機本身是獨立的,為了打破局限,就誕生了網際網路協定(internet)

  一系列統一的标準,這些标準稱之為網際網路協定,網際網路的本質就是一系列的協定,總稱為‘網際網路協定’(Internet Protocol Suite).      

3 .網際網路協定的功能:

定義計算機如何接入internet,以及接入internet的計算機通信的标準。
對于網際網路協定,其實可以劃分為七層協定
例如:網際網路協定按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層      
@網絡通信原理

4.網際網路七層協定:

OSI七層協定資料傳輸的封包與解包過程      
@網絡通信原理
四層協定運作時基本連接配接的實體裝置      
@網絡通信原理

5.網際網路七層協定詳解:

@網絡通信原理
1)實體層:
(電信号),高電壓對應數字1,低電壓對應數字0      
@網絡通信原理
2)資料鍊路層:
資料鍊路層由來:單純的電信号0和1沒有任何意義,必須規定電信号多少位一組,每組什麼意思
   資料鍊路層的功能:定義了電信号的分組方式      

1>以太網協定:

早期的時候各個公司都有自己的分組方式,後來形成了統一的标準,即以太網協定ethernet

ethernet規定

一組電信号構成一個資料包,叫做‘幀’
每一資料幀分成:報頭head和資料data兩部分      
head data
頭部 資料本身
head包含:(固定18個位元組)
發送者/源位址,6個位元組
接收者/目标位址,6個位元組
資料類型,6個位元組
data包含:(最短46位元組,最長1500位元組)      

2>mac位址:

head中包含的源和目标位址由來:ethernet規定接入internet的裝置都必須具備網卡,發送端和接收端的位址便是指網卡的位址,即mac位址

mac位址:每塊網卡出廠時都被燒制上一個世界唯一的mac位址,長度為48位2進制,通常由12位16進制數表示(前六位是廠商編号,後六位是流水線号)      
@網絡通信原理

3.>區域網路廣播:

有了mac位址,同一網絡内的兩台主機就可以通信了(一台主機通過arp協定擷取另外一台主機的mac位址)

ethernet采用最原始的方式,廣播的方式進行通信,即計算機通信基本靠吼      
@網絡通信原理
3).網絡層:
網絡層由來:有了ethernet、mac位址、廣播的發送方式,世界上的計算機就可以彼此通信了,問題是世界範圍的網際網路是由

一個個彼此隔離的小的區域網路組成的,那麼如果所有的通信都采用以太網的廣播方式,那麼一台機器發送的包全世界都會收到,

這就不僅僅是效率低的問題了,這會是一種災難

#采用路由的方式(向不同廣播域/子網分發資料包),mac位址是無法區分的,它隻跟廠商有關

#網絡層功能:引入一套新的位址用來區分不同的廣播域/子網,這套位址即網絡位址      
@網絡通信原理
1>.IP協定:
規定網絡位址的協定叫ip協定,它定義的位址稱之為ip位址,廣泛采用的v4版本即ipv4,它規定網絡位址由32位2進制表示
範圍0.0.0.0-255.255.255.255
一個ip位址通常寫成四段十進制數,例:172.16.10.1      
2>.ip位址分成兩部分:
網絡部分:辨別子網
主機部分:辨別主機
注意:單純的ip位址段隻是辨別了ip位址的種類,從網絡部分或主機部分都無法辨識一個ip所處的子網

例:172.16.10.1與172.16.10.2并不能确定二者處于同一子網      
3>.子網路遮罩:
子網路遮罩”,就是表示子網絡特征的一個參數。它在形式上等同于IP位址,也是一個32位二進制數字,它的網絡部分全部為1,主機部分全部為0。比如,IP位址172.16.10.1,如果已知網絡部分是前24位,主機部分是後8位,那麼子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。

 

知道”子網路遮罩”,我們就能判斷,任意兩個IP位址是否處在同一個子網絡。方法是将兩個IP位址與子網路遮罩分别進行AND運算(兩個數位都為1,運算結果為1,否則為0),然後比較結果是否相同,如果是的話,就表明它們在同一個子網絡中,否則就不是。

 

比如,已知IP位址172.16.10.1和172.16.10.2的子網路遮罩都是255.255.255.0,請問它們是否在同一個子網絡?兩者與子網路遮罩分别進行AND運算



10101100.00010000.00001010.000000001  ------ 172.16.10.1
11111111.11111111.11111111.000000000  ------ 255.255.255.255.0
AND運算得網絡位址結果:
10101100.00010000.00001010.000000001  ------- 172.16.10.0




10101100.00010000.00001010.000000010  ------- 172.16.10.2
11111111.11111111.11111111.000000000  ------ 255.255.255.255.0
AND運算得網絡位址結果:
10101100.00010000.00001010.000000001  ------ 172.16.10.0

#計算結果一緻,表示兩個ip屬于同一個區域網路内      

4>.ip資料包:

ip資料包也分為head和data部分,無須為ip包定義單獨的欄位,直接放入以太網包的data部分

 

head:長度為20到60位元組

data:最長為65,515位元組。

而以太網資料包的”資料”部分,最長隻有1500位元組。是以,如果IP資料包超過了1500位元組,它就需要分割成幾個以太網資料包,分開發送了。

 

#以太網頭                 ip 頭                                     ip資料      

5>.ARP協定:

#例如:主機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)      
4)傳輸層:
傳輸層功能:建立端口到端口的通信

#tcp協定:

可靠傳輸,TCP資料包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP資料包的長度不會超過IP資料包的長度,以確定單個TCP資料包不必再分割。

以太網頭  ip 頭                tcp頭                資料                                                    
 

#udp協定:      
#tcp三次握手和四次揮手:      
#TCP并不能保證資料一定會被對方接收到,因為這是不可能的。它不是100%可靠的協定,它所能提供的是資料的可靠傳遞或故障的可靠通知。      
三次握手:

    三次握手(Three-way Handshake),是指建立一個 TCP 連接配接時,需要用戶端和伺服器總共發送3個包。

第一次握手([SYN], Seq = x)
用戶端發送一個SYN标記的包,Seq初始序列号x,發送完成後用戶端進入SYN_SEND狀态。

第二次握手([SYN,ACK], Seq = y, ACK = x + 1)
伺服器傳回确認包(ACK)應答,同時還要發送一個SYN包回去。ACK = x + 1,表示确認收到(用戶端發來的Seq值 + 1),Seq = y, 表示讓用戶端确認是否能收到。發送完成後服務端進入SYN_RCVD狀态。

第三次握手([ACK], ACK = y + 1)
用戶端再次發送确認包(ACK),ACK =      
@網絡通信原理
@網絡通信原理
[FIN], Seq = x)
用戶端發送一個FIN标記的包,告訴伺服器需要關閉連接配接,表示自己不用發送資料了,但是還可以接收資料。發送完成後,用戶端進入FIN_WAIT_1狀态。

第二次揮手 ([ACK], ACK = x + 1)
服務端發送一個ACK的确認包,告訴用戶端接收到關閉的請求,但是還沒有準備好。發送完成後,服務端進入CLOSE_WAIT狀态,用戶端收到這個包後,進入FIN_WAIT_2,等待伺服器關閉連接配接。

第三次揮手 ([FIN], Seq = y)
服務端準備好關閉連接配接時,發送FIN标記的包,告訴用戶端準備關閉了。發送完成後,服務端進入LAST_ACK狀态,等待用戶端确認。

第四次揮手 ([ACK], ACK = y + 1)
用戶端接收到服務端的關閉請求,再發送ACK标記的确認包,進入TIME_WAIT狀态,等待服務端可能請求重傳的ACK包。
服務端接收到ACK包後,關閉連接配接,進入CLOSED狀态。
用戶端在等待固定時間(兩個最大段生命周期)後,沒有接收到服務的ACK包,認為伺服器已關閉連接配接,自己也關閉連接配接,進入CLOSED狀态。      
@網絡通信原理
四次揮手與三次揮手的差異:

  假設的角度分析,如果是三次揮手,在伺服器接收到用戶端發送關閉的請求後,把SYN和ACK包一起發過去。這樣會造成服務端還有資料沒有發送完,會造成了資料的丢失。是以對于中間的這一段時間,等待伺服器把剩餘的資料發送完是很有必要的。      
5).應用層:
應用層功能:規定應用程式的資料格式。