1. 程式人生 > >讀 《網路是怎樣連線的》 第一章總結

讀 《網路是怎樣連線的》 第一章總結

第一章 主幹知識,就三點吧(我們在位址列輸入地址的時候發生了什麼?——》生成資料,傳送資料,接收並渲染資料)

  • 在瀏覽器的位址列填域名(或者點選超連結之類的) 瀏覽器會自動把域名轉成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