計(jì)算機(jī)網(wǎng)絡(luò)

  1. 網(wǎng)絡(luò)分類(lèi):


    68747470733a2f2f67697465652e636f6d2f437943323031382f43532d4e6f7465732f7261772f6d61737465722f646f63732f706963732f63626635306562382d323262342d343532382d613265372d6431383731343364353766372e706e67.png
  1. HTTP狀態(tài)碼
狀態(tài)碼 類(lèi)別 含義
1XX Informational(信息性狀態(tài)碼) 接收的請(qǐng)求正在處理
2XX Success(成功狀態(tài)碼) 請(qǐng)求正常處理完畢
3XX Redirection(重定向狀態(tài)碼) 需要進(jìn)行附加操作以完成請(qǐng)求
4XX Client Error(客戶端錯(cuò)誤狀態(tài)碼) 服務(wù)器無(wú)法處理請(qǐng)求
5XX Server Error(服務(wù)器錯(cuò)誤狀態(tài)碼) 服務(wù)器處理請(qǐng)求出錯(cuò)
  1. Cookie VS. Session
    Cookie 是服務(wù)器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù),它會(huì)在瀏覽器之后向同一服務(wù)器再次發(fā)起請(qǐng)求時(shí)被攜帶上,用于告知服務(wù)端兩個(gè)請(qǐng)求是否來(lái)自同一瀏覽器。由于之后每次請(qǐng)求都會(huì)需要攜帶 Cookie 數(shù)據(jù),因此會(huì)帶來(lái)額外的性能開(kāi)銷(xiāo)(尤其是在移動(dòng)環(huán)境下)。
    Session 將信息存儲(chǔ)在服務(wù)器端,可以存儲(chǔ)在服務(wù)器上的文件、數(shù)據(jù)庫(kù)或者內(nèi)存中。也可以將 Session 存儲(chǔ)在 Redis 這種內(nèi)存型數(shù)據(jù)庫(kù)中,效率會(huì)更高。


    u=635969339,977853545&fm=173&app=49&f=JPEG.jpeg

    Cookie 只能存儲(chǔ) ASCII 碼字符串,而 Session 則可以存取任何類(lèi)型的數(shù)據(jù),因此在考慮數(shù)據(jù)復(fù)雜性時(shí)首選 Session;
    Cookie 存儲(chǔ)在瀏覽器中,容易被惡意查看。如果非要將一些隱私數(shù)據(jù)存在 Cookie 中,可以將 Cookie 值進(jìn)行加密,然后在服務(wù)器進(jìn)行解密;
    對(duì)于大型網(wǎng)站,如果用戶所有的信息都存儲(chǔ)在 Session 中,那么開(kāi)銷(xiāo)是非常大的,因此不建議將所有的用戶信息都存儲(chǔ)到 Session 中。

  2. 緩存
    1)優(yōu)點(diǎn):緩解服務(wù)器壓力,降低客戶端獲取資源的延遲。
    2)實(shí)現(xiàn)方法:讓代理服務(wù)器進(jìn)行緩存,讓客戶端瀏覽器進(jìn)行緩存。
    3)Cache-Control

  3. 虛擬主機(jī):
    1)使用虛擬主機(jī)技術(shù),可以使得一臺(tái)服務(wù)器擁有多個(gè)域名,并且在邏輯上可以看成多個(gè)服務(wù)器。
    2)代理:代理服務(wù)器接受客戶端的請(qǐng)求,并且轉(zhuǎn)發(fā)給其他服務(wù)器。
    目的:緩存;負(fù)載均衡;網(wǎng)絡(luò)訪問(wèn)控制;訪問(wèn)日志記錄。
    3)網(wǎng)關(guān):
    4)隧道:使用SSL等加密手段,在客戶端和服務(wù)器之間建立一條安全的通信線路。

  4. HTTPS:
    1)HTTP先和SSL(Secure Sockets Layer)通信,再由SSL和TCP通信。(即使用了隧道進(jìn)行通信)
    2)通過(guò)使用SSL,HTTPS具有了加密(防竊聽(tīng)),認(rèn)證(防偽裝),和完整性保護(hù)(防篡改)。

  5. TCP三次握手:
    每一次TCP傳輸都包括三個(gè)階段:建立連接(三次握手)、數(shù)據(jù)傳送和連接釋放(四次握手)。

    0325-01.jpg

    0325-02.jpg

    SYN:代表請(qǐng)求創(chuàng)建連接,所以在三次握手中前兩次要SYN=1,表示這兩次用于建立連接,至于第三次什么用,在疑問(wèn)三里解答。
    FIN:表示請(qǐng)求關(guān)閉連接,在四次分手時(shí),我們發(fā)現(xiàn)FIN發(fā)了兩遍。這是因?yàn)門(mén)CP的連接是雙向的,所以一次FIN只能關(guān)閉一個(gè)方向。
    ACK:代表確認(rèn)接受,從上面可以發(fā)現(xiàn),不管是三次握手還是四次分手,在回應(yīng)的時(shí)候都會(huì)加上ACK=1,表示消息接收到了,并且在建立連接以后的發(fā)送數(shù)據(jù)時(shí),都需加上ACK=1,來(lái)表示數(shù)據(jù)接收成功。
    seq:序列號(hào),什么意思呢?當(dāng)發(fā)送一個(gè)數(shù)據(jù)時(shí),數(shù)據(jù)是被拆成多個(gè)數(shù)據(jù)包來(lái)發(fā)送,序列號(hào)就是對(duì)每個(gè)數(shù)據(jù)包進(jìn)行編號(hào),這樣接受方才能對(duì)數(shù)據(jù)包進(jìn)行再次拼接。
    初始序列號(hào)是隨機(jī)生成的,這樣不一樣的數(shù)據(jù)拆包解包就不會(huì)連接錯(cuò)了。(例如:兩個(gè)數(shù)據(jù)都被拆成1,2,3和一個(gè)數(shù)據(jù)是1,2,3一個(gè)是101,102,103,很明顯后者不會(huì)連接錯(cuò)誤)
    ack:這個(gè)代表下一個(gè)數(shù)據(jù)包的編號(hào),這也就是為什么第二請(qǐng)求時(shí),ack是seq+1。

