中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

互聯(lián)網(wǎng)行業(yè)最有前景的十大職業(yè)手機(jī)網(wǎng)站排名優(yōu)化

互聯(lián)網(wǎng)行業(yè)最有前景的十大職業(yè),手機(jī)網(wǎng)站排名優(yōu)化,個(gè)人開店的電商平臺(tái),世界最大的購物網(wǎng)站目錄 計(jì)算機(jī)網(wǎng)絡(luò)的各層協(xié)議及作用?TCP和UDP的區(qū)別?UDP 和 TCP 對(duì)應(yīng)的應(yīng)用場(chǎng)景是什么?詳細(xì)介紹一下 TCP 的三次握手機(jī)制?為什么需要三次握手,而不是兩次?為什么要三次握手,而不是四次&#xff1f…

目錄

    • 計(jì)算機(jī)網(wǎng)絡(luò)的各層協(xié)議及作用?
    • TCP和UDP的區(qū)別?
    • UDP 和 TCP 對(duì)應(yīng)的應(yīng)用場(chǎng)景是什么?
    • 詳細(xì)介紹一下 TCP 的三次握手機(jī)制?
    • 為什么需要三次握手,而不是兩次?
    • 為什么要三次握手,而不是四次?
    • 什么是 SYN洪泛攻擊?如何防范?
    • 三次握手連接階段,最后一次ACK包丟失,會(huì)發(fā)生什么?
    • 詳細(xì)介紹一下 TCP 的四次揮手過程?
    • 為什么連接的時(shí)候是三次握手,關(guān)閉的時(shí)候卻是四次握手?
    • 為什么客戶端的 TIME-WAIT 狀態(tài)必須等待 2MSL (最長(zhǎng)報(bào)文段壽命)?
    • 如果已經(jīng)建立了連接,但是客戶端出現(xiàn)故障了怎么辦?
    • TIME-WAIT 狀態(tài)過多會(huì)產(chǎn)生什么后果?怎樣處理?
    • TIME_WAIT 是服務(wù)器端的狀態(tài)?還是客戶端的狀態(tài)?
    • TCP協(xié)議如何保證可靠性?
    • 詳細(xì)講一下TCP的滑動(dòng)窗口?
    • 詳細(xì)講一下?lián)砣刂?#xff1f;

計(jì)算機(jī)網(wǎng)絡(luò)的各層協(xié)議及作用?

計(jì)算機(jī)網(wǎng)絡(luò)體系可以大致分為一下三種,OSI七層模型、TCP/IP四層模型和五層模型。

  • OSI七層模型:大而全,但是比較復(fù)雜、而且是先有了理論模型,沒有實(shí)際應(yīng)用。
  • TCP/IP四層模型:是由實(shí)際應(yīng)用發(fā)展總結(jié)出來的,從實(shí)質(zhì)上講,TCP/IP只有最上面三層,最下面一層沒有什么具體內(nèi)容,TCP/IP參考模型沒有真正描述這一層的實(shí)現(xiàn)。
  • 五層模型:五層模型只出現(xiàn)在計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)過程中,這是對(duì)七層模型和四層模型的一個(gè)折中,既簡(jiǎn)潔又能將概念闡述清楚。
    在這里插入圖片描述
    七層網(wǎng)絡(luò)體系結(jié)構(gòu)各層的主要功能:
  • 應(yīng)用層:為應(yīng)用程序提供交互服務(wù)。在互聯(lián)網(wǎng)中的應(yīng)用層協(xié)議很多,如域名系統(tǒng)DNS,支持萬維網(wǎng)應(yīng)用的 HTTP 協(xié)議,支持電子郵件的 SMTP 協(xié)議等。

  • 表示層:主要負(fù)責(zé)數(shù)據(jù)格式的轉(zhuǎn)換,如加密解密、轉(zhuǎn)換翻譯、壓縮解壓縮等。

  • 會(huì)話層:負(fù)責(zé)在網(wǎng)絡(luò)中的兩節(jié)點(diǎn)之間建立、維持和終止通信,如服務(wù)器驗(yàn)證用戶登錄便是由會(huì)話層完成的。

  • 運(yùn)輸層:有時(shí)也譯為傳輸層,向主機(jī)進(jìn)程提供通用的數(shù)據(jù)傳輸服務(wù)。該層主要有以下兩種協(xié)議:

    • TCP:提供面向連接的、可靠的數(shù)據(jù)傳輸服務(wù);
    • UDP:提供無連接的、盡最大努力的數(shù)據(jù)傳輸服務(wù),但不保證數(shù)據(jù)傳輸?shù)目煽啃浴?/li>
  • 網(wǎng)絡(luò)層:選擇合適的路由和交換結(jié)點(diǎn),確保數(shù)據(jù)及時(shí)傳送。主要包括 IP 協(xié)議。

  • 數(shù)據(jù)鏈路層:數(shù)據(jù)鏈路層通常簡(jiǎn)稱為鏈路層。將網(wǎng)絡(luò)層傳下來的 IP 數(shù)據(jù)包組裝成幀,并再相鄰節(jié)點(diǎn)的鏈路上傳送幀。

  • 物理層:實(shí)現(xiàn)相鄰節(jié)點(diǎn)間比特流的透明傳輸,盡可能屏蔽傳輸介質(zhì)和通信手段的差異。

