計算機網絡

對於非計算機專業出身的程序猿,瞭解計算機操作系統,編譯原理,計算機網絡的通信,對於自身編程的提高是非常有幫助的。那麼今天就來簡單介紹一下計算機之間是怎麼進行通信的。


1.什麼是計算機網絡?

計算機網絡,是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。

要想讓兩臺計算機進行通信,必須使它們採用相同的信息交換規則。我們把在計算機網絡中用於規定信息的格式以及如何發送和接收信息的一套規則稱爲網絡協議或通信協議。


2.如何理解計算機網絡的設計模型?

爲了減少網絡協議設計的複雜性,網絡設計者並不是設計一個單一、巨大的協議來爲所有形式的通信規定完整的細節,而是採用把通信問題劃分爲許多個小問題,然後爲每個小問題設計一個單獨的方法。分層模型是一種用於開發網絡協議的設計方法。本質上,分層模型描述了把通信問題分爲幾個小問題(稱爲層次)的方法,每個小問題對應於一層。每一層都是爲了完成一種功能。爲了實現這些功能,需要大家都遵守共同的規則。大家都遵守的規則,叫做"協議"(protocol)。

開放系統互連基本參考模型 OSI/RM(Open System Interconnection Reference Model)是國際化標準組織ISO( International Organization for Standardization)制定的一套網絡互連模型。該體系結構採用的是七層模型框架,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。然而OSI由於歷史遺留的問題,在網絡模型上並沒有得到廣泛的應用。得到廣泛應用的是更爲人們所熟知的非國際標準的TCP/IP體系結構。TCP/IP體系採用的是四層的模型,分別是網絡接口層、網絡層、運輸層、應用層。不過在一般的書籍材料中,往往採用的是結合OSI和TCP/IP的一種五層模型來描述計算機網絡通信的系統模型,自上而下分別是應用層、運輸層、網絡層、數據鏈路層、物理層。越頂層的越接近用戶、越底層的越靠近計算機硬件。





3.五層模型簡介:

應用層:應用層是體系中的最高層,最接近用戶,應用層直接爲用戶的應用進程提供服務。其中,最爲人們所熟知的應用層協議有超文本傳輸協議HTTP(HyperText Transfer Protocol)協議、文件傳輸協議FTP(File Transfer Protocol)協議。

運輸層:運輸層的任務主要是負責向兩個主機中進程之間的通信提供服務。運輸層主要使用兩種協議:傳輸控制協議TCP(Transmission Control Protocol)和用戶數據報協議UDP(User Datagram Protocol)。

網絡層:網絡層主要負責將傳輸層產生的報文段封裝在不同主機間進行傳送。

數據鏈路層:數據鏈路層將網絡層下交的數據報文組裝成MAC幀,在兩個相鄰的結點間進行傳送(主機和路由器,路由器和路由器)。

物理層:顧名思義就是利用物理傳輸媒介如雙絞線、光纖等提供比特流的傳輸。


4.1 物理層


通信的目的就是爲了傳送信息,人類接觸到的聲音、文字、圖像都是信息,是我們人類所能理解的。然而對於計算機而言,計算機並不能理解這種模擬信號,對於計算機,它能夠理解的只有數字0和1.我們在計算機網絡中傳遞的信息,就是這些信息的一種電氣表示。這裏對於物理層我們只做簡單的介紹。由於本人是電信專業畢業,所以這裏不再多贅述這方面的內容,感興趣的可以去看看《通信原理》這門課程。我們這裏就只需要知道,它是用於將數據鏈路層下發的MAC幀發送出去就足夠了。

                

4.2 數據鏈路層


當我們需要在一條物理線路上傳輸數據時,除了需要一條物理線路,還需要有一些必要的通信協議來控制這些數據的傳輸。將這些實現協議的硬件(網絡適配器)和軟件加在一起,便構成了數據鏈路。數據鏈路層使用的信道主要有兩種:點對點信道和廣播信道。

4.21 什麼是幀?


幀是數據鏈路層的協議數據單元。封裝成幀就是將一段數據(網絡層下發下來的IP數據報)在其前後分別添加首部和尾部。首部中包含了發送者和接收者的信息。其中就包括MAC地址。數據鏈路層把網絡層交下來的數據構成幀,以幀的形式發送到鏈路上,以及把接收到的幀剝掉首部和尾部把剩下的數據取出並上交到網絡層。


4.22 什麼是MAC地址?


數據在信道中傳輸,怎麼才能到達指定的主機?這時就需要像一個送信地址一樣的地址指明這臺主機在哪裏。在局域網中,這個地址就是硬件地址,又稱爲物理地址或者MAC地址。MAC地址是一種包含48位的二進制全球地址。MAC地址被固化在了計算機的網絡適配器中。地球上每一個MAC地址都是唯一的。一臺主機無論到了地球哪個位置,它的MAC地址都是固定不變的,除非更換了主機中的網絡適配器。(想要找到指定的MAC地址,還需要ARP協議,我們將在後面介紹)


