新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 深入淺出計算機間通信原理

        深入淺出計算機間通信原理

        作者: 時間:2016-12-01 來源:網絡 收藏


        三 通信協議

        1.以太網 傳輸協議:

        以太網定義:當前廣泛使用,采用共享總線型傳輸媒體方式的局域網.過去的年代,多臺計算機要想利用一個Moden 上網的話,就需要添加一塊集線器(HUB ) 來把這些計算機并聯起來.[PS:集線器和交換機(SWITCH) 相比,集線器會把總網絡數據傳輸速率平均分配到每臺計算機,但交換機卻不會,這和硬件設計有關]



        圖七 集線器實物圖(這年頭找張沒有水印的圖片還真少啊..)
        下面就是多臺計算機共享網絡線路的拓撲圖.





        圖八 總線型數據傳輸鏈路

        線路倒是共享了,作為在線路中的某臺計算機是怎么知道線路中的數據到底是發送到自己還是發送到其它計算機的呢?為此人們制定了以太網數據傳輸協議,下圖是傳輸數據結構.




        圖九 以太網數據傳輸結構

        目的地址 指的是該數據是由哪臺計算機接收.源地址 就是這個數據是從哪兒發送的.打個比方:比如A 主機需要發送數據到廣域網,那這個目的地址就填寫集線器的網絡適配器的地址(這個地址就做MAC地址,它是網絡適配器所擁有的唯一地址). 當集線器接收到數據并轉發B主機時,總線上所有主機都可以接收都這個數據包,假設A 主機接收到這個數據包,它會把數據包中的目的地址和自己的網絡適配器作對比,相同的話則表明這個數據是傳遞到我的,若不相同則丟棄數據包.這也就解釋了同集線器總線下監聽其它主機發送/接收網絡信息的原理.
        以太網數據包有許多不同的類型,上面是在集線器下常用的三個類型:IP 數據傳輸[0x0800],ARP 請求/應答[0x0806],RARP 請求/應答[0x8035].

        ARP 請求/應答:它的用處是利用某個網絡適配器的地址在總線中發起詢問,然后得到要查詢的網絡適配器的IP 地址.由于在計算機需要依靠集線器或交換機或路由器來傳遞消息之前,它一定要利用ARP 請求告訴集線器等轉遞消息硬件本機的網絡適配器的MAC 地址[PS:也可以利用RIP (路由信息協議)協議來向轉遞消息硬件獲取IP地址(發送網絡適配器的MAC地址獲取IP 地址)].在轉遞消息硬件接收到這個請求后會在ARP 緩存表(對應著計算機的IP地址和網絡適配器的MAC 地址)中查找,若無該MAC 地址,則在ARP 緩存表更新該MAC 地址,然后發送ARP 應答數據包,那么當轉遞消息硬件接收到消息后就可以根據數據中的IP 地址在ARP 緩存表尋找MAC 地址然后就在總線上發送.假如接收到一個數據包的的IP 地址在ARP 緩存表中找不到的話,那轉遞消息硬件將會丟棄該數據包并向源IP 地址發送ICMP 數據不可到達的數據包.注意,轉遞消息硬件一般是三十分鐘刷新一次ARP 緩存表的.

        RARP 請求/應答:假如我們只知道同集線器下的某臺計算機的IP 地址并想發送數據給它但又沒有該計算機的網絡適配器的MAC 地址那怎么辦呢?那就需要向總線廣播RARP (反向地址轉換協議)請求,此時以太網數據結構中的目的地址置為FFFFFFFFFFFF (即:-1),RARP 數據包結構(見圖十三)中的目的IP 地址則置為需要查詢的IP 地址.接下來,當總線下的某臺計算機的網絡適配器接收到后就會把該IP 和自己的對比,假若查詢的是自己的IP 地址,那就返回包含這個網絡適配器的IP 地址和MAC 地址的RARP 應答,最后查詢主機接收到該數據包后就更新本機的ARP 緩存表,然后就可以進行IP 層的數據發送了.

        圖十 ARP /RARP 數據包結構

        2.IP 協議:

        由于以太網協議只適用于局域網,而且以太網數據不能跨轉遞消息硬件發送,所以人們制定了IP (Internet Protocol ,因特網協議)協議.有了它,只要計算機連接到因特網那它都可以利用IP 地址(就像手機號碼) 來實現通信(就像手機利用GSM 協議打電話).下面就是IP 協議數據包結構:


        圖十一 IP 協議頭部數據包結構
        源IP 地址和目的IP 地址的意思和以太網數據包結構中的源地址和目的地址作用相同.(這里略去了其它TCP 特性,因為它們與本文無關)

        讀者們先來看看下面的網絡拓撲圖:



        圖十二 網絡門禁系統的網絡拓撲圖

        在每一個門禁控制系統里面都有主控制器.而這些主控制器利用以太網通過交換機來實現把數據傳遞到因特網(Internet)上.由于以太網傳輸協議只能使用在同一以太網下,所以這些數據是不可能傳遞到這個區域的外面的.你可以這樣想一下:廣州分廠的其中一個門禁控制系統的主控制器向它所屬的以太網發送一條信息給上海分廠的管理電腦及卡證中心主機顯然是不行的.而IP 協議卻不同,IP (Internet Protocol) 協議適合所有只要連接到因特網而且還擁有其獨立的IP 地址的主機.所以,當廣州分廠的其中一個門禁控制系統要和上海分廠的管理電腦及卡證中心主機實現數據交換那就必須要知道該主機的IP 地址.有了它,系統會根據實際情況把IP 協議頭部數據包的各個數據填充好,然后通過以太網指定發送到交換機.交換機會再把我們的數據包轉發到因特網上,接下來這個數據包會到達上海分廠的交換機, 最后上海分廠的交換機通過以太網發送數據包到管理電腦及卡證中心主機.
        以IP 協議為基礎,我們還可以利用TCP 和UDP 的傳輸數據方式來實現數據的傳輸.一般地,TCP 會提供"無差別","可靠的" 的數據傳輸服務.

        3.TCP 協議:

        TCP 協議作為現在廣泛使用的協議,它有著許多網絡通信協議所沒有的特性(比如:重傳).TCP 協議是基于IP 協議上開發的.下面先來討論TCP 的數據包結構:




        圖十三 TCP協議頭部數據結構

        TCP 協議并沒有指定發送方/接收方的地址,因為它是以IP 協議作為基礎的協議,所以IP 協議的地址也可以說是TCP 協議的地址.在TCP 協議頭部數據結構里,有一個新名詞叫"端口",它的用意是為了標識不同的程序接收不同的數據包,比如:80 端口發送/接收HTTP 協議數據包,21 端口實現TELNET 協議 等.TCP 協議的傳輸機制是比較特殊的,它首先需要兩臺主機之間建立通信連接,然后才可以傳輸數據,最后數據傳輸完成的時候還必須要對這個連接進行關閉.先看看下面是TCP 的通信流程圖:



        圖十三 TCP 協議通信連接與關閉連接時數據包傳送情況(由于源圖被畫了很多紅圈,沒辦法啊只能搶救成這樣,原諒LC 吧)

        對于上面的數據包交換我們可以分為兩部分來分析:前三個數據包表示的意思是建立TCP 連接,后四個數據包的意思是關閉TCP 連接.

        在TCP 建立連接的時候,主動建立的一方將會發送SYN_SENT 類型的TCP 數據包到目的主機,目的主機處理完成這個連接請求后立即返回SYN_ACK類型的TCP 數據包(編者注:無論目的主機是否愿意和它建立連接,要想實現這個結構那就必須忽略防火墻等的外界影響條件),最后在主動建立的一方接收到該SYN_ACK 數據包后返回ACK 數據包,它也就代表了TCP 連接真正建立成功.這就是TCP 三次握手過程.

        關鍵詞: 計算機間通信原

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 山东省| 珠海市| 大足县| 土默特左旗| 亚东县| 鄂尔多斯市| 汶川县| 奉新县| 嘉鱼县| 岗巴县| 喀什市| 馆陶县| 武义县| 远安县| 新泰市| 梁山县| 松溪县| 上杭县| 宜兴市| 哈巴河县| 正宁县| 龙陵县| 临湘市| 宁都县| 武义县| 梁河县| 惠安县| 科技| 什邡市| 怀安县| 蕲春县| 托克托县| 乃东县| 芜湖市| 宜都市| 儋州市| 桦川县| 浠水县| 灵川县| 五华县| 伊川县|