本文是在本身有必定的HTTP知識的基礎上寫的,因此不是零基礎寫起哦
HTTP
超文本傳輸協議。html
WEB
就是是同http
協議做爲一種規範來,完成從客戶端到服務器的一系列運做的。而協議是指規則的約定。web
WWW
的三個構建技術爲: 1. HTML
超文本標記語言做爲頁面 2. HTTP
超文本傳輸協議做爲文檔傳遞的規範 3. 指定文檔所在地的URL
服務器
瞭解HTTP以前,咱們務必須要先了解一下TCP/IP
協議族.網絡
咱們一般所說的網絡就是再TCP/IP
的基礎上運做的。而HTTP
僅是做爲TCP/IP
的一個分支出現。xss
那麼TCP/IP是什麼東東呢?學習
TCP/IP
是互聯網相關的各種協議的總稱。ui
TCP/IP
最主要的一點就是分層管理,分爲四層: 傳輸層
、網絡層
、數據鏈路層
、應用層
。這樣分層的好處是很是顯著的,各自互補影響,他們只須要完成本身分工的那一部分任務就能夠了,並不須要去管別的層所處理的任務。spa
TCP/IP協議族各層的做用:操作系統
應用層
應用層決定的是向用戶提供應用服務時的活動。.net
在TCP/IP中預存了一些固定的應用服務。包括FPT (文件傳輸協議)、 DNS(域名系統)。http也是在應用層。
傳輸層
它提供處於網絡連接中的兩個計算機之間的數據傳輸。
存在有兩個性質徹底不一樣的協議: TCP(傳輸控制協議) 、 UDP(用戶數據報協議)。
網絡層
它處理的時網絡上流通的數據包,數據包時網絡傳輸的最小的單位,該層規定了應該經過怎樣的一個 途徑將數據包從一個計算機傳到另外一個計算機。 若是說在與對方的計算機之間存在有諸多的計算機或者是網絡,那麼該層將會選擇一條傳輸路徑。
鏈路層
主要解決的是連接網絡的硬件部分,包括操做系統,硬件設備,NIC、以及光纖等物理可見的部分。
TCP/IP通訊傳輸流
利用TCP/IP來進行網絡通訊時,會經過分層處理來與對方進行通訊。
咱們拿HTTP來分析討論一下。
[ x ] 咱們在應用層
客戶端發送一個要查看Web頁面的一個HTTP請求
。
[ x ] 經過傳輸層
,將接受到的HTTP請求報文進行拆分,並在各個報文上打上標記序號以及端口號,將其發送給網絡層。
[ x ] 在網絡層
,經過IP協議增長請求目的地的MAC
地址給鏈路層。
[ x ] 到此,發往服務器的請求就準備完畢了。
[ x ] 服務端的接受時按照相反的順序進行的,首先是服務器的鏈路層接收,接着逐層往上傳,一直到達應用層,這樣就獲得了發送來的HTTP請求。
封裝
。負責傳輸的IP協議
IP協議屬於網絡層,這裏所說的IP協議可能會讓一些人將IP
與IP地址
混淆。IP
實際上是一種協議的名稱。
IP協議的做用主要是把各類數據包傳給對方,而要保證確實的傳給對方,那麼就須要知足各種條件,其中最重要的是IP地址
和MAC地址
。
標識網絡中的一臺計算機,通常至少有三種方法,最經常使用的是域名地址、IP地址和MAC地址,分別對應應用層、網絡層、物理層。網絡管理通常就是在網絡層針對IP地址進行管理,但因爲一臺計算機的IP地址能夠由用戶自行設定,管理起來相對困難,MAC地址通常不可更改,因此把IP地址同MAC地址組合到一塊兒管理就成爲常見的管理方式。
通訊雙方通常不在同一個局域網以內,一般是要通過多臺計算機以及互聯網中的中轉設備來通訊的。在通訊中主要是經過MAC地址來實現中轉。而ARP協議是一種用於解析IP反查MAC的協議。
咱們最終因該瞭解的是不管互聯網中的哪臺計算機、哪一個網絡設備都沒法瞭解互聯網中的細節,所以在通訊過程當中是經過不斷的中轉,來到達目的地的,中轉的方向經過IP
地址MAC
地址的網段來尋找。
確保可靠性的TCP協議
TCP
屬於傳輸層
。提供的是可靠的字節流服務
。
在傳輸打斷的請求數據的時候,TCP會將其拆分紅報文段爲單位的數據包,而可靠的數據傳輸服務是指,TCP可以保證將完整的數據傳送給對方哦。
爲了準確無誤的傳送過去,TCP連接採用了三次握手
的策略。
所謂三次握手
(Three-way Handshake),是指創建一個 TCP 鏈接時,須要客戶端和服務器總共發送3個包。
第一次握手:(SYN=1,seq = x)
客戶端發送一個標誌即SYN=1
的包,告訴客戶端要鏈接了,同時把打算鏈接的端口
以及初始化序列x
保存在包頭的seq
(Sequence Number)發送給服務器。客戶端進入了 SYN_SEND
狀態.
第二次握手: (SYN = 1; ACK = 1; seq = y; ACKNUM = x+1;)
服務端返回承認包ACK
,即ACK = 1; SYN = 1;
返回服務器本身的序列號 seq = y
; 以及確認序列號爲 ACKnum = x+1
;服務端進入SYN_RCVD
狀態。
第三次握手:(ACK = 1; ACKnum = y + 1);
客戶端再次發送確認包ACK = 1; SYN = 0;
確認序列號爲 y + 1;
。以後客戶端服務端都進入了ESTABLISHED
狀態。 至此TCP握手
結束。
負責域名解析的DNS服務
DNS協議一樣屬於應用層。它提供的是域名到IP地址之間的解析服務。
計算機能夠被賦予IP地址,也能夠被賦予主機名和域名。好比: www.gcsn.site
用戶一般使用的是主機名和域名來直接訪問計算機,不多會直接用IP地址來訪問,一是由於很難記憶,還不符合人們的習慣。
DNS協議提供的是經過域名查找IP地址,或者逆向從IP地址反查域名的服務。
各類協議與HTTP的關係
咱們以一個web頁面的請求爲例子來貫穿一下整個流程吧。
URL是統一資源定位符,URI是統一資源標識符。
u —— uniform 統一的格式
r —— Resource 資源,任何東西可爲資源
I —— Identifier 可標識的
URI是用一串字符串表示互聯網的資源,URL是表示資源的位置。因此URL是URI的子集。
絕對URI的格式:
http://user:pass@www.example.com:80/dir/index.html?uid=1#ch2
從左往右依次是: 協議名、用戶名、密碼、服務器地址、端口、帶層次的文件路徑、查詢字符串、片斷標識符
RFC
:HTTP協議
的技術標準。
未完待續,第一篇告一段落了,以後會有更多篇