通絡通信

網絡詳解:

網絡的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)。因為不在同一個網絡內,所以喊話是聽不到的,只能通過北京火車站(源地址網關)到上?;疖囌荆繕司W關),到了同一個網絡內再進行喊話,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 08:47
下一篇 2016-09-02 08:47

相關推薦

  • 第三周作業

      1. 列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u root 2. 取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# who | tail -1 roo…

    Linux干貨 2016-12-26
  • 馬哥教育Net20第二十二天:在Centos7上實現lmnp

    要求: vhost1: pma.stuX.com, phpMyAdmin, 同時提供https服務; vhost2: wp.stuX.com, wordpress vhost3: dz.stuX.com, Discuz  環境說明: DNS是:192.168.100.7 vhos…

    Linux干貨 2016-07-02
  • Xtrabackup進行MySQL備份

    使用Xtrabackup進行MySQL備份 一、安裝 1、簡介 Xtrabackup是由percona提供的mysql數據庫備份工具,據官方介紹,這也是世界上惟一一款開源的能夠對innodb和xtradb數據庫進行熱備的工具。 特點: (1)備份過程快速、可靠; (2)備份過程不會打斷正在執行的事務; (3)能夠基于壓縮等功能節約磁盤空間和流量; (4)自動…

    Linux干貨 2017-02-20
  • Linux基礎知識之網絡配置

    基本網絡配置:     將Linux主機接入到網絡,需要配置網路相關設置。         IP/NETMASK:本地通信         路由(網關):跨網絡…

    Linux干貨 2016-09-07
  • 第十一周作業

    第十一周作業 1、詳細描述一次加密通訊的過程,結合圖示最佳 第一階段:ClientHello: 支持的協議版本,比如tls 1.2; 客戶端生成一個隨機數,稍后用戶生成“會話密鑰” 支持的加密算法,比如AES、3DES、RSA; 支持的壓縮算法; 第二階段:ServerHello 確認使用的加密通信協議版本,比如tls 1.2; 服務器端生成一個隨機數,稍后…

    2017-10-29
  • CentOS7內核編譯

    一.centos7內核編譯(支持ntfs文件系統) 1.下載內核源代碼內核文件(https://www.kernel.org/) 2.解壓縮源代碼文件到指定目錄 tar xvf linux-4.8.10.tar.xz -C /usr/src 3.創建軟鏈接解壓后的文件 cd /usr/src ln -s linux-4.8.10/ linux 4.復制當前系…

    Linux干貨 2016-11-28

評論列表(1條)

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

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

欧美性久久久久