學(xué)習(xí)HTTP相關(guān)知識(shí)筆記

HTTP相關(guān)知識(shí)

1.HTTP的概念

超文本傳輸協(xié)議(HTTP)是用于傳輸諸如HTML的超媒體文檔的應(yīng)用層協(xié)議攀痊。它被設(shè)計(jì)用于Web瀏覽器和Web服務(wù)器之間的通信,但它也可以用于其他目的。HTTP遵循經(jīng)典的客戶端-服務(wù)端模型,客戶端打開一個(gè)連接以發(fā)出請(qǐng)求谷朝,然后等待它收到服務(wù)器端響應(yīng)。HTTP是無狀態(tài)協(xié)議设塔,意味著服務(wù)器不會(huì)在兩個(gè)請(qǐng)求之間保留任何數(shù)據(jù)(狀態(tài))。雖然通吃毒耍基于TCP / IP層闰蛔,但可以在任何可靠的傳輸層上使用

2.URL和URI

  • URI:uniform resource identifier 統(tǒng)一資源標(biāo)識(shí)符,一種資源的標(biāo)識(shí)图柏,它是一種抽象的資源標(biāo)識(shí)序六,即可以是相對(duì)的,也可以是絕對(duì)的蚤吹。
  • URL:uniform resource location 統(tǒng)一資源定位符例诀,一用來標(biāo)識(shí)抽象或物理資源的一個(gè)緊湊字符串随抠。

3.HTTP報(bào)文

HTTP報(bào)文由報(bào)文首部、空行繁涂、報(bào)文主體構(gòu)成:

其中的空行用于區(qū)分報(bào)文首部和報(bào)文主體內(nèi)容拱她,是由一個(gè)回車符和一個(gè)換行符組成的。
無論是請(qǐng)求報(bào)文還是響應(yīng)報(bào)文都需要有報(bào)文首部扔罪,而報(bào)文主體有些請(qǐng)求報(bào)文是沒有的秉沼。而請(qǐng)求報(bào)文的一般格式如下:

而響應(yīng)報(bào)文的格式是這樣的:


其中最常見的屬性如下:

  1. URL, 即http訪問的地址
  2. request method, 報(bào)文的請(qǐng)求方式
  3. status code, 狀態(tài)碼以及狀態(tài)短語
  4. Accept Encoding, 內(nèi)容編碼
  5. Connection, 連接方式
  6. Cookie, 添加的cookie內(nèi)容
  7. Host, 目標(biāo)主機(jī)
  8. User-Agent, 客戶端瀏覽器的相關(guān)信息
  9. Set-Cookie, 指定想要在Cookie中保存的內(nèi)容

請(qǐng)求方式(request method)——常見GETPOST

GET方法可以用來請(qǐng)求訪問已經(jīng)被URL識(shí)別的資源。指定的資源經(jīng)過服務(wù)端解析后返回響應(yīng)的內(nèi)容步势。簡單來說氧猬,就是請(qǐng)求的資源是文本的話背犯,那么就保持原樣返回坏瘩。

POST方法可以用來傳輸實(shí)體的主體。

兩者區(qū)別:

1.使用目標(biāo)不同

POSTGET都用于獲取信息漠魏,但是GET方式僅僅是查詢倔矾,并不對(duì)服務(wù)器上的內(nèi)容產(chǎn)生任何作用結(jié)果;每次GET的內(nèi)容都是相同的柱锹。POST則常用于發(fā)送一定的內(nèi)容進(jìn)行某些修改操作哪自。

2.大小不同

由于不同的瀏覽器對(duì)URL的長度大小有一定的字符限制,因此由于GET方式放在URL的首部中禁熏,具體的大小要依瀏覽器而定壤巷。POST方式則是把內(nèi)容放在報(bào)文內(nèi)容中,因此只要報(bào)文的內(nèi)容沒有限制瞧毙,它的大小就沒有限制胧华。

