IP編址,IP地址介紹與子網劃分方法

  • 網絡層位于數據鏈路層與傳輸層之間。網絡層中包含了許多協議,其中最為重要的協議就是IP協議。網絡層提供了IP路由功能。理解IP路由除了要熟悉IP協議的工作機制之外,還必須理解IP編址以及如何合理地使用IP地址來設計網絡。

上層協議類型

  • ?以太網幀中的Type字段值為0x0800,表示該幀的網絡層協議為IP協議。
  • 在剝掉幀的頭部和尾部之前,網絡設備需要根據幀頭中Type字段確定下一步將幀發送到哪個上層協議進行處理。本例中的幀頭部Type字段表示該幀需要上送到IP協議進行處理。以下將介紹幀的頭部和尾部被剝掉后,IP協議將如何處理幀中的數據。

IP報文頭部

  • IP報文頭部信息用于指導網絡設備對報文進行路由和分片。同一個網段內的數據轉發通過鏈路層即可實現,而跨網段的數據轉發需要使用網絡設備的路由功能。分片是指數據包超過一定長度時,需要被劃分成不同的片段使其能夠在網絡中傳輸。
  • IP報文頭部長度為2060字節,報文頭中的信息可以用來指導網絡設備如何將報文從源設備發送到目的設備。其中,版本字段表示當前支持的IP協議版本,當前的版本號為4DS字段早期用來表示業務類型,現在用于支持QoS中的差分服務模型,實現網絡流量優化。
  • 源和目的IP地址是分配給主機的邏輯地址,用于在網絡層標識報文的發送方和接收方。根據源和目的IP地址可以判斷目的端是否與發送端位于同一網段,如果二者不在同一網段,則需要采用路由機制進行跨網段轉發。

IP編址

  • IPv4地址為32比特的二進制數,通常用點分十進制表示。IP地址用來標識網絡中的設備,具有IP地址的設備可以在同一網段內或跨網段通信。IP地址包括兩部分,第一部分是網絡號,表示IP地址所屬的網段,第二部分是主機號,用來唯一標識本網段上的某臺網絡設備。

?

  • 每個網段上都有兩個特殊地址不能分配給主機或網絡設備。第一個是該網段的網絡地址,該IP地址的主機位為全0,表示一個網段。第二個地址是該網段中的廣播地址,目的地址為廣播地址的報文會被該網段中的所有網絡設備接收。廣播地址的主機位為全1。除網絡地址和廣播地址以外的其他IP地址都可以作為網絡設備的IP地址。

二進制、十進制和十六進制

  • 網絡中的數據可以采用二進制、十進制或十六進制來表示,了解這些進制對理解IP網絡基礎知識很有必要。每種進制使用不同的基值表示每一位的數值。二進制每一位只有01兩個值,基值為2,二進制數的每一位都可以用2x次冪來表示,x表示二進制數的位數。十六進制的每一位可以有16個數值,范圍為0-F(即0-9A-F),A對應十進制的10F對應十進制的15(二進制的1111)。

進制之間轉換

  • IP地址以字節為單位分為四段,每字節包含8個比特,可以表示0255,共256個數值。從二進制到十進制轉換表中可以看到每一位二進制數所代表的十進制數。上面的表格舉例說明了8位二進制數轉換為十進制數和十六進制數的情況。從表格中也可以看到全0和全1所對應的十進制數和十六進制數。

二進制和十進制轉換

  • 32位的IP地址分為4個字節,每個字節有256個取值。因此,理論上IPv4可以有4,294,967,296IP地址,但實際上只有其中一部分地址可以分配給網絡設備使用。本例中,IP地址的前三個字節表示網絡號,最后一個字節表示該網絡上網絡設備可用的地址范圍。將二進制格式的IP地址轉換為十進制格式時,需要把二進制中每一位1所代表的值加在一起,得出IP地址的十進制值。

