網路協議 應用層

2021-10-20 06:38:27 字數 2884 閱讀 2426

基於tcp/ip的應用層協議

1.1.1、請求行

1.1.2、首部

就是請求頭,例如accept-charset、content-type、cache-control、if-modified-since

1.1.3、正文實體

正式的資料報文

1.1.4、http請求的傳送

客戶端傳送請求,應用層傳二進位製流buffer給傳輸層【http頭+http正文】

傳輸層設定埠號,然後將buffer給網路層【tcp頭+http頭+http正文】

網路層設定ip位址,然後將buffer給資料鏈路層【ip頭+tcp頭+http頭+http正文】

資料鏈路層設定mac位址,然後將buffer給物理層【mac頭+ip頭+tcp頭+http頭+http正文】

物理層通過介質傳輸報文

1.2.1、狀態行

1.2.2、首部

就是響應頭,例如content-type、content-disposition、retry-after等

1.2.3、正文實體

正式的資料報文

比http 1.1效能更好的協議

首部壓縮

在傳送方和接收方兩端以key-value的格式建立索引表,傳輸過程中只傳索引

二進位制幀

對報文採用二進位制編碼

通過各種加密方式的結合,保證報文傳輸的安全

傳送方和接收方持有同乙個金鑰,傳送方請求前使用金鑰對報文加密,接收方接收後先使用金鑰對報文解密

雖然加密速度快但是有兩個問題:

接收方使用一定的演算法生成一對金鑰,包含乙個公鑰和乙個私鑰,並將公鑰告知傳送方

傳送方使用接收方的公鑰對請求進行加密,接收方收到請求後使用自己的私鑰解密

在接收方進行響應時,也需要傳送方提供公鑰,先加密再響應

數字證書是權威機構ca,通過簽名演算法對證書的頒發機構、擁有者、期限、公鑰、簽名演算法型別等資訊做hash計算再加密

【client hello】客戶端client告訴服務端server,自己的tls版本資訊、加密演算法候選列表、壓縮演算法候選列表、client生成的隨機數等資訊

【server hello】server告訴client自己選擇的各種版本和演算法、還有server生成的隨機數

【server certificate】server讓client審核自己的證書

【server hello done】server告訴client自己請求完畢

【client key exchange】client審核server的證書,再產生另乙個隨機數pre-master,使用從server的證書中提取的公鑰對pre-master加密,傳給server;server解密獲取pre-master,然後雙方通過server隨機數、client隨機數和pre-master隨機數生成對稱金鑰

【change cipher spec】client通知server以後都用對稱金鑰加密傳輸

【encrypted handshake message】client將之前通訊的引數和一些其他資訊的hash,用對稱金鑰加密傳輸,驗證對稱金鑰的正確性

server也執行6、7步,執行完成後雙方成功建立加密通訊

rtmp是基於tcp的應用層協議

向前**編碼幀(p幀):記錄與上個i幀或p幀的差別,通過之前畫面的快取和當前幀的變化資訊,生成最終畫面

壓縮率:b>p>i

解碼速度:i>p>b

nalu的具體格式如下:

引數集

影象引數集(pps):nal type為0x08,包括影象的所有分片的所有資訊,包括影象型別、序列號等

解碼需要sps和pps,所以在傳i幀的nalu前會傳一遍sps和pps的nalu,保證解碼時的容錯性

將流**傳送給伺服器的過程

3.4.1、rtmp握手

【c0】客戶端client傳送自己的版本號

【c1】client傳送自己的時間戳

【s0】服務端server接收到client的版本號,對比本地版本號,匹配就返回自己的版本號,不匹配就斷開連線結束握手

【s1】server傳送自己的時間戳

【c2】server收到client的時間戳,響應ack

【s2】client收到server的時間戳,響應ack,握手完成

3.4.2、rtmp請求格式

3.4.3、推流過程

客戶端client建立rtmp連線,服務端server確認返回視窗大小、頻寬等控制資訊

client將接收到的視窗大小傳送以進行確認,server返回確認報文,建立連線

client向server建立乙個流,server返回確認報文

client發起推送流,server返回確認報文,準備開始

客戶端client建立rtmp連線,服務端server確認返回視窗大小、頻寬等控制資訊

client將接收到的視窗大小傳送以進行確認,server返回確認報文,建立連線

client向server建立乙個流,server返回確認報文

client發起拉流,server返回確認報文,準備開始

基於ip

主機進入區域網時主動發起請求,獲取ip,無需手動配置

申請流程

發現階段(dhcp discover):主機使用0.0.0.0向255.255.255.255傳送廣播包,廣播包封裝udp協議,udp封裝bootp協議,來尋找dhcp伺服器(dhcp伺服器可能有多個)

提供階段(dhcp offer):多個dhcp伺服器將預分配的ip放在單播包發給主機,告訴主機將被分配的ip

選擇階段(dhcp request):主機選擇請求最先到達的dhcp伺服器所提供的ip,並將ip放到廣播包中發給所有dhcp伺服器,告訴他們自己選擇的ip,並撤銷其他dhcp伺服器給主機預分配的ip,以便提供給下乙個主機

網路協議 應用層協議 概述

應用層協議概述 前面介紹的 ip 協議 tcp 協議和 udp 協議分別屬於網路層和傳輸層協議,都是屬於網路通訊中的基礎部分,接下來,要開始介紹網路通訊中應用層協議,應用層協議非常豐富,也是我們日常打交道最多的部分 不論是我們前面介紹過的 dns 網域名稱解析協議,還是我們日常 web 依賴的 ht...

應用層協議 mysql 一些網路應用層協議

1 用於檔案共享的協議 nfs network file system 與cifs common internet file system 前者出現的早,用在linux系統上 後者主要用於windows系統,使用它很簡單,在要共享的資料夾上右鍵 屬性,勾選共享就可以了,目前cifs有3個版本 smb...

應用層協議

應用層協議定義了執行在不同端系統上的應用程式程序如何相互傳遞訊息。特別是定義了 交換的訊息型別,如請求訊息和響應訊息。各種訊息型別的語法,如訊息中的各個字段及其詳細描述。欄位的語義,即包含在字段中的資訊的含義。程序何時 如何傳送訊息及對訊息進行響應的規則。有些應用層協議是由rfc文件定義的,因此它們...