中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

TCP協(xié)議詳解-創(chuàng)新互聯(lián)

TCP協(xié)議
  • TCP報(bào)文段
  • TCP建立連接的過程(三次握手)
  • TCP拆除連接的過程(四次揮手)
  • TCP發(fā)送數(shù)據(jù)的過程(超時(shí)和重傳)
什么是TCP協(xié)議

傳輸控制協(xié)議(TCP,Transmission ControlProtocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793 定義。TCP協(xié)議建立的是一種點(diǎn)到點(diǎn)的,一對(duì)一的可靠連接,與UDP相比以犧牲效率為代價(jià)換取高可靠性的服務(wù)。

在阜新等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè),阜新網(wǎng)站建設(shè)費(fèi)用合理。
TCP報(bào)文段

TCP報(bào)文段也叫TCP分組,是TCP協(xié)議傳輸和接收數(shù)據(jù)的一種封裝格式,只有按照該格式發(fā)送的數(shù)據(jù)才可以被TCP協(xié)議通信的雙方正確的接收與解析。

在這里插入圖片描述
TCP報(bào)文的組成部分描述如下:

  • 源端口:標(biāo)識(shí)源端應(yīng)用進(jìn)程,即發(fā)送TCP分組的進(jìn)程端口號(hào)。
  • 目的端口:標(biāo)識(shí)目的端應(yīng)用進(jìn)程,即需要接收分組數(shù)據(jù)的進(jìn)程端口號(hào)。
  • 序號(hào)(seq):在SYN標(biāo)志未置1時(shí),該字段指示了用戶數(shù)據(jù)區(qū)中的第一個(gè)字節(jié)的序列號(hào);在SYN標(biāo)志置1時(shí),該字段指示的是初始發(fā)送的序列號(hào)。
  • 確認(rèn)號(hào)(ACK):用來確認(rèn)本端TCP實(shí)體已經(jīng)接收到的數(shù)據(jù),其值表示期待對(duì)端發(fā)送的下一個(gè)字節(jié)的序號(hào),實(shí)際上告訴對(duì)方,這個(gè)序號(hào)減1以前的字節(jié)已經(jīng)正確接收。例如發(fā)送確認(rèn)號(hào)為1001,則表示前1000個(gè)字節(jié)已經(jīng)被確認(rèn)接收了。
  • 數(shù)據(jù)偏移:表示以 32bit為單位的TCP分組頭的總長(zhǎng)度,用于確定用戶數(shù)據(jù)區(qū)的起始位置。
  • RST:連接復(fù)位,重新連接
  • SYN:同步序號(hào),當(dāng)SYN置1時(shí),表示建立連接,分組將發(fā)送seq為初始序列號(hào)(其值一般隨機(jī))
  • FIN:結(jié)束標(biāo)志,表示關(guān)閉連接,當(dāng)該字段置1時(shí),表示分組將要關(guān)閉連接
  • ACK:確認(rèn)號(hào)有效的標(biāo)志,置1時(shí)表示確認(rèn)號(hào)有效。
  • URG:緊急指針有效的標(biāo)志,置1時(shí)表示緊急指針有效
  • PSH:Push操作。
TCP建立連接的過程(三次握手)

在這里插入圖片描述TCP連接的建立是通過三次握手的過程完成的,下面將具體講解何為三次握手:

第一次握手

第一次握手由客戶端向服務(wù)器 發(fā)出:客戶端發(fā)送一個(gè)TCP數(shù)據(jù)報(bào),其中,TCP分組的源端口為客戶端發(fā)起通信建立的進(jìn)程端口,而目的端口為服務(wù)器處理請(qǐng)求的進(jìn)程端口號(hào),比如80端口。在表示建立連接的TCP分組中,SYN標(biāo)志位為被置1,則告知服務(wù)器發(fā)送該分組的目的是請(qǐng)求建立連接,并且當(dāng)SYN置1時(shí),該分組中的seq字段發(fā)送的是初始序列號(hào)cilent_isn,初始序列號(hào)的取值方案有多種,一般取隨機(jī)值。

第二次握手

