以下内容是IPv4
IP位址長度32位,Java裡面一個int的長度,總共分為5類IP位址
1:分類編址
A類IP位址0開頭: A類有31個位置可以變化,總數是2^31個, [(00000000)000-127(01111111)].[0-255].[0-255].[0-255]
B類IP位址10開頭, B類有30個位置可以變化,總數2^30, [(10000000)128-191(10111111)].[0-255].[0-255].[0-255]
C類IP位址110開頭, C類有29個位置可以變化,總數2^29, [(11000000)192-223(11011111)].[0-255].[0-255].[0-255]
D累IP位址1110開頭, D類有28個位置可以變化,總數2^28, [(11100000)224-239(11101111)].[0-255].[0-255].[0-255]
E累IP位址1111開頭, E類有28個位置可以變化總數2^28 [(11110000)240-255(11111111)].[0-255].[0-255].[0-255]
1.1:倆級編址
分組先抵達主機所在的網絡,然後才能找到主機
A類,B類,C類IP位址可以劃分為網絡辨別和主機辨別倆部分
A類:用1個位元組辨別網絡位址,3個位元組辨別主機位址,位址塊總共有2^7=128個,每個位址塊有2^24+1=167777216個,為什麼要+1,因為還有一個netID.00000000.00000000.00000000
B類:用2個位元組辨別網絡位址,2個位元組辨別主機位址,位址塊總共有2^14=16384個,(16-2(10開頭)=14),每個位址塊有2^16+1=65536個,+1原因同上
C類:用3個位元組辨別網絡位址,1個位元組辨別主機位址,位址塊總共有2^21=2097152個,(24-3(110開頭)=21),每個位址塊有2^8+1=256個,+1原因同上
D類:多點傳播位址
E類:保留位址,以後使用
網絡位址的作用:路由器通過IP位址,找到網絡位址,咨詢路由表找到相應的接口将分組轉發出去.
網絡掩碼:
A類的網絡掩碼:255.0.0.0
B類的網絡掩碼:255.255.0.0
C類的網絡掩碼:255.255.255.0
網絡掩碼(預設掩碼)的作用:使用二進制與運算從IP位址中提取網絡位址
如下:
分組中目的IP位址為:201:24:67:32
可以看出是C類IP位址:那麼它對應的掩碼是255.255.255.0
是以:網絡位址是
201.24.67.032
&
255.255.255.0
____________
201.24.67.0(網絡位址)
1.2:三級編址:子網劃分
IP位址最初設計為倆級編址.也就是分組先抵達主機所在的網絡,然後才能找到主機,但是倆級編址的位址不夠,原因如下
1:授權使用A類或B類位址塊的組織.出于安全和管理的需要,有必要把自己的大網絡進一步劃分為若幹的小網絡
2:A類位址和B類位址塊已經接近用完,C類位址塊又太小,是以有A類和B類使用權的組織可以将自己的位址塊劃分為多個較小的子位址塊和其他組織共享
将一個位址塊分割為若幹個較小的位址塊的思想稱為子網劃分(一個網絡劃分成很多小網絡,很多小網絡又可以劃分為更小的網絡)
子網路遮罩
當一個網絡沒有劃分子網時,使用的是網絡掩碼,當我們把一個網絡劃分成若幹個子網後,就要為每個子網建立一個子網路遮罩
一個子網由子網辨別和主機辨別倆部分組成.子網劃分增加網絡辨別的長度(把A類位址當成B類或者C類位址用),同時減少主機辨別的長度
當我們把一個網絡劃分為s個子網且每個子網的主機數目相同時,如下計算子網辨別
nsub=n+log2S
其中,n是網絡辨別的長度,nsub是各子網辨別的長度,s是子網的數目,s必須是2的乘方
如把B類網絡劃分成四個子網,是以n的值是16,而n1=n2=n3=n4=16+log24=18,也就是說子網路遮罩有18個1,14個0組成,255.255.192.0
子網位址
當一個網絡劃分子網後,子網的首位址就是它的子網辨別符,也就是路由器為分組選擇路由使分組到大正确的子網時要用的網絡辨別符。
1.3:構造超網
在構造超網時,一個組織可以把若幹個C類位址合并成一個更大的位址段,多個網絡合并成一個超網
1.3.1:超網掩碼
超網掩碼和子網路遮罩正好相反,C類子網路遮罩中1的個數要比C類預設掩碼中1的個數要多,而C類超網掩碼中1的個數比預設掩碼中1的個數少
11111111 11111111 11111111 11100000 nsub=24+3=27
預設掩碼
11111111 11111111 11111111 00000000 n=24
超網掩碼
11111111 11111111 11111000 00000000 nsuper=24-3=21
計算方式
nsuper=n-log2c
構造超網帶來新的問題
1:合并為超網的位址塊數目必須是2的乘方,也就是說一個組織隻需要7個位址塊,如果它想構造一個超網,那麼它必須還要去申請一個位址塊(位址浪費了)
2:分組的路由選擇變的相當複雜
2:無分類編址
在配置設定位址時,類别特權被取消了,以此來補償位址耗盡的問題
在無分類編址時整個位址空間被劃分為許多不同的大小的位址塊,理論上講這些位址塊可以有20,21,22.....個位址。唯一的限制是一個位址塊中的位址數必須是2的乘方
2.1:無分類倆級編址
當一個組織被授權使用一個位址塊,這個位址塊也可以劃分為倆個部分,字首和字尾,字首的作用和網絡辨別一樣,字尾就是主機辨別咯
在無分類編址中,字首的長度取決于位址塊的尺寸,它可以是0,1,2,3.....32(n),字尾的長度32-n
位址塊中的位址數目與字首長度n成反比,n越小意味着位址塊越大
2.1.1:斜線記法
分類編址時:網絡辨別的長度是位址固有的,給定一個位址就可以求出來
無分類編址時:如果我們僅僅給位址塊中的一個位址無法求出其字首長度
是以我們把字首的長度附加到位址後面,并用斜線隔開,如xxxx.xxxx.xxxx.xxxx/n
斜線記法的正式名稱是無分類域間路由選擇或CIDR記法
在無分類編址中, 我們需要知道位址塊中的一個位址,以及定義該塊的字首長度
如下:一個IP位址230.8.24.56可能屬于多個位址塊
字首長度16 ->位址塊230.8.0.0 到 230.8.255.255
字首長度20 ->位址塊230.8.16.0 到 230.8.31.255
2.2:網絡掩碼
在無分類編址中,網絡掩碼的思想和分類編址一樣,一個網絡掩碼就是一個32位的數,左邊n位全部置1,其餘未全部置0
2.3:提取位址塊的資訊
1.位址塊的位址數N=232-n
2.位址塊的首位址用網絡掩碼對這個位址進行與運算求出
3.末位址=位址總數+首位址,或者直接用網絡掩碼的反碼對該位址進行或運算
2.4:位址配置設定
由網際網路名字與号碼指派公司(ICANN)進行配置設定,不直接向個人配置設定位址,它将大塊的位址指派給一個ISP,遵循如下原則
1.申請的位址數N必須是2的乘方.這樣字首n才會是一個整數
2.必須是位址空間中連續未配置設定的位址才能被配置設定給申請的位址塊
3.如何選擇起始位址是有限制的,起始位址必須能夠被位址塊的位址數整除,X x 232-n,其中X是字首的十進制值,那麼起始位址就是X x N
2.5:無分類編址的子網劃分
假設使用的位址數是N,字首長度為n,配置設定下去每個子網的位址數為Nsub,每個子網的字首長度為nsub
1.每個子網的位址數應當是2的乘方
2.每個子網的字首長度應當用下面公式求得
nsub=n+log2(N/Nsub)
3.每個子網的起始位址應當能夠被它的位址數整除,要做到這一點,應該先為較大的子網指派位址
3:特殊的位址
1.全0的位址
位址塊0.0.0.0/32僅包含一個位址,它被保留用于某主機需要發送一個IPv4分組,但又不知道自己的位址的情況下用
主機為了找到自己的位址,就像引導伺服器(DHCP)發送一個IPv4分組,并以這種全0的位址作為源位址,而用受限廣播位址作為目的位址
2.全1位址,受限廣播位址
位址塊255.255.255.255/32僅包含一個位址,它被保留作為目前網絡的受限廣播位址,一個主機若想把封包發送給網絡中其他所有主機,就可以用這個位址作為目的位址,但是,路由器
會把這種類型位址的分組阻擋住,這樣廣播隻能局限在本地網絡.
3.環回位址
位址塊127.0.0.0/8被用作環回位址,用來測試機器上的軟體,使用這個位址時,分組沒有離開過機器。
4.專用位址
有一些位址被指派為專用位址,它們不會在全球被識别,用于拒絕其他網絡或者用于具有網絡位址轉換技術的連接配接
如下
位址塊 位址數
10.0.0.0/8 16777216
172.16.0.0/12 1047584
192.168.0.0/16 65536
169.254.0.0/16 65536
4:NAT技術
NAT網絡位址轉換技術
為什麼需要它:假設一個ISP向某個企業授予了一小段位址的使用權,如果這個企業壯大了,需要一個較大的位址段,ISP又無法滿足,
這個技術允許一個站點的内部通信使用一組專用位址,而與世界其他地方進行通信時使用另外一組位址.這個站點必須僅有一條到全球網際網路的連接配接,而且這條連接配接通過了一個運作
NAT軟體的具有NAT功能的路由器
4.1:位址轉換
所有外出的分組都要通過這台NAT路由器,它将分組中的源位址替換為全球NAT位址,所有進入分組也要通過這台NAT路由器,它又将這些分組中的目的位址替換為相應的内部位址
怎麼實作NAT技術
4.1.1:使用IP位址池實作
如果NAT路由器僅僅使用一個全球位址,那麼在專用網絡中,一次隻允許一台主機通路某個外部主機,為了消除這個限制,NAT路由器可以使用全球位址池,
使用IP位址和端口位址
如下表
專用位址(本地區域網路的源IP位址) 專用端口 外部位址 外部端口 運輸船協定
172.18.1.1 1400 25.8.3.2 80 TCP
172.18.3.1 1401 25.8.3.2 80 TCP
當來自HTTP的響應傳回時,源位址(25.8.3.2)與目的端口(1400)組合在一起指明了應當将這個響應分組傳遞給專用網絡中哪一台主機(172.18.1.1)
注:(本人私有的想法)專用端口,本人覺得應該是路由器給的随機值,如果用内網發來分組中的端口,會沖突,如下
路由器外網IP位址是1.1.1.1
A:内部IP位址172.18.1.1,端口是1400,這個分組資訊被轉換成1.1.1.1:1400,發給25.8.3.2:80,響應分組發給1.1.1.1:1400,來自25.8.3.2:80
B:内部IP位址172.18.3.1,端口是1400,這個分組資訊被轉換成1.1.1.1:1400,發給25.8.3.2:80,響應分組發給1.1.1.1:1400,來自25.8.3.2:80
響應分組回來就沖突,查找表,不知道交給誰,想要詳細了解NAT技術,檢視RFC 1631