TCP和UDP的區(qū)別?

UDPTCP
是否連接無連接面向連接
是否可靠不可靠傳輸,不使用流量控制和擁塞控制可靠傳輸,使用流量控制和擁塞控制
是否有序無序有序,消息在傳輸過程中可能會(huì)亂序,TCP 會(huì)重新排序
傳輸速度
連接對(duì)象個(gè)數(shù)支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多交互通信只能是一對(duì)一通信
傳輸方式面向報(bào)文面向字節(jié)流
首部開銷首部開銷小,僅8字節(jié)首部最小20字節(jié),最大60字節(jié)
適用場(chǎng)景適用于實(shí)時(shí)應(yīng)用(IP電話、視頻會(huì)議、直播等)適用于要求可靠傳輸?shù)膽?yīng)用,例如文件傳輸

總結(jié):TCP 用于在傳輸層有必要實(shí)現(xiàn)可靠傳輸?shù)那闆r,UDP 用于對(duì)高速傳輸和實(shí)時(shí)性有較高要求的通信。TCP 和 UDP 應(yīng)該根據(jù)應(yīng)用目的按需使用。

UDP 和 TCP 對(duì)應(yīng)的應(yīng)用場(chǎng)景是什么?

TCP 是面向連接,能保證數(shù)據(jù)的可靠性交付,因此經(jīng)常用于:

  • FTP文件傳輸
  • HTTP / HTTPS

UDP 面向無連接,它可以隨時(shí)發(fā)送數(shù)據(jù),再加上UDP本身的處理既簡(jiǎn)單又高效,因此經(jīng)常用于:

  • 包總量較少的通信,如 DNS 、SNMP等
  • 視頻、音頻等多媒體通信
  • 廣播通信
應(yīng)用層協(xié)議應(yīng)用傳輸層協(xié)議
SMTP電子郵件TCP
Telnet遠(yuǎn)程終端接入TCP
HTTP萬維網(wǎng)TCP
FTP文件傳輸TCP
應(yīng)用層協(xié)議應(yīng)用傳輸層協(xié)議
DNS域名轉(zhuǎn)換UDP
TFTP文件傳輸UDP
SNMP網(wǎng)絡(luò)管理UDP
NFS遠(yuǎn)程文件服務(wù)器UDP

詳細(xì)介紹一下 TCP 的三次握手機(jī)制?

在這里插入圖片描述

  • 第一次握手:客戶端請(qǐng)求建立連接,向服務(wù)端發(fā)送一個(gè)同步報(bào)文(SYN=1),同時(shí)選擇一個(gè)隨機(jī)數(shù) seq = x 作為初始序列號(hào),并進(jìn)入 SYN_SENT 狀態(tài),等待服務(wù)器確認(rèn)。

  • 第二次握手:服務(wù)端收到連接請(qǐng)求報(bào)文后,如果同意建立連接,則向客戶端發(fā)送同步確認(rèn)報(bào)文(SYN=1,ACK=1),確認(rèn)號(hào)為 ack = x + 1,同時(shí)選擇一個(gè)隨機(jī)數(shù) seq = y 作為初始序列號(hào),此時(shí)服務(wù)器進(jìn)入SYN_RECV 狀態(tài)。

  • 第三次握手:客戶端收到服務(wù)端的確認(rèn)后,向服務(wù)端發(fā)送一個(gè)確認(rèn)報(bào)文(ACK=1),確認(rèn)號(hào)為 ack = y + 1,序列號(hào)為 seq = x + 1,客戶端和服務(wù)器進(jìn)入 ESTABLISHED 狀態(tài),完成三次握手。

