在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TCP協(xié)議如何優(yōu)化

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-08 15:15 ? 次閱讀

TCP/IP協(xié)議經常在面試中會被問到,基礎的會問三次握手和四次揮手,更深一點可能會問TCP如何優(yōu)化等問題,下面我們來再詳細了解一下這些問題。

1. 前言

TCP/IP(Transmission Control Protocol / Internet Protocol)

TCP傳輸控制協(xié)議指一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

下面我們會先回顧一下其報文格式,三次握手,四次揮手的一些基礎知識。

TCP報文格式:

圖片

各部分的含義如下:

  • 端口,16bits 0~65525
  • 目標端口 16bits
  • sequence number : 數據序號,32 bits,TCP鏈接中傳送的數據流中的每一個字節(jié)都編一個序號,序號字段的值指本報文段所發(fā)送的數據的第一個字節(jié)的序號。
  • acknowledgement number: 確認序號:32 bits , 期望收到對方的下一個報文段的數據的第一個字節(jié)的序號
    • URG : 緊急bit, URG=1時表示緊急指針字段有效,報文中有緊急字段,應該盡快傳送。
    • ACK :確認bit,當ACK=1時,確認字段號生效
    • PSH :推送比特,接收方TCP收到PSH=1的報文段,就盡快地交付給接收應用進程,而不是在等到整個緩存都填滿了再上傳
    • RST : 復位bit ,當RST=1時,表示TCP連接中出現嚴重錯誤,必須釋放連接,然后重新建立傳輸連接。
    • SYN :同步bit, 當SYN=1時,表明這是一個連接請求或者連接接受報文
    • FIN :終止bit, 當FIN=1時,表明此報文的發(fā)送端的數據已經發(fā)送完畢,并要求釋放連接。
  • 接收窗口:16bit 用來控制對方發(fā)送的數據量,TCP連接的一端根據設置的緩存空間大小確定自己的接收窗口大小,然后通知對方確定對方的發(fā)送窗口的上線。
  • 檢驗和:16bit 檢驗和字段檢查的范圍包括首部和數據這兩部分。在對方計算檢驗和時,要在TCP報文段的前面加上12字節(jié)的偽首部。
  • 緊急指針字段 16bit, 緊急指針指出在本報文段中的緊急數據的最后一個字節(jié)的序號

TCP三次握手:

三次握手的流程基本如下:

  • 客戶端發(fā)送連接請求,報文中SYN=1 , seq=10000
  • 服務端收到請求之后會告訴客戶端收到請求,ACK=1 , 確認序列號在請求序列號上加1, ack=10001,并向客戶端請求SYN=1, seq=20000。
  • 客戶端收到請求之后告訴服務端收到請求,ACK=1,確認序列號在請求序列號上加1 seq=20001,至此TCP連接建立。

下圖示意了一個完整的TCP三次握手

圖片

TCP四次揮手:

四次揮手握手的流程基本如下:

  • 客戶端傳輸完成,發(fā)送斷開連接請求,其中FIN=1,seq=25000。
  • 服務端收到斷開請求之后,會立即發(fā)送響應,ACK=1, ack=25001,表示收到斷開連接的請求。
  • 服務端相關連接處理好之后,同樣會向客戶端發(fā)送斷開請求,FIN=1, seq =30000,
  • 客戶端等待一段時間之后收到服務端斷開連接的請求,會發(fā)送響應數據,ACK=1,seq=30001.至此TCP連接斷開。

下圖為完整的TCP四次揮手完整示意

圖片

2.TCP在面試中如何回答

請講一下對TCP的理解

回答如下:

TCP/IP協(xié)議是傳輸層面相連接的安全可靠的一個傳輸協(xié)議,三次握手機制是為了保證能建立一個安全可靠的連接。

第一次握手是由客戶端發(fā)起的,客戶端會向服務端發(fā)送一個報文,在報文里面,SYN=1.表示發(fā)起一個新連接。服務端收到此報文之后,就明白客戶端需要建立連接,此時會發(fā)送確認消息包 標志位 ACK=1。此時為了保證服務端確認客戶端能收到消息,就需要客戶端在發(fā)送收到消息的響應報文,ACK=1。通過上述的3次握手,客戶端和服務端均可以確認能收到互相之間的消息,此時安全連接建立。