4.3 網絡層


網絡層主要負責將傳輸層產生的報文段封裝在不同主機間進行傳送。網際協議IP是TCP/IP體系中最重要的兩個協議之一,它還與其他的四個協議相互配套使用。地址解析協議ARP(Address Resolution Protocol)、逆地址解析協議RARP(Reverse Address Resolution Protocol)、網際控制報文協議ICMP(Internet Control Message Protocol)、網際組管理協議IGMP(Internet Group Management Protocol)。

4.31 什麼是虛擬互聯網絡?


由於用戶的需求是多種多樣的,沒有一種單一的網絡能夠適應所有用戶的需求。因此需要將不同的網絡相互連接起來。將網絡互相連接起來需要使用一些中間設備,網絡層使用的中間設備稱爲路由器。使用路由器參與互聯的計算機網絡都使用相同的網際協議IP,這樣就將形成了一個虛擬互聯網絡。 


4.32 什麼是IP地址?


整個因特網是一個單一抽象的網絡,IP地址就是給因特網上的每一個主機或者路由器的每一個接口分配一個唯一的32位二進制的標識符。習慣上,以二進制數表示不容易辨識,我們將32位的二進制分爲四個八位二進制,用十進制數表示。例如10000000 00001011 00000011 00011111 就可以表示爲128.11.3.31的IP地址,但在計算機中。尋址是以二進制進行的。IP地址是尋找MAC地址的關鍵。

4.33 硬件地址與IP地址和ARP


MAC地址是數據鏈路層和物理層使用的地址,而IP地址是網絡層及以上各層使用的地址,是一種邏輯地址。在發送數據時,數據從高層下發到低層,然後纔到通信信道上傳輸。IP地址放在IP數據報的首部,而硬件地址則放在MAC幀的首部。當IP數據報放入數據鏈路層的MAC幀中以後,整個IP數據報就成爲MAC幀的一部分。每一個主機都設有一個ARP高速緩存,裏面存有本局域網上的各個主機和路由器的IP地址到硬件地址的映射表。當主機A要向主機B發送IP數據報時,先在ARP高速緩存中查看有無主機B的IP地址。如果有,就在ARP高速緩存中查出其對應的硬件地址,再把這個硬件地址寫入MAC幀中,然後通過局域網把MAC幀發往此硬件地址。

4.34 ARP高速緩存中的映射表怎麼來?


當高速緩存還是空的時候,這個映射表又是怎麼來的?怎麼知道其他主機的IP地址和硬件地址的對應關係呢?這個時候A主機ARP進程會在本網絡上廣播發送一個ARP請求分組,大概概述爲:“我的IP地址是123.125.114.144,硬件地址是00-00-C0-15-AD-18,我想知道IP地址124.74.35.154的硬件地址,我要和他進行通信”本網絡上的所有主機運行的ARP進程都會收到這個分組消息。當某個主機B的ARP進程見到自己的IP地址是分組A所要的,便向對應主機發送響應分組,並寫入自己的硬件地址,同時也將A主機的硬件地址和IP地址的映射關係寫入ARP高速緩存中。A收到B發送的響應分組後,便把B的IP地址和硬件地址的對應關係寫入高速緩存中。ARP請求分組是廣播發送的,而ARP響應分組是單播發送。

4.4運輸層:


運輸層向它上面的應用層提供通信服務。運輸層有兩種不同的運輸協議,面向連接的TCP和無連接的UDP。在計算機進行通信時,嚴格意義上來說,是兩個主機上的應用進程在進行通信。在之前講過的物理層、數據鏈路層,網絡層這三層,已經建立起了主機間的數據通信。那麼這些發送的數據和接收到的數據,屬於哪個應用進程,應該分配到哪個進程的服務中去,就需要用到運輸層。

4.41 什麼是複用,什麼是分用?


運輸層一個最重要的功能就是複用和分用。複用是指在發送方不同的應用進程都可以使用同一個運輸層協議傳送數據,而分用是指接收方的運輸層在剝去報文的首部後能夠把這些數據正確交付到目的應用進程。

4.42 什麼是端口?


運輸層又是如何知道這些數據該分配到哪個應用進程呢?這裏就需要有一個類似於參數的東西,就是端口(port)。這就說明,計算機間進程的通信除了需要IP地址,硬件地址,還需要包含有一個端口號。運輸層的功能,其實就是建立端口到端口間的通信。TCP/IP的運輸層使用一個16位的端口來標誌一個端口。常見的應用進程的端口號有HTTP:80、FTP:21、DNS:53。這些端口號被稱作熟知端口號。而有一些端口是留給客戶端短暫使用的,客戶端的通信結束後,這個端口就不復存在了,這種端口叫做短暫端口號。

