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

1.網(wǎng)絡(luò)模型結(jié)構(gòu)
2.IP TCP的層次
3.HTTP和HTTPS區(qū)別

首先對于網(wǎng)絡(luò)的七層結(jié)構(gòu)

主要是:應(yīng)用層(Application)、表示層(Presentation)、會話層(Session)、傳輸層(Transport)、網(wǎng)絡(luò)層(Network)、數(shù)據(jù)鏈路層(Data Link)、物理層(Physical)。

截屏2021-03-27上午11.55.41.png
  1. IP TCP的層次

4層是指TCP/IP四層模型,主要包括:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和物理鏈路層。

TCP/IP是個協(xié)議組,可分為三個層次:網(wǎng)絡(luò)層、傳輸層和應(yīng)用層

TCP三次握手:

如果TCP連接保持,第二個請求發(fā)送就沒有這“三次握手”的消耗,HTTP/2中同一個TCP連接里還可以并發(fā)地傳輸http請求。

所謂的三次握手即TCP連接的建立。這個連接必須是一方主動打開,另一方被動打開的。以下為客戶端主動發(fā)起連接的圖解:


截屏2021-03-27下午12.24.30.png

第一次握手:建立連接,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進入SYN_SENT狀態(tài),等待服務(wù)器確認;SYN:同步序列編號

第二次握手:服務(wù)器收到syn包,必須確認客戶的SYN(ack=j+1), 同時自己也發(fā)送一個SYN包(syn=k), 即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài)

第三次握手: 客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認包ACK(ack=k+1) , 此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED(TCP連接成功) 狀態(tài), 完成三次握手。

完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù),這樣就保證了,每次傳送數(shù)據(jù)都會準(zhǔn)備到達目標(biāo)設(shè)備了

三次握手的過程:
(1)男孩喜歡女孩,于是寫了一封信告訴女孩:我愛你,請和我交往吧!;寫完信之后,男孩焦急地等待,因為不知道信能否順利傳達給女孩。
(2)女孩收到男孩的情書后,心花怒放,原來我們是兩情相悅呀!于是給男孩寫了一封回信:我收到你的情書了,也明白了你的心意,其實,我也喜歡你!我愿意和你交往!
(3)男孩收到回信之后很開心,因為發(fā)出的情書女孩收到了,并且從回信中知道了女孩喜歡自己,并且愿意和自己交往。然后男孩又寫了一封信告訴女孩:你的心意和信我都收到了,謝謝你,還有我愛你!

三次握手的原因

一句話,主要防止已經(jīng)失效的連接請求報文突然又傳送到了服務(wù)器,從而產(chǎn)生錯誤。

TCP四次揮手

當(dāng)數(shù)據(jù)包發(fā)送完畢需要斷開連接的時候, 就需要TCP的四次揮手來保證鏈接的合理斷開,再次以瀏覽器和服務(wù)器的通信打比方:

主動結(jié)束方: 你好,我的數(shù)據(jù)發(fā)送完畢了,我要進入準(zhǔn)備斷開的狀態(tài)了。(此時它雖然不再發(fā)送數(shù)據(jù)了,但是可以接受數(shù)據(jù))
另一方:我知道了,我還沒有發(fā)送完畢的,你等著吧
另一方:我也發(fā)送完畢了,可以斷開鏈接了。(此時它也進入準(zhǔn)備斷開的狀態(tài))
主動結(jié)束方:好的,那斷開吧

官方描述:
TCP四次揮手
1.客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送
2.服務(wù)器B收到這個FIN,它發(fā)回一個ACK,確認序號為收到的序號加1,和SYN一樣,一個FIN將占用一個序號
3.服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A
4.客戶端A發(fā)回ACK報文確認,并將確認序號設(shè)置為收到序號加1

TCP為什么建立連接是三次,關(guān)閉連接是四次呢?

這是前端面試中在設(shè)計HTTP協(xié)議問題時,經(jīng)常會被問的一個問題。其實也不難理解,因為服務(wù)端的listen狀態(tài)下的socket當(dāng)收到SYN報文的建連請求后,它可以把ACK和SYN(ACK起應(yīng)答作用,而SYN起同步作用)放在一個報文里來發(fā)送。但關(guān)閉連接時,當(dāng)收到對方的FIN報文通知時,它僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù)據(jù)都全部發(fā)送給對方了,所以你可以未必會馬上會關(guān)閉SOCKET,也即你可能還需要發(fā)送一些數(shù)據(jù)給對方之后,再發(fā)送FIN報文給對方來表示你同意現(xiàn)在可以關(guān)閉連接了,所以它這里的ACK報文和FIN報文多數(shù)情況下都是分開發(fā)送的。

通過TCP協(xié)議使得兩臺設(shè)備成功鏈接,并成功發(fā)送了數(shù)據(jù),接下來,就需要服務(wù)器端來處理數(shù)據(jù)了。

  1. HTTP和HTTPS區(qū)別

HTTP協(xié)議的特點:

HTTP超文本傳輸協(xié)議,是短連接,是客戶端主動發(fā)送請求,服務(wù)器做出響應(yīng),服務(wù)器響應(yīng)之后,鏈接斷開。HTTP是一個屬于應(yīng)用層面向?qū)ο蟮膮f(xié)議,HTTP有兩類報文:請求報文和響應(yīng)報文

HTTP請求報文:一個HTTP請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4部分組成

HTTP響應(yīng)報文:由三部分組成:狀態(tài)行、消息報頭、響應(yīng)正文

HTTPS:
安全超文本傳輸協(xié)議(Secure Hyertext transfer Protoccol), 它是一個安全通信通道,基于HTTP開發(fā),用于客戶計算機和服務(wù)器之間交換信息,使用安全套字層(SSL)進行信息交換,即HTTP的安全版

http 的 GET和POST 啥區(qū)別

1.GET請求的數(shù)據(jù)會附在URL之后,參數(shù)在地址后拼接

2.POST把提交的數(shù)據(jù)則放置在Http包的包體<request-body>中,參數(shù)在請求數(shù)據(jù)區(qū)放著,相對get請求更安全,并且數(shù)據(jù)大小沒有限制

3.GET提交時,傳輸數(shù)據(jù)就會收到URL長度的限制,POST由于不是通過URL傳值,理論上不受限

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

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

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