IP地址分類

  • IPv4地址被劃分為ABCDE五類,每類地址的網絡號包含不同的字節數。A類,B類和C類地址為可分配IP地址,每類地址支持的網絡數和主機數不同。比如,A類地址可支持126個網絡,每個網絡支持224 16,777,216 )個主機地址,另外每個網段中的網絡地址和廣播地址不能分配給主機。C類地址支持200多萬個網絡,每個網絡支持256個主機地址,其中254個地址可以分配給主機使用。
  • D類地址為組播地址。主機收到以D類地址為目的地址的報文后,且該主機是該組播組成員,就會接收并處理該報文。各類IP地址可以通過第一個字節中的比特位進行區分。如A類地址第一字節的最高位固定為0B類地址第一字節的高兩位固定為10C類地址第一字節的高三位固定為110D類地址第一字節的高四位固定為1110E類地址第一字節的高四位固定為1111

IP地址類型

  • IPv4中的部分IP地址被保留用作特殊用途。為節省IPv4地址,ABC類地址段中都預留了特定范圍的地址作為私網地址。現在,世界上所有終端系統和網絡設備需要的IP地址總數已經超過了32IPv4地址所能支持的最大地址數4,294,967,296。為主機分配私網地址節省了公網地址,可以用來緩解IP地址短缺的問題。企業網絡中普遍使用私網地址,不同企業網絡中的私網地址可以重疊。默認情況下,網絡中的主機無法使用私網地址與公網通信;當需要與公網通信時,私網地址必須轉換成公網地址。還有其他一些特殊IP地址,如127.0.0.0網段中的地址為環回地址,用于診斷網絡是否正常。IPv4中的第一個地址0.0.0.0表示任何網絡,這個地址的作用將在路由原理中詳細介紹。IPv4中的最后一個地址255.255.255.2550.0.0.0網絡中的廣播地址。?

網絡通信

  • 源主機必須要知道目的主機的IP地址后才能將數據發送到目的地。源主機向其他目的主機發送報文之前,需要檢查目的IP地址和源IP地址是否屬于同一個網段。如果是,則報文將被下發到底層協議進行以太網封裝處理。如果目的地址和源地址屬于不同網段,則主機需要獲取下一跳路由器的IP地址,然后將報文下發到底層協議處理。

子網掩碼

  • 子網掩碼用于區分網絡部分和主機部分。子網掩碼與IP地址的表示方法相同。每個IP地址和子網掩碼一起可以用來唯一的標識一個網段中的某臺網絡設備。子網掩碼中的1表示網絡位,0表示主機位。?

默認子網掩碼

  • 每類IP地址有一個缺省子網掩碼。A類地址的缺省子網掩碼為8位,即第一個字節表示網絡位,其他三個字節表示主機位。B類地址的缺省子網掩碼為16位,因此B類地址支持更多的網絡,但是主機數也相應減少。C類地址的缺省子網掩碼為24位,支持的網絡最多,同時也限制了單個網絡中主機的數量。?

地址規劃

  • 通過子網掩碼可以判斷主機所屬的網段、網段上的廣播地址以及網段上支持的主機數。圖中這個例子,主機地址為192.168.1.7,子網掩碼為24位(CIP地址的缺省掩碼),從中我們可以判斷該主機位于192.168.1.0/24網段。將IP地址中的主機位全部置為1,并轉換為十進制數,即可得到該網段的廣播地址192.168.1.255。網段中支持的主機數為2nn為主機位的個數。本例中n=828=256,減去本網段的網絡地址和廣播地址,可知該網段支持254個有效主機地址。

地址規劃舉例

  • 根據給出的IP地址和子網掩碼,請算出此網絡中包含的主機地址數量以及可用主機地址的數量。
  • 本例說明如何根據B類IP地址及其子網掩碼判斷主機所屬的網段、網段中的廣播地址以及有效主機地址數量。判斷過程與C類地址類似。

有類IP編址的缺陷

  • 在設計網絡時使用有類IP地址會造成地址的浪費。?
  • 如果企業網絡中希望通過規劃多個網段來隔離物理網絡上的主機,使用缺省子網掩碼就會存在一定的局限性。網絡中劃分多個網段后,每個網段中的實際主機數量可能很有限,導致很多地址未被使用。如圖所示的場景下,如果使用缺省子網掩碼的編址方案,則地址使用率很低。

