網(wǎng)絡(luò)知識總結(jié)

本文對網(wǎng)絡(luò)知識進(jìn)行總結(jié)各谚。

1.網(wǎng)絡(luò)基礎(chǔ)

1.1 GET和POST的請求的區(qū)別

POST弓叛、GET是http的兩種請求方式状植,其主要區(qū)別如下:

  • 應(yīng)用場景: GET請求是一個冪等的請求葛超,一般GET請求不會對資源服務(wù)器產(chǎn)生影響官扣,而POST非冪等請求墩莫,會對資源服務(wù)器產(chǎn)生影響芙委。
  • 是否緩存: 瀏覽器一般會對GET請求進(jìn)行緩存,但是很少對POST請求進(jìn)行緩存狂秦。
  • 發(fā)送報文形式: GET請求灌侣,實(shí)體部分為空。POST請求報文實(shí)體部分一般為向服務(wù)器發(fā)送數(shù)據(jù)裂问。
  • 安全性: GET接口請求參數(shù)放到URL中侧啼,這樣對于POST請求是不安全的牛柒,因?yàn)樵L問的記錄保存在歷史記錄中。
  • 請求長度: 由于瀏覽器對url的限制痊乾,所以會影響get請求發(fā)送時的長度皮壁。這個是瀏覽器自身限制,非RFC限制哪审。
  • 請求參數(shù): POST支持更多的請求參數(shù)蛾魄。

注:冪等的請求: 一個HTTP方法是冪等的,指的是同樣的請求被執(zhí)行一次與連續(xù)執(zhí)行多次的效果是一樣的湿滓,服務(wù)器的狀態(tài)也是一樣的滴须。換句話說就是,冪等方法不應(yīng)該具有副作用(統(tǒng)計用途除外)茉稠。在正確實(shí)現(xiàn)的條件下描馅, GETHEAD 而线, PUTDELETE 等方法都是冪等的铭污,而 POST 方法不是。

1.2 POST和PUT請求的區(qū)別

  • PUT請求是向服務(wù)器發(fā)送數(shù)據(jù)膀篮,從而修改數(shù)據(jù)內(nèi)容嘹狞,但是不會增加數(shù)據(jù)種類,也就是無論P(yáng)UT幾次誓竿,其結(jié)果一樣磅网。(更新數(shù)據(jù))
  • POST請求是向服務(wù)器發(fā)送數(shù)據(jù),從而改變數(shù)據(jù)資源和種類筷屡,他會新建新的資源涧偷。(新增數(shù)據(jù))

1.3 常見HTTP請求和響應(yīng)頭

HTTP請求頭有如下:

  • Referer:發(fā)出請求頁面url
  • Accept-Charset:瀏覽器能夠處理的內(nèi)容
  • Accept-Encoding:瀏覽器能夠顯示的字符集
  • Connection:瀏覽器和服務(wù)器之間的連接
  • Cookie:當(dāng)前頁面設(shè)置的cookie
  • Host:當(dāng)前頁面所在的域名
  • Referer:發(fā)送頁面請求的url
  • User-Agent:瀏覽器用戶代理字符串
    HTTP響應(yīng)頭:
  • Date:表示用戶發(fā)送消息的時間
  • Server:服務(wù)器名稱
  • Cache-Control:控制緩存
  • Content-Type:返回的文檔類型

1.4 HTTP 和 HTTPS 區(qū)別

  • HTTPS需要CA證書,費(fèi)用較高毙死;而HTTP協(xié)議不需要
  • HTTPS是超文本傳輸協(xié)議燎潮,信息是明文傳輸,HTTPS則是具有安全性的SSL加密傳輸協(xié)議
  • 使用連接方式不同扼倘,端口也不同确封,HTTP是80,HTTPS是443
  • HTTP連接是簡單的再菊,無狀態(tài)爪喘;而HTTPS是具有SSL和HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議纠拔,比HTTP更安全秉剑。

