1. 程式人生 > >計算機網絡(三)——數據通信

計算機網絡(三)——數據通信

網絡 計算機 交換機

計算機網絡的數據通信過程主要基於下三層來實現,在這裏我簡單的說一下關於下三層的硬件結構;

物理層主要是進行二進制轉換的,兩個主機互聯,首先它的比特率必須一致,否則數據就無法正常的傳輸,會導致數據不一致等情況;而物理層的硬件設施有中繼器,集線器;中繼器,具有兩個端口,可以在數據通信時因為距離過長而無法通信的問題,數據從一個接口進入中繼器,由另一個接口出來後,數據通信的強度就會恢復,但是中繼器只有兩個接口,這樣效率就會很低,而集線器的產生就是在中繼器的基礎上進行強化,集線器具有多個接口,可以將多個主機設備連接在一起,形成一個物理上是星型結構,邏輯上卻是總線結構的網絡拓撲;但集線器的一個問題就是,他這樣的連接方式會導致數據之間的沖突過多,數據傳輸的效率就會慢;而什麽是沖突,在下面會講述到;

數據鏈路層主要是定義物理地址,對接收到的數據進行校驗,判斷是否有差錯產生;數據鏈路層的主要設備是網卡,網橋以及交換機;其中網橋和交換機是在數據鏈路層的基礎上擴展以太網;網橋工作在數據鏈路層,他根據MAC幀的目的地址對收到的幀進行轉發和過濾,當網橋收到一個幀時,不是立刻將其廣播給所有接口,而是判斷該幀是否存在於網橋轉發表中,若存在,則根據目的MAC地址在轉發表中對應的接口進行單播轉發,若沒有,則廣播所有接口;交換機實際上就是一個多接口的網橋;在交換機中,每一個主機都擁有自己的一個沖突域,即每一個主機之間是不會產生沖突的,但但這一點,就比集線器好很多,所以現在市面上所用的存儲轉發設備一般都是交換機了,很少看到有集線器的存在;

數據鏈路層所具有的差錯檢測功能是由CSMA/CD協議實現的,它是一種帶有沖突檢測的載波監聽多路訪問協議;該協議具有多路訪問的特性,每一個主機都可從其信道上發送數據到總線上進行傳輸,這種多路訪問的結構也容易導致沖突;CSMA/CD協議的一個重要的功能就是載波監聽,主機在進行發送的時候,需要進行載波監聽,如果檢測到載波,就說明有數據在運行,就延時發送,延時時間為隨機數,若沒有檢測到載波,表示總線空閑,則可發送數據,但如果有多個主機檢測到總線空閑,一起發送數據,就會導致沖突,一旦產生沖突,所有的站點都回退,各個站點均等待一個隨機時間重新進行載波監聽;

交換機的功能主要體現在以下幾個方面:

①學習:交換機對於每一個轉發到它這裏具有IP和MAC地址的幀,它會判斷是否有這個幀的源MAC地址,若沒有,則將源MAC地址寫入交換機的轉發表,然後在進行廣播,尋找符合該目的MAC地址的接口;如果接收到的數據幀中的源MAC地址,已經出現在MAC地址表中,則更新該條目的時間戳;

②轉發:

有目的轉發:交換機在接受到數據幀時,若該目的MAC地址存在於交換機轉發表中,則按該目的MAC地址所對應的接口進行單播轉發;

無目的轉發:交換機在接受到數據幀時,該目的MAC地址不存在於交換機轉發表中,則將該數據幀進行廣播,也可稱之為泛洪;

過濾:如果交換機收到的一個數據幀,發現該數據幀的目的MAC地址對應的端口和接收數據的端口是同一個端口,則這樣的數據,過濾不接收;

網絡層主要是為上層運輸層所傳下來的分組能夠找到合適的路由去尋找到目的主機;而在網絡層中進行數據傳輸,不能使用IP地址,而要使用這個IP地址所對應的MAC地址,只有通過這個MAC地址才能找到合適的路由,IP地址一開始是由應用程序向DNS服務器進行請求所得出的,IP地址可以通過ARP協議進行轉換,轉換成物理地址即MAC地址,在這個過程中,需要知道的是,每一個主機都有其所對應的ARP緩存表,在表中有所對應的IP地址和其MAC地址,將IP地址轉化為MAC地址的過程中,若能在該主機自身的ARP緩存表中找到所對應的MAC地址,則可直接獲得,若無法找到,則需要通過ARP協議封裝出一個ARP數據包裏面有對應的MAC地址,將其廣播出去,目的主機收到之後,將源MAC地址和源IP地址存在自身的ARP緩存表中,並將自己的MAC地址和IP地址數據封裝後,以單播的形式返回,這樣就可以獲得目的主機的MAC地址;


