??? 主頁:小夜時雨
??? 專欄:javaEE初階
??? 乾坤未定,你我皆黑馬
一、應用層協(xié)議
應用層是和代碼直接相關的一層,決定了數(shù)據(jù)要傳輸什么,怎么去使用這些數(shù)據(jù)等問題。
應用層這里,雖然存在一些現(xiàn)有的協(xié)議(比如HTTP),但是也有很多的情況,需要我們?nèi)プ远x一些協(xié)議,這里的自定協(xié)議就是約定應層數(shù)據(jù)報的數(shù)據(jù)格式。
- 如何約定格式?
- 確定要傳輸哪些信息。(根據(jù)需求)
比如一個外賣程序,我們需要傳輸以下的信息。
- 請求 : 用戶id ;用戶的位置等
- 響應 : 若干個商家信息 ; 每個商家信息:商家的名字 ; 圖片 ; 評分 ; 類型等
2. 確定數(shù)據(jù)按照什么樣的格式來組織的
一個簡單的方案就是按照分隔符進行組織數(shù)據(jù),如下圖:
在實際的開發(fā)中,還有一些現(xiàn)成的格式,是可以直接使用的
- xml格式
這種格式主要是通過標簽的形式來組織數(shù)據(jù),具體如下圖:
其中 html 可以看作是 xml 的特殊情況
- json 格式
json 是使用 {} 來作為標識的
二、傳輸層協(xié)議(UDP協(xié)議)
學習協(xié)議的一個重要環(huán)節(jié):認識 協(xié)議的報文格式
UDP的報文格式:
- UDP的特點
- 無連接
知道對端的 ip 和 端口號就可以進行通信,不需要建立連接 - 不可靠
沒有任何的安全機制,即是 發(fā)送端發(fā)送數(shù)據(jù)報之后,如果因為某些原因,接收端沒有收到來自發(fā)送端的數(shù)據(jù),UDP協(xié)議層也不會給發(fā)送端返回任何的錯誤提示信息 - 面向數(shù)據(jù)報
應用層交給UDP多長的報文,UDP原樣發(fā)送,既不會拆分,也不會合并 - 全雙工
UDP只有接收緩沖區(qū),沒有發(fā)送緩存區(qū)
UDP沒有真正意義上的 發(fā)送緩沖區(qū)。發(fā)送的數(shù)據(jù)會直接交給內(nèi)核,由內(nèi)核將數(shù)據(jù)傳給網(wǎng)絡層協(xié)議
進行后續(xù)的傳輸動作;
UDP具有接收緩沖區(qū),但是這個接收緩沖區(qū)不能保證收到的UDP報的順序和發(fā)送UDP報的順序一致;如果緩沖區(qū)滿了,再到達的UDP數(shù)據(jù)就會被丟棄;
UDP的 socket 既能讀,也能寫,這個概念叫做全雙工
- 源端口和目的端口
兩者描述了數(shù)據(jù)從哪里來以及到哪里去,ip 地址用來區(qū)分是哪一個主機,一個主機上有多個應用程序,運用端口號來區(qū)分出具體的程序。
- 報文長度
表示了 UDP 數(shù)據(jù)報的長度,2個字節(jié),能表示的最大長度是65535即是64KB,所以傳輸一個UDP 數(shù)據(jù)報的最大長度就是64KB
若是傳輸比較大的數(shù)據(jù),怎么解決?
- 將數(shù)據(jù)拆分成多個部分,使用多個 UDP 數(shù)據(jù)報進行傳輸,類似于多次搬東西,但是比較復雜
- 直接使用 TCP 協(xié)議,TCP對數(shù)據(jù)長度沒有限制
- 校驗和
意義: 用來判斷當前傳輸?shù)臄?shù)據(jù)是否發(fā)生錯誤
校驗和往往就是去內(nèi)容或者是內(nèi)容的一部分,通過一些算法或者數(shù)學公式,進行一些變換得到一個數(shù)值。
如果內(nèi)容發(fā)生了改變,則校驗和也就會發(fā)生了變化,也就可以感知到傳輸出錯
- 擴展問題
經(jīng)典面試題:
- UDP本身是無連接,不可靠,面向數(shù)據(jù)報的協(xié)議,如果要基于傳輸層UDP協(xié)議,來實現(xiàn)一個可靠傳輸,應該如何設計?
- UDP大小是受限的,如果要基于傳輸層UDP協(xié)議,傳輸超過64K的數(shù)據(jù),應該如何設計?
以上兩個問題答案類似,都可以參考TCP的可靠性機制在應用層實現(xiàn)類似的邏輯:
例如:
引入序列號,保證數(shù)據(jù)順序;
引入確認應答,確保對端收到了數(shù)據(jù);
引入超時重傳,如果隔一段時間沒有應答,就重發(fā)數(shù)據(jù);
…文章來源:http://www.zghlxwxcb.cn/news/detail-736309.html
????????? 好啦,到這里有關 應用層協(xié)議與傳輸層協(xié)議 (UDP) 的分享就沒了,如果感覺做的還不錯的話可以點個贊,關注一下,你的支持就是我繼續(xù)下去的動力,蟹蟹大家了,我們下期分享傳輸層協(xié)議 (TCP),拜拜~ ☆*: .?. o(≧▽≦)o .?.:*☆文章來源地址http://www.zghlxwxcb.cn/news/detail-736309.html
到了這里,關于【網(wǎng)絡原理】| 應用層協(xié)議與傳輸層協(xié)議 (UDP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!