1.5 TCP三次握手

image.png

TCP三次握手過程:

  • 第一次握手:客戶端發(fā)送SYN報文,進(jìn)行SYN_SEND狀態(tài)稠诲,等待服務(wù)端確認(rèn)秃症。
  • 第二次握手:服務(wù)端收到SYN報文候址,需要給客戶端發(fā)送ACK確認(rèn)報文吕粹,同時服務(wù)端也向客戶端發(fā)送一個SYN報文种柑,即SYN+ACK報文,這個SYN報文和上面第一次握手報文不一樣匹耕,這是服務(wù)端的報文聚请,服務(wù)端進(jìn)行SYN_RCVD狀態(tài)
  • 第三次握手:客戶端收到SYN+ACK報文稳其,向服務(wù)端發(fā)送確認(rèn)包(ACK)驶赏,客戶端進(jìn)入ESTABLISHED狀態(tài),待服務(wù)端收到客戶端發(fā)送的ACK后既鞠,服務(wù)端也進(jìn)入ESTABLISHED狀態(tài)煤傍,并完成三次握手。

延伸問題:

二次握手可以嗎嘱蛋?

TCP建立之前蚯姆,需要確認(rèn)客戶端和服務(wù)端雙方包容和發(fā)包能力。

  • 第一次握手: 客戶端發(fā)送網(wǎng)絡(luò)包洒敏,服務(wù)端接收到龄恋,這樣服務(wù)端能得到結(jié)論:客戶端的發(fā)送能力、服務(wù)端的接收能力政策凶伙。
  • 第二次握手: 服務(wù)端發(fā)包郭毕,客戶端收到,這樣客戶端能收到結(jié)論:服務(wù)端發(fā)送能力函荣、接收能力正常显押,客戶端接收、發(fā)送能力正常傻挂,但是客戶端不明確服務(wù)端是否知道客戶端接收能力正常乘碑。
  • 第三次握手: 客戶端發(fā)包,服務(wù)端接收到踊谋,這樣服務(wù)端就能確定蝉仇,客戶端的接收能力正常。

進(jìn)一步學(xué)習(xí)殖蚕,可閱讀鏈接:淘寶二面轿衔,面試官居然把TCP三次握手問的這么詳細(xì)

1.6 TCP四次揮手

image.png
  • 第一次揮手:客戶端發(fā)起FIN包(FIN = 1),客戶端進(jìn)入FIN_WAIT_1狀態(tài)睦疫。TCP規(guī)定害驹,即使FIN包不攜帶數(shù)據(jù),也要消耗一個序號蛤育。
  • 第二次揮手:服務(wù)端收到FIN包宛官,發(fā)出ACK(ACK = u + 1)葫松,并攜帶自己的序號seq = v,服務(wù)端進(jìn)入CLOSE_WAIT_1狀態(tài)底洗,這時客戶端已經(jīng)沒有數(shù)據(jù)需要發(fā)送腋么,這時如果服務(wù)端如果有數(shù)據(jù)要發(fā)送,客戶端依舊需要接受亥揖,客戶端接受到ACK和seq后珊擂,進(jìn)行FIN_WAIT_2狀態(tài)。
  • 第三次揮手:服務(wù)端數(shù)據(jù)發(fā)送完畢费变,向客戶端發(fā)送FIN包(seq = w摧扇,ACK = u + 1),半連接狀態(tài)服務(wù)端可能還會發(fā)送其他數(shù)據(jù)給客戶端挚歧,加入發(fā)送數(shù)據(jù)是seq = w扛稽,服務(wù)端此時進(jìn)入LAST_ACK狀態(tài)。
  • 第四次揮手:刻度端收到FIN包后滑负,發(fā)出確認(rèn)包(ACK = 1在张,seq = u + 1),此時客戶端進(jìn)入TIME_WAIT狀態(tài)橙困,此時TCP連接還沒釋放瞧掺。經(jīng)過2 * MSL后,才進(jìn)入CLOSED狀態(tài)凡傅。服務(wù)端在接受到確認(rèn)包后辟狈,就進(jìn)入了CLOSED狀態(tài),可以看出服務(wù)端比客戶端更快斷開連接夏跷。