變長子網掩碼

  • 采用可變長子網掩碼可解決上述問題。缺省子網掩碼可以進一步劃分,成為變長子網掩碼(VLSM)。通過改變子網掩碼,可以將網絡劃分為多個子網。本例中的地址為C類地址,缺省子網掩碼為24位。現借用一個主機位作為網絡位,借用的主機位變成子網位。一個子網位有兩個取值01,因此可劃分兩個子網。該比特位設置為0,則子網號為0,該比特位設置為1,則子網號為128。將剩余的主機位都設置為0,即可得到劃分后的子網地址;將剩余的主機位都設置為1,即可得到子網的廣播地址。每個子網中支持的主機數為27-2(減去子網地址和廣播地址),即126個主機地址。

變長子網掩碼舉例

  • 可變長子網掩碼緩解了使用缺省子網掩碼導致的地址浪費問題,同時也為企業網絡提供了更為有效的編址方案。本例中需要使用可變長子網掩碼來劃分多個子網,借用一定數量的主機位作為子網位的同時,剩余的主機位必須保證有足夠的IP地址供每個子網上的所有主機使用。

無類域間路由

  • 無類域間路由CIDRClassless Inter Domain Routing)由RFC1817定義。CIDR突破了傳統IP地址的分類邊界,將路由表中的若干條路由匯聚為一條路由,減少了路由表的規模,提高了路由器的可擴展性。
  • 如上圖所示,一個企業分配到了一段A類網絡地址,10.24.0.0/22。該企業準備把這些A類網絡分配給各個用戶群,目前已經分配了四個網段給用戶。如果沒有實施CIDR技術,企業路由器的路由表中會有四條下連網段的路由條目,并且會把它通告給其他路由器。通過實施CIDR技術,我們可以在企業的路由器上把這四條路由10.24.0.0/2410.24.1.0/2410.24.2.0/2410.24.3.0/24匯聚成一條路由10.24.0.0/22。這樣,企業路由器只需通告10.24.0.0/22這一條路由,大大減小了路由表的規模。

網關

  • 報文轉發過程中,首先需要確定轉發路徑以及通往目的網段的接口,然后將報文封裝在以太幀中通過指定的物理接口轉發出去。如果目的主機與源主機不在同一網段,報文需要先轉發到網關,然后通過網關將報文轉發到目的網段。
  • 網關是指接收并處理本地網段主機發送的報文并轉發到目的網段的設備。為實現此功能,網關必須知道目的網段的IP地址。網關設備上連接本地網段的接口地址即為該網段的網關地址。

IP包分片

  • 網絡中轉發的IP報文的長度可以不同,但如果報文長度超過了數據鏈路所支持的最大長度,則報文就需要分割成若干個較小的片段才能夠在鏈路上傳輸。將報文分割成多個片段的過程叫做分片。
  • 接收端根據分片報文中的標識符(Identification),標志(Flags),及片偏移(Fragment Offset)字段對分片報文進行重組。標識符用于識別屬于同一個數據包的分片,以區別于同一主機或其他主機發送的其它數據包分片,保證分片被正確的重新組合。標志字段用于判斷是否已經收到最后一個分片。最后一個分片的標志字段設置為0,其他分片的標志字段設置為1,目的端在收到標志字段為0的分片后,開始重組報文。片偏移字段表示每個分片在原始報文中的位置。第一個分片的片偏移為0,第二個分片的片偏移表示緊跟第一個分片后的第一個比特的位置。比如,如果首片報文包含1259比特,那么第二分片報文的片偏移字段值就應該為1260

生存時間

  • 報文在網段間轉發時,如果網絡設備上的路由規劃不合理,就可能會出現環路,導致報文在網絡中無限循環,無法到達目的端。環路發生后,所有發往這個目的地的報文都會被循環轉發,隨著這種報文逐漸增多,網絡將會發生擁塞。
  • 為避免環路導致的網絡擁塞,IP報文頭中包含一個生存時間TTLTime To Live)字段。報文每經過一臺三層設備,TTL值減1。初始TTL值由源端設備設置。當報文中的TTL降為0時,報文會被丟棄。同時,丟棄報文的設備會根據報文頭中的源IP地址向源端發送ICMP錯誤消息。

協議號

  • 目的端的網絡層在接收并處理報文以后,需要決定下一步對報文該做如何處理。IP報文頭中的協議字段標識了將會繼續處理報文的協議。與以太幀頭中的Type字段類似,協議字段也是一個十六進制數。該字段可以標識網絡層協議,如ICMPInternet Control Message Protocol,因特網控制報文協議),也可以標識上層協議,如TCPTransmission Control Protocol,傳輸控制協議,對應值0x06)、UDPUser Datagram Protocol,用戶數據包協議,對應值0x11)。?