3.安全性不同

上面也說了GET是直接添加到URL后面的,直接就可以在URL中看到內(nèi)容宙彪。而POST是放在報(bào)文內(nèi)部的矩动,用戶無法直接看到。

總的來說释漆,GET用于獲取某個(gè)內(nèi)容悲没,POST用于提交某種數(shù)據(jù)請(qǐng)求,從使用場景來看男图,一般用戶注冊(cè)的內(nèi)容是私密的示姿,應(yīng)該使用POST方式來保持私密,而當(dāng)需要查詢某個(gè)內(nèi)容時(shí)逊笆,需要快速響應(yīng)栈戳,則使用GET

常見status code狀態(tài)碼

200 通常的成功 OK
GET:請(qǐng)求的對(duì)應(yīng)資源會(huì)作為響應(yīng)返回览露。響應(yīng)將包含描述或操作的結(jié)果荧琼。
POST:返回處理對(duì)應(yīng)請(qǐng)求的結(jié)果

204 成功處理請(qǐng)求,沒有返回任何內(nèi)容 No Content
表示服務(wù)器接收到的請(qǐng)求已經(jīng)處理完畢,但是服務(wù)器不需要返回響應(yīng)命锄。比如堰乔,客戶端是瀏覽器的話,那么瀏覽器顯示的頁面不會(huì)發(fā)生更新脐恩。

206 Partial Content
成功處理了部分GET請(qǐng)求

301 Moved Permanently
請(qǐng)求的網(wǎng)頁已永久移動(dòng)到新位置镐侯,永久性重定向

302 Found
網(wǎng)站臨時(shí)性重定向,暫時(shí)不能訪問(備案驶冒、被查)

303 See Other
該狀態(tài)碼表示由于請(qǐng)求對(duì)應(yīng)的資源存在另一個(gè)URI苟翻,并指定必須使用GET方法定向獲取請(qǐng)求的資源。和302不同的是骗污,302是不會(huì)改變上次的請(qǐng)求方法

304 Not Modified
訪問不了崇猫,并返回和上次一樣的話,表示資源未被修改過,還是和上次訪問時(shí)一樣需忿。

307 Temporary Redirect
臨時(shí)重定向诅炉,和302303類似屋厘,不同的是涕烧,不會(huì)指定客戶端要用什么樣的方法請(qǐng)求,

400 Bad Request
表示客戶端中存在語法錯(cuò)誤汗洒,導(dǎo)致服務(wù)器無法理解該請(qǐng)求议纯。客戶端需要修改請(qǐng)求的內(nèi)容后再次發(fā)送請(qǐng)求溢谤。

401 Unauthorized
即用戶沒有必要的憑據(jù)瞻凤。該狀態(tài)碼表示當(dāng)前請(qǐng)求需要用戶驗(yàn)證。

403 Forbidden
服務(wù)器已經(jīng)理解請(qǐng)求溯香,但是拒絕執(zhí)行它鲫构。

404 Not Found
服務(wù)器找不到請(qǐng)求的網(wǎng)頁。

500 Internal Server Error
服務(wù)器遇到錯(cuò)誤玫坛,無法完成請(qǐng)求结笨。

503 Service Unavailable
由于臨時(shí)的服務(wù)器維護(hù)或者過載,服務(wù)器當(dāng)前無法處理請(qǐng)求湿镀。這個(gè)狀況是暫時(shí)的.

內(nèi)容編碼 Accept Encoding

由于有些報(bào)文的內(nèi)容會(huì)過大炕吸,為了減少傳輸時(shí)間,HTTP會(huì)采取一些壓縮的措施勉痴,例如上面的報(bào)文信息中赫模,Accept-Encoding就定義了內(nèi)容編碼的格式gzip

