TCP/IP 網絡入門實驗

實驗環境

一、實驗 1:查看網卡的 MAC 地址

        計算機是硬件和軟件的集合體,網絡也不例外。那麼首先,我們就從構成網絡的硬件開始探索吧。在組建公司內部的網絡時,筆者購買了如下 4 種硬件:1. 安裝到每臺計算機上的網卡(NIC,Network Interface Card);2. 插到網卡上的網線;3. 把網線彙集起來連接到一處的集線器;4. 用於接入到互聯網的路由器。

        以太網使用了一種略顯粗糙的方法連接 LAN 內的計算機(如圖 2所示)。以太網中的每臺計算機都需要先確認一件事:在網線上有沒有其他的計算機正在傳輸電信號,也就是說要先確保沒有人在佔用網絡,然後才能發送自己想傳輸的電信號。誰先搶到了網線的使用權,誰就先發送。萬一遇到了多臺計算機同時都想發送電信號的情況,只需要讓這些計算機等待一段長度隨機的時間後再重新發送相同的電信號即可。這套機制叫作 CSMA/CD(Career Sense Multiple Access with Collision Detection,帶衝突檢測的載波監聽多路訪問)。所謂載波監聽(Career Sense),指的是這套機制會去監聽(Sense)表示網絡是否正在使用的電信號(Career)。而多路複用(Multiple Access)指的是多個(Multiple)設備可以同時訪問(Access)傳輸介質。帶衝突檢測(with Collision Detection)則表示這套機制會去檢測(Detection)因同一時刻的傳輸而導致的電信號衝突(Collision)。在小規模的LAN 中,像這樣略顯粗躁的CSMA/CD 機制是可以正常運轉的。因爲CSMA/CD 歸根結底也只是一種適用於LAN 的機制。

        在以太網中,發送給一臺計算機的電信號也可以被其他所有的計算機收到。一臺計算機收到了電信號以後會先做判斷,如果是發送給自己的則選擇接收,反之則選擇忽略。可以用被稱作MAC(Media Access Control)地址的編號來指定電信號的接收者。在每一塊網卡所帶有的ROM(Read Only Memory,只讀存儲器)中,都預先燒錄了一個唯一的MAC 地址。網卡的製造廠商負責確定這個MAC 地址是什麼。因爲MAC 地址是由製造廠商的編號和產品編號兩部分組成的,所以世界上的每一個MAC 地址都是獨一無二的。

        接下來我們就進入第一個實驗吧——查看各自計算機中網卡的MAC 地址。請先從Windows 的開始菜單中選擇“命令提示符”。選中後會彈出一個背景全黑的窗口,這就是命令提示符窗口,用戶可以在這裏用鍵盤輸入由字符串構成的命令。輸入完一串字符後按下回車鍵,這串字符所表示的命令就會被執行。

打開命令提示符後,請試着輸入如下命令。

ipconfig /all

         在 Windows 中內置了各種各樣的用於查看網絡信息或網絡連接狀態的命令。通過 ipconfig /all 這條命令,可以顯示出各種信息。實驗結果的畫面中只顯示了筆者希望諸位關注的部分(如圖3所示)。畫面中顯示在 Physical Address 後面的、用“-”分隔的 6 個十六進制數(每個數佔 8 比特)00-00-5D-B8-39-B0 就是 MAC 地址。其中00-00-5D 代表製造商,B8-39-B0 代表產品的編號。

二、實驗 2:查看計算機的 IP 地址

MAC 地址雖然可以在硬件層面上標識網卡,可是如果只有 MAC地址也很不方便。因爲企業或組織需要對計算機分組管理,但是他們卻沒有辦法把 MAC 地址前面的若干位統一起來。而且在互聯網那種把全世界的計算機都連接在一起的大型網絡中,又必須要有一種機制能夠把數據的發送目的地像郵政編碼那樣整理並標識出來。假如在互聯網中只能使用 MAC 地址,那麼會發生什麼呢?在接入互聯網的數量衆多的計算機中,只有尚未進行任何分組處理的編號(MAC 地址)。這樣的話,僅僅是尋找信息的發送目的地就要花費大量的時間。因此,在 TCP/IP 網絡中,除了硬件上的 MAC 地址,還需要爲每臺計算機設定一個軟件上的編號。這個編號就是衆所周知的 IP 地址。通常把設定了 IP 地址的計算機稱爲“主機”(Host)。因爲路由器也算是計算機的一種,所以它們也有 IP 地址。在 TCP/IP 網絡中,傳輸的數據都會攜帶 MAC 地址和 IP 地址兩個地址。IP 地址是一個 32 比特的整數,每 8 比特爲一組,組間用“.”分隔, 分成 4 段表示。8 比特所表示的整數換算成十進制後範圍是0~255,因此可用作 IP 地址的整數是 0.0.0.0~255.255.255.255,共計4294967296 個。通過IP 地址就可以輕鬆地對計算機進行分組管理了。比如用IP 地址中第1 段到第3 段的數值代表公司,用第4 段的數值代表公司內部的計算機。例如,在AAA.BBB.CCC 這個公司內,如果有一臺計算機的編號是×××,那麼它的IP 地址就是AAA.BBB.CCC.XXX。而看到了AAA.BBB.CCC.YYY 這樣一個IP 地址,就能知道它是這個公司內的另一臺計算機。通常把IP 地址中表示分組(即LAN)的部分稱作“網絡地址”、表示各臺計算機(即主機)的部分稱爲“主機地址”。在本例中,AAA.BBB.CCC 這一部分是網絡地址,而XXX 或YYY 的部分是主機地址。下面進入實驗,請諸位查看各自計算機上配置的IP 地址。與之前相同,還是使用如下的命令。
                                                 ipconfig /all


