TCP如何建立/拆除連接的方法
發(fā)布時(shí)間:2012-10-25 16:23:02 作者:佚名
我要評(píng)論

本文詳細(xì)來(lái)探討TCP建立拆除連接的知識(shí)

TCP如何建立連接
圖 1TCP 首部格式中SYN 標(biāo)志位僅使用在建立TCP 連接的過(guò)程中,TCP 建立連接的過(guò)程被稱(chēng)為“三路握手“連接,即一般通信雙方共需要傳輸三個(gè)數(shù)據(jù)包方能成功建立一個(gè)TCP 連接。我們通常將建立連接作為使用TCP 協(xié)議理所當(dāng)然的前導(dǎo)過(guò)程,但很少去質(zhì)疑這樣一個(gè)建立連接過(guò)程的必要性。
實(shí)際上,使用TCP 協(xié)議必須首先建立一個(gè)連接是保證TCP 協(xié)議可靠性數(shù)據(jù)傳輸?shù)幕厩疤幔ó?dāng)然由于TCP 協(xié)議是一個(gè)有狀態(tài)協(xié)議,必須通過(guò)某種機(jī)制進(jìn)行通信雙方狀態(tài)上的同步,而建立連接就是這樣一種機(jī)制)。
實(shí)際上,使用TCP 協(xié)議必須首先建立一個(gè)連接是保證TCP 協(xié)議可靠性數(shù)據(jù)傳輸?shù)幕厩疤幔ó?dāng)然由于TCP 協(xié)議是一個(gè)有狀態(tài)協(xié)議,必須通過(guò)某種機(jī)制進(jìn)行通信雙方狀態(tài)上的同步,而建立連接就是這樣一種機(jī)制)。
至于為何需要三個(gè)數(shù)據(jù)包,原因是建立連接過(guò)程中信息的交換必須至少使用三個(gè)數(shù)據(jù)包,從下文的分析來(lái)看,建立連接最多需要使用四個(gè)數(shù)據(jù)包。需要再次提到的是:SYN 標(biāo)志位只是用在建立連接的三個(gè)(或者四個(gè))數(shù)據(jù)包中,一旦連接建立完成后,之后發(fā)送的所有數(shù)據(jù)包不可設(shè)置SYN 標(biāo)志位。單從保證數(shù)據(jù)可靠性傳輸角度而言,TCP 協(xié)議需要在正式數(shù)據(jù)傳輸之前首先進(jìn)行某些信息的交換,這個(gè)信息即是雙方的初始序列號(hào)(另外的一些信息包括最大報(bào)文長(zhǎng)度通報(bào)等)。
誠(chéng)如前文所述,序列號(hào)的使用對(duì)于 TCP 協(xié)議而言至關(guān)重要,在正式數(shù)據(jù)傳輸之前,雙方必須得到對(duì)方的初始字節(jié)數(shù)據(jù)的編號(hào),這樣才有可能對(duì)其所接收數(shù)據(jù)的合法性進(jìn)行判斷,才有其它的對(duì)數(shù)據(jù)重復(fù),數(shù)據(jù)重疊等一系列問(wèn)題的進(jìn)一步判別和解決。故交換各自的初始序列號(hào)必須在正式數(shù)據(jù)傳輸之前完成,我們美其名曰這個(gè)過(guò)程為連接建立過(guò)程。至于雙方TCP 協(xié)議各自狀態(tài)的更新主要是軟件設(shè)計(jì)上可靠性保證的一個(gè)輔助,并非這個(gè)所謂的建立過(guò)程所主要關(guān)注的問(wèn)題。
初始序列號(hào)的交換從最直接的角度來(lái)說(shuō)需要四個(gè)數(shù)據(jù)包:
1> 主機(jī) A 向主機(jī)B 發(fā)送其初始序列號(hào)。
2> 主機(jī) B 向主機(jī)A 確認(rèn)其發(fā)送的初始序列號(hào)。
3> 主機(jī) B 向主機(jī)A 發(fā)送其初始序列號(hào)。
4> 主機(jī) A 向主機(jī)B 確認(rèn)其發(fā)送的初始序列號(hào)。
我們將<2><3>兩步合為一步,即B 向A 確認(rèn)其(A 之前發(fā)送的)初始序列號(hào)的同時(shí)發(fā)送其(即B 自己的)初始序列號(hào)。所謂確認(rèn)數(shù)據(jù)包即將數(shù)據(jù)包的ACK 標(biāo)志位設(shè)置為1 即可。注意這三個(gè)(或四個(gè))數(shù)據(jù)包中SYN 標(biāo)志位設(shè)置為1,而且SYN 標(biāo)志位也僅在這三個(gè)(或四個(gè))數(shù)據(jù)包中被設(shè)置為1。
此處有一個(gè)問(wèn)題:即A,B 主機(jī)在通報(bào)各自初始序列號(hào)的同時(shí)能否傳輸一些正常數(shù)據(jù),原理上可以(TCP 協(xié)議規(guī)范上并沒(méi)有說(shuō)不可以),但是大多數(shù)實(shí)現(xiàn)在通報(bào)初始序列號(hào)時(shí)都不附帶正常數(shù)據(jù),而是將其作為一個(gè)單獨(dú)的過(guò)程,由此正式確立建立連接一說(shuō)。
TCP如何拆除連接
當(dāng)前連接的雙方都可以發(fā)起拆除連接操作,但簡(jiǎn)單的拆除連接可能會(huì)造成數(shù)據(jù)丟失。為此,TCP采用四次握手的方式拆除連接。
四次握手與三次握手類(lèi)似:
①1發(fā)拆除請(qǐng)求
②2收到請(qǐng)求,并發(fā)確認(rèn),1收到該確認(rèn)后,不再發(fā)送數(shù)據(jù),但任然會(huì)接收數(shù)據(jù)(半連接)
③2發(fā)拆除請(qǐng)求
④1收到請(qǐng)求,并確認(rèn),到此拆除完成
相關(guān)文章
- 本文將詳細(xì)介紹TCP為什么需要進(jìn)行三次握手,需要深入了解的朋友可以參考下2012-11-19
- 有internet協(xié)議版本(TCP/IPv4)及internet協(xié)議版本(TCP/IPv6),這些稱(chēng)之為傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一個(gè)工業(yè)標(biāo)準(zhǔn)的協(xié)議集,它是為廣域網(wǎng)(WAN)設(shè)計(jì)的2013-06-04
- 這篇文章主要為大家介紹了什么是tcp?tcp協(xié)議的基礎(chǔ)知識(shí)有哪些?與udp的區(qū)別在哪里?以下將詳細(xì)介紹tcp的基礎(chǔ)知識(shí),需要的朋友可以參考下2014-09-16
TCP協(xié)議的一些認(rèn)識(shí)及實(shí)踐知識(shí)簡(jiǎn)介
本文來(lái)探討一下TCP協(xié)議方面的一些認(rèn)識(shí)及實(shí)踐2012-10-25- 這篇文章主要為大家介紹了如何解決TCP窗口大小的調(diào)節(jié)與擁塞控制的辦法,有圖有步驟,很詳細(xì),需要的朋友可以參考下2014-09-17
- 這篇文章主要介紹了圖解TCP通信三次握手和四次分手,對(duì)正在學(xué)習(xí)TPC通信的同學(xué)會(huì)有些幫助,需要的朋友可以參考下2014-09-24
- 最常見(jiàn)的是TCP和UDP端口,這是用來(lái)在互聯(lián)網(wǎng)上的計(jì)算機(jī)之間的數(shù)據(jù)交換,3688/udp端口使用服務(wù)類(lèi)型簡(jiǎn)單的推- S- S簡(jiǎn)單的推協(xié)議,基礎(chǔ)概念不是很了解的朋友可以參考下本文2013-11-20
網(wǎng)絡(luò)協(xié)議 TCP三次握手與四次斷開(kāi)的詳細(xì)觀察
這篇文章主要為大家介紹了網(wǎng)絡(luò)協(xié)議之tcp協(xié)議,TCP三次握手與四次斷開(kāi)是怎么的一種情況呢,下面我們來(lái)看看觀察TCP三次握手與四次斷開(kāi),需要的朋友可以參考下2015-04-29- 這篇文章主要介紹了圖解TCP/IP協(xié)議,幫助大家輕松學(xué)會(huì)TCP/IP協(xié)議,需要的朋友可以參考下2015-12-16
TCP/IP協(xié)議棧與數(shù)據(jù)包封裝圖文教程
TCP/IP網(wǎng)絡(luò)協(xié)議即網(wǎng)絡(luò)中(包括互聯(lián)網(wǎng))傳遞、管理信息的一些規(guī)范,TCP/IP協(xié)議是網(wǎng)絡(luò)的基礎(chǔ),是Internet的語(yǔ)言,可以說(shuō)互聯(lián)網(wǎng)的發(fā)展全靠TCP/IP2016-07-04