網絡詳解:
網絡的osi層次結構:
物理層:
以太網規定,連入網絡的所有設備,都必須具有”網卡”接口。數據包必須是從一塊網卡,傳送到另一塊網卡。
網卡的地址,就是數據包的發送地址和接收地址,這叫做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數據包的”數據”部分。因此,現在的以太網的數據包就變成下面這樣。
原創文章,作者:zhong,如若轉載,請注明出處:http://www.www58058.com/42810
文章對網絡參考模型ISO闡述的很詳細,但這個排版有點混亂,而且不只是這一篇了,希望作者能注意一下。