互聯網的實現

互聯網的實現

全世界幾十億臺電腦,連接在一起,兩兩通信。上海的某一塊網卡送出信號,洛杉磯的另一塊網卡就收到了,兩者實際上根本就不知道對方的物理位置,這難道不是一件很神奇的事情嗎?  
互聯網的**核心**是一些列協議,總稱為“互聯網協議”(Internet Protocol Suite)。它們對電腦如何連接和組網做出了詳細的規定。

互聯網協議入門

  1. 概述

    1. 五層模型:

      1. 互聯網的實現,分成好幾層。每一層都有自己的功能,就想建筑物一樣,每一層都靠下一層支撐。而作為用戶所接觸到的,只是最上面的一層。
      2. 分層有不同的模型,以下我們把互聯網分成五層來理解:

        1. 他們從上至下應該是

          1. 應用層
          2. 傳輸層
          3. 網絡層
          4. 連接層
          5. 實體層
      3. 越下面的層,越靠近硬件,而越上面的層越靠近用戶。它們叫什么名字并不重要,只需要知道互聯網分成多層就行了
      4. 層與協議

        1. 每一層都是為了完成一種功能。為了實現這些功能,就需要每一層都遵守共同的規則,而這個規則就叫做協議(protocol)
        2. 互聯網的每一層,都定義了很多協議。這些協議的總成就叫做互聯網協議(Internet Protocol Suite)。它們是互聯網的核心。下面介紹每一層的功能,主要就是介紹每一岑的主要協議
    2. 實體層

      1. 電腦要組網,第一件事就是把電腦連接起來。而連接電腦可以用有形介質連接,比如電纜,光纜。也有無形介質的連接方式,比如無線電波
      2. 這就叫做“實體層”,它就是把電腦連接起來的物理手段。主要規定了網絡的一些電器特性,作用是負責傳送0和1的電信號
    3. 鏈接層

      1. 定義:單純的0和1沒有任何意義,必須規定解讀方式:多少個蒂娜信號算一組?每個信號為有何意義?
      2. 鏈接層的功能,它在“實體層”的上方,確定了0和1的分組方式
      3. 以太網協議

        • 早期的時候,每家公司都有自己的電信號分組方式,而后,一種叫做“以太網”的協議,占據了主導地位
        • 以太網規定,一組電信號構成一個數據包,它的單位叫做“幀(Frame)”。每一幀分成兩個部分:標頭(Head),數據(Data)?!皹祟^”包含數據包的一些說明,比如發送者、接受者、數據類型等;“數據”則是數據包的具體內容
        • “標頭”的長度,固定為18字節?!皵祿钡拈L度,最短為46字節,最長為1500字節。因此,整個“幀”最短為64字節。如果數據很長,就必須分割成為多個幀進行發送
      4. MAC地址

        • 以太網的“標頭”包含了發送者和數據接收者的信息。那么發送者和接受者是如何識別的呢?
        • 以太網規定,連入網絡的所有設備,都必須有“網卡”接口。數據包必須是從一塊網卡,傳送到另一塊網卡。網卡的地址,就是數據包的發送地址和接受地址,這個就叫做MAC地址
        • 每一塊網卡出廠時,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。比如:00-B0-A0-81-AA-C0.它的前6個十六進制數表示廠商編號,后6個十六進制數表示該廠商的網卡流水號
      5. 廣播

        • 定義地址只是第一步,后面還有許多的步驟。
        • 首先,一塊網卡怎么知道另外一塊網卡的MAC地址?
        • 有一種叫做”ARP”的協議,可以解決兩塊網卡MAC地址相互通知的問題(后面再介紹)。以太網數據包必須知道接收方的MAC地址,才能發送
        • 其次,就算有了MAC地址,系統怎么樣才能把數據包準確送到接收方?
        • 以太網采用了一種很“原始”的方式,它不是把數據包準確的送到接收方,而是向本網絡內所有計算機發送,讓每臺計算機自己判斷,是否為接收方
        • 有了數據包的定義、網卡的MAC地址、廣播的發送方式,“鏈接層”就可以在多臺計算機之間傳送數據了
    4. 網絡層

      1. 由來:

        • 以太網協議,依靠MAC地址發送數據。理論上,單單依靠MAC地址,上海的網卡就可以找到華盛頓的網卡,技術上是可以實現的。
        • 但是,這樣做右一個重大的缺點。以太網采用廣播方式發送數據包,所有成員人手一“包”,不僅效率低,而且局限在發送者所在的子網絡。如果兩臺計算機不在同一個子網絡,廣播是傳不過去的。這種設計師合理的,否則互聯網上的每一臺計算機都會收到所有包,后果不堪設想
        • 互聯網是無數子網絡共同組成的一個巨型網絡,因此,必須找到一種方法,能夠區分哪些MAC地址屬于同一個子網絡,哪些不是。如果是同一個子網絡,就采用廣播方式發送,否則就采用“路由”方式發送。(路由的意思,就是指如何向不同的子網絡分布數據包)。但是靠MAC地址無法做到這一點。MAC地址只與廠商有關,與所處網絡無關
        • 這就導致了“網絡層”的誕生。它的作用是引進一套新的地址,使得我們能夠區分不同的計算機是否屬于同一個子網絡。這套地址就是“網絡地址”,也就是“網址”。網絡層出現之后,沒一臺計算機有了兩種地址,一種是MAC地址,另外一種是網絡地址。兩種地址之間沒有任何聯系,MAC地址綁定在網卡上,網絡地址則是管理員分配,它們只是隨機組合在一起。
        • 網絡地址幫助我們確定計算機所處在的子網絡,MAC地址則將數據包送到該子網絡中的目標網卡。因此,從邏輯上可以推斷,必定是先處理網絡地址,再處理MAC地址
      2. IP協議

        • 啊、規定網絡地址的協議,叫做IP協議。它所定義的網址,被稱為IP地址
        • 目前廣泛采用的是IPv4(IP協議的第4個版本,簡稱IPv4) 。它規定,網絡地址由32個二進制位組成
        • 互聯網上的沒一臺計算機都會分配到一個IP地址。這個地址分成兩個部分。第一個部分叫做網絡IP,第二各部分叫做主機IP。
        • 但是,單單從IP地址,我們無法判斷網絡部分。我們需要借助子網掩碼(subnet mask),它是表示子網絡特征的一個參數。在形式上與IP地質一樣是32位二進制數,但是它的網絡部分全部為1,主機IP全部為0
        • 知道“子網掩碼”之后,將它與IP地質想與,然后比較兩個IP地址結果是否相同,如果相同,則說明二者在一個網絡中。否則就不在
        • IP協議的主要作用:一是為每一臺計算機分配IP地址,另外一個是確定哪些地址在同一個子網絡
      3. IP數據包

        • 根據IP協議發送的數據,叫做IP數據包。其中必定包括IP地址信息。
        • 但是以太網數據包只包含MAC地址,并沒有IP地址的欄位。那么是否需要修改數據定義,再添加一個欄位呢?不需要,我們可以把數據包直接放進以太網數據包的“數據”部分,因此完全不用修改以太網的規格。這人就是互聯網分層結構的好處:上層的變動完全不涉及下層的結構
        • 具體來說,IP數據包也分為“標頭”“數據”兩個部分;標頭部分主要包括版本、長度、IP地址等信息,數據部分則是IP數據包的具體內容。
        • IP數據包的標頭部分的長度為20字節到60字節,整個數據包德宗長度最大為65535字節,因此,理論上一個IP數據包的數據部分,最長為65515字節。以太網數據包的數據部分,最長只有1500字節。因此,如果IP數據包超過了1500字節,它就需要分割成為幾個以太網數據包,分開發送。
      4. ARP協議

        • IP數據包是放在以太網數據包里發送的,所以我們需要同時知道兩個地址,一個是對方的MAC地址,另外一個是對方的IP地址。通常情況下,對方的IP地址是已知的,但是我們不知道它的MAC地址。
        • 有兩種情況。第一種情況是:如果兩臺主句不在同一個子網絡,那么事實上沒有辦法得到對方的MAC地址,只能把數據包送到兩個子網絡連接處的“網關”(geteway),讓網管去處理。第二種情況:如果兩臺主機在同一個子網絡,那么我們可以用ARP協議,得到對方的MAC地址。ARP協議也是一個數據包(包含在以太網數據包中),其中包含它所要查詢主機的IP地址,在對方的MAC地址這一欄,是12個F,FF:FF:FF:FF:FF:FF,它所在子網絡的沒一臺主機,都會收到這個數據包,從中取出IP地址,與自身的IP地址進行比較。如果兩者相同,都做出恢復,向對方報告自己的MAC地址,否則就丟棄這個包
    5. 傳輸層

      1. 由來:

        • 有了MAC地址和IP地址,我們已經可以在互聯網上任意兩臺主機上建立通信。但接下來的問題是,同一臺主機上有許多程序都需要用到網絡,當一個數據包從互聯網上發來的時候,你怎么知道它是的是網頁的內容,還是在線聊天的內容?
        • 也就是說,我們還需要一個參數,表示這個數據包到底供哪個程序(進程)使用。這個參數叫做“端口”(port),它其實是每一個使用網卡的程序的編號。每個數據包都發到主機的特定端口,所以不同的程序就能取到自己所需要的數據。
        • “端口”是0到65535之間的一個整數,正好16個二進制位。0到1023的端口被系統占用,用戶只能選用大于1023的端口。不管是瀏覽器瀏覽網頁,還是使用通訊工具在線聊天,應用程序會隨機選用一個端口,然后與服務器響應端口聯系
        • “傳輸層”的功能,就是建立“端口到端口”的通信。相比之下,“網絡層”的功能是建立在“主機到主機”的通信。只要確定主機和端口,就能實現程序之間的交流。因此,Uinx系統就把主機+端口,叫做“套接字”(socket)。有了套接字,就可以進行網絡應用程序開發了
      2. UDP協議

        • 現在,我們必須在數據包中鍵入端口信息,就需要新的協議。。最簡單的實現叫做UDP協議,它的格式就是在數據數據前面加上端口號。
        • UDP數據包,由標頭和數據兩部分組成
        • 標頭部分主要定義了發出端口和接受內容,數據部分就是具體的內容,IP數據包有事放在以太網數據包之中的,所以整個以太網數據包現在編程了 Head head head Data
        • UDP數據包非常簡單,標頭部分一共只有8個字節,總長度不超過65535個字節,正好放進一個IP數據包。
      3. TCP協議

        • UDP協議的優點是比較簡單,內容容易實現,但缺點是可靠性較低,一旦數據包發出,無法知道對方是否收到。
        • 為了解決這個問題,提高網絡可靠性,TCP協議就誕生了。它是一個有確認機制的UDP協議,每發出一個數據包都要求確認,如果有一個數據包遺失,就收不到卻仍,發廚房就知道有必要重發這個數據包了。
        • 因此,TCP協議能夠確保數據不會遺失。缺點是過程復雜、實現困難、小號資源較多。
        • YCP數據包和UDP數據包一樣,是內嵌在IP數據包的數據部分。TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度會嘗過IP數據包的長度,以確保蛋哥TCP數據包不必再分割。
    6. 應用層

      • 應用層收到傳輸層的數據,接下來就要進行數據解讀。由于互聯網是開放架構,數據來源五花八門,必須事先規定好格式,否則根本無法解讀。
      • 應用層的作用,就是規定應用程序的數據格式
      • TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那么,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了應用層
      • 這是最上面的一層,直接面對用戶。它的數據就放在TCP數據包的數據不封。因此,現在的以太網數據包就編程了head head head Data

以上。

原創文章,作者:半斤八兩,如若轉載,請注明出處:http://www.www58058.com/74794

(0)
半斤八兩半斤八兩
上一篇 2017-05-04
下一篇 2017-05-05

相關推薦

欧美性久久久久