通絡通信

網絡詳解:

網絡的osi層次結構:

osi2.png

物理層:

以太網規定,連入網絡的所有設備,都必須具有”網卡”接口。數據包必須是從一塊網卡,傳送到另一塊網卡。

網卡的地址,就是數據包的發送地址和接收地址,這叫做MAC地址。

每塊網卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。

前6個十六進制數是廠商編號,后6個是該廠商的網卡流水號。有了MAC地址,就可以定位網卡和數據包的路徑了。

數據鏈路層:

如果是同一個子網絡,就采用廣播方式發送,否則就采用”路由”方式發送。(”路由”的意思,就是指如何向不同的子

網絡分發數據包,pc->switch->route<-switch<-pc)遺憾的是,MAC地址本身無法做到這一點。它只與廠商有關,與所處網絡無關。

這就導致了”網絡層”的誕生。它的作用是引進一套新的地址,使得我們能夠區分不同的計算機是否屬于同一個子網絡。這套地址就叫做”網絡地址”,簡稱”網址”。

于是,”網絡層”出現以后,每臺計算機有了兩種地址,一種是MAC地址,另一種是網絡地址。兩種地址之間沒有任何聯系,MAC地址是綁定在網卡上的,網絡地址則

是管理員分配的,它們只是隨機組合在一起。網絡地址幫助我們確定計算機所在的子網絡,MAC地址則將數據包送到該子網絡中的目標網卡。因此,從邏輯上可以推斷,

必定是先處理網絡地址,然后再處理MAC地址。

總結一下,IP協議的作用主要有兩個,一個是為每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網絡。

網絡層:

網絡號 = IP與掩碼 按位相與 ,其作用就是判斷兩個網絡是不是在一個網段內。如果按位相與后的結果一樣說明是一個網絡段。

想要了解網絡的詳解,就必須了解網絡的分層結構:網絡的osi七層協議,也可稱為5層協議,通過網絡的分層了解數據包傳輸的過程。

首先,由于網絡的通信就是為了進行數據包的傳遞,而數據又是從一個網卡到另一個網卡,而識別網卡就需要知道網卡的標識符(mac)。

這里就不得不提一下ARP協議,就是進行路徑廣播獲取對方的mac地址。而ip數據包時放在以太網數據包中發送的,所以我們必須同時知道

兩個地址,一個事對方的MAC地址,另一個是對方的IP地址,通常情況下對方的ip地址是已知道的,但是我們不知道它的mac地址。所以我們

就需要一種機制能夠從ip獲取到mac地址,這種機制就是所謂的ARP協議。這里面又分為兩種情況:一是在同一個網絡內,我們可以使用ARP協議,

ARP協議也是發送一個數據包(包含在以太網數據包中)。其中包含它說要查詢的主機的ip地址,而對方的mac填的為:FF:FF:FF:FF:FF:FF ,表示

這是一個廣播地址。它所在的子網絡的每一臺主機都會收到這個數據包,從中取出IP地址與自己的IP進行比對,如果一樣,就會做出回復,告訴對

方自己的mac地址,如果不一樣,就會舍棄這個數據包,不做回應。

舉一個通俗易懂的例子,比如說:快遞員(源ip)送貨送到某小區的某棟樓下,只知道需要A(目標ip)收貨,卻不知道A具體住在哪個樓層,

于是只有在樓下喊話(ARP廣播),A聽到之后,在樓上告訴快遞員具體位置(mac地址),快遞員才能送上去(發送數據包)

二是:如果源主機與目標主機不在同一個網絡內(是不是同一個網絡查看網絡號是否相同),不在同一個網絡內就需要把數據包傳遞給網關的mac,網關的mac收到之后拆除mac的標頭看到里面的ip不是自己的,又把數據包重新進行封裝,然后傳遞給網關的另外一處,直到數據包傳遞給目標主機。

比如說:A(源ip)在北京(源mac),B(目標ip)在上海(mac)。因為不在同一個網絡內,所以喊話是聽不到的,只能通過北京火車站(源地址網關)到上海火車站(目標網關),到了同一個網絡內再進行喊話,B聽到之后會回應,告訴A它的mac,再進行數據包發送。

傳輸層:

有了ip地址和mac地址,我們可以在互聯網上的任意兩臺主機進行網絡通信。但是,這時又有一個問題就是:同一臺主機上有不同的程序需要用到網絡,

