看了上一篇博文的發表時間,是7月22日,現在是10月22日,已經有三個月沒寫博客了。這三個月里各種忙各種瞎折騰,發生了很多事情,也思考了很多問題。現在這段時間開始閑下來了,同時該思考的事情也思考清楚了,所以打算繼續寫博客,分享我的工作上的經驗總結和自己所接觸的技術,讓想多了解點技術的博友們可以互相交流和學習。
好了,廢話不多說,直接進入主題,本次打算分享HTTP協議系列的相關文章,適合初學者學習,高手或者大神可以繞道,當然也可以一起交流交流。
這次先講講IP、TCP和DNS與HTTP的密切關系。
知識點
一、IP協議的概念與作用
IP的概念:
英文為Internet Protocol,翻譯成網際協議,位於網絡層。
這個網際協議這個名字聽起來有點誇張,但事實就是這樣,因為幾乎所有使用網絡的系統都會用到IP協議。TCP/IP協議族中的IP指的是網際協議,它在協議名稱中占據了一半的位置,從這可以知道IP協議是多么的重要。這里我們需要注意兩個概念,IP和IP地址,可能有人會把它搞混。IP其實是一種協議的名稱,而IP地址是一個地址。
IP的作用:
把各種數據包傳送給對方。如果要保證確定傳送到對方那里,則需要滿足各類條件,其中最重要的兩個條件是IP地址和MAC地址。
(1)IP地址:指明了節點被分配到的地址
(2)MAC地址:是指網卡所屬的固定地址
(3)區別:IP地址可變換,但MAC地址基本上不會更改。
如果你想要保證數據包傳送到對方去,那就必須滿足各種條件,其中最重要的兩個條件是IP地址和MAC地址。
什么是IP地址呢?IP地址指明了節點被分配到的地址。而什么又是MAC地址呢? MAC地址的網卡所屬的固定地址。形象一點來說,MAC地址就像我們的身份證號,每一個MAC地址是唯一的,並且基本不會改變。這里我為什么說基本不會改變呢?因為目前我們可以通過軟件修改,也就是用軟件來修改MAC地址。IP地址是可以和MAC地址進行配對的。
我們來了解一下使用ARP協議憑借MAC地址進行通信
什么是ARP協議呢?ARP協議它是一種用以解析地址的協議,我們只要知道通信方的IP地址,就可以反查出對應的MAC地址。也就是說IP間的通信依賴於MAC地址。
我們來看一下這個圖:
在網絡上,通信的雙方通常都是要經過多台計算機或者網絡設備中轉才能連接到對方。而在進行中轉時,會利用下一站中轉設備的MAC地址來搜索下一個中轉目標,這時我們就是靠ARP協議來進行處理。
二、TCP協議的概念與作用
(1)TCP的概念:TCP英文為Transmission Control Protocol ,翻譯成傳輸控制協議,位於傳輸層。
(2)TCP有什么作用呢?它是提供可靠的 字節流服務。
(3)什么是字節流服務?所謂的字節流服務指的是,為了方便傳輸,將大塊數據分割成 以報文段為單位的數據包 進行管理
(4)為何強調可靠呢?因為它能夠把數據准確可靠地傳送給對方。總而言之,TCP協議就是為了 更容易傳送大數據 才把數據分割,而且TCP協議能夠確認數據 最終是否送達對方。
(5)TCP協議如何才能保證提供可靠的服務?它采用了三次握手策略。 也就是用TCP協議 把數據包送出去后,它不會對傳送后的情況置之不理,它一定會想對方確認 是否成功送達。
三、TCP協議的三次握手過程
我們來看一下這個圖:
握手過程中使用了TCP的標志-SYN和ACK。發送端首先發送一個S帶SYN標志的數據包給對方。接收端接到后,就會回傳一個帶有SYN/ACK標志的數據包 以表示傳達確認信息。最后,發送端再回傳一個帶ACK標志的數據包 給接收端, 此時代表“握手”結束。除了三次握手來保證通信的可靠性,TCP協議還有其他各種手段來保證通信的可靠性,這里我就不過多講解了,大家可以自己翻閱相關資料去了解下。
四、DNS的概念與作用
(1)DNS的概念:英文為Domain Name System ,翻譯成域名系統,位於應用層。
(2)DNS有什么作用呢? 它是提供域名到IP地址之間的解析服務。
我們平時訪問一個網站,通常都是使用主機名或域名來訪問,而不是直接通過IP地址來訪問。為什么我們不用IP地址去訪問呢?因為IP地址是一組純數字,比較難記。比如說,我們極客學院的IP地址為121.42.104.52,而域名為www.itcen.cn。 如果我們用IP地址去訪問網站,那是很難記得住的。而用域名就比較容易記住了。但是呢,計算機和人不一樣,你要計算機去理解名稱,相對來說就比較困難了。計算機比較擅長處理一長串數字。為了解決這個問題,就有了DNS服務。DNS協議它是提供 通過域名 來查找IP地址,或者逆向 從IP地址反查域名 的服務。
五、HTTP與TCP、IP和DNS的關系
最后我們通過一張圖來了解一下HTTP與TCP、IP和DNS的關系,看看它們在通信的過程中各種發揮了什么作用。
我來拿我的博客來舉個例子:
首先是,我想訪問網站,將域名發送給DNS去解析,DNS解析后將網站的IP地址返回給客戶端,然后通過IP地址發起HTTP請求。HTTP此時的作用是 生成針對目標WEB服務器(我們這里指的是網站的服務器)的HTTP請求報文,然后將請求報文傳送給傳輸層,此時為了方便通信,TCP會將HTTP請求報文 分割成報文段,這些報文段會有一個序號,這里的報文段哪一個先發送哪一個先到達,它們是按序傳送的。只要建立起TCP連接,客戶端與服務器之間的報文交換就不會丟失,不會被破壞,也不會在接收時出現錯序。接着到了網絡層,此時IP協議的職責是,搜索對方的地址,一邊中轉一邊傳送。然后找到了服務器的位置,此時服務器的傳輸層中 TCP的職責是 接收到對方傳送過來的報文段后,對其進行重組,這里的重組是按序號進行重組的。然后到了服務器的應用層,HTTP會對客戶端請求的內容進行處理。處理完后,服務器同樣會利用TCP/IP通信協議向客戶端進行回傳響應。最后客戶端收到響應后,將內容輸出頁面顯示。即完成了一次HTTP事務。
如果此博文中有哪里講得讓人難以理解,歡迎留言交流,若有講解錯的地方歡迎指出。
如果您覺得您能在此博文學到了新知識,請為我頂一個,如文章中有解釋錯的地方,歡迎指出。
互相學習,共同進步!