互聯網的實現
全世界幾十億臺電腦,連接在一起,兩兩通信。上海的某一塊網卡送出信號,洛杉磯的另一塊網卡就收到了,兩者實際上根本就不知道對方的物理位置,這難道不是一件很神奇的事情嗎? 互聯網的**核心**是一些列協議,總稱為“互聯網協議”(Internet Protocol Suite)。它們對電腦如何連接和組網做出了詳細的規定。
互聯網協議入門
-
概述
-
五層模型:
- 互聯網的實現,分成好幾層。每一層都有自己的功能,就想建筑物一樣,每一層都靠下一層支撐。而作為用戶所接觸到的,只是最上面的一層。
-
分層有不同的模型,以下我們把互聯網分成五層來理解:
-
他們從上至下應該是
- 應用層
- 傳輸層
- 網絡層
- 連接層
- 實體層
-
他們從上至下應該是
- 越下面的層,越靠近硬件,而越上面的層越靠近用戶。它們叫什么名字并不重要,只需要知道互聯網分成多層就行了
-
層與協議
- 每一層都是為了完成一種功能。為了實現這些功能,就需要每一層都遵守共同的規則,而這個規則就叫做協議(protocol)
- 互聯網的每一層,都定義了很多協議。這些協議的總成就叫做互聯網協議(Internet Protocol Suite)。它們是互聯網的核心。下面介紹每一層的功能,主要就是介紹每一岑的主要協議
-
實體層
- 電腦要組網,第一件事就是把電腦連接起來。而連接電腦可以用有形介質連接,比如電纜,光纜。也有無形介質的連接方式,比如無線電波
- 這就叫做“實體層”,它就是把電腦連接起來的物理手段。主要規定了網絡的一些電器特性,作用是負責傳送0和1的電信號
-
鏈接層
- 定義:單純的0和1沒有任何意義,必須規定解讀方式:多少個蒂娜信號算一組?每個信號為有何意義?
- 鏈接層的功能,它在“實體層”的上方,確定了0和1的分組方式
-
以太網協議
- 早期的時候,每家公司都有自己的電信號分組方式,而后,一種叫做“以太網”的協議,占據了主導地位
- 以太網規定,一組電信號構成一個數據包,它的單位叫做“幀(Frame)”。每一幀分成兩個部分:標頭(Head),數據(Data)?!皹祟^”包含數據包的一些說明,比如發送者、接受者、數據類型等;“數據”則是數據包的具體內容
- “標頭”的長度,固定為18字節?!皵祿钡拈L度,最短為46字節,最長為1500字節。因此,整個“幀”最短為64字節。如果數據很長,就必須分割成為多個幀進行發送
-
MAC地址
- 以太網的“標頭”包含了發送者和數據接收者的信息。那么發送者和接受者是如何識別的呢?
- 以太網規定,連入網絡的所有設備,都必須有“網卡”接口。數據包必須是從一塊網卡,傳送到另一塊網卡。網卡的地址,就是數據包的發送地址和接受地址,這個就叫做MAC地址
- 每一塊網卡出廠時,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。比如:00-B0-A0-81-AA-C0.它的前6個十六進制數表示廠商編號,后6個十六進制數表示該廠商的網卡流水號
-
廣播
- 定義地址只是第一步,后面還有許多的步驟。
- 首先,一塊網卡怎么知道另外一塊網卡的MAC地址?
- 有一種叫做”ARP”的協議,可以解決兩塊網卡MAC地址相互通知的問題(后面再介紹)。以太網數據包必須知道接收方的MAC地址,才能發送
- 其次,就算有了MAC地址,系統怎么樣才能把數據包準確送到接收方?
- 以太網采用了一種很“原始”的方式,它不是把數據包準確的送到接收方,而是向本網絡內所有計算機發送,讓每臺計算機自己判斷,是否為接收方
- 有了數據包的定義、網卡的MAC地址、廣播的發送方式,“鏈接層”就可以在多臺計算機之間傳送數據了
-
網絡層
-
由來:
- 以太網協議,依靠MAC地址發送數據。理論上,單單依靠MAC地址,上海的網卡就可以找到華盛頓的網卡,技術上是可以實現的。
- 但是,這樣做右一個重大的缺點。以太網采用廣播方式發送數據包,所有成員人手一“包”,不僅效率低,而且局限在發送者所在的子網絡。如果兩臺計算機不在同一個子網絡,廣播是傳不過去的。這種設計師合理的,否則互聯網上的每一臺計算機都會收到所有包,后果不堪設想
- 互聯網是無數子網絡共同組成的一個巨型網絡,因此,必須找到一種方法,能夠區分哪些MAC地址屬于同一個子網絡,哪些不是。如果是同一個子網絡,就采用廣播方式發送,否則就采用“路由”方式發送。(路由的意思,就是指如何向不同的子網絡分布數據包)。但是靠MAC地址無法做到這一點。MAC地址只與廠商有關,與所處網絡無關
- 這就導致了“網絡層”的誕生。它的作用是引進一套新的地址,使得我們能夠區分不同的計算機是否屬于同一個子網絡。這套地址就是“網絡地址”,也就是“網址”。網絡層出現之后,沒一臺計算機有了兩種地址,一種是MAC地址,另外一種是網絡地址。兩種地址之間沒有任何聯系,MAC地址綁定在網卡上,網絡地址則是管理員分配,它們只是隨機組合在一起。
- 網絡地址幫助我們確定計算機所處在的子網絡,MAC地址則將數據包送到該子網絡中的目標網卡。因此,從邏輯上可以推斷,必定是先處理網絡地址,再處理MAC地址
-
IP協議
- 啊、規定網絡地址的協議,叫做IP協議。它所定義的網址,被稱為IP地址
- 目前廣泛采用的是IPv4(IP協議的第4個版本,簡稱IPv4) 。它規定,網絡地址由32個二進制位組成
- 互聯網上的沒一臺計算機都會分配到一個IP地址。這個地址分成兩個部分。第一個部分叫做網絡IP,第二各部分叫做主機IP。
- 但是,單單從IP地址,我們無法判斷網絡部分。我們需要借助子網掩碼(subnet mask),它是表示子網絡特征的一個參數。在形式上與IP地質一樣是32位二進制數,但是它的網絡部分全部為1,主機IP全部為0
- 知道“子網掩碼”之后,將它與IP地質想與,然后比較兩個IP地址結果是否相同,如果相同,則說明二者在一個網絡中。否則就不在
- IP協議的主要作用:一是為每一臺計算機分配IP地址,另外一個是確定哪些地址在同一個子網絡
-
IP數據包
- 根據IP協議發送的數據,叫做IP數據包。其中必定包括IP地址信息。
- 但是以太網數據包只包含MAC地址,并沒有IP地址的欄位。那么是否需要修改數據定義,再添加一個欄位呢?不需要,我們可以把數據包直接放進以太網數據包的“數據”部分,因此完全不用修改以太網的規格。這人就是互聯網分層結構的好處:上層的變動完全不涉及下層的結構
- 具體來說,IP數據包也分為“標頭”“數據”兩個部分;標頭部分主要包括版本、長度、IP地址等信息,數據部分則是IP數據包的具體內容。
- IP數據包的標頭部分的長度為20字節到60字節,整個數據包德宗長度最大為65535字節,因此,理論上一個IP數據包的數據部分,最長為65515字節。以太網數據包的數據部分,最長只有1500字節。因此,如果IP數據包超過了1500字節,它就需要分割成為幾個以太網數據包,分開發送。
-
ARP協議
- IP數據包是放在以太網數據包里發送的,所以我們需要同時知道兩個地址,一個是對方的MAC地址,另外一個是對方的IP地址。通常情況下,對方的IP地址是已知的,但是我們不知道它的MAC地址。
- 有兩種情況。第一種情況是:如果兩臺主句不在同一個子網絡,那么事實上沒有辦法得到對方的MAC地址,只能把數據包送到兩個子網絡連接處的“網關”(geteway),讓網管去處理。第二種情況:如果兩臺主機在同一個子網絡,那么我們可以用ARP協議,得到對方的MAC地址。ARP協議也是一個數據包(包含在以太網數據包中),其中包含它所要查詢主機的IP地址,在對方的MAC地址這一欄,是12個F,FF:FF:FF:FF:FF:FF,它所在子網絡的沒一臺主機,都會收到這個數據包,從中取出IP地址,與自身的IP地址進行比較。如果兩者相同,都做出恢復,向對方報告自己的MAC地址,否則就丟棄這個包
-
由來:
-
傳輸層
-
由來:
- 有了MAC地址和IP地址,我們已經可以在互聯網上任意兩臺主機上建立通信。但接下來的問題是,同一臺主機上有許多程序都需要用到網絡,當一個數據包從互聯網上發來的時候,你怎么知道它是的是網頁的內容,還是在線聊天的內容?
- 也就是說,我們還需要一個參數,表示這個數據包到底供哪個程序(進程)使用。這個參數叫做“端口”(port),它其實是每一個使用網卡的程序的編號。每個數據包都發到主機的特定端口,所以不同的程序就能取到自己所需要的數據。
- “端口”是0到65535之間的一個整數,正好16個二進制位。0到1023的端口被系統占用,用戶只能選用大于1023的端口。不管是瀏覽器瀏覽網頁,還是使用通訊工具在線聊天,應用程序會隨機選用一個端口,然后與服務器響應端口聯系
- “傳輸層”的功能,就是建立“端口到端口”的通信。相比之下,“網絡層”的功能是建立在“主機到主機”的通信。只要確定主機和端口,就能實現程序之間的交流。因此,Uinx系統就把主機+端口,叫做“套接字”(socket)。有了套接字,就可以進行網絡應用程序開發了
-
UDP協議
- 現在,我們必須在數據包中鍵入端口信息,就需要新的協議。。最簡單的實現叫做UDP協議,它的格式就是在數據數據前面加上端口號。
- UDP數據包,由標頭和數據兩部分組成
- 標頭部分主要定義了發出端口和接受內容,數據部分就是具體的內容,IP數據包有事放在以太網數據包之中的,所以整個以太網數據包現在編程了 Head head head Data
- UDP數據包非常簡單,標頭部分一共只有8個字節,總長度不超過65535個字節,正好放進一個IP數據包。
-
TCP協議
- UDP協議的優點是比較簡單,內容容易實現,但缺點是可靠性較低,一旦數據包發出,無法知道對方是否收到。
- 為了解決這個問題,提高網絡可靠性,TCP協議就誕生了。它是一個有確認機制的UDP協議,每發出一個數據包都要求確認,如果有一個數據包遺失,就收不到卻仍,發廚房就知道有必要重發這個數據包了。
- 因此,TCP協議能夠確保數據不會遺失。缺點是過程復雜、實現困難、小號資源較多。
- YCP數據包和UDP數據包一樣,是內嵌在IP數據包的數據部分。TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度會嘗過IP數據包的長度,以確保蛋哥TCP數據包不必再分割。
-
由來:
-
應用層
- 應用層收到傳輸層的數據,接下來就要進行數據解讀。由于互聯網是開放架構,數據來源五花八門,必須事先規定好格式,否則根本無法解讀。
- 應用層的作用,就是規定應用程序的數據格式
- TCP協議可以為各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那么,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了應用層
- 這是最上面的一層,直接面對用戶。它的數據就放在TCP數據包的數據不封。因此,現在的以太網數據包就編程了head head head Data
-
以上。
原創文章,作者:半斤八兩,如若轉載,請注明出處:http://www.www58058.com/74794