本章總結

問:子網掩碼的作用是什么?

答:32位的IP子網掩碼用于區分IP地址中的網絡號和主機號。網絡號表示網絡或子網,主機號表示網絡或子網中的主機。

問:IP報文頭部中TTL字段的作用是什么?

答:如果網絡中存在環路,則IP報文可能會在網絡中循環而無法到達目的端。TTL字段限定了IP報文的生存時間,保證無法到達目的端的報文最終被丟棄。

問:網關的作用是什么?

答:網關是指接收并處理本地網段主機發送的報文并轉發到目的網段的設備。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538966.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3- OpenCV+TensorFlow 入門人工智能圖像處理-TensorFlow入門

tensorflow基礎入門 思考一個問題: 如何剛好學習TensorFlow 類比為一門開發語言,學會語法,api的調用, 原理性掌握。語言的要素: 基礎數據類型 運算符 流程 字典 數組 import tensorflow as tf# 常量,指定數據類型 data1 tf.const…

r 函數返回多個值_第四講 R描述性統計分析

在“R與生物統計專題”中,我們會從介紹R的基本知識展開到生物統計原理及其在R中的實現。以從淺入深,層層遞進的形式在投必得醫學公眾號更新。在上一講中,我們介紹了第三講 R編程基礎-矩陣和數據框 (戳這里即可跳轉)。到現在為止,大…

python雙線性插值函數_雙線性插值法原理 python實現

碼字不易,如果此文對你有所幫助,請幫忙點贊,感謝!一. 雙線性插值法原理:① 何為線性插值?插值就是在兩個數之間插入一個數,線性插值原理圖如下:在位置 x 進行線性插值,插…

張恩民 php,php100教程_php100張恩民php視頻 56課時_網站編程_寂涯網絡學習基地