如圖 4 所示,顯示在 IP Address 後面的 202.26.186.174 就是 IP 地址。請諸位再留意一下顯示在 Subnet Mask 後面的 255.255.255.240。這一串數字是“子網掩碼”。子網掩碼的作用是標識出在 32 比特的 IP 地址中,從哪一位到哪一位是網絡地址,從哪一位到哪一位是主機地址。把255.255.255.240 用二進制表示的話,結果如下所示。11111111.11111111.11111111.11110000
子網掩碼中,值爲1 的那些位對應着IP 地址中的網絡地址,後面值爲0 的那些位則對應着主機地址。因此255.255.255.240 這個子網掩碼就表示,其所對應的IP 地址前28 比特是網絡地址,後4 比特是主機地址。4 個二進制數可以表示的範圍是從0000 到1111,共16 個數。而因爲最開始的0000 和最後的1111 具有特殊的用途,所以筆者的辦公室內最多可以配置14 臺計算機,它們的主機地址範圍是從0001 到1110。但是這其中又有一臺路由器,所以實際上最多隻能放置13 臺計算機。與MAC 地址一樣,每個IP 地址的值也都是獨一無二的。

四、實驗 3:瞭解 DHCP 服務器的作用

        IP 地址和子網掩碼都是在軟件上設置的參數。請先打開控制面板中的“網絡連接”,然後用鼠標右鍵單擊“本地連接”並選擇“屬性”菜單項,接着在打開的窗口中選擇“Internet 協議(TCP/IP)”,最後單擊“屬性”按鈕A。這樣就打開了設定IP 地址和子網掩碼的對話框(如圖5 所示)。(不同版本的windows打開TCP/IPv4屬性方法會略微不同)

        雖然在這個對話框中可以手動設置IP 地址和子網掩碼,但是大多數情況下選擇的還是“自動獲得IP 地址”這個選項。這個選項使得計算機在啓動時會去從DHCP 服務器獲取IP 地址和子網掩碼,並自動地配置它們。DHCP 的全稱是Dynamic Host Configuration Protocol(動態主機設置協議)。在此搭建的LAN 中,使用了一臺裝有Linux 的計算機充當DHCP 服務器的角色。因爲Windows 的計算機也同樣支持DHCP 的協議,所以即使服務器上裝的是Linux,而客戶端裝的是Windows,也沒有關係。DHCP 服務器上記錄着可以被分配到LAN 內計算機的IP 地址範圍和子網掩碼的值。作爲DHCP 客戶端的計算機在啓動時,就可以從中知道哪些 IP 地址還沒有分配給其他計算機。圖5中有“默認網關”的配置項。通常會把路由器的 IP地址設置在這裏。也就是說路由器就是從LAN 通往互聯網世界的入口(Gateway)。路由器的IP 地址也可以從DHCP 服務器獲取。注意一點,這裏選擇了“自動獲得 DNS 服務器地址”這一選項。也就是說,DNS 服務器的 IP 地址也可以從 DHCP 服務器獲取。

五、實驗 4:路由器是數據傳輸過程中的指路人

        在分組管理下,IP 地址中的網絡地址部分可以代表一個組中的全部計算機,即一個 LAN 中的計算機全體。互聯網就是用路由器把多個LAN 連接起來所形成的一張大網。路由器正如其名,就是決定數據傳輸路徑的設備。在本實驗環境中,與 LAN 內的其他計算機一樣,路由器也是連接在集線器上的。因爲 LAN 內採用了 CSMA/CD 機制,所以所有發送出去的數據也都會發到路由器上。當從公司內的計算機向另一家公司的計算機發送數據時會發生什麼呢?首先,一個不屬於 LAN 內計算機的 IP 地址會被附加到數據的發送目的地字段上。這樣的數據雖然會被 LAN 內的計算機所忽略,但是不會被路由器忽略。因爲路由器的工作原理就是查看附加到數據上的 IP 地址中的網絡地址部分,只要發現這個數據不是發送給 LAN 內計算機的,就把它發送到 LAN 外,即互聯網的世界中。路由器雖然看起來就是個小盒子,可實際上是一臺神奇的計算機。分佈在世界各地的 LAN 中的路由器相互交換着信息,互聯網正是由於這種信息的交換才得以聯通。這種信息被稱作“路由表”,用來記錄應該把數據轉發到哪裏。在像互聯網這樣的網絡中,傳輸路徑錯綜複雜,而路由器就是站在各個岔路口的指路人(如圖 6 所示)。在一臺路由器的路由表中,只會記錄通往與之相鄰的路由器的路徑,而並不會記錄世界範圍內的所有傳輸路徑。

