摘要:或許對于剛接觸協(xié)議的同學(xué),或許有些理解不了上面的這句話。這樣,在接受數(shù)據(jù)方,只要判斷數(shù)據(jù)的前倆位標(biāo)識(shí),來解析固定的格式便可,至此,我們的簡陋版的協(xié)議就完成了。下節(jié)內(nèi)容帶你深入淺出協(xié)議二開始進(jìn)入的世界
寫作背景
最近在面試一些前端工程師時(shí),我總會(huì)問一個(gè)問題,"您有了解過HTTP協(xié)議嗎?"有一些呢,答著還不錯(cuò),有一些呢,回答有些差強(qiáng)人意,而有一些呢,竟然直接和我說身為前端不需要了解這些,這些是后端所需要了解的。在我看來,不管是前端與后端,了解HTTP協(xié)議是必要的,畢竟,我們吃的就是這一碗飯,不是嗎?
何為協(xié)議?百度詞條中是這樣解釋的:
協(xié)議,網(wǎng)絡(luò)協(xié)議的簡稱,網(wǎng)絡(luò)協(xié)議是通信計(jì)算機(jī)雙方必須共同遵從的一組約定。如怎么樣建立連接、怎么樣互相識(shí)別等。只有遵守這個(gè)約定,計(jì)算機(jī)之間才能相互通信交流。它的三要素是:語法、語義、時(shí)序。
或許對于剛接觸協(xié)議的同學(xué),或許有些理解不了上面的這句話。那么協(xié)議到底是什么呢?
我們都知道,計(jì)算機(jī)傳輸數(shù)據(jù)都是以二進(jìn)制的形式來傳輸,也就是0,1 那么它是怎么轉(zhuǎn)換為我們所看到的文字,圖像,視頻的呢? 這里有很重要一個(gè)環(huán)節(jié)就是編碼---解碼
例如:‘東’字的UTF-8編碼轉(zhuǎn)換為二進(jìn)制便是 111001001011100010011100,那么我怎樣把這個(gè)字發(fā)送給你呢?你又怎么知道我發(fā)送的是什么呢?所以,協(xié)議就是這樣應(yīng)運(yùn)而生
繼續(xù)上面的問題,比如我現(xiàn)在把‘東’字編碼之后的,發(fā)給你之后,你怎么知道我發(fā)送的是文字呢?就算是知道我發(fā)送的文字,你又以什么編碼格式去解碼我發(fā)送的數(shù)據(jù)呢?所以,我們現(xiàn)在來設(shè)計(jì)一個(gè)協(xié)議,解決上面所說的問題。
首先,解決這個(gè)問題 ‘你怎么知道我發(fā)送的是文字呢?’在計(jì)算機(jī)世界中,我們接觸到的不僅僅是文本,還有圖像,視頻等等等等。。。所以,我們現(xiàn)在需要定義我們協(xié)議的第一個(gè)字段
我們把我們的數(shù)據(jù)類型用我們報(bào)文中的第一位標(biāo)識(shí) ,0表示發(fā)送的數(shù)據(jù)為文本,用1來表示數(shù)據(jù)為圖片
所以,在我發(fā)送我的數(shù)據(jù)時(shí),我會(huì)把‘東’的UTF-8二進(jìn)制編碼前加入一個(gè)0,最后結(jié)果為這樣 0111001001011100010011100,在接受到數(shù)據(jù)的時(shí)候,我會(huì)把報(bào)文的第一位拿來判斷,是文本還是圖像,但是現(xiàn)在又遇到一個(gè)問題,我又該以哪種編碼格式解析這一串?dāng)?shù)據(jù)呢?
解決第二個(gè)問題你又以什么編碼格式去解碼我發(fā)送的數(shù)據(jù)呢?
既然解決了第一個(gè)問題,那么我們的第二個(gè)問題就比較好解決了,當(dāng)數(shù)據(jù)第一位為0的時(shí)候,也就是標(biāo)識(shí)為文本的時(shí)候,我在數(shù)據(jù)第二位再添加一個(gè)標(biāo)識(shí)符,來表示我的文本編碼格式 0表示UTF-8
1則表示GBK 所以,現(xiàn)在我所發(fā)送的數(shù)據(jù)變成了這樣 00111001001011100010011100,而當(dāng)數(shù)據(jù)第一位為1的時(shí)候,也就是標(biāo)識(shí)為圖像的時(shí)候,我的數(shù)據(jù)第二位則用 0表示png,
1表示GIF。
這樣,在接受數(shù)據(jù)方,只要判斷數(shù)據(jù)的前倆位標(biāo)識(shí),來解析固定的格式便可,至此,我們的簡陋版的‘協(xié)議’就完成了。
下節(jié)內(nèi)容 帶你深入淺出HTTP協(xié)議(二)開始進(jìn)入HTTP的世界
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109505.html
摘要:或許對于剛接觸協(xié)議的同學(xué),或許有些理解不了上面的這句話。這樣,在接受數(shù)據(jù)方,只要判斷數(shù)據(jù)的前倆位標(biāo)識(shí),來解析固定的格式便可,至此,我們的簡陋版的協(xié)議就完成了。下節(jié)內(nèi)容帶你深入淺出協(xié)議二開始進(jìn)入的世界 寫作背景 最近在面試一些前端工程師時(shí),我總會(huì)問一個(gè)問題,您有了解過HTTP協(xié)議嗎?有一些呢,答著還不錯(cuò),有一些呢,回答有些差強(qiáng)人意,而有一些呢,竟然直接和我說身為前端不需要了解這些,這些是...
摘要:或許對于剛接觸協(xié)議的同學(xué),或許有些理解不了上面的這句話。這樣,在接受數(shù)據(jù)方,只要判斷數(shù)據(jù)的前倆位標(biāo)識(shí),來解析固定的格式便可,至此,我們的簡陋版的協(xié)議就完成了。下節(jié)內(nèi)容帶你深入淺出協(xié)議二開始進(jìn)入的世界 寫作背景 最近在面試一些前端工程師時(shí),我總會(huì)問一個(gè)問題,您有了解過HTTP協(xié)議嗎?有一些呢,答著還不錯(cuò),有一些呢,回答有些差強(qiáng)人意,而有一些呢,竟然直接和我說身為前端不需要了解這些,這些是...
摘要:談起閉包,它可是兩個(gè)核心技術(shù)之一異步基于打造前端持續(xù)集成開發(fā)環(huán)境本文將以一個(gè)標(biāo)準(zhǔn)的項(xiàng)目為例,完全拋棄傳統(tǒng)的前端項(xiàng)目開發(fā)部署方式,基于容器技術(shù)打造一個(gè)精簡的前端持續(xù)集成的開發(fā)環(huán)境。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥,不論是面試求職,還是日...
摘要:咱媽說別亂點(diǎn)鏈接之淺談攻擊閱讀掘金作者馬達(dá)編輯迷鹿馬達(dá),精通開發(fā)開發(fā),擅長接口設(shè)計(jì)以及平臺(tái)化建設(shè),獨(dú)自主導(dǎo)過多個(gè)產(chǎn)品。一題目購物應(yīng)用分環(huán)境要求安全學(xué)習(xí)資料匯總掘金安全學(xué)習(xí)資料匯總安全學(xué)習(xí)網(wǎng)站收集 咱媽說別亂點(diǎn)鏈接之淺談 CSRF 攻擊 - 閱讀 - 掘金作者 | 馬達(dá)編輯 | 迷鹿 馬達(dá), 精通PHP開發(fā)、Web開發(fā),擅長api接口設(shè)計(jì)以及平臺(tái)化建設(shè),獨(dú)自主導(dǎo)過多個(gè)Web產(chǎn)品。目前就職...
閱讀 814·2021-11-09 09:47
閱讀 1608·2019-08-30 15:44
閱讀 1163·2019-08-26 13:46
閱讀 2134·2019-08-26 13:41
閱讀 1315·2019-08-26 13:32
閱讀 3800·2019-08-26 10:35
閱讀 3549·2019-08-23 17:16
閱讀 478·2019-08-23 17:07