互联网协议入门(1)
通過學習:阮一峰(很全很詳細)
互聯網的核心是“一系列協議”,這些協議對電腦如何連接和組網,做出了詳細的規定。只要把這些協議搞懂了,就很好理解互聯網的原理了。
一、概述
1.1五層模型
用戶接觸的是最上面一層
實體層-->鏈路層-->網絡層-->傳輸層-->應用層
越往下越靠近硬件,越往上越靠近用戶
1.2層與協議
每一層都需要完成相應的功能,但是必須遵守某種規則,這個規則就稱之為“協議(protocol)”
每一層都有許多協議,這些協議的總稱“互聯網協議”(Internet Protocol Suite)
接下來就介紹每一層的功能,主要就是介紹每一層的主要協議
二、實體層
首先將電腦連接起來,采用電纜、光纜、無線電波、雙絞線
用物理手段將電腦連接起來,規定了網絡的一些電氣特性,作用是傳送0或1的電信號
三、鏈路層
3.1單純的0或1的電信號沒有意義,必須規定解讀方式:多少個電信號一組?每個信號位代表什么意義?
這就是鏈路層的功能,在“實體層”上規定了0和1分組方式
3.2“以太網協議”
開始每個公司都有自己的分組方式,逐漸一個“以太網”協議占據了主導地位。
“以太網協議”規定一組電信號組成一個數據包稱之為“幀(Frame)”.每一個幀有兩部分組成:頭(Head)和數據(Data)
“標頭”包含了一些信息 (發送者、接受者、數據類型等)
“數據”就是發送的內容
“標頭”的長度默認是18字節。“數據”最短為46字節,最長1500字節,因此幀的最短為64字節,最長1518。如果發送的數據過長,就需要拆分成好幾幀來發送
3.3MAC地址
上邊提到“標頭”中包含著發送者和接受者的信息,那么如何標識發送者和接受者的呢
“以太網協議”規定接入網絡的所有設備必須就有“網卡”接口。數據包是從一個網卡接口發送至另一個網卡接口。網卡的地址就是發送和接收的地址,稱之為MAC地址
每一個網卡都有世界上獨一無二的MAC地址,長度是48個二進制,通常用12個十六進制表示
前六個是廠商編號,后六位是該廠商網卡的流水號
3.4廣播
定義只是第一步,一個網卡是如何得知另一個網卡的MAC地址的呢
ARP協議可以解決這個問題,具體的后邊在學習
但是知道了另一個網卡的MAC地址,如何準確的吧數據包送達呢
這里,“以太網”采用了的最原始的方法,向本網絡下的所有計算機發送數據包,然后在判斷是否是接收方
在上圖中,計算機1要向計算機2發送數據,需要將數據包發送到計算機2/3/4/5,然后2/3/4/4在讀取數據包中MAC地址和自身比較,如果相同,作進一步的處理;如果不同,就丟棄這個數據包;這就叫做“廣播”
有了數據包的定義、網卡的MAC地址和廣播的發送方式,“鏈路層”就可以在多個計算機之間發送數據包了
四:網絡層
4.1網絡層的由來
以太網協議,依靠MAC地址來傳輸數據。理論上,單單靠MAC地址,上海的網卡是能找得到洛杉磯的網卡(MAC地址唯一性)。
但是這樣也有巨大的缺點,以太網依靠廣播的方式發送數據包。所有成員人手一份包,效率太低,而且局限于一個子網絡,也就是說兩臺計算機不在一個子網絡,廣播是過不去的,這樣的設計也是合理的,想想一發送數據,互聯網的人人手一包,會引發災難的。
互聯網是由無數個子網絡組成的巨型網絡,上海的計算機和洛杉磯的計算機不可能在同一個子網絡。
因此,能不能區分是否在同一個子網絡,如果同一個子網絡,直接廣播;如果不在同一個子網絡,就得“路由”。Mac只與廠商有關,與網絡無關。這就導致了網絡層的出現,引進了新的地址,稱之為網絡地址
4.2IP協議
規定網絡地址的協議叫做IP協議。網絡地址叫做IP地址
現在廣泛應用的是IP協議第四版,簡稱IPv4。
這個版本規定32個二進制組成,從0-255.255.255.255
每一臺主機都會有一個IP地址,IP地址唯一,否則會發生IP地址沖突。,IP地址由兩部分組成,前一部分代表網絡,后一部分代表主機。
比如172.16.254.1,假設前24位代表網絡,后8位則代表主機;兩個出于同一子網絡下的網絡部分相同,比如172.16.254.3和172.16.254.7處于同一個子網下;
但是單單從IP地址看不出來,因為你不知道是前16位還是前24位甚至前28位代表網絡部分;這個時候子網掩碼就出來了
子網掩碼和IP地址一樣,網絡部分全為1主機部分為零.比如172.16.254.1,假設前24位代表網絡,后8位則代表主機;那么他的子網掩碼就是255.255.255.0
只要知道了子網掩碼就可以判斷兩個IP是否在同一個子網絡,將兩個IP地址和子網掩碼進行and操作,是否相等。
IP地址的作用是:1.為每一個計算機安排一個地址 2.判斷是否在同一個子網絡下
4.3IP數據包
直接將IP數據包放進以太網數據包中,不需要增加新的欄位,這就是互聯網分層的好處。
“IP數據包”包括標頭和數據
標頭部分包括版本、長度、IP地址,“數據”部分是IP數據包的具體內容,放進以太數據包中就變成了
IP數據包的標頭長度20字節到60字節,整個數據包的長度是65535,因此“數據部分”最長65515字節;以太網數據包的“數據部分”最長為1500字節。因此如果IP數據包超過了1500字節,那么就要分割為幾個以太網數據包,分開發送
4.4ARP協議
網絡層,IP數據包放在以太網數據包中,因此我們必須需要知道兩個地址,一是Mac地址一個是IP地址。通常,對方的IP地址是已知的,但是不知道Mac地址
所以,需要一種機制,能從IP地址得知Mac地址
這里分為兩種情況
一:兩個沒有在同一個子網絡下,只能是吧數據包發送到兩個子網絡相連的網關,需要網關去處理
二:在同一個子網絡下,可以用ARP協議,得到Mac地址。ARP協議也是發送一個數據包,包含在以太網數據包,其中包含他要訪問的IP地址,在對方的Mac地址這一欄,填的是FF.FF.FF.FF,表示這是一個“廣播”地址。在該子網絡中的每個主機都會收到這個數據包,從中取出IP地址與自己比較,如果相等,做出回復,告訴對方自己的Mac地址;如果不相等,丟棄這個包
五、傳輸層
有了Mac地址和IP地址之后,我們就可以實現在任一兩個主機之間建立聯系
但是,在同一個主機上,有很多進程在使用到網絡,比如一邊瀏覽網頁,一邊和朋友聊天,當接收到個數據包時需要判斷是表示誰的內容
因此,我們還需要一個“參數”表示接收到的數據包供哪個進程使用,這個“參數”就是“端口”(port),其實就是每個進程使用網卡的編號。每個數據包發送到特定的端口,每個進程到特定的端口取數據包
端口號是0-65535,16個二進制,0-1023的端口被系統占用,因此用戶只能選擇大于1023的端口。
不管是聊天還是瀏覽網頁,都會隨機選擇一個端口號和服務器相連
“傳輸層”的作用就是確定端口到端口,“網絡層”確定的是主機到主機;只要確定了主機和端口就能實現程序之間的交流。因此Unix把主機+端口成為“套接字”(socket)。
有了它,就可以實現網絡應用程序開發
5.2UDP協議
在數據包中加入端口信息,就需要新的協議,最簡單的實現就是UDP協議,就是在數據前邊加上端口號
標頭中是發送端口和接收端口,數據部分就是具體的內容;然后把UDP數據包中放入IP數據包中
UDP數據包非常簡單,"標頭"部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。
5.3TCP協議
UDP有一個缺陷就是發送出去不能確定是否接受到了
為了解決這一問題,TCP協議就出來了,可以近似認為他是有確認機制的UDP協議,每發送一個數據包,都需要一個確認;如果數據包丟失沒有接收到確認那么就知道數據包丟失,需要重新發送
TCP數據包理論上無限長,但是為了保證網絡的效率,一般不會超過IP數據包的長度,以確保單個TCP數據包不被分割
六、應用層
應用程序接受到了數據包,接下來就是解讀。TCP協議傳輸的數據五花八門,比如Email、WWW、FTP,那么就需要不同協議來規定電子郵件、網頁、FTP的格式,這些應用程序協議就構成了應用層。
至此,整個互聯網的五層結構,自下而上全部講完了。
下一篇主要回顧TCP協議
總結
以上是生活随笔為你收集整理的互联网协议入门(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: NDIS学习笔记二——(模拟丢包)
- 下一篇: 赶快卸载电脑管家吧如何卸载电脑管家