四次揮手也是為了保證完全釋放TCP連接,四次揮手有傳輸完數據的一方先發(fā)起。假設客戶端數據傳輸完成,則發(fā)起斷開連接請求FIN=1 給到服務端 并狀態(tài)設置成FIN_WAIT_1, 服務端收到斷開連接請求后,會立馬發(fā)送一個響應請求, 服務端狀態(tài)變成CLOSE_WAIT。然后客戶端收到服務端的響應之后進入FIN_WAIT_2狀態(tài)。

服務端數據傳輸完成之后會發(fā)動斷開連接請求,并將狀態(tài)設置成LAST_ACK,客戶端收到請求之后發(fā)送最終確認關閉請求給服務端,進入TIMW_WAIT狀態(tài),一段時間之后客戶端連接close。服務端收到最終響應之后也會由LAST_ACK狀態(tài)變成CLOSE狀態(tài),

為何揮手需要4次

TCP有半關閉的特性,其連接的一端結束它的發(fā)送后還能接收來自另一端數據的能力。雙方都可以在數據傳輸完成之后發(fā)起斷開連接的請求,對方確認進入半關閉狀態(tài)之后,另一邊也沒有數據發(fā)送時則發(fā)送斷開連接通知,對方確認后就完全關閉TCP連接。盡量讓雙方安全完成數據傳輸。

揮手報文丟失的幾種情況

第一次揮手丟失報文

假設客戶端發(fā)起斷開連接請求后,客戶端一直沒有收到服務端的ACK響應報文,那么客戶端會觸發(fā)超時重傳機制,超過一定的重傳次數之后,直接進入close狀態(tài)

第二揮手丟失報文

服務端收到斷開連接請求,并發(fā)送了響應報文,但是客戶端一直都沒有收到報文。這種情況和第一種情況相似,客戶端會觸發(fā)超時重傳

第三次揮手丟失報文

服務端數據傳輸完成后,發(fā)送FIN斷開連接通知之后,服務端進入LAST_ACK狀態(tài),但是客戶端沒有收到請求,一直沒有響應。此時服務端會觸發(fā)超時重傳機制。

第四次揮手丟失報文

客戶端收到服務端的FIN報文之后,會發(fā)送響應報文,并進入TIMW_WAIT狀態(tài),一段時間后客戶端TCP連接關閉。但是服務端沒有收到響應報文,服務端會觸發(fā)超時重傳機制,最后close。

3. TCP的優(yōu)化

全隊列溢出優(yōu)化

當大量TCP請求進入到服務端時,服務端會將已經返回響應的請求的連接存放到半連接隊列(SYN queue),當服務端收到客戶端發(fā)來的ACK包之后,連接建立,此時會將連接從SYN-queue中取出來放到全連接隊列(accept queue),等待進程調用accept函數時將連接取出來。

這兩個隊列都有長度限制,超過長度限制之后,內核會直接丟棄鏈接或者返回RST包。Linux默認是丟棄連接, 也可以設置向客戶端發(fā)送RST復位報文,通知客戶端連接失敗。(修改tcp_abort_on_overflow的值為1).

通常情況下tcp_abort_on_overflow應該保持默認值,這樣有利于應對突發(fā)流量。

同時我們可以適當增大全連接隊列的長度限制(Tocmate中可以設置acceptCount,Nginx可以調整tcp_max_syn_backlog的值)

TCP Fast Open

當TCP連接使用完之后,客戶端再次向服務器請求建立連接,報文中可以記錄此前的Fast Open Cookie。服務器對Cookie進行校驗之后,如果Cookie有效,就可以將數據給到程序處理,相當于繞過了三次握手,可以更快的建立連接。

linux可以設置tcp_fastopen 來打開Fast Open功能。(PS: Fast Open需要客戶端和服務端同時支持才有效)

連接復用

在客戶端發(fā)起建立建立線連接時,可以復用處于TIME_WAIT狀態(tài)的連接,linux中可以設置tcp_tw_reuse參數。

