㈠ 計算機網路原理中求CRC校驗碼。
01100。演算法你可以用手算,或者用代碼計算,代碼分按位和按位元組。手算演算法是:多項式為101101你在信息的後面補5個0信息碼變為1101101100000這時開始用多項式對上面的信息碼進行異或操作,要打的話很麻煩。我只把沒一次運算的結果寫一下1:011011(注意,前面一位已經為零,這時,要在此數後面補一個數,也就是說,現在已經對8為信息碼操作了一位)移位以後變為110111。(此時的首位又為1,再與多項式異或,下面的類似)2:0110103:0110004:0111015:0101116:000011 注意此時的信息碼已經被操作了5次了,就是說還有3位沒有操作,這時把這個數左移3位就好了,因為他的前3位都為零,所以最後的crc碼為01100整個要發送的數據為11011011+01100中間算的可能有錯誤,開始看crc的時候可能會很難懂,看看代碼很不錯的
㈡ 求計算機網路IP計算方法
1,網路地址是:192.168.100.128 (子網掩碼與IP地址位與得到網路位)
2,63(除網路號的地址大小)
3,192.168.100.65到192.168.100.254(最小網路地址到最大網路地址)
4,192.168.100.192(廣播地址)
㈢ 關於一道計算機網路的題
已知要發送的序列為101011,生成多項式為G(x)=x4+x+1,所對應的二進制比特序列為10011,進行如下的二進制除法,被除數為101011乘以2的5次方,即1010110000,除數,10011,把得到的余數加在101011後面就是要發送的比特序列,我算的結果是100,即要發送的比特序列為101011100。
而讓你檢驗收到的碼字100100011的正確性就是用收到的結果去除以G(x),即用100100011去除以10011,看余數是否為0,如為0則是正確的,不為0則是不正確的,我的答案是不正確。
呵呵,這個正好剛剛學過,就替你解決了!!
㈣ 求網路子網掩碼的計算!比如一般的區域網的子網掩碼計算題該怎麼來計算
子網掩碼(subnet mask)是每個網管必須要掌握的基礎知識,只有掌握它,才能夠真正理解TCP/IP協議的設置。以下我們就來深入淺出地講解什麼是子網掩碼。
IP地址的結構
要想理解什麼是子網掩碼,就不能不了解IP地址的構成。互聯網是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了一個有層次的結構。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網路號和主機號兩部分,以便於IP地址的定址操作。
IP地址的網路號和主機號各是多少位呢?如果不指定,就不知道哪些位是網路號、哪些是主機號,這就需要通過子網掩碼來實現。
子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。
子網掩碼的設定必須遵循一定的規則。與IP地址相同,子網掩碼的長度也是32位,左邊是網路位,用二進制數字「1」表示;右邊是主機位,用二進制數字「0」表示。只有通過子網掩碼,才能表明一台主機所在的子網與其他子網的關系,使網路正常工作。
子網掩碼的術語是擴展的網路前綴碼不是一個地址,但是可以確定一個網路層地址哪一部分是網路號,哪一部分是主機號,1 的部分代表網路號,掩碼為 0的部分代表主機號。子網掩碼的作用就是獲取主機 IP的網路地址信息,用於區別主機通信不同情況,由此選擇不同路。其中 A類地址的默認子網掩碼為 255.0.0.0;B類地址的默認子網掩碼為 255.255.0.0;C類地址的默認子網掩碼為:255.255.255.0
如何通過子網掩碼來確定網路號或者網路地址?
通過 IP 地址的二進制與子網掩碼的二進制進行與運算進行定某個設備的網路地址,
也就是說通過子網掩碼分辨一個網路的網路部分和主機部分子網掩碼一旦設置,網路地址和主機地址就固定了。
相對於使用子網掩碼來識別網路地址,早期的使用類別進行網路地址的分類存在著地址大量浪費的不足。
子網一個最顯著的特徵就是具有子網掩碼。與IP地址相同,子網掩碼的長度也是32位,也可以使用十進制的形式。例如,為二進制形式的子網掩碼:,採用十進制的形式為:255.255.255.0。
1.子網掩碼的概念
子網掩碼是一個32位地址,用於屏蔽IP地址的一部分以區別網路標識和主機標識,並說明該IP地址是在區域網上,還是在遠程網上。
2.確定子網掩碼數
用於子網掩碼的位數決定於可能的子網數目和每個子網的主機數目。在定義子網掩碼前,必須弄清楚本來使用的子網數和主機數目。
定義子網掩碼的步驟為:
A、確定哪些組地址歸我們使用。比如我們申請到的網路號為 「210.73.a.b」,該網路地址為c類IP地址,網路標識為「210.73」,主機標識為「a.b」。
B、根據我們現在所需的子網數以及將來可能擴充到的子網數,用宿主機的一些位來定義子網掩碼。比如我們現在需要12個子網,將來可能需要16個。用第三個位元組的前四位確定子網掩碼。前四位都置為「1」(即把第三位元組的最後四位作為主機位,其實在這里有個簡單的規律,非網路位的前幾位置1遠網路就被分為2的幾次方個網路,這樣原來網路就被分成了2的4次方16個子網),即第三個位元組為「11110000」,這個數我們暫且稱作新的二進制子網掩碼。
C、把對應初始網路的各個位都置為「1」,即前兩個位元組都置為「1」,第四個位元組都置為「0」,則子網掩碼的間斷二進制形式為:「11111111.11111111.11110000.00000000」
D、把這個數轉化為間斷十進制形式為:「255.255.240.0」
這個數為該網路的子網掩碼。
3.IP掩碼的標注
A、無子網的標注法
對無子網的IP地址,可寫成主機號為0的掩碼。如IP地址210.73.140.5,掩碼為255.255.255.0,也可以預設掩碼,只寫IP地址。
B、有子網的標注法
有子網時,一定要二者配對出現。以C類地址為例。
1.IP地址中的前3個位元組表示網路號,後一個位元組既表明子網號,又說明主機號,還說明兩個IP地址是否屬於一個網段。如果屬於同一網路區間,這兩個地址間的信息交換就不通過路由器。如果不屬同一網路區間,也就是子網號不同,兩個地址的信息交換就要通過路由器進行。例如:對於IP地址為210.73.140.5的主機來說,其主機標識為00000101,對於IP地址為210.73.140.16的主機來說它的主機標識為00010000,以上兩個主機標識的前面三位全是000,說明這兩個IP地址在同一個網路區域中,這兩台主機在交換信息時不需要通過路由器進行。10.73.60.1的主機標識為00000001,210.73.60.252的主機標識為11111100,這兩個主機標識的前面三位000與011不同,說明二者在不同的網路區域,要交換信息需要通過路由器。其子網上主機號各為1和252。
2.掩碼的功用是說明有子網和有幾個子網,但子網數只能表示為一個范圍,不能確切講具體幾個子網,掩碼不說明具體子網號,有子網的掩碼格式(對C類地址)。
子網掩碼的表示方法
子網掩碼通常有以下2種格式的表示方法:
1. 通過與IP地址格式相同的點分十進製表示
如:255.0.0.0 或 255.255.255.128
2. 在IP地址後加上"/"符號以及1-32的數字,其中1-32的數字表示子網掩碼中網路標識位的長度
如:192.168.1.1/24 的子網掩碼也可以表示為 255.255.255.0
子網掩碼和ip地址的關系
注意這講的都是有類網!
子網掩碼是用來判斷任意兩台計算機的IP地址是否屬於同一子網路的根據。
最為簡單的理解就是兩台計算機各自的IP地址與子網掩碼進行AND運算後,如果得出的結果是相同的,則說明這兩台計算機是處於同一個子網路上的,可以進行直接的通訊。就這么簡單。
請看以下示例:
運算演示之一:aa
I P 地址 192.168.0.1
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11000000.10101000.00000000.00000001
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制後為:
192.168.0.0
運算演示之二:
I P 地址 192.168.0.254
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11000000.10101000.00000000.11111110
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制後為:
192.168.0.0
運算演示之三:
I P 地址 192.168.0.4
子網掩碼 255.255.255.0
AND運算
轉化為二進制進行運算:
I P 地址 11000000.10101000.00000000.00000100
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進制後為:
192.168.0.0
通過以上對三組計算機IP地址與子網掩碼的AND運算後,我們可以看到它運算結果是一樣的。均為192.168.0.0
所以計算機就會把這三台計算機視為是同一子網路,然後進行通訊的。我現在單位使用的代理伺服器,內部網路就是這樣規劃的。
也許你又要問,這樣的子網掩碼究竟有多少了IP地址可以用呢?你可以這樣算。
根據上面我們可以看出,區域網內部的ip地址是我們自己規定的(當然和其他的ip地址是一樣的),這個是由子網掩碼決定的通過對255.255.255.0的分析。可得出:
前三位IP碼由分配下來的數字就只能固定為192.168.0 所以就只剩下了最後的一位了,那麼顯而易見了,ip地址只能有(2的8次方-1),即256-1=255一般末位為0或者是255的都有其特殊的作用。
那麼你可能要問了:如果我的子網掩碼不是255.255.255.0呢?你也可以這樣做啊假設你的子網掩碼是255.255.128.0
那麼你的區域網內的ip地址的前兩位肯定是固定的了
這樣,你就可以按照下邊的計算來看看同一個子網內到底能有多少台機器
1、十進制128 = 二進制1000 0000
2、IP碼要和子網掩碼進行AND運算
3、
I P 地址 11000000.10101000.1*******.********
子網掩碼 11111111.11111111.10000000.00000000
AND運算
11000000.10101000.10000000.00000000
轉化為十進制後為:
192 . 168. 128 . 0
4、可知我們內部網可用的IP地址為:
11000000.10101000.10000000.00000000
到
11000000.10101000.11111111.11111111
5、轉化為十進制:
192 . 168.128.0 到192 . 168.255.255
6、0和255通常作為網路的內部特殊用途。通常不使用。
7、於是最後的結果如下:我們單位所有可用的IP地址為:
192.168.128.1-192.168.128.254
192.168.129.1-192.168.129.254
192.168.130.1-192.168.130.254
192.168.131.1-192.168.131.254
. . . . . . . . . . . . .
192.168.139.1-192.168.139.254
192.168.140.1-192.168.140.254
192.168.141.1-192.168.141.254
192.168.142.1-192.168.142.254
192.168.143.1-192.168.143.254
. . . . . . . . . . . . .
192.168.254.1-192.168.254.254
192.168.255.1-192.168.255.254
8、總數為(255-128+1)*(254-1+1) =128 * 254 = 32512
9、看看的結果是否正確
(1)、設定IP地址為192.168.128.1
Ping 192.168.129.233通過測試
訪問http://192.168.129.233可以顯示出主頁
(2)、設定IP地址為192.168.255.254
Ping 192.168.129.233通過測試
訪問http://192.168.129.233可以顯示出主頁
10、結論
以上證明我們的結論是對的。
現在你就可以看你的子網中能有多少台機器了
255.255.255.128
分解:
11111111.11111111.11111111.1000000
所以你的內部網路的ip地址只能是
xxxxxxxx.xxxxxxxx.xxxxxxxx.0???????
到
xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111
㈤ 計算機網路用IP地址與子網掩碼,怎麼求網路號和主機號
將IP地址分成了網路號和主機號兩部分,設計者就必須決定每部分包含多少位。網路號的位數直接決定了可以分配的網路數(計算方法2^網路號位數);主機號的位數則決定了網路中最大的主機數(計算方法2^主機號位數-2)。然而,由於整個互聯網所包含的網路規模可能比較大,也可能比較小,設計者最後聰明的選擇了一種靈活的方案:將IP地址空間劃分成不同的類別,每一類具有不同的網路號位數和主機號位數。
例如:
192.168.1.120 /255.255.255.0
如何算出它的網路號.主機號
這個從二進制角度說比較方便。
首先把地址和掩碼轉換為二進制(熟了就不用了)
IP地址:11000000.10101000.00000001.01111000
掩 碼:11111111.11111111.11111111.00000000
(掩碼24個1,就是說這個地址是24位掩碼的)
掩碼為1的部分表示網路號,為0的部分表示主機號。
IP地址與掩碼相與得出網路地址,
換個演算法就是地址的前24位(掩碼1的個數)後面補0是網路地址
㈥ 計算機網路試題: 設有一個(7,3)碼,其生成多項式為g(x)=X4+X3+X2++1,當傳輸信息為101時,求CRC碼字。
101先用轉換到GF(2)上的多項式,就是s(x)=x2+1
在用生成多項式去對信息進行編碼:
g(x)*s(x)=x6+x5+x3+1,注意這是有限域GF(2)上的多項式運算,系數要模2才行
所以碼字是:1101001
㈦ 計算機網路問題,急,,,
2017年12月13日星期三,
這里需要強調一點,生成多項式(generator polynomial)和多項式不是一個概念,這里需要注意。我個人的理解是你要進行幾位的CRC校驗,就需要幾位的生成多項式(generator polynomial),但還收到生成多項式(generator polynomial)的第一位必須為1的限制,因此生成的多項式還需要注意這一點。原始信息所對應的多項式和生成多項式(generator polynomial)不是一個概念。
首先,我們要知道,任何一串二進制數都可以用一個多項式表示:且這串二進制數的各位對應多項式的各冪次,多項式中假如有此冪次項(比如多項式匯中有冪次項x^2對應二進制串碼中從右至左的第三位二進制數一定為1.因為右數第一位的冪次項為x^0,右數第二位的冪次項為x^1),則對應二進制數串碼中此位置的1,無此冪次項對應0。
舉例:代碼1010111對應的多項式為x^6+x^4+x^2+x+1,若我們將缺失的冪次項補全的話就有x^6+(x^5)+x^4+(X^3)+x^2+x+1,又因為x^5和X^3所對應的二進制位為0,不記入多項式中,因此有x^6+x^4+x^2+x+1,就是表示 1010111這個串碼。
而多項式為x^5+x^3+x^2+x+1的完整多項式為x^5+(x^4)+x^3+x^2+x+1正好對應二進制串碼101111,而x^4對應的二進制串碼中右數第五位(左數第二位)為0,不記入多項式中,因此,101111可以使用多項式x^5+x^3+x^2+x+1來表示。
通過上述兩個多項式的例子,可以看出,當多項式中的冪次項所對應的那一位二進制為1時,多項式中的那一個冪次項存在,而當二進制串碼中的某位為0時,對應的多項式冪次項忽略不記錄,例如,10111 1因為從左向右第二位是0,因此對應的多項式分子x^4就沒有被記錄到多項式中,
書面的說法是:
多項式和二進制數有直接對應關系:X的最高冪次對應二進制數的最高位,以下各位對應多項式的各冪次,有此冪次項對應1,無此冪次項對應0。可以看出:X的最高冪次為R,轉換成對應的二進制數有R+1位,
我們現在來看題目中generator plynomial (生成多項式)is X^4+x^2+1,最高冪次是4,因此,其表示的二進制為(4+1=5)5位,
且通過crc的原理,我們知道,循環冗餘校驗碼(CRC)是由兩部分組拼接而成的,
第一部分是信息碼,
第二部分是校驗碼,
可得公式:
CRC=信息碼+校驗碼,
很明顯校驗碼是跟在信息碼之後的,所以,題目中1101011011中左數的那5位是真正傳輸的信息(信息碼),即actual bit string transmitted(實際傳輸的信息位流)是11010,而後面的5位(11011)是校驗碼,
接下來我們結合上面的內容來理解對CRC的定義:
循環冗餘校驗碼(CRC)的基本原理是:在K位信息碼後再拼接R位的校驗碼,整個編碼長度為N位,因此,這種編碼也叫(N,K)碼。對於一個給定的(N,K)碼,可以證明存在一個最高次冪為N-K=R的多項式G(x)。根據G(x)可以生成K位信息的校驗碼,而G(x)叫做這個CRC碼的生成多項式。 校驗碼的具體生成過程為:假設要發送的信息用多項式C(X)表示,將C(x)左移R位(可表示成C(x)*2^R),這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。用 C(x)*2^R 除以生成多項式G(x)得到的余數就是校驗碼。
另一個定義:
利用CRC進行檢錯的過程可簡單描述為:在發送端根據要傳送的k位二進制碼序列,以一定的規則產生一個校驗用的r位監督碼(CRC碼),附在原始信息後邊,構成一個新的二進制碼序列數共k+r位,然後發送出去。在接收端,根據信息碼和CRC碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。這個規則,在差錯控制理論中稱為「生成多項式」。
再看另一個描述,在代數編碼理論中,將一個碼組表示為一個多項式,碼組中各碼元當作多項式的系數。例如 1100101 表示為1·x^6+1·x^5+0·x^4+0·x^3+1·x^2+0·x^1+1,即 x^6+x^5+x^2+1。
設,編碼前的原始信息多項式為P(x),P(x)的最高冪次加1等於k(這里的K就是整個原始信息的二進制編碼的長度,以上例1100101為例,此串二進制編碼的最高位對應的多項式冪次為6,根據定義得K=6+1=7,正好是此串二進制編碼的長度,);
設,生成多項式為G(x),G(x)的最高冪次等於r,這個r可以隨意指定,也就是r可以不等於K,但指定r時,必須滿足生成多項式G(x)最高位必須為1的條件,
設,CRC多項式為R(x)。:將P(x)乘以x^r(即對應的二進制碼序列左移r位),再除以G(x),所得余式即為R(x)。
設,編碼後的帶CRC的信息多項式為T(x)。:用公式表示為T(x)=x^r*P(x)+R(x),翻譯過來就是,編碼後的帶CRC校驗的多項式由左移了r位的原始信息P(x)後接CRC的校驗碼R(x)組成,
而在接收端,是使用T(x )去除G(x),若無余數,則表示接收正確。就是接收端使用接收到的信息T(x )去除和發送端約好的生成多項式G(x),若除盡沒有餘數則表示信息正確接收。
我們再來看本題,
題中給出已傳輸的信息為:1101011011,即T(x )=1101011011;
而generator polynomial 生成多項式是:x^4+x^2+1,即G(x)=10101;
那麼,我們來使用T(x )除以G(x)=110,根據上面的定義,我們知道,出現了沒有除盡的情況,有餘數,余數為110,則說明信息11010在傳遞過程出現了錯誤,而題目中給出,若將此信息串碼的左數第三位進行翻轉,則接收到的信息為:1111011011,那麼,
T(x )=1111011011,
則,再通過T(x )除以G(x)進行校驗運算後,得到余數1,沒有除盡
即T(x )除以G(x)=1,
所以沒有通過CRC校驗,此時,接收端能發現這個錯誤,
但是,如果我們將此串數據的左數第三位和最後一位同時翻轉,得到1111011010,那麼再經過T(x )除以G(x)的接收端校驗後,除盡了,余數為0,則,此時,因為T(x )除以G(x)=0,通過了接收端的校驗,因此,接收端並不能發現這個錯誤,以為是收到了正確的串碼:11110,但實際上我們發送的串碼是:11010,
最後,我們再來研究一下,T(x )是怎麼除G(x)的,實際上我們必須清楚,這里的除法實際上並不是我們傳統意義上的十進制除法,而是兩個二進制的「按位異或」(請注意每步運算都是先進行高位對齊的。)的演算法,在二進制數運算中,這被稱為模二除運算,
來看兩個例子,
【例一】假設使用的生成多項式是G(X)=X3+X+1。4位的原始報文為1010,求編碼後的報文。
解:
1、將生成多項式G(X)=X^3+X+1轉換成對應的二進制除數1011。
R=3,R就是生成多項式的最高次冪,
2、此題生成多項式有4位(R+1)(注意:通過對生成多項式計算所得的校驗碼為3位,因為,生成多項式的R為生成多項式的最高次冪,所以校驗碼位數是3位),要把原始報文C(X)【這里的C(X)就是1010】左移3(R)位變成1010 000
3、用生成多項式對應的二進制數對左移3位後的原始報文進行模2除(高位對齊),相當於按位異或:
1010000
1011
------------------
0001000, 請注意這里,通過第一次除法,也就是模2除(高位對齊)的運算,將兩個二進制代碼進行了高位對齊後的按位異或的操作後,得到0001000即1000,接下來,需要進行第二次除法,即使用第一步得到的二進制數1000去除1011【G(x)】,則有下面的式子,
1000
1011
------------------
0011,請注意,結果為0011,也可以寫成11,但是我們由上面得知,由生成多項式G(X)=X^3+X+1,已經確定了校驗位是3位,因此,
得到的余位011,所以最終編碼為:1010 011。
例二:
信息欄位代碼為: 1011001;對應的原始多項式P(x)=x6+x4+x3+1
假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的代碼為: 11001,又因為g(x)最高次冪為4,因此可以確定校驗位是4位,
根據CRC給生成多項式g(x)定義的規則,將原始代碼整體左移4位,這樣在原始數據後面多出4位校驗位的位置,即x^4*P(x),得到:10110010000;
接下來使用10110010000去除以g(x),得到最終的余數1010,並與原始信息組成二進制串碼:1011001 1010發送出去,
接收方:使用相同的生成多項式進行校驗:接收到的欄位/生成碼(二進制除法)
如果能夠除盡,則正確,
給出余數(1010)的計算步驟:
除法沒有數學上的含義,而是採用計算機的模二除法,即除數和被除數做異或運算。進行異或運算時除數和被除數最高位對齊,按位異或。
10110010000
^11001
--------------------------
01111010000 ,這里進行第一次按位異或,得到01111010000,即1111010000,將1111010000再去除以11001,如下步驟,
1111010000
^11001
-------------------------
0011110000,進行了第二次模2除後,得到0011110000,即11110000,將
11110000去除11001,
11110000
^11001
--------------------------
00111000,第三次摸2除,得到00111000,即111000,用
111000去除11001,
111000
^11001
-------------------
001010,進行第四次模2除後,得到最終的余數,001010,即1010,
則四位CRC校驗碼就為:1010。