|
#1
| ||||
| ||||
| [轉貼] 第十章 Networking Fundamentals 一. IP (Internet Protocol:網際網路通訊協定)簡介 1. IP位址:即經常用以連線上網的一串數字碼,這串數字碼可讓電腦在internet中相互辨識,以達訊息資料傳送的目的,此數字碼便是IP位址。 目前IP位址有些不同版本,現大家所使用的為第四版的IP位址,即所謂的IPv4,至今已使用30多年了,另有資料顯示IPv4可能在2005~2010年用完,故IPv6應運而生。 IPv4位址由32bits(位元)所構成,可組成2(32)(註2的32次方)個位址,並以八位元為單位,將32位元分4部份,以十進位表示,而形成如61.219.18.224這類的表示法,若將其用二進位表示 : 00111101.11011011.00010010.11100000 此二進位數字即是網路上實際傳輸的數字串。 至於IPv6則由32bits→128bits,可提供未來數十年的IP位址須求。 2. IP位址分配由NIC (Network Information Center)美國網路資訊中心負責,再由各處中心細分下去。 IP位址分兩部份:Network bits(網路位元)、Host bits(主機位元),網路位元是用來區分是否位於同網段或不同網段,主機位元則用來識別網路段內的電腦主機。 3. IPv4將IP位址分A、B、C、D、E五個類型 (classA ~ classE),左邊第一個bit為0者→classA,為10者→classB,為110者→classC,為1110者→classD,為1111者→classE。 classA→ 8 Network bits+24 Host bits classB→16 Network bits+16 Host bits classC→24 Network bits+ 8 Host bits classD及classE分別作多點群播 (Multicast一對多資料傳送:class D) 及提供實驗網路使用(classE)。 classA:0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX Network bits Host bits Network bits共有27=128種組合,即128個網路段(網域),換算成十進位=>0~127,扣除0 (用來簡化IP必須處理的路徑資訊)及127兩個特殊用途外,真正可用為1~126。 Host bits共224種組合,即能提供224-2個主機IP。 在Host bits皆為0時,代表該網段位址(網域位址),皆為1時,代表廣播位址(發送廣播封包時使用),所以可提供的主機IP為224-2。 classB:10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX Network bits Host bits 可提供214個網路段,每網段可提供216-2個主機IP。 classC:110XXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX Network bits Host bits 可提供221網路段,每網路段提供28-2個主機IP。 127.0.0.1是保留做Loop Back Test(迴路測試),即自己將訊息送回本身電腦(Local),以了解TCP/IP是否設定OK。 例:$ ping 127.0.0.1 Private IP (私有IP、虛擬IP) 10.0.0.0 ~ 10.255.255.255 172.16.0.0 ~ 172.31.255.255 192.168.0.0 ~ 192.168.255.255 以上這些IP是提供做企業內部網路架構之IP設定範圍,可不與外界連線,亦可透過具NAT功能的Router或主機來與internet連線溝通。 4. 網路遮罩 (Network Mask) 用來確認不同的IP位址是否屬於同網段的辨識方法,即是由Network Mask來達成。 將IP位址中的Network bits設為1,Host bits設為0,而能得到網路遮罩,例如classA為255.0.0.0,classB為255.255.0.0,classC為255.255.255.0。 5. 子網路規劃: 如前所述,classA每一網段(網域)擁有224-2個IP位址,classB每一網段擁有216-2個IP位址,如此多的IP位址若無善加規劃,便易形成IP位址浪費與通訊不佳的情形,子網路 (subnet)規劃的須求便於此時應運而生。 所謂子網路切割即是將一個網路段(網域)底下再切割出子網路段,並藉由向Host bits借位元的方式來達成,如此使IP位址區分成網路位元、子網路位元及主機位元三部份。其中網路位元由NIC分配,子網路位元及主機位元則由該網段的擁有者逕行分配。 向Host bits借位元數愈多,所能區分的子網數也愈多。 如:172.16.x.x網段,向Host bits借三位元: 10101100.00010000.XXX XXXXX.XXXXXXXX 網路位元 子網位元 主機位元 網路位元向主機位元借位後,可切成23=8個子網段,每個子網段可用的IP位址為213-2 (Host bits為0及1扣除)。 其Sub-net Mask (子網遮罩):11111111.11111111.11100000.00000000 換算成十進位就等於255.255.224.0。 第一段:10101100.00010000.00000000.00000001 ↓ 10101100.00010000.00011111.11111110 可分配IP位址為172.16.0.1~172.16.31.254/19 子網段:172.16.0.0 廣播:172.16.31.255 第二段:10101100.00010000.00100000.00000001 ↓ 10101100.00010000.00111111.11111110 可分配IP位址為:172.16.32.1~172.16.63.254 子網段:172.16.32.0 廣播:172.16.63.255 第三段:172.16.64.1~172.16.95.254 子網段:172.16.64.0 廣播:172.16.95.255 ︰ ︰ 第八段:172.16.224.1~172.16.255.254 子網段:172.16.224.0 廣播:172.16.255.255 此八個子網段中,由於class對子網規劃的限制,使其最前段與最後段不能使用,故實際只有6個子網段,不過現在好像已解除這種限制了。 6. CIDR(Classless Inter-Domain Routing):不分級的網域尋徑(在CIDR機制下,子網規劃時的所有子網路段均可使用) 目前可取得的IP位址都屬於C class,但一個class C的網路段只能提供254個IP位址,萬一哪天覺得不夠使用時,須再申請數個class C網路段,同時須添購許多路由器 (此路由器須支援CIDR),如此作法可能因網段過多而影嚮路由器的執行效率,為了解決此一問題,網路工程策進會便提出了CIDR架構,簡單說,CIDR就是將幾個小網路段進行整合工作。 例:將classC,net mask 255.255.255.0的幾個網段進行CIDR整合: 210.10.36.x=>11010010.00001010.00100100.XXXXXXXX 210.10.37.x=>11010010.00001010.00100101.XXXXXXXX 210.10.38.x=>11010010.00001010.00100110.XXXXXXXX 210.10.39.x=>11010010.00001010.00100111.XXXXXXXX 合併之後,有10個位元屬於變動位元,因此歸類為主機位元,其他22個位元就屬於網路位元,所以 Net Mask 255.255.252.0。同樣道理,將 主機位元設為0,就可得到網域位址→210.10.36.0,我們可用下式來表 式: 210.10.36.0/22。 二. 網路設定檔: 1. /etc/sysconfig/network-scripts 這個目錄大都是與網路介面有關係的設定,我們以其下的一個檔案為例: # vi ifcfg-eth0 DEVICE=eth0 指定第一張網卡的網路介面。 BOOTPROTO=static 靜態設定ip位址,若使用動態ip則設dhcp。 IPADDR=192.168.2.1 ip位址。 NETMASK=255.255.255.0 網路遮罩。 BROADCAST=192.168.2.255 廣播位址。 NETWORK=192.168.2.0 網路位址。 ONBOOT=yes 開機時啟動介面。 另外像ifup及ifdown是兩支很好用的script,透過它們,可輕易的啟動 或關閉網路介面,例如: # ifdown eth0 # ifup eth1 記得使用這兩個script時,於network-scripts目錄下需存在相關檔案 如ifcfg-eth0、ifcfg-eth1才行,否則只能使用ifconfig eth0 down及 ifconfig eth1 up。 2. /etc/sysconfig/network 這是一個檔案,主要是設定啟動網路功能及主機名稱的地方。其內容 大致如下: NETWORKING=yes 啟動網路功能。 HOSTNAME=redhat73 設定主機名稱。 FORWARD_IPV4=yes 啟動路由功能。 GATEWAY=192.168.2.254 default gateway的位址。 GATEWAYDEV=eth0 連接default gateway的網路介面。 在redhat 7.3 中,FORWARD_IPV4更改過後,不能發揮功用,所以要是 想啟動路由,可從以下幾個地方著手: ˙# echo “1” > /proc/sys/net/ipv4/ip_forward ˙# vi /etc/sysctl.conf net.ipv4.ip_forward=1 ˙利用linuxconf或netconfig工具,將enable routing 打上”*”。 Note:在Openlinux下,gateway需設定在 /etc/sysconfig/network-scripts 的ifcfg-eth0裡面,若設在network內會無效。 而redhat要是兩者都設,會以network-scripts為主。 三. 在文字介面下的基本網路偵測指令: 1. ping:當傳送端下ping指令ping對方IP位址或FQDN時,事實上就是送出一個Echo Request訊息給目的端,而在目的端收到訊息後,會送出Echo Reply給傳送端,但若傳送端ping不到對方主機,則路由器會送出一個Destination Unreachable給傳送端。 註:ICMP (Internet Control Message Protocol)共有10餘種訊息類別,Echo Request屬於type8,Echo Reply屬於type0,而Destination Unreachable為type3。 例:# ping tw.yahoo.com # ping 168.95.1.1 # ping -c 5 168.95.1.1 2. ifconfig:查看網路界面的資料訊息及設定網路界面。 例:# ifconfig =>顯示已啟動界面的資料訊息。 # ifconfig -a =>未啟動界面也顯示。 # ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast \ 192.168.1.255 =>設定eth0的IP位址、網路遮罩及廣播位址。此臨時性的設定,在reboot後會失效。 # ifconfig eth1 =>檢視eth1界面。 # ifconfig eth0 down =>關閉eth0界面。 # ifconfig eth0 up =>啟動eth0界面。 上式可用ifup及ifdown代替,如 # ifup eth0 再來我們看看如何在一網路卡(界面)上設定多IP位址 : 例:# ifconfig eth0:0 192.168.1.2 netmask 255.255.255.0 # ifconfig eth0:1 192.168.2.2 netmask 255.255.255.0 說明: 使用ifup.ifdown時,網卡界面的關聯性檔案須存在才能使用此兩個指令,比如現在要使用ifdown來關閉eth1,則於 /etc/sysconfig/network-scripts目錄下,須存在ifcfg-eth1的設定檔才行,所以像eth0:0或eth0:1在此目錄下找不到,故不適用於ifup及ifdown。 3. route:顯示或異動routing table。 在命令列下執行 # route可顯示routing table如下: Destination Gateway Genmask Flags Iface 61.219.18.0 * 255.255.255.0 U eth0 192.168.1.0 * 255.255.255.0 U eth1 127.0.0.1 * 255.0.0.0 U lo default 61-219-18-254.H 0.0.0.0 UG eth0 說明: Destination:要到達的目的網段或目的主機。 例如要到內部192.168.1.10主機時,就可適用192.168.1.0那一行的定義。而Gateway為”*”,表示不會使用到gateway。假使現在我們要到達的目的端,在Destination下找不到時,就會使用default那一行的定義,比如在連internet上的網站時,都是使用default。 Flags:U→up,代表路由已啟動。 H→host,代表Destination是主機。 G→gateway,代表default gateway。 # route –n → 以IP位址顯示routing table內容。 # route add –net 192.168.4.0 netmask 255.255.255.0 gw 192.168.1.254 \ dev eth0 → 對網路界面eth0增加一網路段的路由資訊。 # route add –host 192.168.1.11 dev eth0 → 新增主機方式。若於 /etc/hosts內設定192.168.1.11 redhat後,用# route可看到於Destination下多一個redhat,此時改用# route –n此redhat變成192.168.1.11,而default變成0.0.0.0。 # route add default gw 192.168.1.254 dev eth0 → 設定DG,當找不到路徑時,會使用此預設閘道器。 用# route看時,會列在default那一行。 範例: 環境: 以linux做router,其上有兩網卡, eth0192.168.1.254,連接client for windows (192.168.1.10) eth1192.168.100.254,連接client for linux (192.168.100.10) 要如何設定才能讓兩台電腦彼此能夠溝通? 說明: ˙首先Router要啟動路由功能,其方式有二: 法一: echo ”1” > /proc/sys/net/ipv4/ip_forward 法二: # linuxconf 選擇Routing and gateways,然後進入set defaults,並設 定啟動。 ˙client for linux: # route add –net 192.168.1.0 netmask 255.255.255.0 \ gw 192.168.100.254 dev eth0 ˙client for windows: 於預設閘道處設定:192.168.1.254 以上都設定完成後,client端彼此互ping看看能否成功。 4. traceroute (windows為tracert): 顯示從來源端至目的端所經節點。 例:# traceroute 168.95.1.1 # traceroute www.google.com 5. netstat:此指令功能非常強大,可顯示routing table、網路界面訊息及監控網路狀態。 以下所列為指令常用參數: -a:顯示所有網路狀態,不論socket是否listen。 -n:預設是以主機名稱為服務名稱顯示於內容上,用-n後,會以IP位址及port number來代替。 -r:顯示routing table。 -i:顯示界面訊息。 -l:只顯示目前在listen的socket。 -p:顯示PID及程式名稱。 -t:只顯示tcp相關socket。 -u:只顯示udp相關socket。 例:# netstat -a # netstat -an # netstat -r (-i) # netstat -tl # netstat -anp∣less
__________________ 如果您覺得"文章小說討論區"所發的主題不錯 請不要吝嗇 在主題 " 點閱" 及 並給予 發文者一些鼓勵 --------------------------------------------- 為了防止世界被破壞 為了保護世界的和平 貫徹下載與燒錄的邪惡 可愛又迷人的盜版角色 MP3....Program... 我們是穿梭在網際網路中的盜版大隊~~ 拷貝 拷貝的明天正等著我們~~ 就是這樣....喵~~@@ |