總的來說內(nèi)容編碼的格式有以下幾種:
gzip:GNU壓縮格式
compress:UNIX系統(tǒng)的標(biāo)準(zhǔn)壓縮格式
deflate:是一種同時(shí)使用了LZ77和哈夫曼編碼的無損失壓縮格式
identity:不進(jìn)行壓縮
持久化connection

正常發(fā)送HTTP時(shí)蒸矛,我們需要建立TCP的連接瀑罗,然后再發(fā)送報(bào)文:

如果每次都要發(fā)送HTTP報(bào)文都需要經(jīng)歷上面的拿過過程胸嘴,無疑將會(huì)耗費(fèi)很多時(shí)間在建立和斷開連接的過程中,因此HTTP使用了connection屬性斩祭,用于指定連接的方式劣像,當(dāng)當(dāng)設(shè)置成keep-alive時(shí),就會(huì)建立一條持久化的連接摧玫。這樣就不需要每次都建立連接在中斷連接:

HTTP1.1connection默認(rèn)開啟keep-alive
報(bào)文首部總結(jié)

4.HTTP方法

HTTP支持幾種不同的請(qǐng)求命令耳奕,這些命令被稱為 HTTP 方法(HTTP method)。每 條 HTTP 請(qǐng)求報(bào)文都包含一個(gè)方法诬像。這個(gè)方法會(huì)告訴服務(wù)器要執(zhí)行什么動(dòng)作(獲取 一個(gè) Web 頁面屋群、運(yùn)行一個(gè)網(wǎng)關(guān)程序、刪除一個(gè)文件等)坏挠。

下表是一些常見的HTTP方法:

PUT傳輸文件

PUT方法用于傳輸文件芍躏,就像FTP協(xié)議的上傳一樣,要求在請(qǐng)求報(bào)文的主題中包含文件內(nèi)容癞揉,然后保存到請(qǐng)求URI指定的位置纸肉。由于PUT方法不帶驗(yàn)證機(jī)制溺欧,任何人都可以任何人都可以上傳文件喊熟,存在安全性問題,因此一般的web網(wǎng)站不適用該方法姐刁。

DELETE刪除文件

DELETE方法用來刪除文件芥牌,是與put相反的方法,DELETE方法按照請(qǐng)求url刪除指定的資源聂使。其本質(zhì)和PUT方法一樣不帶驗(yàn)證機(jī)制壁拉,所以建議少用DELETE方法。

HEAD獲取報(bào)文首部

HEADGET方法一樣柏靶,只是不返回報(bào)文主體部分弃理,通常用于確認(rèn)url的有效性及資源更新的日期時(shí)間等。

5.HTTPS的概念

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer)屎蜓,是以安全為目標(biāo)的HTTP通道痘昌,簡單來說就是是HTTP的安全版本,即在HTTP下加入SSL層炬转,HTTPS的安全基石是SSL辆苔,因此加密的詳細(xì)內(nèi)容就需要SSL

由于HTTP有以下幾個(gè)缺點(diǎn):

傳輸?shù)臅r(shí)候使用明文扼劈,這顯然會(huì)被不法者截取干一些見不得人的勾當(dāng)驻啤。
沒有認(rèn)證機(jī)制,這樣我們就可以偽造一些HTTP訪問荐吵,這顯然會(huì)造成一些困擾骑冗。比如Jmeter就是典型的例子赊瞬,偽造一大堆的HTTP URL然后壓力測試,這也就是DOS攻擊的一種贼涩。
無法驗(yàn)證報(bào)文的完整性森逮,比如一個(gè)HTTP的報(bào)文已經(jīng)被不法者截取并且篡改,而服務(wù)器端卻無法驗(yàn)證磁携。

HTTP與HTTPS的區(qū)別

