自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

被搞得暈頭轉(zhuǎn)向的HTTP和TCP

網(wǎng)絡(luò) 通信技術(shù)
CP協(xié)議對(duì)應(yīng)傳輸層,HTTP協(xié)議對(duì)應(yīng)應(yīng)用層,二者在本質(zhì)上其實(shí)沒(méi)有可比性,但實(shí)際應(yīng)用中出現(xiàn)問(wèn)題很容易混淆,并且不容易定位問(wèn)題,在此按自身理解分享給大家。

?哈嘍,大家好,我是指北君。話不多說(shuō),先來(lái)個(gè)小能量。

有些路看起來(lái)很近走去卻很遠(yuǎn),缺少耐心永遠(yuǎn)走不到頭?!驈奈?/p>

接下來(lái)就開(kāi)始指北君的分享~

前言

對(duì)于從事互聯(lián)網(wǎng)開(kāi)發(fā)的同學(xué)來(lái)說(shuō),永遠(yuǎn)都無(wú)法繞過(guò)網(wǎng)絡(luò)連接,各種原理、各種協(xié)議...輕輕松松就被搞得暈頭轉(zhuǎn)向,不知所措,從而影響解決問(wèn)題的效率,同時(shí)需要投入大量時(shí)間去查閱資料,搞不好還會(huì)搞丟自己的績(jī)效...想想后果就不禁一顫,那不如提前儲(chǔ)備,以備不時(shí)之需。

本篇內(nèi)容主要圍繞常見(jiàn)的HTTP內(nèi)容,同時(shí)對(duì)比TCP進(jìn)行梳理,接下來(lái)就和小編一起去探索網(wǎng)絡(luò)連接那些事!

網(wǎng)絡(luò)小知識(shí)?

分析網(wǎng)絡(luò)連接前,需要給大家簡(jiǎn)介下網(wǎng)絡(luò)知識(shí),了解的同學(xué)可以直接跳過(guò)

  • 網(wǎng)絡(luò)模型通常分為四層或七層,小編以七層為例,網(wǎng)絡(luò)自下而上分層為:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層。每一層都依賴(lài)于其底層的協(xié)議,比如沒(méi)有網(wǎng)絡(luò)層,就不會(huì)有傳輸層。
  • HTTP協(xié)議對(duì)應(yīng)網(wǎng)絡(luò)的應(yīng)用層,TCP協(xié)議對(duì)應(yīng)網(wǎng)絡(luò)的傳輸層。(多提一句,IP協(xié)議對(duì)應(yīng)網(wǎng)絡(luò)層,socket是基于TCP/IP協(xié)議封裝的應(yīng)用接口,便于開(kāi)發(fā)人員使用)
  • TCP協(xié)議主要作用是如何穩(wěn)定快速的傳輸數(shù)據(jù),而HTTP協(xié)議負(fù)責(zé)定義數(shù)據(jù),以便網(wǎng)絡(luò)兩端的計(jì)算機(jī)理解數(shù)據(jù)。

HTTP協(xié)議

  • HTTP協(xié)議全名超文本傳送協(xié)議(Hypertext Transfer Protocol),是web聯(lián)網(wǎng)的基礎(chǔ),也是移動(dòng)端常用協(xié)議之一。
  • HTTP協(xié)議屬于應(yīng)用層,主要作用于兩臺(tái)連接的計(jì)算機(jī),并且在不同計(jì)算機(jī)中充當(dāng)著客戶端和服務(wù)器的角色。客戶端發(fā)起請(qǐng)求,服務(wù)器負(fù)責(zé)給予請(qǐng)求對(duì)應(yīng)的響應(yīng),完成數(shù)據(jù)交互。
  • HTTP屬于無(wú)狀態(tài)協(xié)議,每一次請(qǐng)求都是互相獨(dú)立的、沒(méi)有任何關(guān)聯(lián)的。在1.0版本中,客戶端每次請(qǐng)求都是建立一次單獨(dú)的連接,請(qǐng)求完成后自動(dòng)釋放,1.1版本中單連接允許處理多個(gè)請(qǐng)求,并且多個(gè)請(qǐng)求可以并發(fā)執(zhí)行。(后續(xù)會(huì)單獨(dú)詳細(xì)介紹HTTP,敬請(qǐng)期待)
  • 由于HTTP每次請(qǐng)求結(jié)束后會(huì)釋放連接,所以被稱(chēng)為‘短鏈接’。為了保持客戶端的在線狀態(tài),需要不斷向服務(wù)器發(fā)起連接請(qǐng)求,根據(jù)服務(wù)器的響應(yīng)結(jié)果判斷連接是否斷開(kāi)。

