網路通訊過程基礎詳解

網路通訊

現在已經是一個互聯網時代了,家家戶戶都有手機、電腦、電視等隨時隨地可以在網上進行衝浪,我們俗稱的上網就是通過物理介質和通訊設備將不同的用戶連接到一起,實現了用戶之間的通訊,在發送資訊的整個過程中,要經過一系列協議處理,然後尋找到我們要溝通的通訊設備,最終實現將資訊傳遞給目標用戶。

網路通訊的概述

首先我們要明白怎麼實現通訊的,通訊可以分為兩部分,第一部分是將要發送的數據進行一系列處理,然後轉化為二進位數字準備進行發送。第二部分就是將二進位數字通過某些路徑發送到目標通訊設備,第三部分就是將要接到的二進位數字在通過反向的第一部分的處理最後轉為我們看到的數據。

接下來我就按照這三部分順序進行分析。

一、互聯網的tcp\ip五層協議

這個五層協議主要就是第一部分和第三部分,對數據的處理,方便第二部分能夠找到目標電腦以及目標電腦能夠對數據進行「拆包」拿到我們的原始數據。

互聯網的5層協議按照從上向下分為:

  1. 應用層
  2. 傳輸層
  3. 網路層
  4. 數據鏈路層
  5. 物理層

首先要將數據從A發送到B,那麼數據就要從應用層對數據進行處理之後發送給傳輸層,經過傳輸層的打包處理也就是增加一個軟體所對應的埠,然後傳給網路層,網路層會在傳輸層發來的數據頭部接上一層(自己的ip地址和,對方的ip地址)然後傳給數據鏈路層,數據鏈路層會結果數據包並加上自己的mac地址和對方的地址的佔位符(此時並不能得知對方目標電腦的mac地址),然後最終在物理層將整個數據轉為二進位數字。這樣第一部分就完成了。有一個圖能很簡單的將這個流程表示出來。

下面對整個數據處理進行逐層分析,我們逐層進行分析:

應用層

此時後傳遞的數據數據

功能:主要是對數據處理的不同格式,有http\https\ftp等等,通過這些協議對數據進行處理然後發送給傳輸層。

協議就是按照某種規範進行處理,相當於字元編碼,將數據按照某種規範轉為某種格式,然後可以在按照相同的規範轉為該數據。在電腦中,標準化是很重要的,如果我們每個人的標準都不同,那麼在數據處理等等方面都會很麻煩,所以一般都會大家共同定義一個標準,然後默認按照這種標準去處理。

通過某個軟體(比如說QQ)將數據發給對象的時候,首先軟體會按照某種協議處理數據,然後傳給傳輸層。

傳給傳輸層的時候一般有兩種協議:TCP和UDP。

  1. TCP是可靠性協議,在每次發送完數據後,都會得到目標電腦的回饋。安全性高,但是發送速度較為緩慢。
  2. UDP是不可靠協議,得到數據之後就會發送,不在乎對方是否接受到。安全性較低但是發送速度快。

按照發送數據情況具體分析,是採用哪一種協議進行傳送數據。

傳輸層

此時要傳送的數據TCP或UDP頭+數據.單位是段

功能:接受來自應用層的數據並將該軟體所對應的埠號加到頭部並傳遞給網路層。

電腦本身有0~65535個埠,每一個埠都可以對應一個基於網路通訊的軟體,只要軟體要通訊,那麼它肯定對應著電腦的某個埠,如果不通訊,那麼就不會佔用埠。

TCP協議

我們通常使用TCP協議進行處理重要的數據,在使用TCP協議的時候,一般都會建立一個雙向通道:三次握手和四次揮手。

三次握手:用於建立雙向通道。通訊設備A向目標電腦B發送建立通道的請求,目標電腦接到請求之後會發送同意建立通道的請求,並且同時想A發送建立連接的請求,B在發送同意建立鏈接的請求。在整個過程中,一共發生了三次連接,稱為三次握手。

