Http和Https的了解

http和https屬于計(jì)算機(jī)網(wǎng)絡(luò)的范疇哩罪,但是作為測試人員狞甚,我們也每天和這些請求打交道锁摔,所以掌握它們也是個必備的技能。

將會從以下幾個方面進(jìn)行闡述:

1哼审、網(wǎng)絡(luò)層結(jié)構(gòu)

2谐腰、Http協(xié)議

3、Https協(xié)議/SSL協(xié)議

4涩盾、Tcp三次握手

5十气、http和https對比


1、網(wǎng)絡(luò)層結(jié)構(gòu)


網(wǎng)絡(luò)結(jié)構(gòu)有兩種主流的分層方式:OSI七層模型和TCP/IP四層模型春霍。

OSI是指Open System Interconnect砸西,意為開放式系統(tǒng)互聯(lián)。

TCP/IP是指傳輸控制協(xié)議/網(wǎng)間協(xié)議,是目前世界上應(yīng)用最廣的協(xié)議芹枷。

OSI層對應(yīng)TCP/IP層OSI各層功能網(wǎng)絡(luò)協(xié)議設(shè)備

應(yīng)用層應(yīng)用層應(yīng)用程序(電子郵件衅疙,文件服務(wù))用戶接口HTTP,FTP,

TFTP,NFS

網(wǎng)關(guān)

表示層應(yīng)用層數(shù)據(jù)的表示,壓縮和加密(數(shù)據(jù)格式化鸳慈,代碼轉(zhuǎn)化饱溢,數(shù)據(jù)加密)TELNET,SNMP網(wǎng)關(guān)

會話層應(yīng)用層建立、管理和終止會話SMTP走芋,DNS網(wǎng)關(guān)

傳輸層傳輸層提供端到端可靠報文和錯誤回復(fù)TCP,UDP網(wǎng)關(guān)

網(wǎng)絡(luò)層網(wǎng)際互聯(lián)層提供數(shù)據(jù)包從源到宿的傳遞和網(wǎng)際交互IP,ICMP,ARP,RARP,UUCP路由器

鏈路層網(wǎng)絡(luò)接口層將比特組裝成幀和點(diǎn)到點(diǎn)傳遞FDDI,SLIP,

PPP,PDN

交換機(jī)

物理層網(wǎng)絡(luò)接口層傳輸比特流绩郎,以二進(jìn)制數(shù)據(jù)形式在物理媒體上傳輸數(shù)據(jù)ISO2110,

IEEE802,

IEEE802.2

集線器,

中繼器’

兩種模型的區(qū)別:


1.OSI采用七層模型翁逞,TCP/IP協(xié)議的是四層模型

2.TCP/IP網(wǎng)絡(luò)接口層沒有真正的定義肋杖,知識概念性的描述。OSI把他分為2層熄攘,每一層功能詳盡兽愤、

3.在協(xié)議開發(fā)之前彼念,就有了OSI模型挪圾,所以O(shè)IS模型具有共通性,而TCP/IP是基于協(xié)議建立的模型逐沙,不適用于非TCP/IP的網(wǎng)絡(luò)哲思。

4.實(shí)際意義中,OIS模型是理論上的模型吩案,沒有成熟的產(chǎn)品棚赔,而TCP/IP已經(jīng)成為國際標(biāo)準(zhǔn)。



2徘郭、HTTP協(xié)議


http協(xié)議是基于TCP/IP協(xié)議的應(yīng)用程序協(xié)議靠益,不包括數(shù)據(jù)包的傳輸,主要規(guī)定了客戶端和服務(wù)器的通信格式残揉,默認(rèn)使用80端口胧后。


http協(xié)議的發(fā)展史


1. 1991年發(fā)布http/0.9版本,只有g(shù)et命令抱环,而且服務(wù)器只返回HTML格式字符串壳快,服務(wù)器響應(yīng)完畢就關(guān)閉tcp連接。?

2. 1996年發(fā)布Http/1.0版本镇草,

