瞭解web及網絡基礎

瞭解web及網絡基礎

如下內容簡單的說明了一下TCP/IP協議族中HTTP協議、DNS服務、IP協議的一些概念和關係。筆者只是對知識點進行了總結,僅供參考: )
轉載請註明出處:瞭解web及網絡基礎html

1.1使用HTTP協議訪問Web

在一些大廠秋招面試的時候,會問到這樣一個問題:當咱們在web瀏覽器的地址欄輸入URL時,Web頁面是如何呈現的?git

在尚未HTTP協議基礎的同窗,最簡單的解釋即:github

1. 在瀏覽器地址欄內輸入URL以後,信息會被送往某處。
2. 而後從某處得到響應以後,內容就會顯示在Web頁面上。

夠簡單了吧.. Web瀏覽器向Web服務器發送請求、獲取文件資源等信息以後,再將內容顯示在瀏覽器上。web

像這種經過發送請求獲取服務器資源的瀏覽器,均可以稱爲客戶端。所以,像瀏覽器、原生應用均可以稱爲客戶端。由於都是經過向服務器發送請求的方式獲取數據的。面試

web使用一種名爲HTTP(HyperText Transfer Protocol, 超文本傳輸協議)的協議做爲規範,完成從客戶端到服務器等一系列運做流程。能夠說,Web是創建在HTTP協議上通訊的。瀏覽器

1.2 網絡基礎TCP/IP協議族

爲了理解HTTP協議,有必要先了解一下TCP/IP協議族。這裏不要有誤區,認爲TCP/IP協議族特指TCP協議和IP協議。TCP/IP是互聯網相關的各種協議族的總稱。所以,HTTP、FTP、TCP、UDP、IP等協議和DNS服務都是TCP/IP協議族的子集。服務器

1.2.1 TCP/IP的分層管理

TCP/IP協議族裏重要的一點就是分層。TCP/IP協議族按層次分別分爲如下4層:應用層、傳輸層、網絡層、數據鏈路層。層次的區分參考OSI參考模型。網絡

其實將TCP/IP協議族層次化是有好處的。好比,若是互聯網只由一個協議統籌,某個地方須要改變設計時,就必須把全部部分總體替換掉。而分層以後只須要把變更的層替換掉便可。tcp

TCP/IP協議族各層次的做用以下:大數據

應用層:應用層決定了向用戶提供應用服務時通訊的活動。應用服務包括常見的HTTP協議、FTP協議和DNS服務。

傳輸層:傳輸層提供處於網絡鏈接中的兩臺計算機之間的數據傳輸。在傳輸層有兩個性質不一樣的協議:TCP(Transmission Control Protocol, 傳輸控制協議),UDP(User Data Protocol, 用戶數據包協議)。這兩個協議的區別能夠參考wiki: TCP, UDP

網絡層:網絡層用戶處理網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。與對方計算機之間經過多臺計算機或網絡設備進行傳輸時,網絡層所起的做用就是在衆多的選項內選擇一條傳輸路線。IP協議就位於網絡層。

數據鏈路層:又叫網絡接口層,主要用於處理鏈接網絡的硬件部分。如操做系統、硬件設備驅動、網絡適配器(網卡)、光纖等。硬件上的範疇均在鏈路層的做用範圍以內。

1.2.2 TCP/IP通訊傳輸流

由上圖能夠看出,利用TCP/IP協議族進行網絡通訊時,會經過分層順序與對方進行通訊。也就是說,客戶端經過應用層、傳輸層、網絡層、數據鏈路層到達服務器;而服務器以相反的方向到達客戶端。

以HTTP舉例。

客戶端:
1. 首先,做爲發送端的客戶端在應用層(HTTP協議)發出一個查詢訂單的HTTP請求
2. 接着,在傳輸層(TCP協議)把從應用層處收到的數據(HTTP請求報文,以後的文章會涉及)進行分割,並在各個報文上打上標記序號及端口號後轉發給網絡層。(TCP協議的做用)
3. 最後,在網絡層(IP協議),增長做爲通訊目的地的MAC地址後轉發給數據鏈路層。

接收端:
接收端的服務器在數據鏈路層接收到數據,按序號往上發送,一直到應用層。當數據包傳輸到應用層以後,才能算真正接收到有客戶端發送過來的HTTP請求。

值得注意的是,在數據傳輸過程當中,由上圖能夠看出,每通過一層時一定會被打上一個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每通過一層時會把對應的首部消去。

這種把數據信息包裝起來的作法稱爲封裝

1.3 與HTTP協議關係密切的協議:IP、TCP和DNS

1.3.1 負責傳輸的IP協議

按照TCP/IP協議族層次進行分類,IP協議位於網絡層。這裏要注意的是,不要把IP協議和IP地址混在一塊兒,這裏談的IP是一種協議的名稱。

IP協議的做用是將各類數據轉發給對方。而要保證確實傳送到對方,則須要知足各種條件。其中兩個重要的條件分別是: IP地址MAC地址

IP地址指明瞭計算機被靜態或動態分配到的地址,MAC地址是網卡所屬的地址。同時,IP地址是可變的,而MAC地址是不會發生變化的。其中,MAC地址也叫物理地址、鏈路地址或者硬件地址。下面是我本地IP地址和MAC地址截圖。

1.4.2 確保可靠的TCP協議

按照TCP/IP協議族的分層管理中,TCP協議位於傳輸層,提供可靠的字節流服務

所謂字節流服務是指爲了方便傳輸,TCP協議會將大塊數據分割成以報文段(segment)爲單位的數據包進行管理。而可靠的傳輸服務是指可以把數據準確可靠的傳輸給對方。

簡言之,TCP協議爲了傳輸數據更加方便,將大數據分割成數據包而且打上標誌,同時可以確保數據準確無誤的傳輸給對方。

TCP協議提供可靠的傳輸服務而採用了三次握手(Three-way handshaking)策略。TCP協議把數據包發送出去以後,不會對以後的數據置之不理,而是會確認對方時候成功收到數據。所以,握手過程當中使用了主要兩種TCP標誌----SYN和ACK。三次握手的過程以下:

1. 客戶端向服務器發送SYN形式的數據包,表示客戶端須要創建鏈接請求。
2. 服務端接收到以後,回傳一個帶有SYN/ACK標誌的數據包給客戶端,表示接受鏈接請求。
3. 客戶端此時會向服務端ACK,表示接收到消息。

第一二次握手的目的是確保服務端可以接收到客戶端的消息而且可以正確的應答。第二三次握手的目的是確保客戶端可以接收到服務端的消息而且可以作出正確的應答。

那兩次握手能夠嗎?不行。兩次握手以後,客戶端必須給服務端回傳消息。這樣作的目的是爲了防止請求延遲或中斷而致使服務端等待客戶端的消息形成帶寬等資源的浪費。詳細的三次握手和四次分手能夠參考這篇文章。傳送門: 理解TCP協議的三次握手和四次分手

若是在握手過程當中某個階段由於某些緣由中斷了,TCP協議會再次以相同的順序發送相同的數據包。

1.4.3 負責域名解析的DN服務

DNS服務同HTTP協議位於應用層,它提供域名到IP地址之間的解析服務。從定義能夠知道,能夠經過DNS服務將域名解析成IP地址;一樣的,也能夠將IP地址反查相應的域名。

最後以一張圖片來講明各類協議與HTTP協議的關係。

下一篇文章會針對HTTP/1.1協議結構的知識點作總結。

未完待續: )

相關文章
相關標籤/搜索