數據通信之雙機互連:

①如果用戶在應用程序中沒有指定目標IP地址,則可由應用程序發送請求到DNS服務器獲取目標IP地址,或由用戶自己手動指定;

②獲取IP地址後,確定將要連接的傳輸層協議;選擇TCP/IP協議;則要進行三次握手連接後再發送數據;

③IP協議會按照正確的地址和對應格式完成數據封裝,但是網絡訪問層需要通過MAC地址完成數據傳輸,因此需要查詢ARP緩存中是否有對應該IP地址的MAC地址記錄;在ARP緩存表中查找目標IP地址的MAC地址,若無,則將TCP三次握手連接暫存在內存中;封裝ARP數據包,廣播發送,目標主機收到ARP數據包後,將源IP地址及MAC地址緩存,再將自身的IP地址和MAC地址封裝單播發送回來;

④源主機接收到ARP數據包後,獲得了目標主機的MAC地址,開始進行TCP三次握手連接;

⑤數據報文傳輸完畢後,再進行TCP四次揮手結束連接;


數據通信之交換機通信(UDP)

①如果用戶在應用程序中沒有指定目標IP地址,則可由應用程序發送請求到DNS服務器獲取目標IP地址,或由用戶自己手動指定;

②獲取IP地址後,確定將要連接的傳輸層協議;選擇UDP協議;則數據直接由應用層發往UDP進行直接傳傳輸;將UDP封裝好的數據交給IP協議進行進一步的封裝;

③將封裝好的IP協議交由網絡層進行封裝,網絡層需要獲取目標主機的MAC地址,才可在網絡層中進行傳輸,訪問當前主機的ARP緩存表,看是否有對應目標IP地址的MAC地址,若無,則將UDP連接暫存在內存中;封裝ARP數據包,廣播發送,經過交換機時,由交換機查看是否有該ARP封裝的源MAC地址,若無,則將源MAC地址寫入交換機轉發表中,進行泛洪操作,若有,則進行單播發送到目標主機;目標主機收到ARP數據包後,將源IP地址及MAC地址緩存,再將自身的IP地址和MAC地址封裝單播發送到交換機,交換機查看是否有該主機的源MAC地址,若無,則將源MAC地址寫入交換機轉發表中,進行泛洪操作,若有,則進行單播發送到目標主機;這樣就可使源主機獲取目標主機的MAC地址,並寫入到源主機的ARP緩存表中,可以開始在網絡層中傳輸;

④按照ARP緩存表中的目標MAC地址傳送數據;

數據通信之交換機通信(TCP)

①如果用戶在應用程序中沒有指定目標IP地址,則可由應用程序發送請求到DNS服務器獲取目標IP地址,或由用戶自己手動指定;

②獲取IP地址後,確定將要連接的傳輸層協議;選擇TCP協議;則數據需要先建立TCP的連接,即三次握手後,才可傳輸數據;將TCP封裝好的數據交給IP協議進行進一步的封裝;

③將封裝好的IP協議交由網絡層進行封裝,網絡層需要獲取目標主機的MAC地址,才可在網絡層中進行傳輸,訪問當前主機的ARP緩存表,看是否有對應目標IP地址的MAC地址,若無,則將TCP三次握手連接暫存在內存中;封裝ARP數據包,廣播發送,經過交換機時,由交換機查看是否有該ARP封裝的源MAC地址,若無,則將源MAC地址寫入交換機轉發表中,進行泛洪操作,若有,則進行單播發送到目標主機;目標主機收到ARP數據包後,將源IP地址及MAC地址緩存,再將自身的IP地址和MAC地址封裝單播發送到交換機,交換機查看是否有該主機的源MAC地址,若無,則將源MAC地址寫入交換機轉發表中,進行泛洪操作,若有,則進行單播發送到目標主機;這樣就可使源主機獲取目標主機的MAC地址,並寫入到源主機的ARP緩存表中,可以開始在網絡層中傳輸;

④進行TCP三次握手連接,按照ARP緩存表中的目標MAC地址傳送數據;

⑤當數據報文傳輸完畢後,發起斷開TCP連接,四次揮手;


計算機網絡(三)——數據通信