為什么需要三次握手,而不是兩次?

  • 一、防止已過期的連接請(qǐng)求報(bào)文突然又傳送到服務(wù)器,因而產(chǎn)生錯(cuò)誤和資源浪費(fèi)。
    在雙方兩次握手即可建立連接的情況下,假設(shè)客戶端發(fā)送 A 報(bào)文段請(qǐng)求建立連接,由于網(wǎng)絡(luò)原因造成 A 暫時(shí)無法到達(dá)服務(wù)器,服務(wù)器接收不到請(qǐng)求報(bào)文段就不會(huì)返回確認(rèn)報(bào)文段??蛻舳嗽陂L(zhǎng)時(shí)間得不到應(yīng)答的情況下重新發(fā)送請(qǐng)求報(bào)文段 B,這次 B 順利到達(dá)服務(wù)器,服務(wù)器隨即返回確認(rèn)報(bào)文并進(jìn)入 ESTABLISHED 狀態(tài),客戶端在收到確認(rèn)報(bào)文后也進(jìn)入 ESTABLISHED 狀態(tài),雙方建立連接并傳輸數(shù)據(jù),之后正常斷開連接。
    此時(shí)姍姍來遲的 A 報(bào)文段才到達(dá)服務(wù)器,服務(wù)器隨即返回確認(rèn)報(bào)文并進(jìn)入 ESTABLISHED 狀態(tài),但是已經(jīng)進(jìn)入 CLOSED 狀態(tài)的客戶端無法再接受確認(rèn)報(bào)文段,更無法進(jìn)入 ESTABLISHED 狀態(tài),這將導(dǎo)致服務(wù)器長(zhǎng)時(shí)間單方面等待,造成資源浪費(fèi)。

  • 二、三次握手才能讓雙方均確認(rèn)自己和對(duì)方的發(fā)送和接收能力都正常。
    第一次握手:客戶端只是發(fā)送處請(qǐng)求報(bào)文段,什么都無法確認(rèn),而服務(wù)器可以確認(rèn)自己的接收能力和對(duì)方的發(fā)送能力正常;
    第二次握手:客戶端可以確認(rèn)自己發(fā)送能力和接收能力正常,對(duì)方發(fā)送能力和接收能力正常;
    第三次握手:服務(wù)器可以確認(rèn)自己發(fā)送能力和接收能力正常,對(duì)方發(fā)送能力和接收能力正常;
    可見三次握手才能讓雙方都確認(rèn)自己和對(duì)方的發(fā)送和接收能力全部正常,這樣就可以愉快地進(jìn)行通信了。

  • 三、告知對(duì)方自己的初始序號(hào)值,并確認(rèn)收到對(duì)方的初始序號(hào)值。
    TCP 實(shí)現(xiàn)了可靠的數(shù)據(jù)傳輸,原因之一就是 TCP 報(bào)文段中維護(hù)了序號(hào)字段確認(rèn)序號(hào)字段,通過這兩個(gè)字段雙方都可以知道在自己發(fā)出的數(shù)據(jù)中,哪些是已經(jīng)被對(duì)方確認(rèn)接收的。這兩個(gè)字段的值會(huì)在初始序號(hào)值得基礎(chǔ)遞增,如果是兩次握手,只有發(fā)起方的初始序號(hào)可以得到確認(rèn),而另一方的初始序號(hào)則得不到確認(rèn)。

為什么要三次握手,而不是四次?

三次握手已經(jīng)可以確認(rèn)雙方的發(fā)送接收能力正常,雙方都知道彼此已經(jīng)準(zhǔn)備好,而且也可以完成對(duì)雙方初始序號(hào)值得確認(rèn),也就無需再第四次握手了。

  • 第一次握手:服務(wù)端確認(rèn)“自己收、客戶端發(fā)”報(bào)文功能正常。
  • 第二次握手:客戶端確認(rèn)“自己發(fā)、自己收、服務(wù)端收、客戶端發(fā)”報(bào)文功能正常,客戶端認(rèn)為連接已建立。
  • 第三次握手:服務(wù)端確認(rèn)“自己發(fā)、客戶端收”報(bào)文功能正常,此時(shí)雙方均建立連接,可以正常通信。

什么是 SYN洪泛攻擊?如何防范?

SYN 洪泛攻擊屬于 DOS 攻擊的一種,它利用 TCP 協(xié)議缺陷,通過發(fā)送大量的半連接請(qǐng)求,耗費(fèi) CPU 和內(nèi)存資源。