延伸問題:

為什么建立連接握手三次哼转,關(guān)閉連接時需要是四次呢?

其實(shí)在TCP握手的時候槽华,接受端發(fā)送SYN+ACK的包是將ACK和SYN合并在一起壹蔓,合到一個包中,所以減少了一個包的發(fā)送猫态,減少了一次請求佣蓉。

對于四次揮手,由于TCP是全雙工通信亲雪,在主動關(guān)閉方發(fā)送確認(rèn)包后勇凭,接受可能還需要接受數(shù)據(jù),不能馬上關(guān)閉通信通道义辕,所以不能將服務(wù)端的FIN包和ACK進(jìn)行合并虾标,只能先確定ACK,等待服務(wù)端沒有再發(fā)送數(shù)據(jù)時灌砖,發(fā)送FIN包璧函,所以四次揮手是四次數(shù)據(jù)包的交互傀蚌。

1.7 TCP和UDP

TCP和UDP都是屬于傳輸層協(xié)議,都屬于TCP/IP協(xié)議族:

UDP

UDP全稱:用戶數(shù)據(jù)報協(xié)議蘸吓。在網(wǎng)絡(luò)中善炫,它處理數(shù)據(jù)包,是一種無連接協(xié)議美澳。在OSI中销部,其屬于IP協(xié)議上一層。UDP不提供數(shù)據(jù)包分組制跟、組裝、和對數(shù)據(jù)排序能力酱虎,當(dāng)數(shù)據(jù)包發(fā)送后雨膨,無法得知服務(wù)端是否接受成功。

特點(diǎn):

  • 面向無連接:UDP不需要像TCP那樣進(jìn)行三次握手读串,想發(fā)送就可以發(fā)送聊记。
  • 單播、多播恢暖、廣播特點(diǎn):UDP支持一對多排监、多對多、多對一的方式杰捂。
  • 面向報文:發(fā)送方的UDP對應(yīng)用程序交下來的報文舆床,在添加首部后就向下交付IP層。UDP對應(yīng)用層交下來的報文嫁佳,既不合并挨队,也不拆分,而是保留這些報文的邊界蒿往。因此盛垦,應(yīng)用程序必須選擇合適大小的報文。
  • 不可靠性:UDP不需要建立瓤漏,想發(fā)就發(fā)腾夯,這是不可靠的。
  • 頭部開銷小蔬充,傳輸高效蝶俱。

TCP

TCP特點(diǎn):

  • 面向連接:需要三次握手才能建立可靠連接。
  • 只支持單播傳輸:每條TCP連接只支持點(diǎn)對點(diǎn)連接和傳輸娃惯,不支持多播跷乐、廣播。
  • 可靠傳輸:由于建立可靠的連接趾浅,以及有對應(yīng)判斷丟碼愕提、編碼馒稍,還有重傳的機(jī)制。
  • 提供擁塞控制:當(dāng)連接擁塞時浅侨,能減少網(wǎng)絡(luò)的注入數(shù)據(jù)
  • 全雙工通信:TCP允許通信雙方的應(yīng)用程序在任何時候都能發(fā)送數(shù)據(jù)纽谒,因?yàn)門CP連接的兩端都設(shè)有緩存,用來臨時存放雙向通信的數(shù)據(jù)如输。當(dāng)然鼓黔,TCP可以立即發(fā)送一個數(shù)據(jù)段,也可以緩存一段時間以便一次發(fā)送更多的數(shù)據(jù)段(最大的數(shù)據(jù)段大小取決于MSS)

進(jìn)一步學(xué)習(xí)不见,可閱讀鏈接:一文搞懂TCP與UDP的區(qū)別

