從URL到與伺服器斷開連線到底發生了什麼

2021-07-31 02:44:43 字數 2766 閱讀 7468

url的英文全稱是uniform resource location,中文名字是統一資源定位符,說白了他就是我們因為某種需求在瀏覽器中輸入的**,當我們想要與伺服器互動時,伺服器並不認識我們輸入的url,那伺服器是怎樣識別的呢,其實我們輸入的url都繫結乙個ip,比如我們主機的ip是127.0.0.1,網路上的計算機ip不是固定的,伺服器通過識別這個ip來返回來找到我們想要的東西。

伺服器是怎麼得到這個ip的呢,是通過dns解析url得到的,下面我們說一下這個過程:

1,我們知道url就是我們輸入的**了,

請求一旦發起,瀏覽器首先要做的事情就是解析這個網域名稱,一般來說,瀏覽器會首先檢視本地硬碟的 hosts 檔案,看看其中有沒有和這個網域名稱對應的規則,如果有的話就直接使用 hosts 檔案裡面的 ip 位址。

2.如果在本地的 hosts 檔案沒有能夠找到對應的 ip 位址,瀏覽器會發出乙個 dns請求到本地dns伺服器 。本地dns伺服器一般都是你的網路接入伺服器商提供,比如中國電信,中國移動。

3.查詢你輸入的**的dns請求到達本地dns伺服器之後,本地dns伺服器會首先查詢它的快取記錄,如果快取中有此條記錄,就可以直接返回結果,此過程是遞迴的方式進行查詢。如果沒有,本地dns伺服器還要向

dns根伺服器

進行查詢。

遞迴過程**:

4。根dns伺服器沒有記錄具體的網域名稱和ip位址的對應關係,而是告訴本地dns伺服器,你可以到域伺服器上去繼續查詢,並給出域伺服器的位址。這種過程是迭代的過程。

迭代過程**:

5.本地dns伺服器繼續向域伺服器發出請求,在www.baidu.com這個列子中,請求的物件是.com域伺服器。.com域伺服器收到請求之後,也不會直接返回網域名稱和ip位址的對應關係,而是告訴本地dns伺服器,你的網域名稱的解析伺服器的位址。

6.最後,本地dns伺服器向網域名稱的解析伺服器發出請求,這時就能收到乙個網域名稱和ip位址對應關係,本地dns伺服器不僅要把ip位址返回給使用者電腦,還要把這個對應關係儲存在快取中,以備下次別的使用者查詢時,可以直接返回結果,加快網路訪問。

我想經過上面的步驟聯絡**大家對dns解析的過程應該比較清楚了

當乙個**有足夠多的使用者時,每次請求的資源都位於一台機器上,那麼這台機器隨時都有可能崩掉,如何解決呢?這就需要負載均衡技術了,原理是在dns伺服器中為每個訪問的使用者配置多個ip,這樣當很多使用者一起訪問時,dns伺服器首先會根據快取中使用者的不同ip將不同的使用者分配到不同的機器上去,這樣就不是一台機器在承受巨大的訪問量,達到了不同客戶端訪問不同伺服器的目的,從而實現了負載均衡。

例如可以根據每台機器的負載量,該機器離使用者地理位置的距離等等。

以上我們把使用者輸入url,即客戶端向伺服器傳送請求,dns網域名稱解析看作乙個應用層,網域名稱解析完成拿到ip以後就要和伺服器建立連線,

瀏覽器會以乙個隨機埠(1024《埠<65535)向伺服器的web程式(常用的有httpd,nginx等)80埠發起tcp的連線請求(這相當於乙個包裝的過程,我們把傳送的請求當作乙個包裹,首先經過傳輸層,在包裹上寫上乙個本地埠和目的埠,然後經過ip層,在包裹上寫上本地ip和目的ip)。這個連線請求到達伺服器端後(這中間通過各種路由裝置,區域網內除外),進入到網絡卡,然後是進入到核心的tcp/ip協議棧(用於識別該連線請求,解封包,一層一層的剝開),還有可能要經過netfilter防火牆(屬於核心的模組)的過濾,最終到達web程式,最終建立了tcp/ip的連線。

tcp連線圖示:

上面這個圖就是tcp連線時著名的三握手過程,seq是每一次握手的隨機序列號,如果ack = seq + 1則完成確認,就進行握手,在這裡不對其進行過多解釋,大家可以自行google。

為什需要三次握手?

《計算機網路》第四版中講「三次握手」的目的是「為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤」。

下面我們看一下tcp的四次揮手

圖示:

這是因為服務端在listen狀態下,收到建立連線請求的syn報文後,把ack和syn

放在乙個報文裡

傳送給客戶端。而關閉連線時,當收到對方的fin報文時,僅僅表示對方不再傳送資料了但是還能接收資料,己方也未必全部資料都傳送給對方了,所以己方可以立即close,也可以傳送一些資料給對方後,再傳送fin報文給對方來表示同意現在關閉連線,因此,己方ack和fin一般都會分開傳送。

這個揮手的過程就好像我們打完**要和對方結束對話的過程,首先客戶端相當於你自己,伺服器是接聽者,當你想要結束通話時,你跟對方說你不想說了(fin = m)然後對方聽到了說了一句我知道了(ack = fin + 1)但是對方還有話沒說完,然後他又說了一句明天見!說完了以後他又和你說拜拜(fin = n)然後你說拜拜,四次揮手結束對話。

3 1連線到伺服器和從伺服器斷開連線

要連線到伺服器,在呼叫 mysql 時通常需要提供乙個mysql使用者名稱,並且很可能 還需要提供 乙個密碼。如果伺服器在您登入的計算機以外的計算機上執行,則還需要指定乙個主機名。一旦知道了正確的引數,就應該可以這樣連線 u user penter password host並 user代表執行my...

2 mySQL 連線到伺服器和從伺服器斷開連線

連線到伺服器 如果我們想要連線mysql的話,是需要乙個使用者名稱和密碼的,所以我們需要正確的連線引數 mysql h host u user p enter password host 和 user 代表執行 mysql 伺服器的主機名和 mysql 賬戶的使用者名稱。用適當的值替換您的設定,並且...

SecureCRT連線到伺服器,超時斷開,影響工作

原因 因為客戶端與伺服器之間存在路由器,防火牆以及為了本身的安全性,在超過特定的時間後就會把空閒連線斷開。或者是伺服器端設定了斷開空閒連線。解決辦法 既然會斷開超時的空閒連線,那麼我們就應該讓客戶端與伺服器之間的連線 忙 起來,方法一 從伺服器方面入手 修改 etc ssh sshd config配...