例如,現在實現乙個伺服器版本的加法器,我們需要把客戶端要計算的兩個加數傳送過去,然後伺服器進行計算,最後再把計算結構返回到客戶端;
約定方案:
json 是一種非常重要的序列化/反序列化的方式網路計算器json 的優點:直觀,方便除錯。文字方式序列化
缺點:效率低
雖說應用層的協議可以自己定,但是實際上大佬們定義的一些現成的,非常好用的應用層協議,供我們一直使用。http(超文字傳輸協議)就是其中之一。
說到http就不得不說說url,平時我們俗稱的」**「,就是」url「
像/?:等這樣的字串,已經被url當作特殊意義理解了,因此這些字串不能隨意出現。
比如,某個引數中需要帶有這樣特殊的字元,就必須先對字元進行特殊轉義。
將需要的轉碼的字元轉為16進製制,然後從右到左,取4位(不足4位時直接處理),每兩位做一位,前面加上%,編碼成%xy格式。
c++=>c%2b%2burldecode 就是urlencode的逆過程
這是我用fiddler抓包工具抓到的登陸我們教務系統的http請求。
請求:
首行(使用空格分隔):
頭部資訊(header):包含若干行,每一行都是乙個鍵值對,鍵和值之間用 「 :」分隔
空行:表示header的結束
請求體(boby):空格後面全是boby,boby是可選的,可有可無,一般來說get請求不帶boby,post/put請求帶boby
響應:
首行:
header:有若干行,每一行都是鍵值對
空行:表示header部分結束
boby:空行之後全是boby
get和post的區別:常見的http狀態碼:- 1xx:資訊提示設計之初get從伺服器上拿資料,post向伺服器傳送資料
但是現在get可以向伺服器放資料,post可以從伺服器上拿資料
區分get和post的方法只有:
get往往將引數放到query_string中,post將資料放到boby中
- 2xx:成功,例如 200 表示訪問成功
- 3xx:重定向,例如 302 found表示重定向 ,303 see other 重定向location欄位表示重定向到哪個url上去
- 4xx:客戶端出現錯誤,403 forbiden使用者沒有訪問許可權,404 not found 沒有找到指定的資源
- 5xx:伺服器出現錯誤,502 bad gateway 伺服器掛了 504 gateway timeout伺服器響應超時
-常見的header
應用層協議
應用層協議定義了執行在不同端系統上的應用程式程序如何相互傳遞訊息。特別是定義了 交換的訊息型別,如請求訊息和響應訊息。各種訊息型別的語法,如訊息中的各個字段及其詳細描述。欄位的語義,即包含在字段中的資訊的含義。程序何時 如何傳送訊息及對訊息進行響應的規則。有些應用層協議是由rfc文件定義的,因此它們...
應用層協議
dns 網域名稱解析協議 http 超文字傳輸協議 ftp 文字傳輸協議 tlent internet遠端登入服務的標準協議 smtp 簡單郵件傳輸協議 snmp 簡單網路管理協議 ssh 協議 加密的安全的連線 ftp 給予tcp文字傳輸的協議 tftp 基於udp,簡單檔案傳輸協議 1.網域名稱...
應用層協議 HTTP協議
認識url 我們平時說的 其實就是說的url。http請求 無狀態 並不會記錄當前使用者在訪問。https 加密協議 http常見header 分離報頭和有效載荷 正文 空行分離http的方法方法 說明支援的http協議版本 get 私密性不好 獲取資源 1.0 1.1 post 正文傳參 傳輸實體...