正是由于以上這些缺點(diǎn)褒侧,HTTPS作出了以下一些改變:

  • HTTP 是明文傳輸,HTTPS 通過 SSL\TLS 進(jìn)行了加密谊迄;
  • HTTP 的端口號(hào)是 80闷供,HTTPS443
  • HTTPS 需要到 CA 申請(qǐng)證書统诺,一般免費(fèi)證書很少歪脏,需要交費(fèi);
  • HTTP 的連接很簡單粮呢,是無狀態(tài)的婿失。而 HTTPS 協(xié)議則是由 SSL+HTTP; 協(xié)議構(gòu)建的可進(jìn)行加密傳輸啄寡、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議豪硅,比 HTTP 協(xié)議安全;

HTTPS的缺點(diǎn):

通信的速度變慢,由于需要加密挺物,一個(gè)握手就多了好幾個(gè)往返懒浮;
對(duì)用戶的機(jī)器負(fù)載的增加。

補(bǔ)充:HTTP協(xié)議與TCP協(xié)議

TCP協(xié)議對(duì)應(yīng)于傳輸層识藤,而HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層砚著,從本質(zhì)上來說,二者沒有可比性痴昧。Http協(xié)議是建立在TCP協(xié)議基礎(chǔ)之上的稽穆,當(dāng)瀏覽器需要從服務(wù)器獲取網(wǎng)頁數(shù)據(jù)的時(shí)候,會(huì)發(fā)出一次Http請(qǐng)求赶撰。Http會(huì)通過TCP建立起一個(gè)到服務(wù)器的連接通道舌镶,當(dāng)本次請(qǐng)求需要的數(shù)據(jù)完畢后,Http會(huì)立即將TCP連接斷開扣囊,這個(gè)過程是很短的乎折。所以Http連接是一種短連接,是一種無狀態(tài)的連接侵歇。所謂的無狀態(tài)骂澄,是指瀏覽器每次向服務(wù)器發(fā)起請(qǐng)求的時(shí)候,不是通過一個(gè)連接惕虑,而是每次都建立一個(gè)新的連接坟冲。如果是一個(gè)連接的話磨镶,服務(wù)器進(jìn)程中就能保持住這個(gè)連接并且在內(nèi)存中記住一些信息狀態(tài)。而每次請(qǐng)求結(jié)束后健提,連接就關(guān)閉琳猫,相關(guān)的內(nèi)容就釋放了,所以記不住任何狀態(tài)私痹,成為無狀態(tài)連接脐嫂。

6.TCP與UDP的區(qū)別

  1. TCP面向連接(如撥打電話要先撥號(hào)建立連接);UDP是無連接的紊遵,即發(fā)送數(shù)據(jù)之前不需要建立連接;
  2. TCP提供可靠的服務(wù)账千。即通過TCP連接傳送的數(shù)據(jù),無差錯(cuò)暗膜,不重復(fù)匀奏,且按序到達(dá);UDP盡最大努力交付学搜,即不保證可靠交付;
  3. TCP面向字節(jié)流娃善,實(shí)際上是把TCP數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流;UDP是面向報(bào)文的瑞佩,UDP沒有擁塞控制聚磺,因此網(wǎng)絡(luò)上出現(xiàn)擁塞不會(huì)使源主機(jī)的發(fā)送效率降低(對(duì)實(shí)時(shí)應(yīng)用很有用,如IP電話钉凌,實(shí)時(shí)視頻會(huì)議等);
  4. 每一條TCP連接只能是點(diǎn)到點(diǎn)咧最;UDP支持一對(duì)一,一對(duì)多御雕,多對(duì)一,多對(duì)多的交互通信;
  5. TCP的首部開銷20字節(jié)滥搭;UDP的首部開銷小酸纲,只有個(gè)字節(jié);
  6. TCP的邏輯通信信道是全雙工的可靠信道;UDP則是不可靠信道;

7.流媒體協(xié)議:

RTP瑟匆、RTCP闽坡、RTSP、MMS愁溜、HLS疾嗅、HTTP progressive streaming
當(dāng)前在internet上傳送音頻和視頻等信息主要有兩種方式:
下載,完整下載一個(gè)視頻冕象,再去播放
流式傳輸代承,如優(yōu)酷、愛奇藝等視頻網(wǎng)址

