【網(wǎng)絡是怎樣連接的】第1章 - 瀏覽器生成消息(2)

1.2向DNS服務器查詢Web服務器的IP地址

~~~
生成HTTP消息之后,接下來我們需要委托操作系統(tǒng)將消息發(fā)送給Web服務器。盡管瀏覽器能夠解析網(wǎng)址并生成HTTP消息骡技,但它本身并不具備將消息發(fā)送到網(wǎng)絡中的功能慢哈,因此這一功能需要委托操作系統(tǒng)來實現(xiàn)酌予。

發(fā)送消息的功能對于所有的應用程序來說都是通用的,因此讓操作系統(tǒng)來實現(xiàn)這一功能冰单,其他應用程序委托操作系統(tǒng)來進行操作幌缝,這是一個比較合理的做法。

圖1.8 IP的基本思路.png
圖1.9 IP地址的表示方法.png
圖1.10 IP地址的結構.png

網(wǎng)絡號和主機號

在網(wǎng)絡中诫欠,所有的設備都會被分配一個地址涵卵。這個地址就相當于現(xiàn)實中某條路上的“××號××室”。其中“號”對應的號碼是分配給整個子網(wǎng)的荒叼,而“室”對應的號碼是分配給子網(wǎng)中的計算機的轿偎,這就是網(wǎng)絡中的地址”焕“號”對應的號碼稱為網(wǎng)絡號坏晦,“室”對應的號碼稱為主機號,這個地址的整體稱為IP地址嫁乘。

實際的IP地址是一串32比特的數(shù)字昆婿,按照8比特(1字節(jié))為一組分成4組,分別用十進制表示然后再用圓點隔開蜓斧。

在IP地址的規(guī)則中仓蛆,網(wǎng)絡號和主機號連起來總共是32比特,但這兩部分的具體結構是不固定的挎春。在組建網(wǎng)絡時看疙,用戶可以自行決定它們之間的分配關系豆拨,因此,我們還需要另外的附加信息來表示IP地址的內(nèi)部結構能庆。

子網(wǎng)掩碼為1的部分表示網(wǎng)絡號施禾,子網(wǎng)掩碼為0的部分表示主機號。

IP地址的主機號
全0:表示整個子網(wǎng)
全1:表示向子網(wǎng)上所有設備發(fā)送包搁胆,即“廣播”

現(xiàn)在我們使用的方案是讓人來使用名稱弥搞,讓路由器來使用IP地址。為了填補兩者之間的障礙丰涉,需要有一個機制能夠通過名稱來查詢IP地址拓巧,或者通過IP地址來查詢名稱,這樣就能夠在人和機器雙方都不做出犧牲的前提下完美地解決問題一死。這個機制就是DNS肛度。(IP地址效率高,域名方便使用)

圖1.11 解析器的調(diào)用方法.png
圖1.12 調(diào)用解析器時計算機內(nèi)部的工作流程.png
圖1.13 DNS服務器地址的設置.png

Socket庫提供查詢IP地址的功能

通過DNS查詢IP地址的操作稱為域名解析投慈,因此負責執(zhí)行解析(resolution)這一操作的就叫解析器(resolver)了承耿。解析器實際上是一段程序,它包含在操作系統(tǒng)的Socket庫中伪煤。庫就是一堆通用程序組件的集合加袋,其他的應用程序都需要使用其中的組件。

Socket庫也是一種庫抱既,其中包含的程序組件可以讓其他的應用程序調(diào)用操作系統(tǒng)的網(wǎng)絡功能职烧,而解析器就是這個庫中的其中一種程序組件。Socket庫中包含很多用于發(fā)送和接收數(shù)據(jù)的程序組件防泵。socket 庫適用于調(diào)用網(wǎng)絡功能程序組件的集合蚀之。

通過解析器向DNS服務器發(fā)出查詢

根據(jù)域名查詢IP時,瀏覽器會使用 socket 庫中的解析器捷泞。

調(diào)用解析器后足删,解析器會向DNS服務器發(fā)送查詢消息,然后DNS服務器會返回響應消息锁右。響應消息中包含查詢到的IP地址失受,解析器會取出IP地址,并將其寫入瀏覽器指定的內(nèi)存地址中咏瑟。

解析器的內(nèi)部原理

網(wǎng)絡應用程序(在我們的場景中就是指瀏覽器)調(diào)用解析器時拂到,程序的控制流程就會轉(zhuǎn)移到解析器的內(nèi)部。
由于調(diào)用了其他程序码泞,原本運行的程序進入暫停狀態(tài)兄旬,而被調(diào)用的程序開始運行,這就是“控制流程轉(zhuǎn)移”浦夷。

當控制流程轉(zhuǎn)移到解析器后辖试,解析器會生成要發(fā)送給DNS服務器的查詢消息。
發(fā)送消息這個操作并不是由解析器自身來執(zhí)行劈狐,而是要委托給操作系統(tǒng)內(nèi)部的協(xié)議棧來執(zhí)行罐孝。這是因為和瀏覽器一樣,解析器本身也不具備使用網(wǎng)絡收發(fā)數(shù)據(jù)的功能肥缔。解析器調(diào)用協(xié)議棧后莲兢,控制流程會再次轉(zhuǎn)移,協(xié)議棧會執(zhí)行發(fā)送消息的操作续膳,然后通過網(wǎng)卡將消息發(fā)送給DNS服務器改艇。

向DNS服務器發(fā)送消息時,我們當然也需要知道DNS服務器的IP地址坟岔。只不過這個IP地址是作為TCP/IP的一個設置項目事先設置好的谒兄,不需要再去查詢了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末社付,一起剝皮案震驚了整個濱河市承疲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸥咖,老刑警劉巖燕鸽,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啼辣,居然都是意外死亡啊研,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門鸥拧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來党远,“玉大人,你說我怎么就攤上這事住涉◆镲保” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵舆声,是天一觀的道長花沉。 經(jīng)常有香客問我,道長媳握,這世上最難降的妖魔是什么碱屁? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮蛾找,結果婚禮上娩脾,老公的妹妹穿的比我還像新娘。我一直安慰自己打毛,他們只是感情好柿赊,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布俩功。 她就那樣靜靜地躺著,像睡著了一般碰声。 火紅的嫁衣襯著肌膚如雪诡蜓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天胰挑,我揣著相機與錄音蔓罚,去河邊找鬼。 笑死瞻颂,一個胖子當著我的面吹牛豺谈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贡这,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼茬末,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藕坯?” 一聲冷哼從身側響起团南,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炼彪,沒想到半個月后吐根,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辐马,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年拷橘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜爷。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡冗疮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出檩帐,到底是詐尸還是另有隱情术幔,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布湃密,位于F島的核電站诅挑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泛源。R本人自食惡果不足惜拔妥,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望达箍。 院中可真熱鬧没龙,春花似錦岩齿、人聲如沸成畦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至筝家,卻和暖如春伐蒂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肛鹏。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恩沛,地道東北人在扰。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像雷客,于是被迫代替她去往敵國和親芒珠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容