原理:

  • 在三次握手過程中,第二步:服務(wù)器發(fā)送 [SYN/ACK] 包(第二個(gè)包)之后、收到客戶端的 [ACK] 包(第三個(gè)包)之前的 TCP 連接稱為半連接(half-open connect),此時(shí)服務(wù)器處于 SYN_RECV(同步已收到,等待客戶端響應(yīng))狀態(tài)。如果接收到客戶端的 [ACK],則 TCP 連接成功,如果未接受到,則會(huì)不斷重發(fā)請(qǐng)求直至成功。
  • SYN 攻擊的攻擊者在短時(shí)間內(nèi)偽造大量不存在的 IP 地址,向服務(wù)器不斷地發(fā)送 [SYN] 包,服務(wù)器回復(fù) [SYN/ACK] 包,并等待客戶的確認(rèn)。由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí)。
  • 這些偽造的 [SYN] 包將長(zhǎng)時(shí)間占用未連接隊(duì)列,影響了正常的 SYN,導(dǎo)致目標(biāo)系統(tǒng)運(yùn)行緩慢、網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。

檢測(cè):當(dāng)在服務(wù)器上看到大量的半連接狀態(tài)時(shí),特別是源 IP 地址是隨機(jī)的,基本上可以斷定這是一次 SYN 攻擊。

防范:

  • 通過防火墻、路由器等過濾網(wǎng)關(guān)防護(hù)。
  • 通過加固 TCP/IP 協(xié)議棧防范,如增加最大半連接數(shù),縮短超時(shí)時(shí)間。
  • SYN cookies技術(shù)。SYN Cookies 是對(duì) TCP 服務(wù)器端的三次握手做一些修改,專門用來防范 SYN 洪泛攻擊的一種手段。

三次握手連接階段,最后一次ACK包丟失,會(huì)發(fā)生什么?

服務(wù)端:

  • 第三次的ACK在網(wǎng)絡(luò)中丟失,那么服務(wù)端該TCP連接的狀態(tài)為 SYN_RECV (同步已收到),并且會(huì)根據(jù) TCP的超時(shí)重傳機(jī)制,會(huì)等待3秒、6秒、12秒后重新發(fā)送 SYN+ACK 包,以便客戶端重新發(fā)送 ACK 包。
  • 如果重發(fā)指定次數(shù)之后,仍然未收到 客戶端的ACK應(yīng)答,那么一段時(shí)間后,服務(wù)端自動(dòng)關(guān)閉這個(gè)連接。

客戶端:

客戶端認(rèn)為這個(gè)連接已經(jīng)建立,如果客戶端向服務(wù)端發(fā)送數(shù)據(jù),服務(wù)端將以 RST包(Reset,標(biāo)示復(fù)位,用于異常的關(guān)閉連接)響應(yīng)。此時(shí),客戶端知道第三次握手失敗。

詳細(xì)介紹一下 TCP 的四次揮手過程?

在這里插入圖片描述

  • 第一次揮手:客戶端服務(wù)端發(fā)送連接釋放報(bào)文(FIN=1,ACK=1),主動(dòng)關(guān)閉連接,同時(shí)等待服務(wù)端的確認(rèn)。

    • 序列號(hào) seq = m,即客戶端上次發(fā)送的報(bào)文的最后一個(gè)字節(jié)的序號(hào) + 1
    • 確認(rèn)號(hào) ack = n, 即服務(wù)端上次發(fā)送的報(bào)文的最后一個(gè)字節(jié)的序號(hào) + 1
  • 第二次揮手:服務(wù)端收到連接釋放報(bào)文后,立即發(fā)出確認(rèn)報(bào)文(ACK=1),序列號(hào) seq = n,確認(rèn)號(hào) ack = m + 1。

    • 這時(shí) TCP 連接處于半關(guān)閉狀態(tài),即客戶端服務(wù)端的連接已經(jīng)釋放了,但是服務(wù)端客戶端的連接還未釋放。這表示客戶端已經(jīng)沒有數(shù)據(jù)發(fā)送了,但是服務(wù)端可能還要給客戶端發(fā)送數(shù)據(jù)。
  • 第三次揮手:服務(wù)端客戶端發(fā)送連接釋放報(bào)文(FIN=1,ACK=1),主動(dòng)關(guān)閉連接,同時(shí)等待 A 的確認(rèn)。

    • 序列號(hào) seq = p,即服務(wù)端上次發(fā)送的報(bào)文的最后一個(gè)字節(jié)的序號(hào) + 1。
    • 確認(rèn)號(hào) ack = m + 1,與第二次揮手相同,因?yàn)檫@段時(shí)間客戶端沒有發(fā)送數(shù)據(jù)
  • 第四次揮手:客戶端收到服務(wù)端的連接釋放報(bào)文后,立即發(fā)出確認(rèn)報(bào)文(ACK=1),序列號(hào) seq = m + 1,確認(rèn)號(hào)為 ack = p + 1。

    • 此時(shí),客戶端就進(jìn)入了 TIME-WAIT 狀態(tài)。注意此時(shí)客戶端到 TCP 連接還沒有釋放,必須經(jīng)過 2*MSL(最長(zhǎng)報(bào)文段壽命)的時(shí)間后,才進(jìn)入 CLOSED 狀態(tài)。而服務(wù)端只要收到客戶端發(fā)出的確認(rèn),就立即進(jìn)入 CLOSED 狀態(tài)。可以看到,服務(wù)端結(jié)束 TCP 連接的時(shí)間要比客戶端早一些。

