前言
到這一篇我已經把TCP/IP五層模型詳細的說明了一遍,大體的從物理層到最上層的應用層做了一個大概的了解,其實總體學下來東西非常的多,我們需要經常的去系統性的去學習它。不然過一段時間就忘記了!
回顧一下前面的知識:

OSI體系結構分為7層:物理層、鏈路層、網路層、傳輸層、會話層、表示層、應用層。
TCP/IP5層參考模型:物理層、數據鏈路層、網絡層、傳輸層、應用層
TCP/IP的體系結構分為4層:網絡接口層(物理層、鏈路層)、網際層(網絡層IP)、傳輸層(UDP/TCP)、應用層(會話層、表示層、應用層)
原理體系結構:物理層、鏈路層、網絡層、傳輸層、應用層(會話層+表示層+應用層)
OSI七層協議體系結構:優點:概念清楚,理論完整,缺點但是復雜而不實用
TCP/IP協議族四層,缺點:太簡單,但被廣泛使用
結合上面兩個的優缺點,就有了5層協議的原理體系結構,即簡潔又能把概念描述清楚。
一、應用層概述
1.1、應用層簡介
在百度中的介紹:

位於計算機網絡體系結構的最上層,前面四層做的所有事情就是為了他服務,他也是設計和建立計算機網絡的最終目的,通俗的講,就是我們開發的應用軟件,就處於這一層,
比如,QQ,瀏覽器訪問網頁,等等你看得到的應用軟件都是在這一層,但是這些軟件在運行的過程中,也需要依靠一些特定的協議才能完成相應的功能,
比如瀏覽器通過網址訪問網頁,其中是如何做到的,這就是我們所要學習的東西。
1.2、應用層中的應用軟件分兩種:客戶/服務器和P2P體系結構
1)客戶/服務器(client/server)
這種類型,就是我們很熟悉的客戶端,服務器模型,客戶端請求服務器,服務器響應客戶端這樣的一種方式進行“交流”
2)P2P
也稱為對等體系結構。P2P相當於每個人的電腦度可以當服務器,也可以當客戶端,不單單限制於只能客戶端訪問服務器,
你自己的計算機可以去訪問別人的計算機上的內容,別的同樣可以訪問你計算機上的內容,這樣達到一種共享的狀態。
二、應用層協議之DNS協議
2.1、DNS協議概述
Domain Name System 域名系統。也可以叫做域名解析協議。在我們在瀏覽器訪問網頁的時候,通常度是用我們所熟悉的一連串有意義的英文字符標識,比如www.baidu.com、www.sohu.com等。
但是我們學了前面的知識,計算機並不是通過這些字符串去找到對應的計算機,而是通過32位的二進制,也就是我們的IP地址來找。所以就有了DNS協議。他的作用就是將域名解析成對應的IP地址。
因為讓我們人去記那些IP地址,很難記得住,所以就想辦法讓IP地址轉變為了現在的域名,在進行訪問的時候,只需要將域名解析為對應的IP地址就行了,這個域名也很有講究,其中分為好多層域名,
是獨一無二的。這里不細講這個,只要我們知道,域名通過DNS能找到對應的IP地址就行了。
2.2、DNS協議工作過程
1)通過域名訪問網頁
2)計算機會先將域名發送到一個解析域名的服務器上
2.1)在其服務器上有很多服務器,能解析各種各樣的域名,比如有專門解析.org的,解析.com的,解析.net的。等等,最主要的有一個根域名服務器
2.2 )域名解析(在服務器上查找IP地址)的過程有兩種算法,迭代查詢,遞歸查詢。一般是兩種查詢的結合
2.3 )本機計算機找到其中一台解析域名的服務器(可能是.com),如果沒有找到對應的IP地址,那么就會去找根域名服務器,根域名服務器知道所有的子服務器,
所以他肯定知道該域名所對應的IP地址在那個子服務器中,所以告訴第一次查詢的服務器要他去另一台服務器上找,找到了,就將其返回給計算機,
以后在有另一台計算機也通過這個域名訪問,那么第一台服務器會有原來的域名IP地址的緩存,就不用去找根服務器了。
3)找到了,就能找到我們要訪問的服務器了。

三 、應用層協議之HTTP協議
3.1、HTTP協議簡介
1)超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標准。
2)HTTP是一個客戶端和服務器端請求和應答的標准(TCP)。客戶端是終端用戶,服務器端是網站。通過使用Web瀏覽器、網絡爬蟲或者其它的工具,客戶端發起一個到服務器上指定端口(默認端口為80)的HTTP請求。
(我們稱這個客戶端)叫用戶代理(user agent)。應答的服務器上存儲着(一些)資源,比如HTML文件和圖像。(我們稱)這個應答服務器為源服務器(origin server)。在用戶代理和源服務器中間可能存在多個中間層,
比如代理,網關,或者隧道(tunnels)。盡管TCP/IP協議是互聯網上最流行的應用,HTTP協議並沒有規定必須使用它和(基於)它支持的層。 事實上,HTTP可以在任何其他互聯網協議上,或者在其他網絡上實現。
HTTP只假定(其下層協議提供)可靠的傳輸,任何能夠提供這種保證的協議都可以被其使用。
3)通常,由HTTP客戶端發起一個請求,建立一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器則在那個端口監聽客戶端發送過來的請求。一旦收到請求,服務器(向客戶端)發回一個狀態行,
比如"HTTP/1.1 200 OK",和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在於(打開)一個網頁必須傳送很多數據,而TCP協議提供傳輸控制,按順序組織數據,和錯誤糾正。
4)通過HTTP或者HTTPS協議請求的資源由統一資源標示符(Uniform Resource Identifiers)(或者,更准確一些,URLs)來標識。
3.2、統一資源定位符URL
URL:統一資源定位符,通過下面格式,可以看出,就是用來定位我們所需要資源在服務器上的位置。
格式:<協議>://<主機>:<端口>/<路徑>
協議:http
主機:域名/IP地址,原理度一樣,到頭來還是會轉換為IP地址,通過這個才能找到目標服務器
端口: 在傳輸層需要使用的,訪問目的主機的哪個端口號。
路徑:精准的定位我們所需要的資源位置、
平常會省略協議和端口號,因為這些都是默認的,在訪問主頁時,路徑也會省略。比如www.baidu.com這個默認進入百度的主頁 完整寫法 http://www.baidu.com:80/index.html 。
3.3、超文本傳輸協議
1)作用
怎樣向服務器請求文檔、服務器怎么把文檔傳送給瀏覽器,通俗點講,就是我們想服務器訪問網頁資源時,服務器如何把網頁上的東西傳給我們。
客戶端向服務器:請求報文 服務器向客戶端:響應報文
其實就是:在通過URL訪問你服務器時,就會發送一個請求報文,告訴服務器需要哪些東西,服務器知道后,返回一個響應報文給客戶端,其中就會帶有一些網頁信息。
就是通過這個來達到傳送網頁資源的目的,現在來具體看看,請求報文和響應報文的格式。
3.4、請求和響應報文的格式
格式都一樣,內容不一樣。
請求行 響應行
請求頭部 響應體
請求數據 響應數據
1)請求報文格式圖

2)響應報文格式圖

這個后面我會詳細的寫一篇文章類學習HTTP協議。
3.5、HTTP協議功能
瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本傳輸協議(HTTP),將Web服務器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。