第二次握手由服務(wù)器向客戶端發(fā)出:服務(wù)器在成功接收了客戶端第一次握手發(fā)送的分組后,首先需要解析收到的TCP分組,發(fā)現(xiàn)SYN置1后,得知這個(gè)客戶端發(fā)送分組的目的是為了建立連接,在確認(rèn)完畢分組信息后,服務(wù)器也會(huì)向客戶端發(fā)送一個(gè)TCP分組來代表第二次握手。

這個(gè)由服務(wù)器發(fā)送的TCP分組包含以下內(nèi)容:

  • 首先將代表建立連接目的的SYN標(biāo)志位同樣置1
  • 然后隨機(jī)地產(chǎn)生服務(wù)器端的初始序列號(hào) server_isn在seq字段中發(fā)送
  • 同時(shí)將代表累計(jì)確認(rèn)接收字節(jié)位數(shù)的ACK確認(rèn)號(hào)發(fā)送,該確認(rèn)號(hào)ACK的值為客戶端發(fā)送的TCP分組中的初始序列號(hào)+1,即cilent_isn+1。也就是發(fā)送服務(wù)器期望接收的下一個(gè)字節(jié)序號(hào)。
第三次握手

第三次握手由客戶端向服務(wù)器發(fā)出:客戶端在接收到服務(wù)器第二次握手的回復(fù)之后,同樣會(huì)接收來自于服務(wù)器的TCP分組并進(jìn)行解讀:由SYN為1解讀該TCP分組的目的是繼續(xù)建立連接,由分組中的ACK確認(rèn)號(hào)了解到服務(wù)器已經(jīng)成功接收了前cilent_isn個(gè)字節(jié)的內(nèi)容,并期望接收第cilent_isn+1個(gè)字節(jié)的字節(jié)序號(hào),同時(shí)累計(jì)確認(rèn)來自服務(wù)器的初始序列號(hào)。并發(fā)送最后一個(gè)TCP分組給服務(wù)器來完成第三次握手。

這個(gè)由客戶端發(fā)送給服務(wù)器的最后一個(gè)TCP分組的內(nèi)容有:

  • 代表繼續(xù)建立連接的SYN為1
  • 發(fā)送服務(wù)器期望接收的值為cilent_isn+1的序列號(hào)字段seq
  • 發(fā)送期望接收到的下一個(gè)字節(jié)的序列號(hào),也就是確認(rèn)號(hào)ACK,值為server_isn+1
為什么需要三次握手

為什么TCP的連接必須進(jìn)行三次握手,而不是一次或兩次?

為了防止建立重復(fù)的連接而損耗資源或造成其他問題

謝希仁版《計(jì)算機(jī)網(wǎng)絡(luò)》中的例子:“已失效的連接請(qǐng)求報(bào)文段”的產(chǎn)生在這樣一種情況下:client發(fā)出的第一個(gè)連接請(qǐng)求報(bào)文段并沒有丟失,而是在某個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)長(zhǎng)時(shí)間的滯留了,以致延誤到連接釋放以后的某個(gè)時(shí)間才到達(dá)server。本來這是一個(gè)早已失效的報(bào)文段。但server收到此失效的連接請(qǐng)求報(bào)文段后,就誤認(rèn)為是client再次發(fā)出的一個(gè)新的連接請(qǐng)求。于是就向client發(fā)出確認(rèn)報(bào)文段,同意建立連接。假設(shè)不采用“三次握手”,那么只要server發(fā)出確認(rèn),新的連接就建立了。由于現(xiàn)在client并沒有發(fā)出建立連接的請(qǐng)求,因此不會(huì)理睬server的確認(rèn),也不會(huì)向server發(fā)送數(shù)據(jù)。但server卻以為新的運(yùn)輸連接已經(jīng)建立,并一直等待client發(fā)來數(shù)據(jù)。這樣,server的很多資源就白白浪費(fèi)掉了。采用“三次握手”的辦法可以防止上述現(xiàn)象發(fā)生。例如剛才那種情況,client不會(huì)向server的確認(rèn)發(fā)出確認(rèn)。server由于收不到確認(rèn),就知道client并沒有要求建立連接?!?/p>