為什么連接的時(shí)候是三次握手,關(guān)閉的時(shí)候卻是四次握手?

服務(wù)器在收到客戶端的 FIN 報(bào)文段(第一次揮手)后,可能還有一些數(shù)據(jù)要傳輸,所以不能馬上關(guān)閉連接,但是會(huì)做出應(yīng)答,返回 ACK 報(bào)文段(第二次揮手)。接下來可能會(huì)繼續(xù)發(fā)送數(shù)據(jù),在數(shù)據(jù)發(fā)送完后,服務(wù)器會(huì)向客戶端發(fā)送 FIN 報(bào)文(第三次揮手),表示數(shù)據(jù)已經(jīng)發(fā)送完畢,請(qǐng)求關(guān)閉連接。服務(wù)器的 ACK和FIN一般都會(huì)分開發(fā)送,從而導(dǎo)致多了一次,因此一共需要四次揮手。

為什么客戶端的 TIME-WAIT 狀態(tài)必須等待 2MSL (最長(zhǎng)報(bào)文段壽命)?

  1. 確保 ACK 報(bào)文能夠到達(dá)服務(wù)端,從而使服務(wù)端正常關(guān)閉連接。
    第四次揮手時(shí),客戶端第四次揮手的 ACK 報(bào)文不一定會(huì)到達(dá)服務(wù)端。服務(wù)端會(huì)超時(shí)重傳 FIN/ACK 報(bào)文,此時(shí)如果客戶端已經(jīng)斷開了連接,那么就無法響應(yīng)服務(wù)端的二次請(qǐng)求,這樣服務(wù)端遲遲收不到 FIN/ACK 報(bào)文的確認(rèn),就無法正常斷開連接。

    MSL 是報(bào)文段在網(wǎng)絡(luò)上存活的最長(zhǎng)時(shí)間??蛻舳说却?2MSL 時(shí)間,即【客戶端 ACK 報(bào)文 1MSL 超時(shí) + 服務(wù)端 FIN 報(bào)文 1MSL 傳輸】,就能夠收到服務(wù)端重傳的 FIN/ACK 報(bào)文,然后客戶端重傳一次 ACK 報(bào)文,并重新啟動(dòng) 2MSL 計(jì)時(shí)器。如此保證服務(wù)端能夠正常關(guān)閉。

    如果服務(wù)端重發(fā)的 FIN 沒有成功地在 2MSL 時(shí)間里傳給客戶端,服務(wù)端則會(huì)繼續(xù)超時(shí)重試直到斷開連接。

  2. 防止已失效的連接請(qǐng)求報(bào)文段出現(xiàn)在之后的連接中。

    TCP 要求在 2MSL 內(nèi)不使用相同的序列號(hào)。
    客戶端在發(fā)送完最后一個(gè) ACK 報(bào)文段后,再經(jīng)過時(shí)間 2MSL,就可以保證本連接持續(xù)的時(shí)間內(nèi)產(chǎn)生的所有報(bào)文段都從網(wǎng)絡(luò)中消失。這樣就可以使下一個(gè)連接中不會(huì)出現(xiàn)這種舊的連接請(qǐng)求報(bào)文段。或者即使收到這些過時(shí)的報(bào)文,也可以不處理它。

如果已經(jīng)建立了連接,但是客戶端出現(xiàn)故障了怎么辦?

通過定時(shí)器 + 超時(shí)重試機(jī)制,嘗試獲取確認(rèn),直到最后會(huì)自動(dòng)斷開連接。具體而言,TCP 設(shè)有一個(gè)?;钣?jì)時(shí)器。服務(wù)器每收到一次客戶端的數(shù)據(jù),都會(huì)重新復(fù)位這個(gè)計(jì)時(shí)器,時(shí)間通常是設(shè)置為 2 小時(shí)。
若 2 小時(shí)還沒有收到客戶端的任何數(shù)據(jù),服務(wù)器就開始重試:每隔 75 分鐘發(fā)送一個(gè)探測(cè)報(bào)文段,若一連發(fā)送 10 個(gè)探測(cè)報(bào)文后客戶端依然沒有回應(yīng),那么服務(wù)器就認(rèn)為連接已經(jīng)斷開了。

