應用層中除了HTTP,你還知道點啥?

前言

Github連接地址,是我大三上考試前和朋友一塊兒作的一些筆記,固然還有其餘的學習內容,以後還會加入一些其餘課程的學習內容。git

思惟導圖

網絡體系結構模型

上一篇文章中咱們已經介紹過了網絡的體系結構模型中的TCP層,這一次咱們要講的就是應用層,他給咱們帶來的用途到底有哪些呢?我想若是沒作過了解的朋友們除了http也就可能只知道https了。github

應用層

其實這是一個基層,爲何說是基層,由於他是一個專門爲咱們的開發而準備的一個平臺,httphttpsDNSSMTP等一系列的協議都是在這一層創建的。面試

http

  • 請求行:放置請求方法(post、get。。。)、路徑URL、使用的http版本、以及資源路徑的位置。
  • 請求頭:內部放置的是報文的部分信息。(形式:header(字段名):value(值))另外面試中的斷點續傳其實就是對請求頭中添加Range和Content-Range來完成的。
  • 請求體:發送給服務器的數據信息。(User數據啊之類的)

http其實分爲不少的版本,version1.01.1以及2vim

三大版本的區別

  1. 帶不帶流水線:version 2存在。
  2. 是否爲持久化鏈接:version 1.12存在。

第一個問題:什麼叫作流水線?瀏覽器

圖的意思就是爲了說明,數據傳輸只能發送一條,仍是一次性可以發送多條數據的不一樣。這種方案須要思考的問題,就是一個數據包的分類,每一個返回的數據包對應是什麼數據。安全

第一個問題:什麼叫作持久化鏈接?服務器

圖的意思就是爲了說明,一次TCP鏈接只進行一次的數據傳輸,仍是一次TCP鏈接可以進行屢次數據傳輸。這種方案須要思考的問題,就是服務器的壓力,由於過多的TCP鏈接進行了保持的話,那麼形成的問題就是服務器崩潰。網絡

https和http的區別

其實二者大體內容上來講是相同,做出的升級實際上是一個安全性方面。負載均衡

爲何要作安全性的升級呢? 看圖說話好了,下圖是經過wireshark軟件對數據的一個抓包。分佈式

加密後 加密前

這仍是通常的數據,若是咱們數據裏摻雜了咱們的我的信息,好比說帳號密碼等等,被抓去以後,形成的結果就是災難性的。而這就是https作了安全性處理帶來的好處。害處天然也是存在的,就是須要加密和解密的時間,可是這個削弱程度已經徹底的被現代社會的高速處理能力給弱化了。

DNS

DNS這個模塊上,考察的點通常都是工做流程的問題,因此重點作一個講解。

首先要知道DNS是幹什麼的,官方語言是將域名地址轉化爲IP地址。那俗話講就是講www.baidu.com轉化爲14.215.177.39。玩過雲服務器的朋友應該知道,不論是哪家公司給你的公網地址都是一個IP地址。

那爲何不直接用IP地址來訪問呢?

這個問題其實有挺多緣由的:

  1. 好記。 生硬的數字,沒有他的實際意義,若是我告訴他的IP地址和域名地址,你會記住哪一個?這顯然是域名地址。
  2. 分佈式中的應用。 我記得好久之前聽過度布式是一個輪詢的請求方式,由於網絡中IP是惟一的,可是和域名關聯後,一個域名地址能夠對應多個IP地址,你又是經過域名方式請求,也就作到了負載均衡。

請求過程詳解

通常來講這種事件的發起人是咱們的本地客戶機,咱們經過瀏覽器輸入了www.baidu.com,那麼這個時候他的探索歷程開始了。

  1. 先搜索本地的hosts文件,這裏能夠比較清楚的看到一些IP地址對應的域名地址 (命令爲:sudo vim /etc/hosts)
  2. 若是本地不存在,那咱們就要改變策略,向本地域名服務器發出請求。好久之前我小時候玩qq的時候其實就是能夠直接查看附近區域的IP地址存在哪些的。存在則直接返回,不存在,那咱們只好繼續往上找了。
  3. 這裏須要注意,他是直接向根DNS服務器發出請求的,若是根DNS服務器中,咱們一樣的仍是找不到,那咱們纔有開始下面的步驟,向下級服務器發出查找請求。
  4. 下級服務器不斷向下查詢,直到找到了對應的IP地址後,就將咱們的數據進行一個返回,自此咱們就獲得了咱們咱們須要的IP地址。

總結

其實應用層還有不少不少的協議好比FTP(文件傳輸協議)這種專門用於文件傳輸的協議,SMTP(簡單郵件協議)這種用於郵件發送的協議。這一類的協議他們基於的都是TCP層給出的協議做爲基礎的。

DNS基於的就是UDP協議完成,SMTP則是基於TCP的協議,這是由於他們對應用場景的思考,若是郵件沒發到,那麼跟沒發沒有區別,而DNS這種若是每次都要經過請求創建服務,徹底比不上UDP直接發數據快的。

以上就是個人學習成果,若是有什麼我沒有思考到的地方或是文章內存在錯誤,歡迎與我分享。


相關文章推薦:

TCP層的那些知識,你掌握了多少?

Android必知必會的四大組件 -- ContentProvider篇

Android必知必會的四大組件 -- Activity篇

相關文章
相關標籤/搜索