激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

電腦之家 - 專業計算機基礎知識與電腦技術學習網站
分類導航

路由器|交換機|網絡協議|網絡知識|

服務器之家 - 電腦之家 - 網絡技術 - 網絡知識 - TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

2021-08-26 23:13微觀技術 網絡知識

今天主要給各位分享TCP網絡的一些常見知識點,日常工作或面試會經常遇到。考慮內容篇幅不小,建議先收藏,慢慢咀嚼。

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

大家好,我是Tom哥~

今天主要給各位分享TCP網絡的一些常見知識點,日常工作或面試會經常遇到。考慮內容篇幅不小,建議先收藏,慢慢咀嚼。

如果有幫助,也請轉給身邊的朋友們,”獨樂樂不如眾樂樂“

首先,來個目錄,讓大家對文章內容先有個直觀了解

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

網絡的七層模型,簡單介紹每層的作用?

答案:分為7層,從下到上依次是:

  • 應用層:計算機用戶與網絡之間的接口,常見的協議有:HTTP、FTP、 SMTP、TELNET
  • 表示層:數據的表示、安全、壓縮。將應用處理的信息轉換為適合網絡傳輸的格式。
  • 會話層:建立和管理本地主機與遠程主機之間的會話。
  • 傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗,保證報文能正確傳輸。協議有TCP、UDP
  • 網絡層:路由選擇算法,進行邏輯地址尋址,實現不同網絡之間的最佳路徑選擇。協議有IP、ICMP
  • 數據鏈路層:接收來自物理層的位流形式的數據,并封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層。這一層的數據叫做幀。
  • 物理層:建立、維護、斷開物理連接。傳輸比特流(將1、0轉化為電流強弱來進行傳輸,到達目的地后在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

TCP 報文首部有哪些字段?

答案:

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

  • 源端口、目的端口:各占2個字節,表示數據從哪個進程來,去往哪個進程
  • 序號(Sequence Number):占4個字節,TCP連接中傳送的數據每一個字節都會有一個序號
  • 確認號(Acknowledgement Number):占4個字節,另一方發送的tcp報文段的響應
  • 數據偏移:頭部長度,占4個字節,表示TCP報文段的數據距離TCP報文段的起始處有多遠。
  • 6位標志位:
    • URG:緊急指針是否有效
    • ACK:表示確認號是否有效
    • PSH:提示接收端應用程序立刻將數據從tcp緩沖區讀走
    • RST:表示要求對方重新建立連接
    • SYN:這是一個連接請求或連接接受的報文
    • FIN:告知對方本端要關閉連接
  • 窗口大小:占4個字節,用于TCP流量控制。告訴對方本端的TCP接收緩沖區還能容納多少字節的數據,這樣對方就可以控制發送數據的速度。
  • 校驗和:占2個字節,由發送端填充,接收端對TCP報文段執行CRC算法以檢驗TCP報文段在傳輸過程中是否損壞。檢驗的范圍包括頭部、數據兩部分,是TCP可靠傳輸的一個重要保障。
  • 緊急指針:占2個字節,一個正的偏移量。它和序號字段的值相加表示最后一個緊急數據的下一個字節的序號,用于發送端向接收端發送緊急數據。

TCP 三次握手過程?

答案:目的是同步連接雙方的序列號和確認號,并交換TCP窗口。

  • 第一次握手,客戶端發送(seq=x),客戶端進入SYN_SEND狀態
  • 第二次握手,服務端響應(Seq=y, Ack=x+1),服務器端就進入SYN_RCV狀態。
  • 第三次握手,客戶端收到服務端的確認后,發送(Ack=y+1),客戶端進入ESTABLISHED狀態。當服務器端接收到這個包時,也進入ESTABLISHED狀態。

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

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

答案:

如果只有兩次握手,那么服務端向客戶端發送 SYN/ACK 報文后,就會認為連接建立。但是如果客戶端沒有收到報文,那么客戶端是沒有建立連接的,這就導致服務端會浪費資源。

使用兩次握手無法建立 TCP 連接,而使用三次握手是建立連接所需要的最小次數

TCP 四次揮手的過程?

答案:

  • 第一次揮手:客戶端向服務端發送連接釋放報文
  • 第二次揮手:服務端收到連接釋放報文后,立即發出確認報文。這時 TCP 連接處于半關閉狀態,即客戶端到服務端的連接已經釋放了,但是服務端到客戶端的連接還未釋放。表示客戶端已經沒有數據發送了,但是服務端可能還要給客戶端發送數據。
  • 第三次揮手:服務端向客戶端發送連接釋放報文
  • 第四次揮手:客戶端收到服務端的連接釋放報文后,立即發出確認報文。此時,客戶端就進入了 TIME-WAIT 狀態。注意此時客戶端到 TCP 連接還沒有釋放,必須經過 2*MSL(最長報文段壽命)的時間后,才進入CLOSED 狀態。

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

為什么需要四次揮手?

答案:TCP 是全雙工。一方關閉連接后,另一方還可以繼續發送數據。所以四次揮手,將斷開連接分成兩個獨立的過程。

客戶端 TIME-WAIT ,為什么要等待 2MSL 才進入 CLOSED 狀態?

答案:MSL 是報文段在網絡上最大存活時間。

確保 ACK 報文能夠到達服務端,從而使服務端正常關閉連接。客戶端在發送完最后一個 ACK 報文段后,再經過 2MSL,就可以保證本連接持續的時間內產生的所有報文段都從網絡中消失。這樣就可以使下一個連接中不會出現這種舊的連接請求報文段。

一臺 8G 內存服務器,可以同時維護多少個連接?

答案:發送、接收緩存各4k,還要考慮socket描述符,一個tcp連接需要占用的最小內存是8k,那么最大連接數為:8*1024*1024 K / 8 K = 1048576 個,即約100萬個tcp長連接。

什么是拆包?

答案:傳輸層封包不能太大,基于這個限制,往往以緩沖區大小為單位,將數據拆分成多個 TCP 段(TCP Segment)傳輸。在接收數據的時候,一個個 TCP 段又被重組成原來的數據。簡單來講分為幾個過程:拆分——傳輸——重組。

什么是粘包?

答案:解決數據太小問題,防止多次發送占用資源。TCP 協議將它們合并成一個 TCP 段發送,在目的地再還原成多個數據。

緩沖區是做什么用?

答案:緩沖區是在內存中開辟的一塊區域,目的是緩沖。當應用頻繁地通過網卡收、發數據,網卡只能一個一個處理。當網卡忙不過來的時候,數據就需要排隊,也就是將數據放入緩沖區。

注意:TCP Segment 的大小不能超過緩沖區大小。

TCP 協議是如何保證數據的順序?

答案:

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

大數據拆包成多個片段,發送可以保證有序,但是由于網絡環境復雜,并不能保證它們到達時也是有序的,為了解決這個問題,對每個片段用Sequence Number編號,接收數據的時候,通過 Seq 進行排序。

注意:seq是累計的發送字節數

TCP 協議如何解決丟包?

答案:丟包需要重發,關鍵是如何判斷有沒有丟包!

每一個數據包,接收方都會給發送方發響應。每個 TCP 段發送時,接收方已經接收了多少數據,用 Acknowledgement Number(簡寫ACK) 表示。

注意:ack是累計的接收字節數,表示這個包之前的包都已經收到了。

什么是 MSS ?

答案:MSS 全稱 Maximun Segment Size。是TCP Header 中的可選項(Options),控制了 TCP 段的大小,不能由單方決定,需要雙方協商。

TCP 協議如何控制流量傳輸速度?

答案:簡單講通過滑動窗口。發送、接收窗口的大小可以用來控制 TCP 協議的流速。窗口越大,同時可以發送、接收的數據就越多,吞吐量也就越大。但是窗口越大,如果數據發生錯誤,損失也就越大,因為需要重傳越多的數據。

TCP每個請求都要有響應,如果一個請求沒有收到響應,發送方就會認為這次發送出現了故障,會觸發重發。為了提升吞吐量,一個TCP段再沒有收到響應時,可以繼續發送下一個段。

TCP網絡那點破事!三次握手、四次揮手、TIME-WAIT、HTTP 2.0 ....

  • 窗口區域包含兩類數據:已發送未確認、未發送(即將發送)
  • 窗口中序號最小的分組如果收到 ACK,窗口就會向右滑動
  • 滑動窗口的size規格可能會變化,需要從ACK數據包實時取最新值
  • 如果最小序號的分組長時間沒有收到 ACK,就會觸發整個窗口的數據重新發送

HTTP 1.0 、1.1 和 HTTP 2.0 有什么區別?

答案:

1、HTTP 1.0

  • 默認是短連接,每次與服務器交互,都需要新開一個連接。

2、HTTP 1.1

  • 默認持久化連接,建立一次連接,多次請求均由這個連接完成。

3、HTTP 2.0

  • 二進制分幀:在應用層和傳輸層之間加了一個二進制分幀層,將所有傳輸的信息分割為更小的消息和幀(frame),并對它們采用二進制格式的編碼。減少服務端的壓力,內存占用更少,連接吞吐量更大
  • 多路復用:允許同時通過單一的HTTP/2.0連接發起多次的請求-響應消息。
  • 頭部壓縮:采用了Hpack頭部壓縮算法對Header進行壓縮,減少重復發送。
  • 服務器推送:服務器主動將一些資源推送給瀏覽器并緩存起來。

HTTP 與 HTTPS 的區別?

答案:HTTPS = HTTP + SSL/TLS

HTTP 采用明文通訊;端口 80

HTTPS 在HTTP的基礎上加入了SSL/TLS協議,SSL/TLS依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。端口 443

HTTP 協議為什么要設計成無狀態?

答案:HTTP是一種無狀態協議,每個請求都是獨立執行,請求/響應。這樣設計的重要原因是,降低架構設計復雜度,畢竟服務器一旦帶上了狀態,擴容、縮容、路由都會受到制約。無狀態協議不要求服務器在多個請求期間保留每個用戶的信息。

但,你可能會問,如果有登錄要求的業務怎么辦?HTTP協議提供擴展機制,Header中增加了Cookie,存儲在客戶端,每次請求時自動攜帶,采用空間換時間機制,滿足上下請求關聯。雖然浪費了些網絡帶寬,但是減少了復雜度。當然為了減輕網絡負擔,瀏覽器會限制Cookie的大小,不同瀏覽器的限制標準略有差異,如:Chrome 10,限制最多 180個,每個Cookie大小不能超過 4096 bytes

HTTPS 的訪問流程是什么?

答案:

  • 客戶端發起一個http請求,告訴服務器自己支持哪些hash算法。
  • 服務端把自己的信息以數字證書的形式返回給客戶端(公鑰在證書里面,私鑰由服務器持有)。
  • 客戶端收到服務器的響應后會先驗證證書的合法性(證書中包含的地址與正在訪問的地址是否一致,證書是否過期)
  • 如果證書驗證通過,就會生成一個隨機的對稱密鑰,用證書的公鑰加密。
  • 客戶端將證書公鑰加密后的密鑰發送給服務端
  • 服務端用私鑰解密,解密之后就得到客戶端的密鑰
  • 然后,客戶端與服務端就靠密鑰完成明文加密、安全通信、對稱解密

對稱加密與非對稱加密有什么區別?

答案:

  • 對稱加密。加密和解密使用同一個密鑰。速度快。常用的如:AES、DES
  • 非對稱加密。公鑰與私鑰配對出現,公鑰對數據加密,私鑰對數據解密。常用的如:RSA、DSS

TCP 抓包用什么工具?

答案:Wireshark,應用最廣泛的網絡協議分析器。功能非常豐富

  • 支持數百個協議
  • 實時捕獲、離線分析
  • 支持 Windows、Linux、macOS、Solaris、FreeBSD、NetBSD等平臺;
  • 界面化操作
  • 支持 Gzip
  • 支持 IPSec

原文鏈接:https://mp.weixin.qq.com/s/-T9AiIEQdbFzYxkl_qmDPQ

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: av国产免费| 国产一区日韩一区 | 在线播放免费视频 | 久久久久久久久成人 | 免费日本一区二区 | 欧美久久一区二区 | 亚洲一区成人 | 日韩欧美中文字幕视频 | 国产高清自拍一区 | 中文字幕在线观看亚洲 | 亚洲影院久久久av天天蜜桃臀 | 国产无遮挡一区二区三区毛片日本 | 麻豆传传媒久久久爱 | 亚洲午夜视频在线 | 女18一级大黄毛片免费女人 | 国产精品剧情一区二区在线观看 | 在线成人免费观看视频 | 欧美日韩亚洲国产精品 | 亚洲精中文字幕二区三区 | 欧美成人黄色小视频 | 国产一区精品在线观看 | 韩国精品一区二区三区四区五区 | 萌白酱福利视频在线网站 | 欧美高清一级片 | 草莓福利社区在线 | 人人看人人艹 | 最近中文字幕一区二区 | 欧美日韩夜夜 | 成人三区四区 | 福利一区二区三区视频在线观看 | 日本成年免费网站 | 日本视频免费观看 | 一本色道久久综合亚洲精品图片 | 欧美视频首页 | 鲁人人人鲁人人鲁精品 | 精品国产91久久久久久久 | 91久久久久久久久久久久久 | 97视频| 欧产日产国产精品v | 欧美成人午夜 | 久久精品亚洲国产奇米99 |