-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
TCP連接(tcp連接三次握手)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于TCP連接的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、如何使用 TCP 連接進(jìn)行通信
首先是建立可靠的數(shù)據(jù)管道
TCP 為 HTTP 提供了一條可靠的比特傳輸管道,從 TCP 連接一端填入的字節(jié)會(huì)從另一端以原有的順序、正確地傳輸。
然后在管道中傳輸 TCP 流
TCP 的數(shù)據(jù)是通過(guò)名為 IP 分組的小數(shù)據(jù)塊來(lái)發(fā)送的。
HTTP 在傳輸一條報(bào)文時(shí),會(huì)以流的形式將報(bào)文數(shù)據(jù)的內(nèi)容通過(guò)一條打開(kāi)的 TCP 連接按序傳輸,TCP 收到數(shù)據(jù)后,會(huì)將數(shù)據(jù)流砍成被稱為段的小數(shù)據(jù)塊,并將段封裝在 IP 分組中,通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸。
最后關(guān)閉 TCP 連接
在客戶端和服務(wù)器端之間完成傳輸交互后,請(qǐng)求發(fā)起方,比如瀏覽器會(huì)關(guān)閉該 TCP 連接。
二、tcp長(zhǎng)連接保持多久
tcp長(zhǎng)連接保持兩個(gè)小時(shí)。根據(jù)查詢相關(guān)公開(kāi)信息顯示,tcp長(zhǎng)連接在接通之后,會(huì)在一定的時(shí)間內(nèi)保持連接,默認(rèn)時(shí)間為兩個(gè)小時(shí)。兩個(gè)小時(shí)之后,如果服務(wù)器沒(méi)有收到一個(gè)響應(yīng),它就會(huì)判定客戶主機(jī)已經(jīng)關(guān)閉,tcp會(huì)終止連接。
三、TCP的連接建立——三報(bào)文握手
三報(bào)文握手(three way handshake)以前都稱為三次握手,其實(shí)這是一次握手過(guò)程中交換中交換了三個(gè)報(bào)文,而并不是進(jìn)行了三次握手。handshake使用的是單數(shù)并不是復(fù)數(shù),表明只是一次握手。
1.SYN_SENT
SYN_SENT表示請(qǐng)求連接,當(dāng)你要訪問(wèn)其它的計(jì)算機(jī)的服務(wù)時(shí)首先要發(fā)個(gè) 同步信號(hào) 給該端口,此時(shí)狀態(tài)為SYN_SENT,如果連接成功了就變?yōu)?ESTABLISHED ,此時(shí)SYN_SENT狀態(tài)非常短暫。
2.ACK
ACK (Acknowledgement)即是確認(rèn)字符,在數(shù)據(jù)通信中,接收站發(fā)給發(fā)送站的一種傳輸類 控制字符 。表示發(fā)來(lái)的數(shù)據(jù)已確認(rèn)接收無(wú)誤。
3.SYN_RCVD(同步收到)
4.ESTAB_LISHED(已建立連接)
5.傳輸控制模塊TCB
傳輸控制模塊TCB(Transmission Control Block)存儲(chǔ)了每一個(gè)連接中的一些重要信息。
一開(kāi)始,B的PCP服務(wù)器進(jìn)程先創(chuàng)建 傳輸控制模塊TCB ,準(zhǔn)備接受客戶進(jìn)程的連接請(qǐng)求。然后服務(wù)器進(jìn)程就處于 LISTEN (收聽(tīng))狀態(tài),等待客戶的連接請(qǐng)求。
1.SYN=1,seq=x
A的TCP客戶進(jìn)程也是首先創(chuàng)建 傳輸控制模塊TCB ,然后,在打算建立TCP連接時(shí),向B發(fā)出請(qǐng)求報(bào)文段,這時(shí)首部中的同步位 SYN=1 ,同時(shí)選擇一個(gè)初始序號(hào) seq=x 。即 SYN=1,seq=x 。TCP規(guī)定,SYN報(bào)文段(即SYN=1的報(bào)文段)不能攜帶數(shù)據(jù),但要 消耗一個(gè)序號(hào) 。這時(shí),TCP客戶進(jìn)程進(jìn)入 SYN_SENT (同步已發(fā)送)狀態(tài)。
2.SYN=1,ACK=1,seq=y,ack=x+1
B收到連接請(qǐng)求報(bào)文段后,如同意建立連接,則向A發(fā)送確認(rèn)。在確認(rèn)報(bào)文段中應(yīng)把SYN位和ACK位都置1,確認(rèn)號(hào)是 ack=x+1 ,同時(shí)也為自己選擇一個(gè)初始號(hào) seq=y 。即 SYN=1,ACK=1,seq=y,ack=x+1
請(qǐng)注意:這個(gè)報(bào)文段也不能攜帶數(shù)據(jù),但同時(shí) 要消耗一個(gè)序號(hào) 。這時(shí)TCP服務(wù)器進(jìn)程進(jìn)入 SYN_RCVD (同步收到)狀態(tài)。
3.ACK=1,seq=x+1,ack=y+1
TCP客戶進(jìn)程收到B的確認(rèn)后,還要向B給出確認(rèn)。確認(rèn)報(bào)文段的ACK置1,確認(rèn)號(hào) ack=y+1 ,而自己的序號(hào) seq=x+1 。即 ACK=1,seq=x+1,ack=y+1 TCP的標(biāo)準(zhǔn)規(guī)定,ACK報(bào)文段可以攜帶數(shù)據(jù)。但 如果不攜帶數(shù)據(jù)則不消耗序號(hào) ,在這中情況下,下一個(gè)數(shù)據(jù)報(bào)文段仍然是 seq=x+1 。這時(shí)。TCP連接已經(jīng)建立,A進(jìn)入 ESTAB_LISHED (已建立連接)狀態(tài)。
4 .當(dāng)B收到A的確認(rèn)后,也進(jìn)入 ESTAB_LISHED 狀態(tài)。
四、理解tcp鏈接
一般都說(shuō)TCP 是長(zhǎng)連接 ,但這個(gè)連接是 真實(shí)存在的嗎。不是的。
這個(gè)連接只是操作系統(tǒng)維護(hù)的一個(gè)狀態(tài)機(jī)。通過(guò)兩臺(tái)計(jì)算機(jī)直接通過(guò)報(bào)文交互來(lái)改變這個(gè)狀態(tài)值。并不是正真的有真實(shí)的鏈路存在。
每次兩臺(tái)機(jī)器直接的通信 中間通過(guò)的節(jié)點(diǎn)可能都是不一樣的,是動(dòng)態(tài)選擇的。
所以 ,
服務(wù)器端 TCP 連接的數(shù)量 受到內(nèi)存大小的影響,每建立一個(gè)連接都要分配一塊內(nèi)存區(qū)域來(lái)維護(hù)這個(gè)‘連接’。
以上就是關(guān)于TCP連接相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
scratch怎么復(fù)制(scratch怎么復(fù)制代碼)
廣東溫泉小鎮(zhèn)民宿景觀設(shè)計(jì)(廣東溫泉小鎮(zhèn)民宿景觀設(shè)計(jì)理念)
日照喜來(lái)登酒店景觀設(shè)計(jì)(日照喜來(lái)登酒店照片)