一. 應用層
程序員寫的一個個解決實際問題,滿足我們日常需求的網絡程序,都在應用層。
1. 協議
網絡協議,也可簡稱協議,由三要素組成:
(1)語法:即數據與控制信息的結構或格式;
(2)語義:即需要發出何種控制信息,完成何種動作以及做出何種響應;
(3)時序(同步),即事件實現順序的詳細說明。
計算機通信網是由許多具有信息交換和處理能力的節點互連而成的。要使整個網絡有條不紊地工作,就要求每個節點必須遵守一些事先約定好的有關數據格式及時序等的規則。這些爲實現網絡數據交換而建立的規則、約定或標準就稱爲網絡協議。協議是通信雙方爲了實現通信而設計的約定或通話規則。
協議總是指某一層的協議。準確地說,它是在同等層之間的實體通信時,有關通信規則和約定的集合就是該層協議,例如物理層協議、傳輸層協議、應用層協議。
二. http協議
1.概念
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是互聯網上應用最爲廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面的方法。
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。
2.認識URL
URL就是我們平常所說的網址,如下圖所示:
3.urlencode和urldecode
(1)urlencode:
將字符串以URL編碼
返回值:字符串
函數種類:編碼處理
編碼方式:
1。數字和字母不變。
2。空格變爲"+"號。
3。其他被編碼成"%"加上他們的ascii的十六進制,規律是這樣的
比如“啊”字 編碼的十六進制是B0A1——>%B0%A1(Note:它是每個字節前加個%)
(2)urldecode:
對字符串進行URL解碼。
返回值:已解碼的字符串
函數種類: 編碼處理
像 / ?:等這樣的字符,已經被url當作特殊意義來理解了,因此這些字符不能隨意出現。
比如:某個參數中有這樣的字符,就必須對特殊字符進行轉義。
轉義的規則如下:
將需要轉碼的字符轉爲16進制,然後從右往左,取4位(不足四位直接處理),每兩位做一位,前面加上%,編碼成%XY。
4.http協議格式
1. http請求
(1)請求行:方法(Method) + url(調用符)/ uri(標識符) + http/version\r\n(版本)
(2)kv請求報頭:請求的屬性,name :value,,,,,,\r\n
(3)空行 \r\n
(4)請求正文-------用戶數據
2. http響應
(1)狀態行:http/version(版本號)+ 狀態碼200 + ok
(2)響應報頭:key : value \r\n
(3)空行 \r\n
(4)響應正文: html / css / js / jpg / gif png
3.http方法
對於常見的兩種方法:GET 和 POST
post比get兩者之間的區別:
(1)GET
- 通常用於baidu搜索,先上傳再拿下
比如想要搜一個東西,將名字輸入,只要信息存在,那麼就會出現自己想要的信息。 - 參數小
- 它共分爲3部分,沒有正文。
- 傳參放在url後面。
(2)POST
- 上傳,只是將東西向上發送
- 在正文後面進行傳參
- 他共分爲4部分,有正文
- 參數大,私密
4.http的狀態碼
常見的狀態碼:
(1)302:重定向
- 重定向分爲兩種一種是永久重定向,一種是臨時重定向。
永久重定向:只要第一次訪問之前鏈接,跳轉之後,之後的訪問直接去找新的鏈接。
臨時重定向:每一次訪問,都需要跳轉。
(2)404:無法找到資源
5.http常見的header
- 1.Content-Type:數據類型(text/html等)。—》擴展名
- 2.Content-Length:Body的長度。—》讀多少個數據
- Host:客戶端告知服務器,所請求的資源是在哪個主機的哪個端口上
- User-Agent:聲明用戶的操作系統和瀏覽器版本信息
- referer:當前頁面是從哪個頁面跳轉過來的
- location:搭配3xx狀態碼使用,告訴客戶端接下來要去哪裏訪問
- Cookie:用於在客戶端儲存少量信息,通常用於實現(session)的功能
優點:可以保存用戶的登陸信息,下次訪問的時候,就不需要登陸。