下面就實際觀察一下路由表吧。爲此需要在命令提示符窗口中執行如下命令(執行結果如圖 7 所示)。
   route print

路由表由5 列構成。Network Destination、Netmask、Gateway、Interface 這四列記錄着數據發送的目的地和路由器的IP 地址等信息。Metric 這一列記錄着路徑的權重,這個值由某種算法決定,比如數據傳輸過程中經過的路由器的數量。如果遇到有多條候選路徑都可以通往目的地的情況,路由器就會選擇Metric 值較小的那條路徑。在路由表中還有如下的規則:如果數據的發送目的地就在本LAN 中,則可以直接發送數據而無需經過路由器轉發;反之如果在LAN 外(或發送目的地的IP 地址不在路由表中),則需要經過路由器轉發。細節雖然有些複雜,但是隻要了解了大體上的規則就可以了。

六、實驗 5:查看路由器的路由過程

        假設瀏覽筆者一個主頁(http://www.grapecity.com/)。GrapeCity 的 Web 服務器中的數據,要經過若干個路由器的轉發才能達到諸位的計算機上。通常把這種數據經過路由器轉發的過程稱爲“路由”(Routing)。在命令提示符窗口中執行 tracert 命令後,就可以查看路由的過程了。執行時需要在 tracert 的後面指定一個主機名(或計算機名),作爲數據的發送目的地。這樣看到的轉發路徑其實是相反的,那我們就乾脆來看一下諸位的計算機到 GrapeCity 的 Web 服務器的路徑吧。請在命令提示符窗口中執行如下命令(執行結果如圖 8 所示)。
    tracert www.baidu.com

 

左側按照1~8的順序列出了數據前進道路上途經的IP 地址。第1 行的192.168.1.1是作爲實驗對象的LAN 內的路由器。第2 行的172.20.192.1 是筆者所租用的互聯網服務提供商的路由器。從第3 到第7 行,是其他服務提供商的路由器。最後,第8 行的112.34.112.41是BaiDu 的Web 服務器。可以看到,從筆者LAN 出發,通過8 次路由才終於到達了BaiDu。

七、實驗 6:DNS 服務器可以把主機名解析成 IP 地址(本實驗須在服務器上完成)

        在互聯網的世界中,本應使用 IP 地址這樣的數字來標識計算機纔是,而剛剛卻能使用一串字符 www.baidu.com 來標識 BaiDu 的 Web 服務器。實際上,在互聯網中還存在着一種叫作 DNS(Domain Name System,域名系統)的服務器。正是該服務器爲我們把 www.baidu.com 這樣的域名解析爲了112.34.112.41 這樣的 IP 地址 。諸位的計算機都有一個主機名,每個 LAN 也都有一個域名。舉例來說,筆者所使用的計算機的主機名是 ma50j(源於這臺計算機的型號),所在的 LAN 的域名是 yzw.co.jp。把主機名和域名組合起來所形成的 ma50j.yze.co.jp,就是能夠標識筆者這臺計算機的一個世界範圍內獨一無二的名字,這個名字與 IP 地址的作用是等價的。通常把這種由主機名和域名組合起來形成的名字稱作 FQDN(Fully Qualified DomainName,完整限定域名)。在互聯網中,難以記憶的 IP 地址使用起來很麻煩。於是人們就發明出了 DNS 服務器,這樣只需要使用 FQDN,DNS 服務器就可以自動地把它解析爲 IP 地址了(這個過程叫作“域名解析”)。DNS 服務器通常被部署在各個 LAN 中,裏面記錄着 FQDN 和 IP 地址的對應關係表。世界範圍內的 DNS 服務器是通過相互合作運轉起來的。如果一臺 DNS服務器無法解析域名,它就會去詢問其他的 DNS 服務器。這套流程是自動進行的,諸位並不會意識到。下面我們就進入實驗階段吧。首先,查一查各自計算機的主機名。在命令提示符窗口執行 hostname 這條命令。結果中只會顯示主機名,並沒有 FQDN(如圖 9 所示)。

接下來想要查看 FQDN 的話,則需要執行之前使用過的 ipconfig /all 命令。結果畫面中,Host Name 後面顯示的是主機名, 而 DNS Suffix Search List 後面顯示的就是域名。將這兩者組合起來就能得到FQDN。於是可以確認筆者計算機的 FQDN 確實是 ma50j.yzw.co.jp(如圖 10 所示)。

        下面再來操作一下DNS 服務器。在命令提示符窗口中執行nslookup,屏幕上就會顯示出一個提示符“>”,表示現在可以詢問DNS服務器了。而提示符上面的ns.yze.co.jp 和202.26.186.35,則是公司 LAN 內的 DNS 服務器的 FQDN 和 IP 地址。試着輸入 www.grapecity.com,然後按下 Enter 鍵。結果輸出了 210.160.205.80,這正是 GrapeCity的 Web 服務器的 IP 地址。www.grapecity.com 和 210.160.205.80 的對應關係,是通過詢問其他互聯網上的 DNS 服務器才得知的,並沒有被事先錄入到LAN 中的 DNS 服務器上。要想退出 nslookup,請輸入exit,然後按下 Enter 鍵(如圖 11 所示)。

八、實驗 7:查看 IP 地址和 MAC 地址的對應關係

        在互聯網的世界中,到處傳輸的都是附帶了 IP 地址的數據。但是能夠標識作爲數據最終接收者的網卡的,還是 MAC 地址。於是在計算機中就加入了一種程序,用於實現由 IP 地址到 MAC 地址的轉換,這種功能被稱作 ARP(Address Resolution Protocol,地址解析協議)。ARP 的工作方式很有意思。它會對LAN 中的所有計算機提問:“有誰的IP 地址是210.160.205.80 嗎?有的話請把你的MAC 地址告訴我。”通常把這種同時向所有LAN 內的計算機發送數據的過程稱作“廣播”(Broadcast)。通過廣播詢問,如果有某臺計算機回覆了MAC 地址,那麼這臺計算機的IP 地址和MAC 地址的對應關係也就明確了。ARP 的工作流程也是自動進行的,諸位並不會意識到。如果爲了查詢MAC 地址,每回都要進行廣播詢問,那麼查詢的效率就會降低。於是ARP 還提供了緩存的功能,當向各個計算機都詢問完一輪之後,就會把得到的MAC 地址和IP 地址的對應關係緩存起來(臨時保存在內存中)。存起來的這些對應關係信息稱作“ARP 緩存表”。只要在命令提示符窗口中執行arp -a 命令,就可以查看當前ARP緩存表中的內容。那麼,作爲最後的實驗,我們就來查看一下ARP 緩存表吧。

九、TCP 的作用及 TCP/IP 網絡的層級模型

        TCP/IP 這個詞表示在網絡上同時使用了TCP 和IP 這兩種協議。正如前面所講解的那樣,IP 協議用於指定數據發送目的地的IP 地址以及通過路由器轉發數據。而TCP 協議則用於通過數據發送者和接收者相互迴應對方發來的確認信號,可靠地傳輸數據。通常把像這樣的數據傳送方式稱作“握手”(Handshake)(如圖 13 所示)。TCP 協議中還規定,發送者要先把原始的大數據分割成以“包”(Packet)爲單位的數據單元,然後再發送,而接收者要把收到的包拼裝在一起還原出原始數據。

        前述中,一直把協議和約束等同起來。正因爲發送者和接收者都遵循了相同的約束,雙方纔能相互發送數據。爲了能夠在約束下收發數據,操作系統將實現了 TCP 和 IP 等協議的程序作爲自身的一部分功能提供。遵循約束表現在統一數據的格式上。例如,敲打鍵盤輸入的電子郵件正文等數據,並不是原封不動地發送出去的,而是先通過實現了 TCP 協議的程序附加上遵守 TCP 約束所需的信息,然後再通過實現了 IP 協議的程序,進一步附加上遵守 IP 約束所需的信息。實際上計算機發送的是以包爲單位的、附加了各種各樣信息的數據(如圖 14 所示)。

硬件上發送數據的是網卡。在網卡之上是設備驅動程序(用於控制網卡這類硬件的程序),設備驅動程序之上是實現了 IP 協議的程序,IP程序之上則是實現了 TCP 協議的程序,而再往上纔是應用程序,比如Web 或電子郵件。這樣就構成了一幅在硬件之上堆疊了若干個軟件層的示意圖(如圖 15 所示)。TCP 協議使用被稱作“TCP 端口號”的數字識別上層的應用程序。TCP 端口號中有一些是預先定義好的,比如Web使用 80 端口,電子郵件使用 25 端口(用於發送)和 110 端口(用於接收)。

(轉載自《計算機是怎樣跑起來的》)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章