優(yōu)點(diǎn):可以發(fā)送任何格式內(nèi)容眶痰,包括文字、圖像梯啤、視頻竖伯、二進(jìn)制。也豐富了命令Get,Post七婴,Head宏胯。請求和響應(yīng)的格式加入頭信息。

缺點(diǎn):每個TCP連接只能發(fā)送一個請求本姥,而新建TCP連接的成本很高肩袍,導(dǎo)致Http/1.0新能很差。

3. 1997發(fā)布Http/1.1版本婚惫,完善了Http協(xié)議氛赐,直至20年后的今天仍是最流行的版本。

優(yōu)點(diǎn):

a. 引入持久連接先舷,TCP默認(rèn)不關(guān)閉艰管,可被多個請求復(fù)用,對于一個域名蒋川,多數(shù)瀏覽器允許同時建立6個持久連接牲芋。

b. 引入管道機(jī)制,即在同一個TCP連接中捺球,可以同時發(fā)送多個請求缸浦,不過服務(wù)器還是按順序響應(yīng)。

c. 在頭部加入Content-Length字段氮兵,一個TCP可以同時傳送多個響應(yīng)裂逐,所以就需要該字段來區(qū)分哪些內(nèi)容屬于哪個響應(yīng)。

d. 分塊傳輸編碼泣栈,對于耗時的動態(tài)操作卜高,用流模式取代緩存模式,即產(chǎn)生一塊數(shù)據(jù)南片,就發(fā)送一塊數(shù)據(jù)掺涛。

e. 增加了許多命令,頭信息增加Host來指定服務(wù)器域名疼进,可以訪問一臺服務(wù)器上的不同網(wǎng)站薪缆。

缺點(diǎn):TCP連接中的響應(yīng)有順序,服務(wù)器處理完一個回應(yīng)才能處理下一個回應(yīng)颠悬,如果某個回應(yīng)特別慢矮燎,后面的請求就會排隊(duì)等著(對頭堵塞)。

4. 2015年發(fā)布Http/2版本赔癌,它有幾個特性:二進(jìn)制協(xié)議诞外、多工、數(shù)據(jù)流灾票、頭信息壓縮峡谊、服務(wù)器推送。


Http請求和響應(yīng)格式


Request格式:



Response格式:



下面解釋下請求頭和響應(yīng)頭的部分字段:

Host:?指定服務(wù)器域名,可用來區(qū)分訪問一個服務(wù)器上的不同服務(wù)

Connection:?keep-alive表示要求服務(wù)器不要關(guān)閉TCP連接既们,close表示明確要求關(guān)閉連接濒析,默認(rèn)值是keep-alive

Accept-Encoding:?說明自己可以接收的壓縮方式

USer-Agent:?用戶代理,是服務(wù)器能是被客戶端的操作系統(tǒng)(Android啥纸、iOS号杏、web)及相關(guān)的信息。作用是幫助服務(wù)器區(qū)分

??????客戶端斯棒,并且針對不同客戶端讓用戶看到不同數(shù)據(jù)盾致,做不同的操作

Content-Type:服務(wù)器告訴客戶端數(shù)據(jù)的格式,常見的值有text/plain荣暮,image/jpeg庭惜,image/png,video/mp4穗酥,application/json护赊,application/zip。這些數(shù)據(jù)類型總稱為MIME TYPE砾跃。

Content-Encoding:服務(wù)器數(shù)據(jù)壓縮方式

Transfer-Encoding:chunked表示采用分塊傳輸編碼骏啰,有該字段則無需使用Content-Length字段。

Content-Length:聲明數(shù)據(jù)的長度蜓席,請求和回應(yīng)頭部都可以使用該字段器一。


3课锌、Https協(xié)議/SSL協(xié)議


Https協(xié)議是以安全為目標(biāo)的Http通道厨内,簡單來說就是Http的安全版。主要是在Http下加入SSL層(現(xiàn)在主流的是SLL/TLS)渺贤,SSL是Https協(xié)議的安全基礎(chǔ)雏胃。Https默認(rèn)端口號為443。


竊聽風(fēng)險:Http采用明文傳輸數(shù)據(jù)志鞍,第三方可以獲知通信內(nèi)容