1、PHP基本語法和數據類型:(1)、PHP基本語法:1、htm 和 php 混編2、一個語句以 ; (分號結束)3、如何定義一個變量,和變量的使用(2)、PHP數據運算類型四種標量類型:boolean(布爾型)integer(整型)float(浮點型,也作“do…

Oracle 自帶sqldeveloper導入數據到表

步驟 1、建一張字段名和類型與要導入數據一致的表。 2、如果是excel文件,另存為 csv文件。 因為excel文件遇到空格會報錯,excel文件太大工具會讀取文件失敗。 而csv文件是秒級讀取,有空格也會導入不會報錯。 ------------- 更多的Java&am…

百度騰訊中興華為全部入局Linux Foundation深度學習基金會

2019獨角獸企業重金招聘Python工程師標準>>> 雖然名字叫做Linux Foundation,但是這家基金會關注的領域并不局限在Linux操作系統領域。事實上,Linux Foundation基金會還為很多其他開源基金和項目提供支持,比如Cloud Foundry、Autom…

python判斷點在矩形內_判斷平面內矩形和圓是否有交點的python實現

#! /usr/bin/env python# -*- coding: utf-8 -*-filename : 平面坐標內矩形與圓是否相交usage :authors : U{peterguo}copyright: tencentdate : 2012.08.21version : 1.0.0.0Modified History:2012.08.21 創建import osimport sysimport reimport urllib2import timeimport da…

python讀取mysql數據庫_Python操作MySQL數據庫9個實用實例

在Windows平臺上安裝mysql模塊用于Python開發 用python連接mysql的時候,需要用的安裝版本,源碼版本容易有錯誤提示。下邊是打包了32與64版本。 MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.3.win-amd64-py2.7.exe 實例 1、取得 MYSQL 的版本 #…

win主機上搭建php網站運行環境,Windows server 2008搭建php運行環境圖文詳解(php5.3)

這篇文章主要為大家分享下Windows server 2008搭建php運行環境的步驟,需要的朋友可以參考下下載php組件包首先到http://windows.php.net/download/下載你需要的php版本,這里我下載的是php5.3。下面解壓php組件 包到磁盤上。安裝Microsoft Visual C 2008 …

python 登陸微博 被刪除 token_爬取微博信息,使用了cookie仍然無法登錄微博

按照網上的模板自己寫了類似的代碼爬取微博,可是response回來的html是登錄界面的html,應該是沒有成功登陸微博,但是和網上的代碼是基本一樣的from bs4 import BeautifulSoupimport pandas as pdimport requestsurl "https://weibo.cn/2…

plsql developer連接oracle--本地不安裝oracle

工具 數據庫開發程序 PLSQL Developer oracle 客戶端 instantclient,點擊下載 (下載與oracle相同版本或最新版本,如果 PLSQL Developer是32位,則要下載32位的)安裝 1、解壓oracle客戶端 到盤某個目錄。我的目錄是C:\or…

ubuntu networking 與 network-manager

剛遇到的坑,因為操作不當導致網絡中斷,于是手動配置了/etc/network/interfaces , 修復了系統之后發現ubuntu-desktop中的有線鏈接不見了,百度了一下說是networking服務和network-manger服務會起沖突。 【Server版本】 在UbuntuServer版本中&…

mysql 升序_mysql 的 查找 與 排序

mysql 的 查找 &#xff1a;SELECT name,age FROM mytable; # 在mytable 中所有的name,age 數據SELECT name,age FROM mytable WHERE age>25; #在mytable 中所有的name,age 數據&#xff0c;其中age必須小于25SELECT name,age FROM mytable WHERE age<25 OR age>30; #…

Hadoop3.0的新特性

轉載&#xff1a;http://blog.csdn.net/sinat_31726559/article/details/52103229 點擊閱讀原文 -------------------------------------- 1. Hadoop3.0簡介 Hadoop 2.0是基于JDK 1.7開發的&#xff0c;而JDK 1.7在2015年4月已停止更新&#xff0c;這直接迫使Hadoop社區基于…

python torch exp_學習Pytorch過程遇到的坑(持續更新中)

1. 關于單機多卡的處理&#xff1a;在pytorch官網上有一個簡單的示例&#xff1a;函數使用為&#xff1a;torch.nn.DataParallel(model, deviceids, outputdevice, dim)關鍵的在于model、device_ids這兩個參數。DATA PARALLELISM?pytorch.org但是官網的例子中沒有講到一個核心…

php 讀文件返回字符串,PHP:file_get_contents('php:// input')返回JSON消息的字符串...

我正在嘗試在我的PHP應用程序中讀取JSON消息&#xff0c;這是我的php代碼&#xff1a;$json file_get_contents(php://input);$obj json_decode($json, TRUE);echo $obj->{S3URL};當我這樣做時&#xff0c;出現以下錯誤&#xff1a;Trying to get property of non-object …

Android中ListView數據使用sAdapter.notifyDataSetChanged();方法不刷新的問題

原文鏈接&#xff1a;http://blog.csdn.net/caihongdao123/article/details/51513410 點擊閱讀原文 ------------------------- 1.涉及到數據庫 當要動態顯示更數據庫改動&#xff0c;相信大家應該都用過notifyDataSetChanged();. 例如&#xff1a; ...... …

keepalived配置高可用集群

準備工作 分別在主從上安裝keepalived和nginxyum install -y keepalivedyum install -y nginx關閉主從上的防火墻和SELinuxsystemctl stop firewalldsetenforce 0 配置主機 查看主機ip [rootlynn-04 ~]# ifconfig ens33: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu…

如何快速掌握python包_如何快速掌握一個python模塊?

初學者就別想快了。 我自己是這樣的。先上網看看一些基礎的教程&#xff0c;非常快的過一下&#xff0c;十幾分鐘&#xff0c;主要是了解這個module能干什么&#xff0c;特別是一些基本的功能&#xff0c;頭腦中建立起初步映射。 然后就是用了&#xff0c;不用看了也白搭。我假…

python設計一個函數定義計算并返回n價調和函數_python函數的調和平均值?

我有兩個函數&#xff0c;給出精度和召回分數&#xff0c;我需要做一個調和平均函數&#xff0c;定義在同一個庫中&#xff0c;使用這兩個分數。函數如下所示&#xff1a;功能如下&#xff1a;def precision(ref, hyp):"""Calculates precision.Args:- ref: a l…