傳輸過程中調節(jié)緩沖區(qū)大小

系統(tǒng)會為每個連接建立緩沖區(qū), 接收緩沖區(qū)可以根據系統(tǒng)空閑內存的大小來調節(jié)接收窗口。

發(fā)送緩沖區(qū)的調節(jié)功能是自動開啟的,接收緩沖區(qū)設置tcp_moderate_rcvbuf=1表示開啟調節(jié)功能。

高并發(fā)服務中,可以調整緩沖區(qū)的動態(tài)調整可以達到最大寬帶延積。如果服務是網絡IO型的話,可以調大tcp_mem的上限,讓TCP連接可以使用更多的系統(tǒng)內存,有利于提高并發(fā)。

總結

針對TCP的優(yōu)化,有如下的的一些建議:

  1. 服務端配置
    • 可以使用新版本的服務器
    • 適當增大TCP的全連接隊列最大限制。
    • TCP快速打開
  2. 應用程序
    • 減少數據發(fā)送,壓縮要發(fā)送的數據
    • 減少數據發(fā)送距離,部署CDN等
    • 盡量重用TCP連接
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 通信協(xié)議

    關注

    28

    文章

    975

    瀏覽量

    40858
  • 數據
    +關注

    關注

    8

    文章

    7233

    瀏覽量

    90772
  • TCP協(xié)議
    +關注

    關注

    1

    文章

    101

    瀏覽量

    12297
  • 服務端
    +關注

    關注

    0

    文章

    68

    瀏覽量

    7175