TIME-WAIT 狀態(tài)過多會(huì)產(chǎn)生什么后果?怎樣處理?

從服務(wù)器來講,短時(shí)間內(nèi)關(guān)閉了大量的 Client 連接,就會(huì)造成服務(wù)器上出現(xiàn)大量的 TIME_WAIT 連接,嚴(yán)重消耗著服務(wù)器的資源,此時(shí)部分客戶端就會(huì)顯示連接不上。
從客戶端來講,客戶端 TIME_WAIT 過多,就會(huì)導(dǎo)致端口資源被占用,因?yàn)槎丝诰?65536 個(gè),被占滿就會(huì)導(dǎo)致無法創(chuàng)建新的連接。
解決辦法:

  • 服務(wù)器可以設(shè)置 SO_REUSEADDR 套接字選項(xiàng)來避免 TIME_WAIT狀態(tài),此套接字選項(xiàng)告訴內(nèi)核,即使此端口正忙(處于
    TIME_WAIT狀態(tài)),也請(qǐng)繼續(xù)并重用它。

  • 調(diào)整系統(tǒng)內(nèi)核參數(shù),修改/etc/sysctl.conf文件,即修改net.ipv4.tcp_tw_reusetcp_timestamps

    # 表示開啟重用。允許將 TIME-WAIT sockets 重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉;
    net.ipv4.tcp_tw_reuse = 1 
    # 表示開啟 TCP 連接中 TIME-WAIT sockets 的快速回收,默認(rèn)為0,表示關(guān)閉。
    net.ipv4.tcp_tw_recycle = 1 
    
  • 強(qiáng)制關(guān)閉,發(fā)送 RST 包越過 TIME_WAIT狀態(tài),直接進(jìn)入CLOSED狀態(tài)。RST包是用于強(qiáng)制關(guān)閉TCP連接的,當(dāng)主機(jī)需要盡快關(guān)閉連接(或連接超時(shí),端口或主機(jī)不可達(dá))時(shí),就會(huì)發(fā)送RST包。

TIME_WAIT 是服務(wù)器端的狀態(tài)?還是客戶端的狀態(tài)?

TIME_WAIT 是主動(dòng)斷開連接的一方會(huì)進(jìn)入的狀態(tài),一般情況下,都是客戶端所處的狀態(tài);服務(wù)器端一般設(shè)置不主動(dòng)關(guān)閉連接。

TIME_WAIT 需要等待 2MSL,在大量短連接的情況下,TIME_WAIT 會(huì)太多,這也會(huì)消耗很多系統(tǒng)資源。對(duì)于服務(wù)器來說,在 HTTP 協(xié)議里指定 KeepAlive(瀏覽器重用一個(gè) TCP 連接來處理多個(gè) HTTP 請(qǐng)求),由瀏覽器來主動(dòng)斷開連接,可以一定程度上減少服務(wù)器的這個(gè)問題。

TCP協(xié)議如何保證可靠性?