篡改風(fēng)險:第三方可以修改通信內(nèi)容

冒充風(fēng)險:第三方可以冒充他人身份進(jìn)行通信

SSL/TLS協(xié)議就是為了解決這些風(fēng)險而設(shè)計(jì)瞭亮,希望達(dá)到:

所有信息加密傳輸,三方竊聽通信內(nèi)容

具有校驗(yàn)機(jī)制固棚,內(nèi)容一旦被篡改统翩,通信雙發(fā)立刻會發(fā)現(xiàn)

配備身份證書,防止身份被冒充

4此洲、Tcp三次握手

Http和Https協(xié)議請求都會通過Tcp三次握手建立Tcp連接厂汗。當(dāng)時記得面試的時候自己看了好多次TCP相關(guān)的知識,因?yàn)槊嬖嚭芸赡軙柕竭@個問題呜师。下面介紹具體的三次握手:

那么為什么一定要握手三次娶桦,一次兩次難道不行么?重新回顧這個問題,認(rèn)真的分析下為什么必須是三次握手衷畦。


第一次握手栗涂,A向B發(fā)送信息后,B收到信息祈争。B可確認(rèn)A的發(fā)信息能力和B的收信息能力

第二次握手斤程,B向A發(fā)送消息,A收到消息菩混。A可確認(rèn)A的發(fā)信息能力和收信息能力暖释,A也可以確認(rèn)B的收信息能能力和B的發(fā)信息能力

第三次握手,A向B發(fā)送消息墨吓,B收到消息球匕。B可確認(rèn)A的收信息能力和B的發(fā)信息能力


通過三次握手,A和B都能確認(rèn)自己和對方的收發(fā)信息能力帖烘,相當(dāng)于建立了互相的信任亮曹,就可以開始通信了。


下面看一下三次握手具體發(fā)送的內(nèi)容秘症,用一張圖描述如下:


首先照卦,介紹一下幾個概念:

ACK:響應(yīng)標(biāo)識,1表示響應(yīng)乡摹,連接建立成功之后役耕,所有報文段ACK的值都為1

SYN:連接標(biāo)識,1表示建立連接聪廉,連接請求和連接接受報文段SYN=1瞬痘,其他情況都是0

FIN:關(guān)閉連接標(biāo)識,1標(biāo)識關(guān)閉連接板熊,關(guān)閉請求和關(guān)閉接受報文段FIN=1框全,其他情況都是0,跟SYN類似

seq number:序號干签,一個隨機(jī)數(shù)X津辩,請求報文段中會有該字段,響應(yīng)報文段沒有

ack number:應(yīng)答號容劳,值為請求seq+1喘沿,即X+1,除了連接請求和連接接受響應(yīng)報文段沒有該字段竭贩,其他的報文段都有該字段

知道了上面幾個概念后蚜印,看一下三次握手的具體流程:

第一次握手:建立連接請求∪⑹樱客戶端發(fā)送連接請求報文段晒哄,將SYN置為1睁宰,seq為隨機(jī)數(shù)x。然后寝凌,客戶端進(jìn)入SYN_SEND狀態(tài)柒傻,等待服務(wù)器確認(rèn)。

第二次握手:確認(rèn)連接請求较木。服務(wù)器收到客戶端的SYN報文段红符,需要對該請求進(jìn)行確認(rèn),設(shè)置ack=x+1(即客戶端seq+1)伐债。同時自己也要發(fā)送SYN請求信息预侯,即SYN置為1,seq=y峰锁。服務(wù)器將SYN和ACK信息放在一個報文段中萎馅,一并發(fā)送給客戶端,服務(wù)器進(jìn)入SYN_RECV狀態(tài)虹蒋。

第三次握手:客戶端收到SYN+ACK報文段糜芳,將ack設(shè)置為y+1,向服務(wù)器發(fā)送ACK報文段魄衅,這個報文段發(fā)送完畢峭竣,客戶端和服務(wù)券進(jìn)入ESTABLISHED狀態(tài),完成Tcp三次握手晃虫。