收藏 人收藏

    評論

    相關推薦

    TCP/IP協(xié)議簡介

    TCP/IP協(xié)議簡介 TCP/IP傳輸層協(xié)議概攬 傳輸控制協(xié)議 TCP 是一
    發(fā)表于 06-09 23:07 ?1534次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>簡介

    TCP/IP協(xié)議,TCP/IP協(xié)議內容和作用是什么?

    TCP/IP協(xié)議,TCP/IP協(xié)議內容和作用是什么? TCP/IP是一組協(xié)議的代名詞,它還包括
    發(fā)表于 03-19 13:55 ?5866次閱讀

    傳輸控制協(xié)議(TCP)/網絡層協(xié)議是什么意思

    傳輸控制協(xié)議(TCP)/網絡層協(xié)議是什么意思 傳輸控制協(xié)議(TCP) TCP提供的是一種可靠
    發(fā)表于 04-06 16:44 ?2761次閱讀

    tcp ip協(xié)議_什么是tcp ip協(xié)議

    什么是tcp ip協(xié)議tcp ip協(xié)議詳解,深刻講述了tcp ip協(xié)議的概念,
    發(fā)表于 05-14 16:29 ?6200次閱讀
    <b class='flag-5'>tcp</b> ip<b class='flag-5'>協(xié)議</b>_什么是<b class='flag-5'>tcp</b> ip<b class='flag-5'>協(xié)議</b>

    TCP:傳輸控制協(xié)議

    TCP-IP詳解卷2 TCP:傳輸控制協(xié)議,學習TCP很好的資料。歡迎下載。
    發(fā)表于 05-09 14:33 ?0次下載

    基于WRED協(xié)議TCP連接初始化的優(yōu)化方法

    針對數據中心中由于SYN包丟失而引起的TCP連接被延遲從而錯過任務時間限制的問題,在無需更換現有設備以及無需修改應用和TCP的前提下,提出一種基于加權隨機早期檢測(WRED)協(xié)議TCP
    發(fā)表于 11-29 14:18 ?0次下載
    基于WRED<b class='flag-5'>協(xié)議</b>的<b class='flag-5'>TCP</b>連接初始化的<b class='flag-5'>優(yōu)化</b>方法

    TCP/IP協(xié)議典型的優(yōu)化原則和方法

    嵌入式TCP/IP協(xié)議的實現通常采用Linux中的TCP/IP網絡結構層次。TCP/IP協(xié)議實現網絡層和控制層的ARP/RARP、IP、IC
    發(fā)表于 03-13 15:12 ?2181次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>典型的<b class='flag-5'>優(yōu)化</b>原則和方法

    TCP/IP協(xié)議進階課程:TCP協(xié)議(2)

    TCP/IP協(xié)議進階課程:6、TCP協(xié)議02
    的頭像 發(fā)表于 07-05 00:10 ?4433次閱讀

    tcp和udp協(xié)議的異同

    。UDP 校驗和則是包含 UDP 首部和數據在內的校驗結果。 TCP協(xié)議 TCP協(xié)議基于網絡層的 IP 協(xié)議提供的是有連接、可靠服務,是基于
    的頭像 發(fā)表于 11-12 14:45 ?4300次閱讀
    <b class='flag-5'>tcp</b>和udp<b class='flag-5'>協(xié)議</b>的異同

    Microchip TCP/IP精簡協(xié)議

    閃存 (僅 UDP)和集成 ≥ 16 KB 閃存(TCP/IP)的單片機提供更優(yōu)化的(占用的閃存和 RAM空間較小)TCP/IP 協(xié)議棧,同時依然具備
    發(fā)表于 04-01 15:36 ?18次下載
    Microchip <b class='flag-5'>TCP</b>/IP精簡<b class='flag-5'>協(xié)議</b>棧

    TCP/IP協(xié)議

    TCP/IP傳輸協(xié)議,即傳輸控制/網絡協(xié)議,也叫作網絡通訊協(xié)議。它是在網絡的使用中的最基本的通信協(xié)議T
    的頭像 發(fā)表于 11-09 13:31 ?2712次閱讀

    什么是TCP協(xié)議

    TCP(Transmission Control Protocol,傳輸控制協(xié)議),它是最常用傳輸層協(xié)議,也是最穩(wěn)定傳輸層協(xié)議,很多上層應用都是依賴于
    的頭像 發(fā)表于 02-14 10:26 ?3504次閱讀

    TCP/IP協(xié)議進階課程:6、TCP協(xié)議

    電子發(fā)燒友網站提供《TCP/IP協(xié)議進階課程:6、TCP協(xié)議.pdf》資料免費下載
    發(fā)表于 07-31 11:47 ?2次下載
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>進階課程:6、<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>

    TCP協(xié)議是什么

    在網絡通信的廣闊領域中,TCP(Transmission Control Protocol,傳輸控制協(xié)議)扮演著舉足輕重的角色。作為TCP/IP協(xié)議族中的核心
    的頭像 發(fā)表于 10-09 13:54 ?1342次閱讀

    如何優(yōu)化TCP協(xié)議的性能

    優(yōu)化TCP協(xié)議的性能可以從多個方面入手,以下是一些關鍵的策略和方法: 一、調整TCP參數 TCP窗口大小 : 重要性 :
    的頭像 發(fā)表于 01-22 09:52 ?599次閱讀
    主站蜘蛛池模板: 老湿影院免费体验区 | 成人精品福利 | 在线网站你懂 | 天天夜夜人人 | 欧美精品videosex性欧美 | 亚色影视 | 性色在线观看 | 男人j进女人j视频 | 99久久亚洲国产高清观看 | 毛片免费看网站 | 日本簧片在线观看 | 天天做天天爱夜夜爽毛片毛片 | 亚洲日本一区二区三区在线不卡 | 男女爱爱爽爽福利免费视频 | 欧美在线观看视频一区 | 丁香六月五月婷婷 | 日本一区免费在线观看 | se视频在线观看 | 丁香激情六月天 | 特级毛片免费视频观看 | 亚洲一级毛片中文字幕 | 手机看片免费永久在线观看 | 天天干天天射天天 | 欧美色图888 | 亚洲激情网站 | 天天色综合5 | 久久夜视频| 在线观看免费视频国产 | 色综合天天综合 | 黄视频免费在线看 | 女人本色高清在线观看wwwwww国产 | 九月婷婷亚洲综合在线 | 欧美特黄一区二区三区 | wwxxx日本| 欧美成网站 | 中文字幕在线看视频一区二区三区 | 六月天丁香婷婷 | 日本一区二区三区四区视频 | 人人插人人艹 | 超黄视频在线观看 | 永久免费看|