也就是說,假如只采用兩次握手,會(huì)讓因網(wǎng)絡(luò)錯(cuò)誤延時(shí)到達(dá)的客戶端連接請(qǐng)求被服務(wù)器接收時(shí),服務(wù)器無從得知這是一個(gè)失效的請(qǐng)求而與客戶端建立一個(gè)無效的連接。在三次握手機(jī)制的情形下,這樣無效的請(qǐng)求分組會(huì)被返回給客戶端來確認(rèn),而客戶端不在等待該由該分組產(chǎn)生第三次握手的狀態(tài),服務(wù)器得不到客戶端的回應(yīng),等待超時(shí)后會(huì)取消本次連接的建立。從而避免了錯(cuò)誤連接的建立

TCP拆除連接的過程(四次揮手)

四次握手的連接關(guān)閉過程與三次握手相類似:
在這里插入圖片描述四次揮手的過程簡(jiǎn)述如下:

第一次揮手: 客戶端因?yàn)椴辉儆袛?shù)據(jù)發(fā)送給服務(wù)器,所以向服務(wù)器發(fā)送FIN報(bào)文表示想要關(guān)閉連接,不會(huì)再發(fā)送數(shù)據(jù)了。同時(shí)包含客戶端的報(bào)文序號(hào)M

第二次揮手: 服務(wù)器在接收了來自客戶端的FIN報(bào)文后,得知客戶端不再發(fā)送數(shù)據(jù),將要關(guān)閉連接。但是,此時(shí)服務(wù)器端獲取還有部分?jǐn)?shù)據(jù)沒有回傳給客戶端,服務(wù)器可能還要向客戶端發(fā)送一部分?jǐn)?shù)據(jù)才能關(guān)閉連接。所以服務(wù)器不會(huì)立馬同意關(guān)閉連接,而是先發(fā)送表示確認(rèn)信息的ACK報(bào)文,該ACK報(bào)文中包含了值為M+1的確認(rèn)號(hào)。

第三次揮手: 在服務(wù)器端完成向客戶端傳送最后的數(shù)據(jù)后,此時(shí)不再有數(shù)據(jù)需要傳輸了。那么服務(wù)器也準(zhǔn)備關(guān)閉連接,所以向客戶端發(fā)送表示關(guān)閉連接的FIN報(bào)文,報(bào)文中包含了服務(wù)器端的序號(hào)N

第四次揮手: 在客戶端也收到了服務(wù)器端發(fā)送的FIN報(bào)文之后,得知服務(wù)器端也可以關(guān)閉連接了,此時(shí)再向服務(wù)器發(fā)送最后一次確認(rèn)報(bào)文ACK,使連接成功關(guān)閉,ACK報(bào)文中的確認(rèn)號(hào)為N+1

為什么需要四次揮手?

為什么需要中間兩次揮手?
為什么需要其中的第二次和第三次的原因其實(shí)已經(jīng)提到,假如在服務(wù)器收到客戶端的第一次揮手就準(zhǔn)備關(guān)閉連接發(fā)送FIN報(bào)文,不再發(fā)送數(shù)據(jù)。那么只是客戶端單方面提出了中斷通信的請(qǐng)求而導(dǎo)致連接關(guān)閉,使服務(wù)器中要發(fā)往客戶端的最后數(shù)據(jù)不能正常傳送,會(huì)導(dǎo)致通信不完整。
為什么需要第四次揮手?
第四次揮手同樣是用來解決一個(gè)因網(wǎng)絡(luò)時(shí)延滯后到達(dá)的失效請(qǐng)求的問題。
請(qǐng)分析這樣一個(gè)情形:即假如客戶端一次發(fā)送了兩個(gè)關(guān)閉請(qǐng)求,其中一個(gè)滯后了很久才到達(dá),此時(shí)它們當(dāng)時(shí)建立的連接已經(jīng)被第一個(gè)請(qǐng)求關(guān)閉。而服務(wù)器又再次和客戶端建立了新的連接,并且此時(shí)不需要關(guān)閉,但是這個(gè)失效的關(guān)閉請(qǐng)求滯后到達(dá)了。

  • 假如沒有最后一次揮手,那么服務(wù)器以為客戶端要關(guān)閉連接,一次發(fā)送ACK和FIN報(bào)文后連接就被錯(cuò)誤關(guān)閉了,這樣顯然是存在問題的。

  • 假如有最后一次握手,服務(wù)器在收到失效報(bào)文后仍然會(huì)發(fā)送ACK和FIN報(bào)文給客戶端來確認(rèn)客戶端是否真的要關(guān)閉連接。而客戶端此時(shí)的狀態(tài)并不是等待關(guān)閉連接的狀態(tài),所以不會(huì)給服務(wù)器發(fā)送ACK報(bào)文進(jìn)行關(guān)閉連接的確認(rèn)回復(fù),服務(wù)器在等待一段時(shí)間超時(shí)后會(huì)取消連接的關(guān)閉,從而不會(huì)因?yàn)槭У膱?bào)文讓連接錯(cuò)誤地關(guān)閉。