三次握手:在創(chuàng)建連接時(shí),
1.客戶端首先要SYN=1,表示要?jiǎng)?chuàng)建連接,
2.服務(wù)端接收到后,要告訴客戶端:我接受到了!所以加個(gè)ACK=1,就變成了ACK=1,SYN=1
3.理論上這時(shí)就創(chuàng)建連接成功了,但是要防止一個(gè)意外(見(jiàn)疑問(wèn)三),所以客戶端要再發(fā)一個(gè)消息給服務(wù)端確認(rèn)一下,這時(shí)只需要ACK=1就行了。

四次分手:
1.首先客戶端請(qǐng)求關(guān)閉客戶端到服務(wù)端方向的連接,這時(shí)客戶端就要發(fā)送一個(gè)FIN=1,表示要關(guān)閉一個(gè)方向的連接(見(jiàn)上面四次分手的圖)
2.服務(wù)端接收到后是需要確認(rèn)一下的,所以返回了一個(gè)ACK=1
3.這時(shí)只關(guān)閉了一個(gè)方向,另一個(gè)方向也需要關(guān)閉,所以服務(wù)端也向客戶端發(fā)了一個(gè)FIN=1 ACK=1
4.客戶端接收到后發(fā)送ACK=1,表示接受成功。

為什么需要三次握手,兩次握手不行嗎?
如果發(fā)送兩次就可以建立連接話,那么只要客戶端發(fā)送一個(gè)連接請(qǐng)求,服務(wù)端接收到并發(fā)送了確認(rèn),就會(huì)建立一個(gè)連接。
可能出現(xiàn)的問(wèn)題:如果一個(gè)連接請(qǐng)求在網(wǎng)絡(luò)中跑的慢,超時(shí)了,這時(shí)客戶端會(huì)從發(fā)請(qǐng)求,但是這個(gè)跑的慢的請(qǐng)求最后還是跑到了,然后服務(wù)端就接收了兩個(gè)連接請(qǐng)求,然后全部回應(yīng)就會(huì)創(chuàng)建兩個(gè)連接,浪費(fèi)資源!
如果加了第三次客戶端確認(rèn),客戶端在接受到一個(gè)服務(wù)端連接確認(rèn)請(qǐng)求后,后面再接收到的連接確認(rèn)請(qǐng)求就可以拋棄不管了。

為什么需要四次分手
TCP是雙向的,所以需要在兩個(gè)方向分別關(guān)閉,每個(gè)方向的關(guān)閉又需要請(qǐng)求和確認(rèn),所以一共就4次。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.TCP報(bào)頭格式 UDP報(bào)頭格式 TCP報(bào)頭格式 UDP報(bào)頭格式 具體的各部分解釋看 TCP報(bào)文格式詳解 - ...
    杰倫哎呦哎呦閱讀 2,731評(píng)論 0 5
  • 會(huì)話(Session)跟蹤是Web程序中常用的技術(shù),用來(lái)跟蹤用戶的整個(gè)會(huì)話。常用的會(huì)話跟蹤技術(shù)是Cookie與Se...
    chinariver閱讀 5,783評(píng)論 1 49
  • OSI七層模型: 應(yīng)用層:為應(yīng)用程序提供服務(wù)并規(guī)定應(yīng)用程序通信相關(guān)得細(xì)節(jié)。包括文件傳輸,電子郵件,遠(yuǎn)程登錄等。 表...
    qming_c閱讀 1,046評(píng)論 0 1
  • 1. OSI 7層協(xié)議,會(huì)畫(huà)出來(lái),知道主要幾層的各自作用 應(yīng)用層(數(shù)據(jù)):確定進(jìn)程之間通信的性質(zhì)以滿足用戶需要以及...
    川少葉閱讀 755評(píng)論 0 5
  • 我的早餐:自制香蕉牛奶麥片
    cicich閱讀 638評(píng)論 0 0

友情鏈接更多精彩內(nèi)容