讀 《網路是怎樣連線的》 第一章總結
第一章 主幹知識,就三點吧(我們在位址列輸入地址的時候發生了什麼?——》生成資料,傳送資料,接收並渲染資料)
- 在瀏覽器的位址列填域名(或者點選超連結之類的) 瀏覽器會自動把域名轉成HTTP請求,這個請求會去向某個域名伺服器要東西(把域名轉成HTTP請求)
- 是啊,找人要東西,找誰要呢,這就是第二個知識點了(由域名找ip)
- 嗯,我知道找誰要了,但是,我怎麼告訴他,我需要什麼東西呢,這是第三個知識點.(委託作業系統傳送訊息-》建立socket連線)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.先看看請求頭是怎麼樣的吧:
//第一行是請求行,正常在瀏覽器輸出http://www.baidu.com,這樣用到的就是GET方法.若是寫表單,則兩者都有可能 POST/GET http://www.baidu.com //第二行後的一部分叫請求頭,這裡有很多可以選擇的屬性 Host: www.baidu.com Accept:*/* //第三部分叫請求體,注意的是,請求體與請求頭之間要空一行 //請求體
現在這邊請求體還沒有東西,那麼我們看看有東西的情況
POST http://www.666.com
Host: www.666.com
Accept:*/*
admin = 123456
pass = 123456
在表單中選擇向http://www.666.com提交請求,表單內容 admin填寫123456,pass填寫123456
另外 get傳資料其實也行,如下
GET http://www.666.com?admin=123456&pass=123456
Host: www.baidu.com
Accept:*/*
2.找誰要東西呢?
哈 ,可以找很多人要東西哈.http協議,對,就是url那一串最前面的東西,http就代表會去找web伺服器要東西,
ftp的話就會去找ftp伺服器要東西.現在 我們先關注找web伺服器要東西吧
我們擁有什麼? 我們現在擁有的是一條URL http://www.666.com
它就是我們要找的web伺服器,但是它現在的樣子是給我們人類看的,在各種裝置溝通中其本相是ip地址,所以啊,我們要把它轉換成ip地址.
做這一步的操作就叫地址解析啦.
2.1 DNS伺服器與客戶端
現在我們要做地址解析這件事情,所以我們要知道什麼是dns伺服器.
dns伺服器能夠做的工作很多.比如吧域名變成ip地址(正向解析),把ip地址變成域名(反向解析),查域名的別名....
那,什麼是dns客戶端呢?
就是我們本機的dns解析器,它與dns伺服器溝通,用域名得到其對應的ip
2.2 dns伺服器的工作
dns伺服器內部可以想象成有很多鍵值對,比如鍵是域名,值是ip地址,我拿著域名就能找到對應的ip地址了
那麼 dns伺服器是否一個就夠用了呢, 哈 在公司內部的局域網裡是沒問題的,但是在整個網際網路上怕是不行,
想想啊,這些鍵值對那麼多,查詢起來效率多低啊,所以會有很多dns伺服器,
這些伺服器之間還有層級結構,想象一個金字塔,越頂層的伺服器數量越少.
看這個: www.baidu.com.
這個域名中,從後往前看, 根域名是. 頂層域名是com 下層域名是baidu web伺服器是www
其中 www所在的web伺服器需要在baidu這個域的dns伺服器上註冊,
baidu所在的dns伺服器與要在com伺服器上註冊
com域所在的伺服器要在根伺服器上註冊,
為什麼要註冊呢?
因為要查詢啊~~。 我們每臺dns伺服器都預設記住了13個根伺服器的ip,當某一臺dns伺服器收到了他的客戶端dns解析器
所傳送的解析請求時,他就會去問根伺服器 . 你知道www.baidu.com 的ip嗎, 根伺服器告訴說哦,com這個伺服器應該知道,我把它的ip告訴你 ,你去問他
dns伺服器就去問com伺服器,你知道www.baidu.com 的ip嗎? 他說baidu伺服器知道,
我們就去找baidu伺服器,你知道www.baidu.com 的ip嗎? baidu這個域名就把這個ip返回給了發問的dns伺服器.
dns伺服器忙活了那麼久,工作完成了.就把它知道的答案。ip地址返回給了 dns解析器, 大功告成!!!
這個ip地址,就是我們的目標。我們找他要東西.
3.如何才能對話?
兩個裝置相隔很遠,靠喊是沒用的,所幸有網路相連, 在osi五層中 網路層裡 相互之間建立socket,就可以不管底層如何而直接進行通訊了.
web伺服器端先建立了socket,然後等待著我們去連線。 這部分不需要我們管,我們看看瀏覽器怎麼做的:
,第一步,建立了一個socket.
第二步,建立連線:我們知道了對方的ip地址,就可以建立socket連線了,但我們發現,除了提供ip地址外,建立socket連線還要求提供埠號,這個我們填什麼呢, 預設 web是80號埠,郵件是25號埠,我們填上就好了.
第三步,傳送我們的HTTP請求
第四步,接收HTTP響應
第五步,斷開連線.
ok,之後的事情,瀏覽器就把得到http響應渲染成頁面給我們看好了.......
888888