TCP發(fā)送數(shù)據(jù)的過程(超時(shí)和重傳)

在這里插入圖片描述TCP數(shù)據(jù)的發(fā)送過程也與建立連接的過程相類似:
發(fā)送數(shù)據(jù)的過程采用了累計(jì)確認(rèn)的機(jī)制,其中ACK表示的是累積確認(rèn)的字節(jié)序號(hào)。
如上圖,發(fā)送的TCP分組中可以包含數(shù)據(jù),也可以不包含數(shù)據(jù),但是一定需要包含seq序號(hào)和確認(rèn)號(hào)。seq序號(hào)表示數(shù)據(jù)區(qū)中第一個(gè)字節(jié)的序號(hào),而回傳的ack確認(rèn)號(hào)的值為seq的值加上發(fā)送的數(shù)據(jù)字節(jié)數(shù)。表示這些字節(jié)的數(shù)據(jù)已經(jīng)被確認(rèn)接受了,并表達(dá)了期望接收的下一個(gè)字節(jié)序號(hào)位置。

在這里插入圖片描述
在這里插入圖片描述發(fā)送TCP分組的一方會(huì)在發(fā)送分組時(shí)設(shè)置超時(shí)時(shí)間并開啟計(jì)時(shí)器,當(dāng)在超時(shí)時(shí)間內(nèi)未收到該分組的ACK回復(fù)時(shí),會(huì)認(rèn)為該分組丟失,并重發(fā)該分組。假如之前的分組被連續(xù)發(fā)送,而該分組及之后的分組已經(jīng)被接收端確認(rèn),那么本次重復(fù)分組收到的ACK是累計(jì)確認(rèn)的字節(jié)序號(hào)值,而非該分組的seq+數(shù)據(jù)字節(jié)數(shù),如上圖右側(cè)所示。

感謝閱讀,求關(guān)注收藏,等期末考試結(jié)束后會(huì)再出關(guān)于TCP流量控制和擁塞控制等方面更加詳細(xì)的內(nèi)容。超鏈接寫好后會(huì)附在下面。
本文參考了哈工大mooc計(jì)算機(jī)網(wǎng)絡(luò)的內(nèi)容

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:TCP協(xié)議詳解-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.rwnh.cn/article26/jdhjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站品牌網(wǎng)站制作、網(wǎng)站改版微信公眾號(hào)、App設(shè)計(jì)、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
正宁县| 南宁市| 平湖市| 扶沟县| 修武县| 呼图壁县| 乡宁县| 通辽市| 水富县| 治多县| 平山县| 额济纳旗| 阿图什市| 库车县| 托克托县| 新田县| 巩义市| 五大连池市| 金昌市| 沈阳市| 缙云县| 建始县| 浦北县| 泽州县| 徐闻县| 巫山县| 龙里县| 富裕县| 定远县| 社会| 新化县| 武宣县| 保定市| 象州县| 鱼台县| 密云县| 牟定县| 边坝县| 石首市| 武宣县| 伊通|