1.8 HTTP2.0和HTTP1.1區(qū)別

  • 二進(jìn)制協(xié)議: HTTP2.0是一個二進(jìn)制協(xié)議澳化。在HTTP1.1中,報文頭部是文本(ASCII編碼)稳吮,數(shù)據(jù)報可以為文本缎谷,也可以是二進(jìn)展。在HTTP2.0中灶似,報文頭部徹底是二進(jìn)制列林,消息體和數(shù)據(jù)體都是二進(jìn)制,并統(tǒng)稱為‘幀’酪惭,這個是HTTP2.0多路復(fù)用的基礎(chǔ)希痴。
  • 多路復(fù)用: HTTP2.0實(shí)現(xiàn)了多路復(fù)用,雖然HTTP2.0依舊使用TCP協(xié)議春感,但是一個連接中砌创,客戶端和服務(wù)端可以同時發(fā)送、接收多個請求甥厦,避免‘隊頭阻塞’的問題
  • 數(shù)據(jù)流: HTTP2.0實(shí)現(xiàn)數(shù)據(jù)流的概念纺铭,因?yàn)镠TTP2.0的數(shù)據(jù)包是不按順序,同一連接里面的數(shù)據(jù)包刀疙,可能屬于不同請求舶赔,需要對數(shù)據(jù)包做標(biāo)記,指出屬于那個請求谦秧,HTTP2.0將每個請求或響應(yīng)的數(shù)據(jù)包竟纳,成為數(shù)據(jù)流。
  • 頭信息壓縮: HTTP2.0實(shí)現(xiàn)頭信息的壓縮
  • 服務(wù)端推送: HTTP2.0允許服務(wù)器沒經(jīng)過請求疚鲤,主動向客戶端推送資源(靜態(tài)資源)锥累,這個稱為服務(wù)端推送。

1.9 OSI七層模型

OSI七層模型 作用
應(yīng)用層 為應(yīng)用程序提供網(wǎng)絡(luò)服務(wù)
表示層 數(shù)據(jù)格式化集歇,加密桶略,解密
會話層 建立、維護(hù)、管理通話
傳輸層 建立际歼、維護(hù)惶翻、管理端到端連接
網(wǎng)絡(luò)層 IP尋址和路由選擇
數(shù)據(jù)鏈路層 控制網(wǎng)絡(luò)層和物理層連接
物理層 比特流傳輸
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鹅心,隨后出現(xiàn)的幾起案子吕粗,更是在濱河造成了極大的恐慌,老刑警劉巖旭愧,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颅筋,死亡現(xiàn)場離奇詭異,居然都是意外死亡输枯,警方通過查閱死者的電腦和手機(jī)议泵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來用押,“玉大人肢簿,你說我怎么就攤上這事◎卟Γ” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵桩引,是天一觀的道長缎讼。 經(jīng)常有香客問我,道長坑匠,這世上最難降的妖魔是什么血崭? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮厘灼,結(jié)果婚禮上夹纫,老公的妹妹穿的比我還像新娘。我一直安慰自己设凹,他們只是感情好舰讹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闪朱,像睡著了一般月匣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奋姿,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天锄开,我揣著相機(jī)與錄音,去河邊找鬼称诗。 笑死萍悴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播癣诱,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼计维,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狡刘?” 一聲冷哼從身側(cè)響起享潜,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗅蔬,沒想到半個月后剑按,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澜术,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年艺蝴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸟废。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡猜敢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盒延,到底是詐尸還是另有隱情缩擂,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布添寺,位于F島的核電站胯盯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏计露。R本人自食惡果不足惜博脑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望票罐。 院中可真熱鬧叉趣,春花似錦、人聲如沸该押。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沈善。三九已至乡数,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闻牡,已是汗流浹背净赴。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罩润,地道東北人玖翅。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親金度。 傳聞我的和親對象是個殘疾皇子应媚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

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