前情回顧:在第三章,咱們複習了傳輸層最重要的一個協議——IP協議,從新回顧了IP協議的做用、IP地址的基礎知識以及路由控制的基本知識。面試
這幾天醒來的第一件事就是打開電腦把前一個晚上的博客發佈出來,刷牙洗臉以後就開始想今天的博客該怎麼辦。還能怎麼辦呢?花時間看書,理解和複習書上的東西,邊看邊想到時候應該怎麼寫出來,一天看下來差很少了就動手在電腦上敲出來,沒有半點捷徑可走。數據庫
有時候會想這樣是否是很笨,效率低得要死,經常一篇博客下來感受也沒寫出什麼東西。想了想,好處仍是有的:1.看書的時候多了思考,不像之前那樣一目十行;2.有空的時候就會想着多看書而不是作其餘消磨時間的事兒;3.在看完書以後,腦子裏面經常會思考博客該怎麼寫,思考的過程也就是溫習的過程。不知作別人是怎麼複習的,反正我就是這麼一我的——不訴諸文字就沒法思考,若是這樣堅持下去真可以進步不少也說不定。緩存
反正如今也是在作本身喜歡的事兒,還有進步的可能,這還有什麼能夠要求更多的呢?服務器
——————————————————————————閒聊結束————————————————————————————————————網絡
在實際的通訊中,僅憑IP是遠遠不夠的,還須要衆多支持IP的相關技術纔可以實現最終的通訊。下面會陸續介紹IP的各類輔助技術,具體包括DNS、ARP、ICMP、DHCP、NAT等,而其他的相似IP隧道、IP多播、IP任播、質量控制(QoS)以及網絡擁塞的顯示通知和MobileIP技術就不一一詳細說明了。架構
第四章:那些爲IP補漏的協議們性能
第一節:人性化的發明——DNS網站
咱們日常在訪問某個網站時幾乎歷來都不會使用IP地址,而是用一串英文字母和點號組成的字符串,例如www.baidu.com(若是咱們要記如125.216.123.22之類的IP地址才能瀏覽網頁,也太反人類了)。但是傳輸層IP協議在進行通訊的時候使用的都是IP地址,那是什麼幫咱們完成從網址到IP地址的轉換呢?答案就是,DNS(Domain Name System),域名系統。blog
首先,咱們來看看域名的分層結構圖:路由
最頂端是根節點。根節點下面有若干個子節點,其中包括咱們常常接觸的.com、.edu、.gov等。這些子節點又會做爲父節點分支處更多的子節點,像一棵倒立的樹同樣延伸出去。
下面,咱們來回憶一下DNS查詢的流程是怎樣的。首先,爲了將域名解析爲IP地址,會向DNS服務器進行查詢處理。接收這個查詢請求的域名服務器首先會在本身的數據庫進行查找。若是有該域名所對應的IP地址就返回。若是沒有,則域名服務器再向上一層根域名服務器進行查詢處理。所以,從根開始對這棵樹按照順序進行遍歷,直到找到指定的域名服務器,並由整個域名服務器返回想要的數據。
固然,不管是解析器(進行DNS查詢的主機和軟件)仍是域名服務器,都會將最新獲取到的信息保存在緩存裏一段時間。這樣,能夠減小每次查詢時的性能消耗。
第二節:數據鏈路層的渴望——ARP協議
有了DNS以後,咱們已經解決了域名解析轉換成IP地址的問題。然而,在底層數據鏈路層,進行實際通訊時卻有必要了解每一個IP地址所對應的MAC地址。
ARP是一種解決地址問題的協議。以目標IP地址爲線索,用來定位下一個應該接收數據分包的網絡設備對應的MAC地址。若是目標主機不在同一個鏈路上時,能夠經過ARP查找下一跳路由器的MAC地址。(不過ARP只適用於IPv4,不能用於IPv6。IPv6中能夠用ICMPv6替代ARP發送鄰居探索消息)簡而言之,ARP是藉助ARP請求與ARP響應兩種類型的包肯定MAC地址的。
從一個IP地址發送ARP請求包以瞭解其MAC地址,目標地址將本身的MAC地址填入其中的ARP響應包返回到IP地址。由此,能夠經過ARP從IP地址得到MAC地址,實現鏈路內的IP通訊。(ARP請求包還有一個做用,那就是將本身的MAC地址告訴給對方)
順便提一下RARP(Reverse Address Resolution Protocol)是將ARP反過來,從MAC地址定位IP地址的一種協議。例如將打印機服務器等小型嵌入式設備接入到網絡時就常常會用獲得。
第三節:輔助IP的ICMP
架構IP網絡時須要特別注意兩點:確認網絡是否正常工做,以及遇到異常時進行問題診斷。ICMP正是提供這類功能的一種協議(咱們常用的ping指令以及tracert指令都是基於ICMP協議所實現的)——處女面的時候就遇到這一題。
ICMP的主要功能包括,確認IP包是否成功送達目標地址,通知在發送過程中IP包被廢棄的具體緣由,改善網絡設置等。有了這些功能之後,咱們就能夠得到網絡是否正常、設置是否有誤以及設備有何異常等信息,從而便於進行網絡上的問題診斷。
ICMP的消息大體能夠分爲兩類:一類是通知出錯緣由的錯誤消息,另外一類是用於診斷的查詢消息。具體的內容就不詳細探討了,後面總結常見面試題的時候可能會進一步討論。
第四節:實現即插即用的DHCP
想象一下,若是咱們拿着一臺MAC到星巴克裝X,還要跟讓店員告訴咱們要怎麼設置IP地址,並且還要注意不能跟別人重複以防止IP地址衝突,這是一件多麼敗壞土豪興致的事情。因而,爲了實現自動設置IP地址、統一管理IP地址分配,就產生了DHCP(Dynamic Host Configuration Protocol)協議。有了DHCP,計算機只要鏈接到網絡,就能夠進行TCP/IP通訊。也就是說,DHCP讓即插即用變得可能。
使用DHCP以前,首先要架設一臺DHCP服務器。而後將DHCP所要分配的IP地址設置到服務器上。此外,還須要將相應的子網掩碼、路由控制信息以及DNS服務器的地址等設置到服務器上。通常來講,有wifi功能的路由器都能充當DHCP服務器。
DHCP在分配IP地址有兩種方法。一種是由DHCP服務器在特定的IP地址中自動選出一個進行分配。另外一種方法是針對MAC地址分配一個固定的IP地址。這兩種方法能夠並用。
第五節:私有地址與全局地址的轉換——NAT
NAT(Network Address Translator)是用於在本地網絡中使用私有地址,在鏈接互聯網時轉而使用全局IP地址的技術。除了轉換IP地址外,還出現了能夠轉換TCP、UDP端口號的NAPT(Network Address Ports Translator)技術,由此能夠實現用一個全局IP地址與多個主機的通訊。(看到這裏是否是忽然虎軀一震、菊花一緊呢?沒錯,平時使用的路由器就是用到這個協議,能讓咱們用一個IP地址多臺電腦上網。)
關於NAPT是如何實現一個IP地址多個主機進行TCP/IP通訊的,咱們會在後面的博客中詳細講述。不過這裏能夠先說這麼一句:在使用TCP或UDP通訊當中,只有目標地址、源地址、目標端口、源端口以及協議類型(TCP或UDP)五項內容都一致時才被認爲是同一個通訊鏈接,此時所使用的正是NAPT。
網絡層的內容算是大概過了一遍,明天咱們會進入更加劇要,面試中考察點最多的傳輸層。雖然今天的內容看起來比較少,可是卻省略很多東西,由於在沒有圖的狀況下的確不太好說明。不過你們若是看到能夠翻開相關的參考書籍或者百度一下,進一步瞭解詳細內容。
—————————————————————————忍不住,說幾句———————————————————————————————
今天是第三天了,30天裏的第3天,完成了十分之一,也就是10%。
1.今天一天都比較累,尤爲是晚上跟同窗出去吃個飯,回來特別困。覺得本身撐不下去了,到了十一點纔剛開始碼字就想着睡覺,實在沒多好的狀態,不過最後仍是咬牙堅持下來。有的時候,除了方法和激情,還須要一點點堅持。最後仍是堅持寫完了,強迫本身去思考去總結去措辭,這真不是一件簡單的事情。雖然我經常跟同窗吹噓我寫東西很隨意,一揮手就是幾千字。但常常寫技術博客或者寫評論的童鞋確定也很清楚,有的時候沒靈感或沒狀態卻要堅持寫完是多麼地痛苦。
2.你的評論,是我最大的助力。你們多交流交流吧。
3.如今是2013年10月21日1:23:50,五個小時後就要爬起來坐一個多小時地鐵,走三十分鐘路到公司上班(實習)。很辛苦麼?還好吧,想到去到公司就能發佈一篇博客就以爲還好。意義都是要本身去尋找的,人生永遠都是小馬過河,別人所說的一切終究都只是建議。