從圖中可以看出皆撩,建立連接經(jīng)歷了三次握手,當(dāng)數(shù)據(jù)傳輸完畢哲银,需要斷開連接扛吞,而斷開連接經(jīng)歷了四次揮手:

第一次揮手:主機(jī)1(可以是客戶端或服務(wù)器),設(shè)置seq和ack向主機(jī)2發(fā)送一個FIN報文段盘榨,此時主機(jī)1進(jìn)入FIN_WAIT_1狀態(tài)喻粹,表示沒有數(shù)據(jù)要發(fā)送給主機(jī)2了

第二次揮手:主機(jī)2收到主機(jī)1的FIN報文段,向主機(jī)1回應(yīng)一個ACK報文段草巡,表示同意關(guān)閉請求,主機(jī)1進(jìn)入FIN_WAIT_2狀態(tài)型酥。

第三次揮手:主機(jī)2向主機(jī)1發(fā)送FIN報文段山憨,請求關(guān)閉連接,主機(jī)2進(jìn)入LAST_ACK狀態(tài)弥喉。

第四次揮手:主機(jī)1收到主機(jī)2的FIN報文段郁竟,想主機(jī)2回應(yīng)ACK報文段,然后主機(jī)1進(jìn)入TIME_WAIT狀態(tài)由境;主機(jī)2收到主機(jī)1的ACK報文段后棚亩,關(guān)閉連接蓖议。此時主機(jī)1等待主機(jī)2一段時間后,沒有收到回復(fù)讥蟆,證明主機(jī)2已經(jīng)正常關(guān)閉勒虾,主機(jī)1頁關(guān)閉連接。


下面是Tcp報文段首部格式圖瘸彤,對于理解Tcp協(xié)議很重要:


5修然、Http協(xié)議和Https協(xié)議的對比

Http和Https的區(qū)別如下:

https協(xié)議需要到CA申請證書,大多數(shù)情況下需要一定費(fèi)用

Http是超文本傳輸協(xié)議质况,信息采用明文傳輸愕宋,Https則是具有安全性SSL加密傳輸協(xié)議

Http和Https端口號不一樣,Http是80端口结榄,Https是443端口

Http連接是無狀態(tài)的中贝,而Https采用Http+SSL構(gòu)建可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議臼朗,更安全雄妥。

Http協(xié)議建立連接的過程比Https協(xié)議快。因?yàn)镠ttps除了Tcp三次握手依溯,還要經(jīng)過SSL握手老厌。連接建立之后數(shù)據(jù)傳輸速度,二者無明顯區(qū)別黎炉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枝秤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子慷嗜,更是在濱河造成了極大的恐慌淀弹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庆械,死亡現(xiàn)場離奇詭異薇溃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缭乘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門沐序,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堕绩,你說我怎么就攤上這事策幼。” “怎么了奴紧?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵特姐,是天一觀的道長。 經(jīng)常有香客問我黍氮,道長唐含,這世上最難降的妖魔是什么浅浮? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮捷枯,結(jié)果婚禮上滚秩,老公的妹妹穿的比我還像新娘。我一直安慰自己铜靶,他們只是感情好叔遂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著争剿,像睡著了一般已艰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚕苇,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天哩掺,我揣著相機(jī)與錄音,去河邊找鬼涩笤。 笑死嚼吞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹬碧。 我是一名探鬼主播舱禽,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恩沽!你這毒婦竟也來了誊稚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罗心,失蹤者是張志新(化名)和其女友劉穎里伯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渤闷,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疾瓮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了飒箭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狼电。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖补憾,靈堂內(nèi)的尸體忽然破棺而出漫萄,到底是詐尸還是另有隱情,我是刑警寧澤盈匾,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站毕骡,受9級特大地震影響削饵,放射性物質(zhì)發(fā)生泄漏岩瘦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一窿撬、第九天 我趴在偏房一處隱蔽的房頂上張望启昧。 院中可真熱鬧,春花似錦劈伴、人聲如沸密末。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽严里。三九已至,卻和暖如春追城,著一層夾襖步出監(jiān)牢的瞬間刹碾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工座柱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迷帜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓色洞,卻偏偏與公主長得像戏锹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子火诸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355