Http 和TCP

1 http -->應(yīng)用層協(xié)議
tcp --->傳輸層協(xié)議 --ip --網(wǎng)絡(luò)層協(xié)議
http基于tcp協(xié)議;

2 udp 和tcp 面向鏈接和無連接 tcp 安全 udp不保證數(shù)據(jù)的安全 連續(xù)性

3 tcp 的三次握手 和四次握手

客戶端–發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)包–一次握手–服務(wù)端
服務(wù)端–發(fā)送帶有SYN/ACK標(biāo)志的數(shù)據(jù)包–二次握手–客戶端
客戶端–發(fā)送帶有帶有ACK標(biāo)志的數(shù)據(jù)包–三次握手–服務(wù)端

客戶端-發(fā)送一個(gè)FIN愧捕,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送
服務(wù)器-收到這個(gè)FIN霹肝,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1 颂碧。和SYN一樣荠列,一個(gè)FIN將占用一個(gè)序號(hào)
服務(wù)器-關(guān)閉與客戶端的連接,發(fā)送一個(gè)FIN給客戶端
客戶端-發(fā)回ACK報(bào)文確認(rèn)载城,并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1

image.png

狀態(tài)碼 :
200 Ok;
204 沒有內(nèi)容--請(qǐng)求成功肌似,但響應(yīng)報(bào)文不含實(shí)體的主體部分(聯(lián)想404 資源沒找到)
206 部分內(nèi)容---range配合使用

301 永久重定向
302 臨時(shí)重定向
303 有其他url 需要get獲取
304 內(nèi)容未發(fā)生變化
307 臨時(shí)重定向

404 資源未找到
403 資源請(qǐng)求被拒絕
401 沒有認(rèn)證信息
400 請(qǐng)求報(bào)文錯(cuò)誤

500 服務(wù)器異常
503 服務(wù)器停機(jī)維護(hù)

image.png

格式:
http 請(qǐng)求頭 http 版本 get/post方法 狀態(tài)碼
換行
key-value
空一行
內(nèi)容體

讀寫socket時(shí) 為何會(huì)阻塞? 非阻塞I/O


image

_images/4450781-482dbfe0063c256b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

我們獲取的socket 實(shí)際是一個(gè)引用對(duì)象诉瓦,實(shí)際的對(duì)象實(shí)際是在系統(tǒng)內(nèi)核中的川队,socket有兩個(gè) buffer 分別是 讀buffer和寫buffer
內(nèi)核中有單獨(dú)的線程不斷的將寫buffer中的內(nèi)容 拷貝到網(wǎng)卡中,傳輸出去
也有單獨(dú)的線程將收到的消息拷貝到讀buffer 中等待用戶來讀

寫buffer是有限的睬澡,因此寫的快了 就會(huì)阻塞
讀buffer可能為空固额,因此讀一個(gè)字節(jié)也可能阻塞等待。

三次握手


image

四次揮手


image

HTTPS 就是 http + ssl


image

tls 是ssl的升級(jí)版 --即可
一般來說煞聪,HTTPS 主要用途有三個(gè):一是通過證書等信息確認(rèn)網(wǎng)站的真實(shí)性斗躏;二是建立加密的信息通道;三是數(shù)據(jù)內(nèi)容的完整性昔脯。

認(rèn)證網(wǎng)站的時(shí)候使用非對(duì)稱加密啄糙,之后傳輸數(shù)據(jù)使用對(duì)稱加密


image.png

http 頭信息

