1. 程式人生 > >輸入url地址按下回車發生了什麽?

輸入url地址按下回車發生了什麽?

傳輸 就是 str 輸入 信息 發送 發生 mage ip地址

1.輸入url地址後,首先進行DNS解析,將相應的域名解析為IP地址;

2.客戶端根據IP地址去尋找相應的服務器;

3.與服務器進行TCP的三次握手;

  所謂三次握手就是客戶端在請求與服務器相連接時,彼此共計發送了三次數據包,就好比以下的對話:

  首先,需要明確的是,三次握手是客戶端先發起請求。

  (第一次)客戶端:hi,服務器,在嗎?我想和你建立連接,你能收到我的消息嗎?(此時客戶端給服務端發送了一個數據包和發送序號,即SYN=1,Seq=X)

  (第二次)服務器:hi,客戶端,我在呢,我收到你的消息了,我們可以建立連接,你能收到我答復的消息嗎?(此時服務端發送syn+ack報文,並置發送序號為Y,再確認序號為X+1)

  (第三次)客戶端:我收到你的答復了,很開心能和你建立連接。(此時客戶端發送ack報文,並置發送序號為Z,再確認序號為Y+1)

  以上就是tcp三次握手的簡化版。

技術分享圖片

4.客戶端找到相應的資源庫;

5.根據資源庫返回頁面信息;

6.瀏覽器根據自身的執行機制解析頁面;(瀏覽器的執行機制?重繪?重排?......)

  瀏覽器解析頁面時,會找到每一個文件夾(css、js、html、img......),每一個文件夾下的資源會重新走到第二步,去找到相應的服務器,然後一步步執行。

7.最後服務器將解析信息返回給客戶端,進行TCP的四次揮手。

  所謂四次揮手就是客戶端與服務端在斷開連接時,彼此交互傳輸了四次數據包,就好比以下對話:

  首先,需要明確的是,四次揮手不知道哪一方是主動方,哪一方是被動方。

  男朋友(可能是客戶端,可能是服務器):xxx,我們分手吧?我不想和你聯系了。(此時主動方發送fin+ack報文,並置發送序號為X)

  女朋友:好的,我收到你分手的消息了,我同意分手。(此時被動方發送ack報文,並置發送序號為Z,再確認序號問X+1)

  (此時,女朋友正不爽呢,憑什麽分手呀,我也不管你能不能收到,我也要提出分手...)

  女朋友:xxx,我們分手吧,我也不想和你聯系了。(此時被動方發送fin+ack報文,並置發送序號問Y,再確認序號為X)

  男朋友:好的,我收到你同意並提出分手的消息了,再見!(此時主動方發送ack報文,並置發送序號為X,再確認序號為Y)

技術分享圖片

8.至此,客戶端顯示自己請求,即服務端返回的東西

輸入url地址按下回車發生了什麽?