作用:RTP位于傳輸層(通常是UDP)之上渐扮,應(yīng)用程序之下论悴,實(shí)時(shí)語音掖棉、視頻數(shù)據(jù)經(jīng)過模數(shù)轉(zhuǎn)換和壓縮編碼處理后,先送給RTP封裝成為RTP數(shù)據(jù)單元膀估,RTP數(shù)據(jù)單元被封裝為UDP數(shù)據(jù)報(bào)幔亥,然后再向下遞交給IP封裝為IP數(shù)據(jù)包。這么說RTP是沒有保證傳輸成功的察纯,要保證成功帕棉,就要用到RTCPRTCP消息含有已發(fā)送數(shù)據(jù)的丟包統(tǒng)計(jì)和網(wǎng)絡(luò)擁塞等信息饼记,服務(wù)器可以利用這些信息動(dòng)態(tài)的改變傳輸速率笤昨,甚至改變凈荷的類型。RTCP消息也被封裝為UDP數(shù)據(jù)報(bào)進(jìn)行傳輸握恳。

歡迎關(guān)注

部分參考:
https://juejin.im/post/5afad7f16fb9a07abf72ac30?utm_medium=fe&utm_source=weixinqun

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞒窒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乡洼,更是在濱河造成了極大的恐慌崇裁,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件束昵,死亡現(xiàn)場離奇詭異拔稳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锹雏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門巴比,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人礁遵,你說我怎么就攤上這事轻绞。” “怎么了佣耐?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵政勃,是天一觀的道長。 經(jīng)常有香客問我兼砖,道長奸远,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任讽挟,我火速辦了婚禮懒叛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耽梅。我一直安慰自己薛窥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布褐墅。 她就那樣靜靜地躺著拆檬,像睡著了一般洪己。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竟贯,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天答捕,我揣著相機(jī)與錄音,去河邊找鬼屑那。 笑死拱镐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的持际。 我是一名探鬼主播沃琅,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼蜘欲!你這毒婦竟也來了益眉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤姥份,失蹤者是張志新(化名)和其女友劉穎郭脂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澈歉,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡展鸡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埃难。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莹弊。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涡尘,靈堂內(nèi)的尸體忽然破棺而出忍弛,到底是詐尸還是另有隱情,我是刑警寧澤悟衩,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布剧罩,位于F島的核電站,受9級(jí)特大地震影響座泳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幕与,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一挑势、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啦鸣,春花似錦潮饱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啦扬。三九已至,卻和暖如春凫碌,著一層夾襖步出監(jiān)牢的瞬間扑毡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工盛险, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞄摊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓苦掘,卻偏偏與公主長得像换帜,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹤啡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1惯驼、TCP為什么需要3次握手,4次斷開递瑰? “三次握手”的目的是“為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端...
    杰倫哎呦哎呦閱讀 3,472評(píng)論 0 6
  • 當(dāng) app 和服務(wù)器進(jìn)行通信的時(shí)候泣矛,大多數(shù)情況下疲眷,都是采用 HTTP 協(xié)議。HTTP 最初是為 web 瀏覽器而定...
    Flysss1219閱讀 1,254評(píng)論 0 4
  • 個(gè)人認(rèn)為您朽,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記狂丝,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 今晚接著寫這一篇,我想寫讀後感哗总。 我寫了一點(diǎn)東西的几颜,結(jié)果一下就沒了,這種感覺真不好讯屈,不過我剛剛也離題了蛋哭。所以再來一...
    市海閱讀 119評(píng)論 0 1
  • 【每日清單】683/700次記錄,2018-9-25涮母,晴 【三件事】 1. []第一要?jiǎng)?wù):項(xiàng)目文檔2/7-70% ...
    伽藍(lán)214閱讀 125評(píng)論 0 0