四次揮手:用於斷開連接。A在將數據發送完畢之後,會發送請求斷開連接,B收到之後會同意該請求。因為兩個通道是互不相連的,因此在斷開A到B的連接時,有可能B到A的鏈接的通道中間還有數據在傳輸,因此等到數據傳輸完畢之後,B才會發送斷開連接請求,然後A同意。此時一共經歷了四次揮手。

當然上述的連接通道並不是真的在傳輸層之間互相聯繫,數據還要通過網路層等傳送給目標電腦,這個通道式虛擬概念的通道。

網路層

此時的數據為ip頭+TCP或UDP頭+數據,單位是包

功能:接受傳輸層發來的資訊並加上自己的ip地址和對方通訊設備的ip地址,對方的ip地址此處是已知的公網ip地址。

我們想要發送數據給目標電腦,肯定要知道目標電腦在哪,就像上郵局寄快遞,但是不知道對方的地址怎麼去寄東西呢?Ip地址就規定了目標電腦的通訊設備。常見的Ip地址有ipv4和ipv6,其中ipv4已經逐漸不夠用了,正在逐步替換成ipv6。

每台電腦只要遵守Ip協議就可以鏈接互聯網。它用來給電腦一個編號,相當與電話號碼。每台想要聯網的電腦都要有自己的ip地址。

ip協議

ip地址有32位二進位組成的,也就是4個位元組,有網路地址和主機地址。Ip一般也分為A類、B類、C類,這裡不做過多描述。

ip又分為公網ip和私網ip,用戶要連接互聯網需要用公網ip作為身份標識,且全世界公網ip每一個都是獨一無二的,但是私網IP不同,同一區域網的私有Ip是不可以重複的,但是不同的公網ip下的區域網內部的私有ip是可以重複的。也就是說同一時刻在聯網的電腦都是有自己的公網Ip身份的,所以可以通過公網Ip地址找到目標電腦,

但是私網ip在公網上是不能使用的,只能在區域網內部使用,一下是幾個保留的私網ip。

10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255

總結:公網IP,是在互聯網上使用的,在任何地方只要能連網都能訪問公網IP。而私有IP是區域網所使用的,通過互聯網是不能訪問私有IP的。

子網掩碼:通過ip和子網掩碼可以用來判斷兩台電腦是否位於同一網路ip內,由於ip地址是有網路地址和主機地址組成,如果網路地址是相同的,那麼在傳輸的過程中,就可以不經過路由器而是可以直接發送,如果網路地址不相同,那麼傳送數據就得發送給路由,採用路由的方式進行發送。

子網掩碼是由連續的1和0的32個bit組成,用1來代替網路位,0代表主機位。不同類的ip默認掩碼有所不同。分別對應255.0.0.0(A類),255.255.0.0(B類),255.255.255.0(C類)。計算一般是用AND計算(全1則為1,不全為1則0)來對比兩個不同的ip地址。

網關:連接兩個不同子網的通訊設備需要經過一道「關卡」。但是如果是同一個區域網之內的通訊就用不到網關,一般路由器的網關都是192.168.0.1或者192.168.1.1。每當區域網內的通訊設備要鏈接外界的電腦的時候,都是通過網關然後才能出去。

總結:當用戶鏈接網路的時候,會有一個唯一一個與之對應的公網ip.而私網ip則只能用於同一區域網之內的通訊。子網掩碼和Ip用來確認是否位於同一個網路位,如果是可以直接進行通訊,如果不是,則需要發送到網關。

數據鏈路層

此時的數據為mac頭+ip頭+TCP或UDP頭+數據,單位為幀。

功能:接到網路層傳來的數據,並將自己的mac地址和對方電腦的mac地址(但是此時並不能獲取對方的mac地址,所以通常用佔位符代替)加到頭部然後傳給物理層。