TCP主要提供了檢驗(yàn)和、序列號(hào)/確認(rèn)應(yīng)答、超時(shí)重傳、滑動(dòng)窗口、擁塞控制和流量控制等方法實(shí)現(xiàn)了可靠性傳輸。

  • 檢驗(yàn)和:通過檢驗(yàn)和的方式,接收端可以檢測(cè)出來數(shù)據(jù)是否有差錯(cuò)和異常,假如有差錯(cuò)就會(huì)直接丟棄TCP段,重新發(fā)送。

  • 序列號(hào)/確認(rèn)應(yīng)答

    序列號(hào)的作用不僅僅是應(yīng)答的作用,有了序列號(hào)能夠?qū)⒔邮盏降臄?shù)據(jù)根據(jù)序列號(hào)排序,并且去掉重復(fù)序列號(hào)的數(shù)據(jù)。
    TCP傳輸?shù)倪^程中,每次接收方收到數(shù)據(jù)后,都會(huì)對(duì)傳輸方進(jìn)行確認(rèn)應(yīng)答。也就是發(fā)送ACK報(bào)文,這個(gè)ACK報(bào)文當(dāng)中帶有對(duì)應(yīng)的確認(rèn)序列號(hào),告訴發(fā)送方,接收到了哪些數(shù)據(jù),下一次的數(shù)據(jù)從哪里發(fā)。

  • 滑動(dòng)窗口:滑動(dòng)窗口既提高了報(bào)文傳輸?shù)男?#xff0c;也避免了發(fā)送方發(fā)送過多的數(shù)據(jù)而導(dǎo)致接收方無法正常處理的異常。

  • 超時(shí)重傳:超時(shí)重傳是指發(fā)送出去的數(shù)據(jù)包到接收到確認(rèn)包之間的時(shí)間,如果超過了這個(gè)時(shí)間會(huì)被認(rèn)為是丟包了,需要重傳。最大超時(shí)時(shí)間是動(dòng)態(tài)計(jì)算的。

  • 擁塞控制:在數(shù)據(jù)傳輸過程中,可能由于網(wǎng)絡(luò)狀態(tài)的問題,造成網(wǎng)絡(luò)擁堵,此時(shí)引入擁塞控制機(jī)制,在保證 TCP 可靠性的同時(shí),提高性能。

  • 流量控制:如果主機(jī) A 一直向主機(jī) B 發(fā)送數(shù)據(jù),不考慮主機(jī) B 的接受能力,則可能導(dǎo)致主機(jī) B 的接受緩沖區(qū)滿了而無法再接受數(shù)據(jù),從而會(huì)導(dǎo)致大量的數(shù)據(jù)丟包,引發(fā)重傳機(jī)制。而在重傳的過程中,若主機(jī) B 的接收緩沖區(qū)情況仍未好轉(zhuǎn),則會(huì)將大量的時(shí)間浪費(fèi)在重傳數(shù)據(jù)上,降低傳送數(shù)據(jù)的效率。所以引入流量控制機(jī)制,主機(jī) B 通過告訴主機(jī) A 自己接收緩沖區(qū)的大小,來使主機(jī) A 控制發(fā)送的數(shù)據(jù)量。流量控制與TCP協(xié)議報(bào)頭中的窗口大小有關(guān)。

詳細(xì)講一下TCP的滑動(dòng)窗口?

在進(jìn)行數(shù)據(jù)傳輸時(shí),如果傳輸?shù)臄?shù)據(jù)比較大,就需要拆分為多個(gè)數(shù)據(jù)包進(jìn)行發(fā)送。TCP 協(xié)議需要對(duì)數(shù)據(jù)進(jìn)行確認(rèn)后,才可以發(fā)送下一個(gè)數(shù)據(jù)包。這樣一來,就會(huì)在等待確認(rèn)應(yīng)答包環(huán)節(jié)浪費(fèi)時(shí)間。為了避免這種情況,TCP引入了窗口概念。窗口大小指的是不需要等待確認(rèn)應(yīng)答包而可以繼續(xù)發(fā)送數(shù)據(jù)包的最大值。
在這里插入圖片描述

滑動(dòng)窗口左邊的是已發(fā)送并且被確認(rèn)的分組,滑動(dòng)窗口右邊是還沒有輪到的分組。

滑動(dòng)窗口里面也分為兩塊:一塊是已經(jīng)發(fā)送但是未被確認(rèn)的分組,另一塊是窗口內(nèi)等待發(fā)送的分組。
隨著已發(fā)送的分組不斷被確認(rèn),窗口內(nèi)等待發(fā)送的分組也會(huì)不斷被發(fā)送。整個(gè)窗口就會(huì)往右移動(dòng),讓還沒輪到的分組進(jìn)入窗口內(nèi)。

可以看到滑動(dòng)窗口起到了一個(gè)限流的作用,也就是說當(dāng)前滑動(dòng)窗口的大小決定了當(dāng)前 TCP 發(fā)送包的速率,而滑動(dòng)窗口的大小取決于擁塞控制窗口和流量控制窗口的兩者間的最小值。

詳細(xì)講一下?lián)砣刂?#xff1f;

TCP 一共使用了四種算法來實(shí)現(xiàn)擁塞控制

  • 慢開始 (slow-start);

  • 擁塞避免 (congestion avoidance);

  • 快速重傳 (fast retransmit);

  • 快速恢復(fù) (fast recovery)。

發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestion window)的狀態(tài)變量。當(dāng)當(dāng)cwnd的值減小到擁塞窗口縮小起始閾值 cwndssthresh時(shí),改用擁塞避免算法。

慢開始:不要一開始就發(fā)送大量的數(shù)據(jù),由小到大逐漸增加擁塞窗口的大小。

