複製鏈接
請複製以下鏈接發送給好友

互聯網協議

鎖定
IP是互聯網協議羣(Internet Protocol Suite ,IPS)中眾多通信協議中的一個,也是其中最重要的一個。IP 協議屬於通信協議中的第三層網絡層協議,完成路由尋址和消息傳遞的功能。專家們一般將IPS解釋為一個協議堆棧,它可以將應用程序的信息(比如電子郵件或者網頁傳輸的內容)轉換為網絡可以傳輸的數據包
中文名
互聯網協議
外文名
Internet Protocol
隸    屬
通信協議
作    用
數據從源傳送到目的地

互聯網協議IP定義

IP協議,主要負責通過網絡連接在數據源主機和目的主機間傳送數據包
在 RFC 791 中對於 IP協議是這樣定義的:
“互聯網協議(IP)特指為實現一個相互連接的網絡系統上從一個源到一個目的地傳輸比特數據包(互聯網數據包)所提供必要功能的協議。其中並沒有增加端到端數據可靠性機制、流量控制機制、排序機制或者其它在端到端協議常見的功能機制。互聯網協議可在其支持的網絡上提供相應服務,實現多種類型和品質的服務 [1]  。”

互聯網協議IP屬性

IP通過多種屬性來定義數據是如何被傳輸的,而這些屬性對於我們將要討論的IPv4IPv6話題來説至關重要。因此我們要詳細瞭解一下相關屬性:
Host addressing 主機尋址:IP 協議為網絡上每個主機定義了尋址方案,通過主機地址使得數據包得以傳遞。
Protocol independence 協議獨立性:IP協議被設計為可以通過協議棧技術與其它網絡協議聯合使用。
Connectionless delivery 無連接交付:IP協議不承擔在數據源主機和目的主機間建立連接的責任。只負責從數據源主機建立數據報併發送出去的工作。
Best-effort delivery 最大努力交付:IP協議會盡量確保目標主機能夠獲得發送給它的數據包,但是並不是絕對保證。
No provision for delivery acknowledgments無需交付確認:目標主機收到數據包後不需要向發送源主機提交確認信息。
也許有人會問,既然後三個屬性沒有實現一個良好的數據傳輸環境,IP 協議數據包是如何知道自己該被髮送到哪裏?為什麼協議沒有其它更多功能?
答案很簡單,為了更好的數據傳輸性能。使用確立連接,錯誤校驗,確認交付等功能,都需要額外的處理器資源以及額外的網絡帶寬。因此如果被傳輸的數據報不需要這些功能,那麼就最好不要。另外,開發IP協議的人員也不是傻子,可以通過協議堆棧更有效的實現上述功能。

互聯網協議IP協議

規定網絡地址的協議,叫做IP協議。它所定義的地址,就被稱為IP地址
廣泛採用的是IP協議第四版,簡稱IPv4。這個版本規定,網絡地址由32個二進制位組成。
習慣上,我們用分成四段的十進制數表示IP地址,從0.0.0.0一直到255.255.255.255。
互聯網上的每一台計算機,都會分配到一個IP地址。這個地址分成兩個部分,前一部分代表網絡,後一部分代表主機。比如,IP地址172.16.254.1,這是一個32位的地址,假定它的網絡部分是前24位(172.16.254),那麼主機部分就是後8位(最後的那個1)。處於同一個子網絡的電腦,它們IP地址的網絡部分必定是相同的,也就是説172.16.254.2應該與172.16.254.1處在同一個子網絡。
但是,問題在於單單從IP地址,我們無法判斷網絡部分。還是以172.16.254.1為例,它的網絡部分,到底是前24位,還是前16位,甚至前28位,從IP地址上是看不出來的。
那麼,怎樣才能從IP地址,判斷兩台計算機是否屬於同一個子網絡呢?這就要用到另一個參數“子網掩碼”(subnet mask)。
所謂“子網掩碼”,就是表示子網絡特徵的一個參數。它在形式上等同於IP地址,也是一個32位二進制數字,它的網絡部分全部為1,主機部分全部為0。比如,IP地址172.16.254.1,如果已知網絡部分是前24位,主機部分是後8位,那麼子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。
知道“子網掩碼”,我們就能判斷,任意兩個IP地址是否處在同一個子網絡。方法是將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都為1,運算結果為1,否則為0),然後比較結果是否相同,如果是的話,就表明它們在同一個子網絡中,否則就不是。
比如,已知IP地址172.16.254.1和172.16.254.233的子網掩碼都是255.255.255.0,請問它們是否在同一個子網絡?兩者與子網掩碼分別進行AND運算,結果都是172.16.254.0,因此它們在同一個子網絡。
總結一下,IP協議的作用主要有兩個,一個是為每一台計算機分配IP地址,另一個是確定哪些地址在同一個子網絡 [2] 

互聯網協議TCP協議

UDP協議的優點是比較簡單,容易實現,但是缺點是可靠性較差,一旦數據包發出,無法知道對方是否收到。
為了解決這個問題,提高網絡可靠性,TCP協議就誕生了。這個協議非常複雜,但可以近似認為,它就是有確認機制的UDP協議,每發出一個數據包都要求確認。如果有一個數據包遺失,就收不到確認,發出方就知道有必要重發這個數據包了。
因此,TCP協議能夠確保數據不會遺失。它的缺點是過程複雜、實現困難、消耗較多的資源。
TCP數據包和UDP數據包一樣,都是內嵌在IP數據包的"數據"部分。TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割 [2] 

互聯網協議相關區別

數據包和數據報的區別
當討論IP協議時,很多人(包括我在內)都會混淆packet 和 datagram 這兩個術語,因為這兩者的定義非常類似(有些人認為二者完全相同)。RFC 1594 對於數據包和數據報的共同定義如下:
“一個獨立的數據實體,攜帶從數據源主機到目的主機所需的足夠信息,而不依賴於源主機和目的主機之前建立的網絡連接或者交換。”
既然定義是一樣的,為什麼還有這兩個術語是否相同的討論呢?實際上是一些專家對於packets和 datagrams有不同的定義,從而導致了疑問的產生。這些專家在討論有關可靠數據傳輸協議,比如TCP/IP時,會使用packet數據包這個術語,而在討論UDP 這樣的最大努力交付協議時,會使用datagram數據報這個術語。 在我們討論IP時,使用哪個術語都是可以的,但是我傾向於使用數據報(稍後你們會知道為什麼我要這樣)。
參考資料
  • 1.    楊志華, 袁鵬, 張欽宇. 空間互聯網協議技術及應用[J]. 中興通訊技術, 2016, 22(4):46-48.
  • 2.    劉年生. IPv6互聯網協議的特點分析[J]. 電訊技術, 2001, 41(1):112-118.