這時候如果我們一邊瀏覽網頁,一邊和朋友聊條,而這是我們發送的數據怎么辨別是聊天信息還是瀏覽網頁的內容呢? 這樣看來,我們還需要一個參數來標記這個數據包時供哪個程序使用的。這個參數就是“端口號”。它其實是每一個使用網卡的程序的編號,每個數據包都發送到主機的特定端口,所以不同的程序就能獲取到自己所需要的數據。而傳輸層就是建立端口到端口的通信,相比之下,網絡層是建立主機到主機之間的通信。只要確定主機和端口我們就能實現程序之間的交流。因此,linux系統就把主機+端口 的合稱叫做“套接字”。有了它,就可以進行網絡應用程序開發了。

        而在數據包中我們加入端口信息的話,就需要新的協議,最簡單的就是UDP協議,它的格式就是在數據前面加上端口號。UDP數據包也是由“標頭”和“數據”組成。標頭部分定義了發送端口和接收端口,數據就是數據包的具體內容。然后把整個UDP數據包放入IP數據包的數據部分,ip數據包又是放在以太網數據包中。

應用程序收到”傳輸層”的數據,接下來就要進行解讀。由于互聯網是開放架構,數據來源五花八門,必須事先規定好格式,否則根本無法解讀。

應用層:

“應用層”的作用,就是規定應用程序的數據格式。


舉例來說,TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那么,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了”應用層”。


這是最高的一層,直接面對用戶。它的數據就放在TCP數據包的”數據”部分。因此,現在的以太網的數據包就變成下面這樣。

osi1.png

原創文章,作者:zhong,如若轉載,請注明出處:http://www.www58058.com/42810

(0)
zhongzhong
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • python之psutil模塊

    python 安裝psutil 來實現獲取系統信息  # yum -y install python*pip # yum -y groupinstall “Development Tools # yum -y install python34-devel.x86_64 # pip3 install –upgrade pip # pip3 inst…

    Linux干貨 2014-01-22
  • Nginx基礎

    Nginx基礎 目錄 Nginx概述 Nginx的優點 Nginx相比Apache 編譯安裝Nginx Nginx配置文件講解 ngx_http_access_module模塊 ngx_http_auth_basic_module模塊 ngx_http_log_module模塊 ngx_http_stub_status_module模塊 Nginx概述 En…

    Linux干貨 2016-11-01
  • 初識linux:計算機的組成及功能

    一、描述計算機的組成及功能。 由馮諾伊曼提出計算機體系結構(5大部件)控制器(Controller):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。 (cpu由控…

    2017-12-03
  • 邏輯卷管理器LVM使用簡介

    邏輯卷管理器(LVM) 原理圖如下: 先準備一個分區/dev/sdb1,注意也存在ID問題,選擇8e。 1.先把磁盤變成物理卷 在做這步前可以先看下系統中存在的物理卷,沒有就什么都不會顯示。 把我們準備好的兩個磁盤變成物理卷,注意我那使用舊的格式化的分區磁盤,可能會出現上面有文件系統或者卷標類型的問題,所以盡量使用新磁盤做實驗。如果出現這種情況,可以使用dd…

    2017-05-02
  • 利用DNS和SAMBA實現web站點的簡單高可用

    本文通過DNS綁定兩臺主機的IP地址到一個URL,然后后臺samba服務器提供站點文件,此處以wordpress為例。這樣當有一臺服務器httpd服務出現故障的時候不至于造成站點無法訪問,而且站點數據和mysql數據庫數據位于后臺samba服務器,另一臺服務器直接從samba服務器獲取站點文件和數據庫數據,不會造成數據的不一致。 一、實驗環境: 三臺主機ip…

    2017-06-06
  • linux磁盤分區格式化基本操作

    磁盤分區 分區格式的兩種選擇:MBR和GPT 分區命令: parted的操作都是實時生效的,小心使用,主要是用于大于2T硬盤,支持MBR和GPT兩種格式。 用法:parted [選項]… [設備[命令[參數]…]…] parted /dev/sdb mklabelgpt|msdos //選擇分區格式 parted…

    Linux干貨 2017-04-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-10 09:17

    文章對網絡參考模型ISO闡述的很詳細,但這個排版有點混亂,而且不只是這一篇了,希望作者能注意一下。

欧美性久久久久