HTTP 頭部解釋

  1. Accept:告訴WEB服務(wù)器自己接受什么介質(zhì)類型,/ 表示任何類型栅干,type/* 表示該類型下的所有子類型迈套,type/sub-type。

  2. Accept-Charset: 瀏覽器申明自己接收的字符集
    Accept-Encoding: 瀏覽器申明自己接收的編碼方法碱鳞,通常指定壓縮方法桑李,是否支持壓縮,支持什么壓縮方法 (gzip窿给,deflate)
    Accept-Language::瀏覽器申明自己接收的語言語言跟字符集的區(qū)別:中文是語言贵白,中文有多種字符集,比如big5崩泡,gb2312禁荒,gbk等等。

  3. Accept-Ranges:WEB服務(wù)器表明自己是否接受獲取其某個(gè)實(shí)體的一部分(比如文件的一部分)的請(qǐng)求角撞。bytes:表示接受呛伴,none:表示不接受勃痴。

  4. Age:當(dāng)代理服務(wù)器用自己緩存的實(shí)體去響應(yīng)請(qǐng)求時(shí),用該頭部表明該實(shí)體從產(chǎn)生到現(xiàn)在經(jīng)過多長(zhǎng)時(shí)間了热康。

  5. Authorization:當(dāng)客戶端接收到來自WEB服務(wù)器的 WWW-Authenticate 響應(yīng)時(shí)沛申,該頭部來回應(yīng)自己的身份驗(yàn)證信息給WEB服務(wù)器。

  6. Cache-Control:請(qǐng)求:no-cache(不要緩存的實(shí)體姐军,要求現(xiàn)在從WEB服務(wù)器去忍摹)
    max-age:(只接受 Age 值小于 max-age 值,并且沒有過期的對(duì)象)
    max-stale:(可以接受過去的對(duì)象奕锌,但是過期時(shí)間必須小于
    max-stale 值)
    min-fresh:(接受其新鮮生命期大于其當(dāng)前 Age 跟 min-fresh 值之和的
    緩存對(duì)象)
    響應(yīng):public(可以用 Cached 內(nèi)容回應(yīng)任何用戶)
    private(只能用緩存內(nèi)容回應(yīng)先前請(qǐng)求該內(nèi)容的那個(gè)用戶)
    no-cache(可以緩存著觉,但是只有在跟WEB服務(wù)器驗(yàn)證了其有效后,才能返回給客戶端)
    max-age:(本響應(yīng)包含的對(duì)象的過期時(shí)間)
    ALL: no-store(不允許緩存)

  7. Connection:請(qǐng)求:close(告訴WEB服務(wù)器或者代理服務(wù)器惊暴,在完成本次請(qǐng)求的響應(yīng)
    后饼丘,斷開連接,不要等待本次連接的后續(xù)請(qǐng)求了)辽话。
    keepalive(告訴WEB服務(wù)器或者代理服務(wù)器葬毫,在完成本次請(qǐng)求的
    響應(yīng)后,保持連接屡穗,等待本次連接的后續(xù)請(qǐng)求)。
    響應(yīng):close(連接已經(jīng)關(guān)閉)忽肛。
    keepalive(連接保持著村砂,在等待本次連接的后續(xù)請(qǐng)求)。
    Keep-Alive:如果瀏覽器請(qǐng)求保持連接屹逛,則該頭部表明希望 WEB 服務(wù)器保持
    連接多長(zhǎng)時(shí)間(秒)础废。
    例如:Keep-Alive:300

  8. Content-Encoding:WEB服務(wù)器表明自己使用了什么壓縮方法(gzip,deflate)壓縮響應(yīng)中的對(duì)象罕模。
    例如:Content-Encoding:gzip
    Content-Language:WEB 服務(wù)器告訴瀏覽器自己響應(yīng)的對(duì)象的語言评腺。
    Content-Length: WEB 服務(wù)器告訴瀏覽器自己響應(yīng)的對(duì)象的長(zhǎng)度。
    例如:Content-Length: 26012
    Content-Range: WEB 服務(wù)器表明該響應(yīng)包含的部分對(duì)象為整個(gè)對(duì)象的哪個(gè)部分淑掌。
    例如:Content-Range: bytes 21010-47021/47022
    Content-Type: WEB 服務(wù)器告訴瀏覽器自己響應(yīng)的對(duì)象的類型蒿讥。
    例如:Content-Type:application/xml

  9. ETag:就是一個(gè)對(duì)象(比如URL)的標(biāo)志值,就一個(gè)對(duì)象而言抛腕,比如一個(gè) html 文件芋绸,
    如果被修改了,其 Etag 也會(huì)別修改担敌, 所以摔敛,ETag 的作用跟 Last-Modified 的
    作用差不多,主要供 WEB 服務(wù)器 判斷一個(gè)對(duì)象是否改變了全封。
    比如前一次請(qǐng)求某個(gè) html 文件時(shí)马昙,獲得了其 ETag桃犬,當(dāng)這次又請(qǐng)求這個(gè)文件時(shí),
    瀏覽器就會(huì)把先前獲得的 ETag 值發(fā)送給 WEB 服務(wù)器行楞,然后 WEB 服務(wù)器
    會(huì)把這個(gè) ETag 跟該文件的當(dāng)前 ETag 進(jìn)行對(duì)比攒暇,然后就知道這個(gè)文件
    有沒有改變了。

  10. Expired:WEB服務(wù)器表明該實(shí)體將在什么時(shí)候過期敢伸,對(duì)于過期了的對(duì)象扯饶,只有在
    跟WEB服務(wù)器驗(yàn)證了其有效性后,才能用來響應(yīng)客戶請(qǐng)求池颈。
    是 HTTP/1.0 的頭部尾序。
    例如:Expires:Sat, 23 May 2009 10:02:12 GMT

  11. Host:客戶端指定自己想訪問的WEB服務(wù)器的域名/IP 地址和端口號(hào)。
    例如:Host:rss.sina.com.cn

  12. If-Match:如果對(duì)象的 ETag 沒有改變躯砰,其實(shí)也就意味著對(duì)象沒有改變每币,才執(zhí)行請(qǐng)求的動(dòng)作。
    If-None-Match:如果對(duì)象的 ETag 改變了琢歇,其實(shí)也就意味著對(duì)象也改變了兰怠,才執(zhí)行請(qǐng)求的動(dòng)作。

  13. If-Modified-Since:如果請(qǐng)求的對(duì)象在該頭部指定的時(shí)間之后修改了李茫,才執(zhí)行請(qǐng)求
    的動(dòng)作(比如返回對(duì)象)揭保,否則返回代碼304,告訴瀏覽器該對(duì)象
    沒有修改魄宏。
    例如:If-Modified-Since:Thu, 10 Apr 2008 09:14:42 GMT
    If-Unmodified-Since:如果請(qǐng)求的對(duì)象在該頭部指定的時(shí)間之后沒修改過秸侣,才執(zhí)行
    請(qǐng)求的動(dòng)作(比如返回對(duì)象)。

  14. If-Range:瀏覽器告訴 WEB 服務(wù)器宠互,如果我請(qǐng)求的對(duì)象沒有改變味榛,就把我缺少的部分
    給我,如果對(duì)象改變了予跌,就把整個(gè)對(duì)象給我搏色。 瀏覽器通過發(fā)送請(qǐng)求對(duì)象的
    ETag 或者 自己所知道的最后修改時(shí)間給 WEB 服務(wù)器,讓其判斷對(duì)象是否
    改變了券册。
    總是跟 Range 頭部一起使用频轿。

  15. Last-Modified:WEB 服務(wù)器認(rèn)為對(duì)象的最后修改時(shí)間,比如文件的最后修改時(shí)間烁焙,
    動(dòng)態(tài)頁面的最后產(chǎn)生時(shí)間等等略吨。
    例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT

  16. Location:WEB 服務(wù)器告訴瀏覽器,試圖訪問的對(duì)象已經(jīng)被移到別的位置了考阱,
    到該頭部指定的位置去取翠忠。
    例如:Location:
    http://i0.sinaimg.cn/dy/deco/2008/0528/sinahome_0803_ws_005_text_0.gif

  17. Pramga:主要使用 Pramga: no-cache,相當(dāng)于 Cache-Control: no-cache乞榨。
    例如:Pragma:no-cache

  18. Proxy-Authenticate: 代理服務(wù)器響應(yīng)瀏覽器秽之,要求其提供代理身份驗(yàn)證信息当娱。
    Proxy-Authorization:瀏覽器響應(yīng)代理服務(wù)器的身份驗(yàn)證請(qǐng)求,提供自己的身份信息考榨。

  19. Range:瀏覽器(比如 Flashget 多線程下載時(shí))告訴 WEB 服務(wù)器自己想取對(duì)象的哪部分跨细。
    例如:Range: bytes=1173546-

  20. Referer:瀏覽器向 WEB 服務(wù)器表明自己是從哪個(gè) 網(wǎng)頁/URL 獲得/點(diǎn)擊 當(dāng)前請(qǐng)求中的網(wǎng)址/URL。
    例如:Referer:http://www.sina.com/

  21. Server: WEB 服務(wù)器表明自己是什么軟件及版本等信息河质。
    例如:Server:Apache/2.0.61 (Unix)

  22. User-Agent: 瀏覽器表明自己的身份(是哪種瀏覽器)冀惭。
    例如:User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN;
    rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

  23. Transfer-Encoding: WEB 服務(wù)器表明自己對(duì)本響應(yīng)消息體(不是消息體里面的對(duì)象)
    作了怎樣的編碼,比如是否分塊(chunked)掀鹅。
    例如:Transfer-Encoding: chunked

  24. Vary: WEB服務(wù)器用該頭部的內(nèi)容告訴 Cache 服務(wù)器散休,在什么條件下才能用本響應(yīng)
    所返回的對(duì)象響應(yīng)后續(xù)的請(qǐng)求。
    假如源WEB服務(wù)器在接到第一個(gè)請(qǐng)求消息時(shí)乐尊,其響應(yīng)消息的頭部為:
    Content-Encoding: gzip; Vary: Content-Encoding 那么 Cache 服務(wù)器會(huì)分析后續(xù)
    請(qǐng)求消息的頭部戚丸,檢查其 Accept-Encoding,是否跟先前響應(yīng)的 Vary 頭部值
    一致扔嵌,即是否使用相同的內(nèi)容編碼方法限府,這樣就可以防止 Cache 服務(wù)器用自己
    Cache 里面壓縮后的實(shí)體響應(yīng)給不具備解壓能力的瀏覽器。
    例如:Vary:Accept-Encoding

  25. Via: 列出從客戶端到 OCS 或者相反方向的響應(yīng)經(jīng)過了哪些代理服務(wù)器痢缎,他們用
    什么協(xié)議(和版本)發(fā)送的請(qǐng)求胁勺。
    當(dāng)客戶端請(qǐng)求到達(dá)第一個(gè)代理服務(wù)器時(shí),該服務(wù)器會(huì)在自己發(fā)出的請(qǐng)求里面
    添加 Via 頭部独旷,并填上自己的相關(guān)信息姻几,當(dāng)下一個(gè)代理服務(wù)器 收到第一個(gè)代理
    服務(wù)器的請(qǐng)求時(shí),會(huì)在自己發(fā)出的請(qǐng)求里面復(fù)制前一個(gè)代理服務(wù)器的請(qǐng)求的Via
    頭部势告,并把自己的相關(guān)信息加到后面, 以此類推抚恒,當(dāng) OCS 收到最后一個(gè)代理服
    務(wù)器的請(qǐng)求時(shí)咱台,檢查 Via 頭部,就知道該請(qǐng)求所經(jīng)過的路由俭驮。
    例如:Via:1.0 236-81.D07071953.sina.com.cn:80 (squid/2.6.STABLE13)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末回溺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子混萝,更是在濱河造成了極大的恐慌遗遵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逸嘀,死亡現(xiàn)場(chǎng)離奇詭異车要,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)崭倘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門翼岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來类垫,“玉大人,你說我怎么就攤上這事琅坡∠せ迹” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵榆俺,是天一觀的道長(zhǎng)售躁。 經(jīng)常有香客問我,道長(zhǎng)茴晋,這世上最難降的妖魔是什么陪捷? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮晃跺,結(jié)果婚禮上艺谆,老公的妹妹穿的比我還像新娘尼酿。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布允瞧。 她就那樣靜靜地躺著,像睡著了一般叁幢。 火紅的嫁衣襯著肌膚如雪钞馁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天二打,我揣著相機(jī)與錄音县忌,去河邊找鬼。 笑死继效,一個(gè)胖子當(dāng)著我的面吹牛症杏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瑞信,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厉颤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了凡简?” 一聲冷哼從身側(cè)響起逼友,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秤涩,沒想到半個(gè)月后帜乞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筐眷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年黎烈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怨喘,死狀恐怖津畸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情必怜,我是刑警寧澤肉拓,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站梳庆,受9級(jí)特大地震影響暖途,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膏执,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一驻售、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧更米,春花似錦欺栗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至栏笆,卻和暖如春类腮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛉加。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工蚜枢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人针饥。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓厂抽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親丁眼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筷凤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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