擁塞避免:擁塞避免算法讓擁塞窗口緩慢增長(zhǎng),即每經(jīng)過一個(gè)往返時(shí)間 RTT 就把發(fā)送方的擁塞窗口 cwnd+1 而不是加倍。這樣擁塞窗口按線性規(guī)律緩慢增長(zhǎng)。

快重傳:我們可以剔除一些不必要的擁塞報(bào)文,提高網(wǎng)絡(luò)吞吐量。比如接收方在收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn),而不要等到自己發(fā)送數(shù)據(jù)時(shí)捎帶確認(rèn)。快重傳規(guī)定:發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對(duì)方尚未收到的報(bào)文段,而不必繼續(xù)等待設(shè)置的重傳計(jì)時(shí)器時(shí)間到期。

在這里插入圖片描述
快恢復(fù):主要是配合快重傳。當(dāng)發(fā)送方連續(xù)收到三個(gè)重復(fù)確認(rèn)時(shí),就執(zhí)行 “乘法減小” 算法,把ssthresh門限減半(為了預(yù)防網(wǎng)絡(luò)發(fā)生擁塞),但接下來并不執(zhí)行慢開始算法,因?yàn)槿绻W(wǎng)絡(luò)出現(xiàn)擁塞的話就不會(huì)收到好幾個(gè)重復(fù)的確認(rèn),收到三個(gè)重復(fù)確認(rèn)說明網(wǎng)絡(luò)狀況還可以。

在這里插入圖片描述

http://www.risenshineclean.com/news/48969.html

相關(guān)文章:

  • wordpress自動(dòng)廣告位二級(jí)域名和一級(jí)域名優(yōu)化難度
  • 撰寫網(wǎng)站的建設(shè)方案北京seo服務(wù)商
  • 賢邦網(wǎng)站建設(shè)app開發(fā)公司網(wǎng)絡(luò)營銷推廣
  • 做網(wǎng)站創(chuàng)業(yè)app排名優(yōu)化
  • 做網(wǎng)站建設(shè)的公司有哪些內(nèi)容房地產(chǎn)估價(jià)師考試
  • 電商網(wǎng)站功能介紹百度seo排名優(yōu)化公司推薦
  • 網(wǎng)站建設(shè)沒業(yè)務(wù)互聯(lián)網(wǎng)產(chǎn)品推廣
  • 購物網(wǎng)站建設(shè)網(wǎng)站seo實(shí)戰(zhàn)密碼第三版pdf下載
  • 四川網(wǎng)站建設(shè)培訓(xùn)班百度助手下載安裝
  • 制作網(wǎng)站模板的發(fā)展空間網(wǎng)站搜索引擎優(yōu)化工具
  • 動(dòng)態(tài)網(wǎng)站開發(fā)采用的關(guān)鍵技術(shù)百度入口網(wǎng)頁版
  • 西安做百度網(wǎng)站的上海職業(yè)技能培訓(xùn)機(jī)構(gòu)一覽表
  • 南昌網(wǎng)站建設(shè)優(yōu)化推廣費(fèi)用百度指數(shù)分析報(bào)告案例
  • 寧波做網(wǎng)站哪家公司好網(wǎng)站設(shè)計(jì)公司蘇州
  • 武漢市二手房交易合同備案在那個(gè)網(wǎng)站上做呀如何讓網(wǎng)站快速收錄
  • 網(wǎng)站制作 牛商網(wǎng)外鏈查詢工具
  • 手把手教做網(wǎng)站網(wǎng)站優(yōu)化策略
  • 做京東網(wǎng)站需要哪些手續(xù)費(fèi)企業(yè)推廣app
  • l網(wǎng)站建設(shè)線上營銷手段
  • 國外效果超炫網(wǎng)站北京seo優(yōu)化診斷
  • 河北網(wǎng)站建設(shè)排名優(yōu)化哪家專業(yè)
  • 網(wǎng)站怎樣免費(fèi)推廣網(wǎng)絡(luò)營銷專業(yè)課程
  • 杭州裝飾網(wǎng)站建設(shè)互聯(lián)網(wǎng)營銷的方法
  • 有什么做動(dòng)畫的網(wǎng)站seo的英文全稱是什么
  • 男生做網(wǎng)站編輯全球搜是什么公司
  • wordpress 插件 kf5谷歌關(guān)鍵詞優(yōu)化怎么做
  • wex5做視頻網(wǎng)站廣東疫情最新數(shù)據(jù)
  • 太原整站優(yōu)化搜索優(yōu)化軟件
  • 網(wǎng)站cname解析seo排名優(yōu)化培訓(xùn)網(wǎng)站
  • 百度seo優(yōu)化公司旺道網(wǎng)站排名優(yōu)化