首先要明白什麼是mac地址,mac地址就是通訊設備在出廠的時候在網卡上燒制的一個獨一無二的mac地址,是不可改變的,不同的通訊設備的mac地址是不相同的,網卡的物理地址通常是由網卡生產廠家燒入網卡的EPROM(一種快閃記憶體晶片,通常可以通過程式擦寫),它存儲的是傳輸數據時真正賴以標識發出數據的電腦和接收數據的主機的地址。

通過mac地址,在同一網路之內,我們就可以通過廣播的方式發送廣播包,同一區域網內的所有通訊設備都會收到這個包並拆開,然後目標電腦發現ip是接收方自己的時候,就會將自己的mac地址返回,mac頭的數據就會自己的mac地址和對方的mac地址,如果判斷不是自己同一區域網內的電腦的話,就會返回網關的mac地址,然後通過網關發送出去。

這裡要注意ip和mac各自的作用:

  1. Ip主要用於網路層,將一個數據包從一個網路發送到另一個網路。
  2. mac主要用於數據鏈路層,將數據從一個節點發送到相同鏈路的另一個節點。

ip地址和mac地址存在一定的映射關係,因此可以通過ip地址獲取到mac地址,這種協議叫做arp協議。ARP根據目的IP地址,找到中間節點的MAC地址,通過中間節點傳送,從而最終到達目的網路

在一個穩定的網路中,IP地址和MAC地址是成對出現的。如果一台電腦要和網路中另一外電腦通訊,那麼要配置這兩台電腦的IP地址,MAC地址是網卡出廠時設定的,這樣配置的IP地址就和MAC地址形成了一種對應關係。在數據通訊時,IP地址負責表示電腦的網路層地址,網路層設備(如路由器)根據IP地址來進行操作;MAC地址負責表示電腦的數據鏈路層地址,數據鏈路層設備(如交換機)根據MAC地址來進行操作。IP和MAC地址這種映射關係由ARP協議完成。

物理層

此時的數據為二進位數字。

功能:將來自數據鏈路層的數據轉化為二進位數字,然後通過鏈接介質發送到目標。

物理層是將不同的通訊設備通過光纖、雙絞線等進行連接,用於互相之間通過高低電位發送01的二進位數字。

二、尋找目標電腦

到此時為之,數據通過一系列的協議完成了處理,轉為了二進位數字,接下來就是第二部分,如何尋找到目標電腦。

這時候就要提到交換機了。現在使用最廣泛的依然是二層交換機(以太層交換機)。交換機的每個埠口都有一個arp列表,含有ip和mac地址的對應關係。一個埠可對應多個mac地址,但是一個mac地址只能對應一個埠。

當交換機拿到ip地址的時候,就會對照arp列表找是否含有對應的mac地址,如果有,就由該埠進行轉發。如果沒有會向所有埠發送數據,目的電腦得到響應之後,會將自己的mac地址發送到交換機,然後arp列表會進行學習更新。

目標電腦位於同一網路位

如果目標電腦在同一區域網,然後交換機就會重新封裝mac頭的資訊

(自己mac地址,目標電腦佔位mac地址)===》(自己mac地址,目標電腦mac地址。)

然後將數據傳遞給目標電腦。此時的數據並不出網關。

目標電腦不位於同一網路位

如果經數據的ip地址判斷,發現不在同一個區域網之內,交換機就會將網關的mac地址改為目標電腦mac地址。然後將數據發給網關,然後網關在對ip地址進行arp協議解析,然後重新打包數據以太頭為(網關的mac地址,下一路由的mac地址),其他層的數據不變。

然後依次類推,在路由上不停的轉換最終達到目標電腦所處的網關。經由ip和mac的映射關係,找到該目標電腦的mac地址。最終完成了傳輸。

三、目標電腦拿到數據之後

當目標電腦的物理層拿到這些電訊號之後,會按照物理層、數據鏈路層、網路層、傳輸層、應用層的順序依次拆頭部資訊,最終拿到數據,完成了一次完美的發送數據之旅。

TIPS:剛開始學習,還是有很多細節並沒有處理好,應該有可能理解出入。只是大概地理解,懇請大佬指正,不勝感激。