4.43 UDP用戶數據報協議


現在我們必須要在數據報里加入端口信息,就需要新的協議。UDP的主要特點是:UDP是無連接的、UDP使用盡最大努力交付、UDP是面向報文的、UDP沒有擁塞控制、UDP支持一對一,一對多,多對一,多對多的交互通信、UDP的首部開銷小。
用戶數據報UDP也是有兩部分組成:首部和數據段。首部字段包含了:源端口,目的端口、長度、檢驗和。當運輸層從IP層收到UDP數據報時,就根據首部中的目的端口,把UDP數據報通過相應的端口,上交到正確的應用進程。

4.44 TCP傳輸控制協議


UDP提供的是不可靠的交付,而TCP提供的是可靠的交付。TCP的主要特點有:TCP是面向連接的、每一條TCP連接只有兩個端點、TCP提供可靠交付、TCP提供全雙工通信、TCP是面向字節流的。

4.45 套接字(socket)


TCP的連接是抽象的。TCP連接是一條虛連接而不是一條真正的物理連接。TCP報文段先要傳送到IP層,加上IP首部,再傳送到數據鏈路層,再加上數據鏈路層的首部和尾部後,才離開主機發送到物理鏈路中去。每一條TCP連接有兩個端點。把端口號拼接到IP地址後便構成了套接字如:124.74.35.154:80.每一條TCP連接唯一的被兩個套接字確定。

4.46 TCP的三次握手


假設現在有主機A要和主機B進行通信。由A的TCP客戶進程首先創建傳輸控制模塊TCB,然後向B發送連接請求報文段。B收到連接請求報文段後,同意連接,則向A發送確認。A收到B的確認後,給B發出確認A進入ESTABLISHED狀態,B收到確認後,也進入ESTABLISHED狀態。這樣TCP連接就建立可以進行通信了。這就是TCP連接的三次握手。


4.47 TCP的可靠交付


假設現在有A主機和B主機進行通信,A主機是發送方,B主機是接收方。A主機向B主機發送了分組M1,發送完暫停發送,等待B主機的確認,B主機收到M1就像A主機發送確認。A主機在收到對M1的確認後,就發送下一個分組M2。假如,M1在傳送過程中,出現丟失或者延時,B並沒有接收到M1分組,那麼它將什麼也不做。A在一段時間後,沒有收到B的確認,便認爲M1丟失,重新給B發送一個M1分組。假如B收到了M1分組,但是發送給A的確認在通信時丟失或延時,A沒有收到B的確認,就又給B發送了一個M1,B在收到了M1的情況下,又收到了A重發的M1,便會丟棄這個M1,然後重新發送對M1的確認給A。同樣,B在收到M1的時候,會對M1的內容進行差錯檢測,如果發現傳輸過程中因爲一些噪聲造成數據有錯,同樣會丟棄這個M1分組,讓A重新發送一個M1。這樣就提供了一個可靠的交付,確保數據不會出現差錯和丟失。


4.5 應用層


應用層直接爲用戶的應用進程提供服務。應用層需要規定應用進程在通信是遵循的協議,規定數據傳送的格式,然後下發到以下各層進行數據通信。

計算機通信原理的小結:


假設現在有一個主機A和一個主機B,兩臺主機在同一個局域網中。主機A的應用進程AppA端口是80,主機B的應用進程AppB端口也是80。現在A主機作爲發送方,B主機作爲接收方。AppA從應用層將需要傳送的數據MA下發到傳輸層,傳輸層在MA的添加首部,構成數據報,首部中包含了主機B的AppB的目的端口。接着,傳輸層將數據報下發到網絡層,網絡層在數據報上又添加一個IP首部,首部中包含了目的主機B的IP地址。然後將IP數據報下發到數據鏈路層,數據鏈路層收到IP數據報後,爲IP數據報添加首部和尾部,構成MAC幀。MAC幀中包含了目的主機B的硬件地址。最後將MAC幀下發到物理層進行傳輸。MAC幀找到主機B的硬件地址,然後上交給主機B的數據鏈路層,數據鏈路層拿掉首部和尾部,將剩下的IP數據報上交到網絡層,網絡層剔除IP數據報的首部,上交到傳輸層,傳輸層進行差錯檢測,如果有錯,丟棄,沒錯接受,然後剔除首部,讀出端口號,上交到應用進程AppB。


當然,上述的部分是經過非常多的精簡的,瞭解計算機網絡的原理涉及到了非常多的協議和知識點。想要更瞭解計算機網絡的朋友可以自行翻閱書籍。


參考文獻:《計算機網絡》第五版 謝希仁

參考文獻:《通信原理》









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