從網絡分層角度探究計算機之間的數據傳輸

目錄

物理層---比特流

數據鏈路層---幀

1、以太網協議

2、MAC地址

3、廣播

網絡層---數據包

1、IP協議

2、子網掩碼

3、ARP協議

4、DNS服務器

傳輸層---報文段

應用層---數據


對於互聯網數據傳送的分層模型通常的有七層、五層和四層。

本文從五層模型入手,自底向上探究計算機之間的數據如何傳輸。

物理層---比特流

本層顧名思義,就是通過物理設備(光纖、電纜、雙絞線)將計算機連接起來,傳輸比特流(就是由1、0轉化爲電流強弱來進行傳輸,到達目的地後在轉化爲1、0,也就是我們常說的數模轉換與模數轉換)。

數據鏈路層---幀

數據鏈路層工作在物理層之上,負責將這些0,1制定傳輸的規則,然後另一方按照相應的規則進行解讀。

1、以太網協議

以太網協議規定,一組電信號構成一組數組包,我們把這個數據包稱爲“”。每一幀由標頭(Head)數據(Data)兩部分組成。

幀最大的長度爲1518個字節,最小爲64個字節,倘若傳送的數據很大就要分成多個幀來傳送。

2、MAC地址

連入網絡的每一臺計算機都會有網卡接口,每一個網卡都會有一個地址叫做MAC地址,它是區分計算機與計算機之間不同的一個唯一標識。計算機之間的數據傳送,就是通過MAC地址來唯一尋找、傳送的。MAC地址在網卡生產是就被唯一標識了。

3、廣播

計算機A知道計算機B的MAC地址,但是A連接了很多計算機,無法知道計算機B具體分佈在哪邊的線路上,所以要通過廣播的方式把數據發送給計算機B,結束到廣播的計算機會把自身的MAC地址與數據包的MAC地址進行對比,如果符合則接受,不符合便丟棄。

網絡層---數據包

網絡層負責幫助我們區分MAC地址是否在同一個子網中。如果是同一子網就用廣播的方式把數據發送給對方,如果不是同一子網

就把數據包發給網關,讓網關幫忙轉發。

1、IP協議

IP協議有兩種版本,一種是IPv4,另一種是IPv6。不過我們目前大多數用的還是IPv4,我們現在也只討論IPv4這個版本的協議。

這個IP地址由32爲的二進制數組成,我們一般把它分成4段的十進制表示,地址範圍爲0.0.0.0~255.255.255.255。

每一臺想要聯網的計算機都會有一個IP地址。這個IP地址被分爲兩部分,前面一部分代表網絡部分,後面一部分代表主機部分。並且網絡部分和主機部分的二進制位數是不固定的。

假如兩臺計算機的網絡部分是一模一樣的,我們就說這兩臺計算機是處於同一個子網中。例如192.168.43.1和192.168.43.2,假如這兩個IP地址的網絡部分爲24位,主機部分爲8位。那麼他們的網絡部分都爲192.168.43,所以他們處於同一個子網中。

2、子網掩碼

可是問題來了,你怎麼知道網絡部分是佔幾位。也就是說,單單從兩臺計算機的IP地址,我們是無法判斷他們的是否處於同一個子網中的。

這就引申出了另一個關鍵詞————子網掩碼。子網掩碼和IP地址一樣也是32位二進制數,不過它的網絡部分規定全部爲1,主機部分規定全部爲0.也就是說,假如上面那兩個IP地址的網絡部分爲24爲,主機部分爲8爲的話,那他們的子網掩碼都爲11111111.11111111.11111111.00000000,即255.255.255.0。

那有了子碼掩碼,如何來判端IP地址是否處於同一個子網中呢。顯然,知道了子碼掩碼,相當於我們知道了網絡部分是幾位,主機部分是幾位。我們只需要把IP地址與它的子碼掩碼做與(and)運算,然後把各自的結果進行比較就行了,如果比較的結果相同,則代表是同一個子網,否則不是同一個子網。

例如,192.168.43.1和192.168.43.2的子碼掩碼都爲255.255.255.0,把IP與子碼掩碼相與,可以得到他們都爲192.168.43.0,進而他們處於同一個子網中。

3、ARP協議

計算機A是如何知道計算機B的MAC地址的呢?這個時候就得由ARP協議這個傢伙來解決了。

ARP協議也是通過廣播的形式給同一個子網中的每臺電腦發送一個數據包(當然,這個數據包會包含接收方的IP地址)。對方收到這個數據包之後,會取出IP地址與自身的對比,如果相同,則把自己的MAC地址回覆給對方,否則就丟棄這個數據包。這樣,計算機A就能知道計算機B的MAC地址了。

發送數據和詢問對方的MAC地址都是是通過廣播的形式發送,那其他計算機怎麼知道你是要傳送數據還是要詢問MAC地址呢?其實在詢問MAC地址的數據包中,在對方的MAC地址這一欄中,填的是一個特殊的MAC地址,其他計算機看到這個特殊的MAC地址之後,就能知道廣播想幹嘛了。

4、DNS服務器

DNS服務器會幫我們把域名解析爲對應的IP地址。

傳輸層---報文段

雖然我們已經把數據成功從計算機A傳送到計算機B了,可是,計算機B裏面有各種各樣的應用程序?計算機不知道要把這些數據給誰,之時候端口(Port)派上用場啦,我們可以通過一個端口,以供特定的應用程序來接受處理

傳輸層的功能就是建立端口到端口的通信。相比網絡層的功能是建立主機到主機的通信。

在這一層定義了兩個端到端的協議:傳輸控制協議(TCP, Transmission Control Protocol)和用戶數據報協議(UDP, User Datagram Protocol)。

TCP面向連接的協議,它提供可靠的報文傳輸和對上層應用的連接服務。爲此,除了基本的數據傳輸外,它還有可靠性保證、流量控制、多路複用、優先權和安全性控制等功能。

UDP面向無連接的不可靠傳輸的協議,主要用於不需要 TCP 的排序和流量控制等功能的應用程序

應用層---數據

然我們收到了傳輸層傳來的數據,可是這些傳過來的數據五花八門,有html格式的,有mp4格式的,各種各樣。你確定你能看的懂?

因此我們需要指定這些數據的格式規則,收到後纔好解讀渲染。而應用層的功能,就是用來規定應用程序的數據格式的。

應用層(Application Layer)包含所有的高層協議,包括:

虛擬終端協議(TELNET,TELecommunications NETwork)、

文件傳輸協議(FTP, File Transfer Protocol)、

電子郵件傳輸協議(SMTP, Simple Mail Transfer Protocol)、

域名服務(DNS, Domain NameService)、

網上新聞傳輸協議(NNTP, Net News Transfer Protocol)

超文本傳送協議(HTTP, HyperText Transfer Protocol)等。
 

參考的文章來源

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