比如我們訪問www.baidu.com這個網域名稱
第一步:網域名稱解析
瀏覽器先嘗試從host檔案中獲取對應的ip位址,如果能取到就返回ip位址,如果不能,就向本地dns求助。
dns拿到請求之後,先檢查一下自己的快取中有沒有這個位址,有的話就直接返回。沒有的話,dns會從配置檔案裡面讀取13個根網域名稱伺服器的位址。然後向其中一台發起請求。根伺服器拿到這個請求後,知道他是com這個頂級網域名稱下的,所以就會返回com域中的ns記錄,一般來說是13臺主機名和ip。然後dns向其中一台再次發起請求,com域的伺服器發現你這請求是baidu.com這個域的,一查發現了這個域的ns,那我就返回給你,你再去查。dns不厭其煩的再次向baidu.com這個域的權威伺服器發起請求,baidu.com收到之後,查了下有www的這台主機,就把這個ip返回給你了,dns拿到了ip之後,將其返回給了客戶端,並且把這個儲存在快取記憶體中。
第二步:建立tcp連線
第三步:獲取網頁內容
使用http協議請求網頁內容,是一堆html的文字,然後瀏覽器將其渲染到螢幕上。
http協議定義web客戶端如何從web伺服器請求web頁面,以及伺服器如何把web頁面傳送給客戶端。http協議採用了請求/響應模型。客戶端向伺服器傳送乙個請求報文,請求報文包含請求的方法、url、協議版本、請求頭部和請求資料。伺服器以乙個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤**、伺服器資訊、響應頭部和響應資料。
以下是 http 請求/響應的步驟:
1、客戶端連線到web伺服器
乙個http客戶端,通常是瀏覽器,與web伺服器的http埠(預設為80)建立乙個tcp套接字連線。例如,
2、傳送http請求
通過tcp套接字,客戶端向web伺服器傳送乙個文字的請求報文,乙個請求報文由請求行、請求頭部、空行和請求資料4部分組成。
3、伺服器接受請求並返回http響應
web伺服器解析請求,定位請求資源。伺服器將資源複本寫到tcp套接字,由客戶端讀取。乙個響應由狀態行、響應頭部、空行和響應資料4部分組成。
4、釋放連線tcp連線
若connection 模式為close,則伺服器主動關閉tcp連線,客戶端被動關閉連線,釋放tcp連線;若connection 模式為keepalive,則該連線會保持一段時間,在該時間內可以繼續接收請求;
5、客戶端瀏覽器解析html內容
客戶端瀏覽器首先解析狀態行,檢視表明請求是否成功的狀態**。然後解析每乙個響應頭,響應頭告知以下為若干位元組的html文件和文件的字符集。客戶端瀏覽器讀取響應資料html,根據html的語法對其進行格式化,並在瀏覽器視窗中顯示。
1、瀏覽器向 dns 伺服器請求解析該 url 中的網域名稱所對應的 ip 位址;
2、解析出 ip 位址後,根據該 ip 位址和預設埠 80,和伺服器建立tcp連線;
3、瀏覽器發出讀取檔案(url 中網域名稱後面部分對應的檔案)的http 請求,該請求報文作為 tcp 三次握手的第三個報文的資料傳送給伺服器;
4、伺服器對瀏覽器請求作出響應,並把對應的 html 文字傳送給瀏覽器;
5、釋放 tcp連線;
6、瀏覽器將該 html 文字並顯示內容;
https是在http上面套了一層ssl,用來實現安全連線。用到的金鑰有對稱金鑰和非對稱金鑰。
先來了解一下http協議的缺點:
1、通訊使用明文( 不加密) , 內容可能會被竊聽
2、不驗證通訊方的身份, 因此有可能遭遇偽裝
3、無法證明報文的完整性, 所以有可能已遭篡改
計算機網路基礎知識
計算機網路協議 osi 七層協定 計算機網路協議 tcp ip 其實 tcp ip 也是使用 osi 七層協議的觀念,所以同樣具有分層的架構,只是將它簡化為四層,在結構上面比較沒有這麼嚴謹,程式撰寫會比較容易些。網路 一次傳輸的資料量是有限的,因此如果要被傳輸的資料太大時,我們在分層的包裝中,就得要...
計算機網路基礎知識
計算機網路建立在自頂向下分層設計 自底向上逐層抽象的基礎上。分層與抽象就是為了簡化問題。1.應用層,不同主機應用程式間的通訊。運輸層,通過埠,實現復用分用。網路層,解決不同異構網路連線的問題。資料鏈路層,加入協議,幫助分組從乙個主機傳送到另乙個主機。物理層主要任務描述為確定與傳輸 的介面的一些特性,...
計算機網路基礎知識
osi七層網路協議體系結構 物理層,資料鏈路層,網路層,運輸層,會話層,表示層,應用層。五層協議體系結構 物理層,資料鏈路層,網路層,運輸層,應用層。tcp ip體系結構 網路介面層,網際層ip,運輸層 tcp或udp 應用層 1.物理層 在物理層上所傳資料的單位是位元。物理層的任務就是透明的傳送位...