TCP協(xié)議?

  • TCP全名傳輸控制協(xié)議(Transmission Control Protocol),是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,是移動(dòng)端建立無(wú)線網(wǎng)絡(luò)連接的基礎(chǔ),實(shí)現(xiàn)移動(dòng)聯(lián)網(wǎng)
  • TCP相對(duì)于HTTP發(fā)起請(qǐng)求、接收響應(yīng)、釋放連接來(lái)說(shuō),是更加復(fù)雜的。最常見(jiàn)且最重要的就是‘三次握手’:
  • 第一次握手:client發(fā)送SYN包(syn=j)到server,并進(jìn)入SYN_SEND狀態(tài)開(kāi)始等待;
  • 第二次握手:server接收并確認(rèn)client的SYN包(ack=j+1),同時(shí)也額外發(fā)送SYN包(syn=k),即SYN包+ACK包,此時(shí)server進(jìn)入SYN_RECV狀態(tài);
  • 第三次握手:client收到server的SYN+ACK包后,向server發(fā)送ACK包(ack=k+1),成功后client和server分別進(jìn)入ESTABLISHED狀態(tài),完成三次握手。
  • TCP還有另外一層容易被忽略的就是斷開(kāi)連接(四次揮手)
  • 第一次揮手:client端接收完數(shù)據(jù),會(huì)向server端發(fā)起釋放請(qǐng)求(fin=m);
  • 第二次揮手:server端接收并確認(rèn)client的釋放請(qǐng)求(ack=m+1),通知應(yīng)用層要釋放TCP連接,并進(jìn)入CLOSE_WAIT狀態(tài);
  • 第三次揮手:server端如果還有沒(méi)有發(fā)送完的數(shù)據(jù),會(huì)繼續(xù)發(fā)送,直到發(fā)送完畢后會(huì)向client端發(fā)送連接釋放請(qǐng)求(fin=n),然后進(jìn)入到LAST_ACK狀態(tài);(此處可以將第二次和第三次合并,延遲ACK包的發(fā)送,用來(lái)解決傳輸時(shí)間限制等問(wèn)題)
  • 第四次揮手:client端接受并確認(rèn)server的釋放請(qǐng)求(ack=n+1)后,進(jìn)入TIME_WAIT狀態(tài),并持續(xù)2MSL時(shí)間,若該時(shí)間內(nèi)未收到server端的重發(fā)請(qǐng)求,就會(huì)進(jìn)入CLOSE狀態(tài),并向server發(fā)送fin+ack包,server端確認(rèn)接收后,也進(jìn)入CLOSE狀態(tài)。

實(shí)際應(yīng)用

小編最近遇到的一個(gè)十分緊急的問(wèn)題,就是外網(wǎng)的頁(yè)面資源加載延遲高,特別是圖片、js等靜態(tài)資源。由此為出發(fā)點(diǎn),優(yōu)先解決靜態(tài)資源加載,想到了HTTP緩存這一特性。

  • HTTP緩存:當(dāng)瀏覽器訪問(wèn)服務(wù)端時(shí),會(huì)將請(qǐng)求資源緩存到本地,當(dāng)下次再發(fā)起相同請(qǐng)求,則直接加載本地緩存資源,不再請(qǐng)求服務(wù)端,節(jié)省網(wǎng)絡(luò)資源。
  • HTTP緩存是由請(qǐng)求頭字段(Cache-Control)控制。具體根據(jù)資源更新頻率設(shè)置緩存時(shí)長(zhǎng)。
  • 參考微信使用HTTP緩存(僅供參考):

html:public, max-age=500 (public為公共緩存,max-age為緩存時(shí)間500秒)

JS文件:max-age=31536000(1年),文件命名帶版本號(hào)或指紋信息,方便及時(shí)更新。

CSS文件:max-age=31536000,文件命名帶版本號(hào)或指紋信息,方便及時(shí)更新。

圖片:max-age=31536000,文件命名帶版本號(hào)或指紋信息,方便及時(shí)更新。

XHR請(qǐng)求:no-cache,must-revalidate

最終小編利用HTTP緩存解決了頁(yè)面加載問(wèn)題,主要是參考微信的請(qǐng)求參數(shù)設(shè)置,后續(xù)涉及其它web資源優(yōu)化本文不再作詳細(xì)介紹,如果有其它問(wèn)題可以私信一起探討。

總結(jié)

TCP協(xié)議對(duì)應(yīng)傳輸層,HTTP協(xié)議對(duì)應(yīng)應(yīng)用層,二者在本質(zhì)上其實(shí)沒(méi)有可比性,但實(shí)際應(yīng)用中出現(xiàn)問(wèn)題很容易混淆,并且不容易定位問(wèn)題,在此按自身理解分享給大家。

HTTP協(xié)議是基于TCP協(xié)議的,HTTP在發(fā)起請(qǐng)求時(shí)通過(guò)TCP建立起連接服務(wù)器的通道,當(dāng)請(qǐng)求結(jié)束后,會(huì)立即斷開(kāi)TCP連接。

最后借用比較形象的比喻:HTTP是轎車(chē),是封裝或顯示數(shù)據(jù)的具體形式;將TCP封裝的API(即Socket編程接口),是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信能力。

責(zé)任編輯:武曉燕 來(lái)源: Java技術(shù)指北
相關(guān)推薦

2018-09-13 11:00:15

2018-06-21 10:25:16

2025-04-24 08:35:00

子網(wǎng)掩碼網(wǎng)絡(luò)IP地址

2015-11-05 09:26:34

Fedora發(fā)行版Linux

2011-12-21 10:46:17

Java

2013-08-29 11:05:49

Web字符集

2010-01-08 13:42:21

JSON VS XML

2018-08-07 15:26:42

Linux版本系統(tǒng)

2023-09-07 10:28:24

2015-01-27 09:30:15

開(kāi)源容器技術(shù)Docker云應(yīng)用

2015-10-22 10:11:48

IPTCPDNS

2009-10-16 10:58:48

2015-04-09 10:40:29

HTTP協(xié)議TCPHTTP事務(wù)延遲

2021-08-30 20:12:11

MySQL事務(wù)隔離

2010-08-11 10:39:13

2011-05-03 16:22:15

一體機(jī)

2022-07-14 08:54:50

HTTP/3TCPQUIC

2011-11-08 11:10:34

操作系統(tǒng)Windows 9

2020-12-01 06:20:49

流氓軟件

2023-03-07 12:05:29

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)