計算機網路 應用層

2021-10-08 01:48:44 字數 3315 閱讀 1859

應用層:

直面程式設計師的一層,因為應用程式是程式設計師自己寫的,因此應用層的協議都是程式設計師自己定的

自定義協議

程式設計師自己根據自己應用的特點,定義協議(資料格式/資料描述資訊)

eg:以乙個簡單的網路版計算機為例

功能:客戶端傳送兩個數字以及乙個運算子給服務端,服務端獲取到資料然後進行運算

int num1; int num2; char op;

num1, num2, op ----將所有的資料轉成字串,使用特殊字元間隔;這時候就將資料按照指定協議組織起來了.

採用結構體構造二進位制資料串

struct cal_t

;

序列化:將各個資料物件按照指定的協議組織成為持久化儲存/資料傳輸的二進位制資料串

反序列化:將二進位制資料傳按照指定協議解析等到各個資料物件

常見的序列化方式:json序列化/protobuf/二進位制序列化

知名協議

我們看得到不一定是ip位址,也可能是網域名稱-伺服器別名----通過網域名稱解析伺服器就能得到伺服器的ip位址

伺服器端口:

web伺服器預設http伺服器端口是80埠,預設不顯示

/請求的資源路徑:

資源在伺服器上的路徑,這裡的/是http根路徑,但是是乙個伺服器上的相對根目錄,只是乙個子目錄

查詢字串:

客戶端提交給服務端的一些資料,有key=val&key=val形式的鍵值對組成

查詢字串中不能出現特殊字元,因為url中特殊字元都有特殊含義,一旦提交的資料中有特殊字元,就會造成歧義,因此若提交的資料中有特殊字元,則需要進行資料轉義

urlencode: url編碼,將特殊字元每乙個位元組,轉換為16進製制的數字字元,並且使用%字首做為轉移表示

urldecode:url解碼,在url中遇到%,則認為氣候兩個字元需要轉移,將第乙個字元轉換成數字乘以16/左移4位,加上第二個字元轉換的數字

片段識別符號

html中的乙個標籤id,直接跳轉到頁面的某個位置

http協議實現:

抓包工具:wireshark / fiddler

wireshark:網絡卡抓包工具,抓取流經網絡卡的所有資料流量----什麼包都能抓

fiddler:瀏覽器的**工具,通過**實現資料抓包-----專業的http抓包工具

http協議格式:

請求:

首行: get

http1.1 以空格進行間隔包含三個要素,並且最終以\r\n作為結尾

請求方法:get/pos/head/delete/connect/option

get --請求實體資源,也可以通過url中查詢字串向伺服器提交資料(資料不安全),但url長度有限制(各個伺服器應用商的限制)

post --主要用於向伺服器提交資料,提交的資料在正文中(資料安全)

head --類似於get,相較於get,head只要響應頭部,而不響應正文

url:

協議版本: http1.1     0.9/1.0/1.1/2.0

0.9: 這時候的http僅用於傳輸html資料,並且只有get請求,並且協議格式不完整

1.0: 正式規定了http協議格式,並且增加了多種請求方式,並且支援了不同檔案格式的資料流

1.1: 在1.0的基礎上增加了更多請求方式和頭部描述資訊,並且支援長連線

2.0: 採用二進位製流傳輸,並且進行多路復用,並且允許服務端主動推送資料

短連線: http基於在傳輸tcp實現通訊,短連線指的是建立連線,傳送乙個請求,得到響應後,則關閉連線

長連線: 一次連線可以傳送多條請求

頭部:描述本次請求的關鍵字段資訊,由key-val形式的鍵值對組成,並且每個鍵值對以\r\n作為結尾

connection- -控制長短連線, cache-control - -快取控制,  user-agent - -客戶端屬性, accpet - -描述自己所能接收的資料屬性, content-length - - 描述正文長度, content-type - -描述符正文資料型別, cookie

cookie: 早期http是短連線通訊,是乙個無狀態協議,不會儲存客戶端狀態,每次訪問都需要進行登入,因此引入cookie儲存客戶端狀態。 cookie中可以帶有一些資訊,持續在通訊中描述客戶端的通訊狀態,但是不夠安全

空行:間隔頭部於正文,\r\n 接收http資料的時候,當連續接收兩個\r\n\r\n(\r\n\r\n)的時候,則認為頭部資訊到此結束

先獲取完整頭部,通過頭部中的content-length獲取正文長度,然後獲取指定

正文:提交服務端的資料

響應

首行: http/1.1 303 see other,   包含3個要素,以空格進行間隔,以\r\n作為結尾

協議版本: 0.9/1.0/.1.1/2.0

響應狀態碼: 表示本次的請求服務端做出的響應

1xx:描述資訊

2xx:表示本次請求正確處理完畢

3xx:重定向 - -你請求的資源在另乙個位置,要求客戶端重新請求新的位置; 301 - 永久 302 - 臨時

4xx:表示客戶端請求錯誤; 400- -請求錯誤/ 404 - -表示請求的資源不存在

5xx:表示服務端錯誤; 500- -伺服器內部錯誤/ 502- -**請求失敗/無效響應/504- -**請求超時

狀態碼描述:對狀態碼的描述資訊,可以是官方文件對應描述,也可以自定義

頭部:關於本次響應的一些關鍵字段描述資訊,以key-val鍵值對組成,以\r\n作為結尾

transfer-encoding:實體正文的傳輸方式

expires:快取過期時間

location:重定向的新位置

set-cookie:服務端通過set-cookie向客戶端傳遞資訊,會被儲存在客戶端瀏覽器的cookie檔案中

cookie:客戶端通過cookie檔案讀取資料通過cookie向服務端傳遞資訊

session:會話,服務端會為每個登入的客戶端建立會話,在服務端描述一些資訊(客戶端身份資訊,狀態資訊),儲存在服務端,可以通過cookie將session id返回給客戶端,客戶端每次通訊都會通過cookie帶又自己的session id;

計算機網路 應用層

運輸層為應用程序提供了端到端的通訊服務。但不同的網路應用程序之間,還需要有不同的通訊規則。因此在運輸層協議之上,還需要有應用層協議。應用程序之間的通訊必須遵守嚴格的規則。應用層的協議應當定義 1 網域名稱系統dns 網域名稱到ip位址的解析是由分布在網際網路上的許多網域名稱伺服器程式共同完成的。網域...

計算機網路 應用層

計算機網路分層 應用層是網路應用程式和及應用層協議存留的地方。應用層協議分布在多個端系統上,乙個端系統中的應用程式使用協議與另乙個端系統中的應用程式交換資訊的分組。該層資訊被稱為報文。常用的應用層協議有 http,smtp,ftp,dns 1.基本概念 執行在不同端系統的程式的通訊是通過程序完成的。...

計算機網路 應用層

我們現在已經了解了運輸層為應用程式提供了端到端的通訊服務,但是不同的應用程序之間,還需要不同的通訊協議,因此在運輸層協議上方還有應用層協議,這是因為每個應用層協議都是為了解決一類問題,而問題的解決又要通過不同主機的多個應用程序之間通訊和協同工作來完成,應用程序之間的通訊需要遵守嚴格的規則,應用層的具...