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

關(guān)于TCP全連接隊列和半連接隊列

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
常見的連接服務(wù)異常有很多,如Connection refused等問題。通過對這些知識的理解有助于結(jié)合一些排查手段有效地解決一些生產(chǎn)上出現(xiàn)的連接服務(wù)異常問題。下面將對這些進行討論分析。

在TCP的三次握手中存在著兩個隊列、backlog、tcp_abort_on_overflow等概念知識點。常見的連接服務(wù)異常有很多,如Connection refused等問題。通過對這些知識的理解有助于結(jié)合一些排查手段有效地解決一些生產(chǎn)上出現(xiàn)的連接服務(wù)異常問題。下面將對這些進行討論分析。

一、TCP三次握手

握手過程:

  • 第一次:client發(fā)送syn到server進行握手
  • 第二次:server收到syn后回復(fù)syn+ack給client同時服務(wù)端將相關(guān)信息放在半連接隊列中。
  • 第三次:client收到syn+ack后回復(fù)server一個ack,表示收到了server的syn+ack,server收到client的ack后將更具不同的情況進行不同的處理(這與tcp_abort_on_overflow參數(shù)和accept queue全連接隊列是否已滿有關(guān))

三次握手中Socket狀態(tài)枚舉:

  • LISTEN:偵聽來自遠方TCP端口的連接請求
  • SYN-SENT:在發(fā)送連接請求后等待匹配的連接請求
  • SYN-RECEIVED:在收到和發(fā)送一個連接請求后等待對連接請求的確認(rèn)
  • ESTABLISHED:代表一個打開的連接,數(shù)據(jù)可以傳送給用戶

二、全連接隊列和半連接隊列

[[276803]]

在握手階段存在兩個隊列:

  • 全連接隊列(accept queue)
  • 半連接隊列(syns queue)

解析:當(dāng)?shù)谝淮挝帐?client客戶端的SYN到達server服務(wù)端時)TCP會在未完成連接隊列中創(chuàng)建一個新項,這一項會一直保留在未完成連接隊列中直到第三次握手(客戶對服務(wù)器SYN的ACK)結(jié)束為止。如果三次握手全部正常完成,該項則會從未完成連接隊列移到已完成連接隊列的隊尾。當(dāng)進程調(diào)用accept()時,已完成連接隊列中的隊頭項將返回給進程。

三、第三次握手時server具體的處理方式

關(guān)于TCP全連接隊列和半連接隊列

場景1:當(dāng)全連接未滿

當(dāng)server收到client的ack后會先判斷全連接隊列accept queue是否已滿,如果隊列未滿則從半連接隊列拿出相關(guān)信息存放入全連接隊列中,之后服務(wù)端accept()處理此請求。

場景2:當(dāng)全連接已滿且tcp_abort_on_overflow = 0

server會扔掉client 發(fā)過來的ack。之后隔一段時間server會重發(fā)握手第二步的syn+ack包給client,如果客戶端連接一直排隊不上等待超時則會報超時異常。

場景3:全連接已滿且tcp_abort_on_overflow = 1時

server會發(fā)送一個reset包給client,表示廢除這個握手過程和這個連接(客戶端會報connection reset by peer異常)

四、關(guān)于backlog

backlog表示全連接隊列(已連接未處理隊列)的大小,該值默認(rèn)為50。

關(guān)于TCP全連接隊列和半連接隊列

當(dāng)全連接隊列滿時則會根據(jù)tcp_abort_on_overflow的值做出相應(yīng)的處理方式

  1. //Linux查看tcp_abort_on_overflow值 
  2. cat /proc/sys/net/ipv4/tcp_abort_on_overflow 

[[276804]]

五、總結(jié)

TCP存在兩個隊列(全連接隊列和半連接隊列),第一次握手后TCP會產(chǎn)生的新項并先存放到半連接隊列中。當(dāng)完成三次握手之后項會移動到全連接隊列里(全連接隊列默認(rèn)大小backlog值是50)。如果當(dāng)全連接隊列滿了server則會根據(jù)tcp_abort_on_overflow 的值來做對應(yīng)的處理,,值為0則丟棄當(dāng)前客戶端的ack,值為1則廢棄當(dāng)前握手過程與連接。

 

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2021-10-27 18:36:50

TCP 隊列全連接

2015-04-23 18:46:38

TCPTCP協(xié)議

2019-11-17 22:11:11

TCPSYN隊列Accept隊列

2020-10-14 14:31:37

LinuxTCP連接

2018-07-05 14:25:01

TCP握手原理

2011-01-21 12:12:54

sendmail

2011-03-28 14:04:10

SQL左連接右連接

2023-04-04 12:24:10

2023-04-27 07:43:22

RabbitMQ重試隊列死信隊列

2019-01-07 12:02:02

TCP長連接Java

2022-10-17 10:41:00

2022-12-02 13:49:41

2015-08-21 13:50:49

Oracle連接

2015-07-22 17:16:53

Oracle表連接

2015-03-25 12:09:18

TCP網(wǎng)絡(luò)協(xié)議TCP建立連接

2023-12-05 13:46:09

解密協(xié)程線程隊列

2021-03-01 23:31:48

隊列實現(xiàn)棧存儲

2024-12-25 09:32:06

2010-07-07 10:45:22

TCP UDP協(xié)議

2010-06-13 15:37:24

TCP協(xié)議
點贊
收藏

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