天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

TCP協(xié)議詳解(理論篇)

發(fā)布時(shí)間:2016-10-30 15:32

  本文關(guān)鍵詞:tcp協(xié)議,由筆耕文化傳播整理發(fā)布。


> 網(wǎng)絡(luò)協(xié)議 > 正文 tcp協(xié)議詳解(理論篇) 2012-08-20            作者:陳立龍    我要投稿


tcp協(xié)議詳解(理論篇)

 

1.    與UDP不同的是,TCP提供了一種面向連接的、可靠的字節(jié)流服務(wù)。面向連接比較好理解,就是連接雙方在通信前需要預(yù)先建立一條連接,這猶如實(shí)際生活中的打電話(huà)。助于可靠性,tcp協(xié)議中涉及了諸多規(guī)則來(lái)保障通信鏈路的可靠性,總結(jié)起來(lái),主要有以下幾點(diǎn):

      (1)應(yīng)用數(shù)據(jù)分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這部分是通過(guò)“MSS”(最大數(shù)據(jù)包長(zhǎng)度)選項(xiàng)來(lái)控制的,通常這種機(jī)制也被稱(chēng)為一種協(xié)商機(jī)制,MSS規(guī)定了TCP傳往另一端的最大數(shù)據(jù)塊的長(zhǎng)度。值得注意的是,MSS只能出現(xiàn)在SYN報(bào)文段中,若一方不接收來(lái)自另一方的MSS值,則MSS就定為536字節(jié)。一般來(lái)講,在不出現(xiàn)分段的情況下,MSS值還是越大越好,這樣可以提高網(wǎng)絡(luò)的利用率。

      (2)重傳機(jī)制。設(shè)置定時(shí)器,等待確認(rèn)包。

      (3)對(duì)首部和數(shù)據(jù)進(jìn)行校驗(yàn)。

      (4)TCP對(duì)收到的數(shù)據(jù)進(jìn)行排序,然后交給應(yīng)用層。

      (5)TCP的接收端丟棄重復(fù)的數(shù)據(jù)。

      (6)TCP還提供流量控制。(通過(guò)每一端聲明的窗口大小來(lái)提供的)

2. TCP包的首部:    


TCP協(xié)議詳解(理論篇)


 

(1)      若不計(jì)選項(xiàng)字段,TCP的首部占20個(gè)字節(jié)。

(2)      源端口號(hào)以及目的端口號(hào)用于尋找發(fā)端和接收端的進(jìn)程,一般來(lái)講,通過(guò)端口號(hào)和IP地址,可以唯一確定一個(gè)TCP連接,在網(wǎng)絡(luò)編程中,通常被稱(chēng)為一個(gè)socket接口。

(3)      序號(hào)是用來(lái)標(biāo)識(shí)從TCP發(fā)端向TCP接收端發(fā)送的數(shù)據(jù)字節(jié)流。

(4)      確認(rèn)序號(hào)包含發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號(hào),因此,確認(rèn)序號(hào)應(yīng)該是上次已經(jīng)成功收到數(shù)據(jù)字節(jié)序號(hào)加1.

(5)      首部長(zhǎng)度指出了TCP首部的長(zhǎng)度值,若不存在選項(xiàng),則這個(gè)值為20字節(jié)。

(6)      標(biāo)志位(flag):

                URG: 緊急指針有效

                ACK:確認(rèn)序號(hào)有效

                PSH:接收方應(yīng)盡快將這個(gè)報(bào)文段交給應(yīng)用層

                RST:重建連接

                SYN:同步序號(hào)用來(lái)發(fā)起一個(gè)連接

                FIN: 發(fā)端完成發(fā)送任務(wù)(主動(dòng)關(guān)閉)    
                    

【解釋】

◆     TCP提供解決方式是為了使一端告訴另外一端某些“緊急數(shù)據(jù)”已經(jīng)放置在普通的數(shù)據(jù)流中,讓接收端對(duì)緊急數(shù)據(jù)做特別處理。此時(shí),URG位被置為1,并且16位的緊急數(shù)據(jù)被置為一個(gè)正的偏移量,通過(guò)此偏移量與TCP首部中的序號(hào)字段相加,可以得出緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào),常見(jiàn)的應(yīng)用有傳輸中斷鍵(在通過(guò)telnet連接過(guò)程中)。

◆     RST: 復(fù)位字段被用于當(dāng)一個(gè)報(bào)文發(fā)送到某個(gè)socket接口而出現(xiàn)錯(cuò)誤時(shí),TCP則會(huì)發(fā)出復(fù)位報(bào)文段。常見(jiàn)出現(xiàn)的情況有以下幾種:    

發(fā)送到不存在的端口的連接請(qǐng)求:此時(shí)對(duì)方的目的端口并沒(méi)有偵聽(tīng),對(duì)于UDP,將會(huì)發(fā)出ICMP不可達(dá)的   錯(cuò)誤信息,而對(duì)于TCP,將會(huì)發(fā)出設(shè)置RST復(fù)位標(biāo)志位的數(shù)據(jù)報(bào)。異常終止一個(gè)連接:正常情況下,通過(guò)發(fā)送FIN去正常關(guān)閉一個(gè)TCP連接,但也有可能通過(guò)發(fā)送一個(gè)復(fù)位   報(bào)文段去中途釋放掉一個(gè)連接。在socketAPI中通過(guò)設(shè)置socket選 項(xiàng)SO_LINGER去關(guān)閉這種異常關(guān)閉的情況。

 

3. TCP的連接與終止過(guò)程:


TCP協(xié)議詳解(理論篇)


 

(1)  三次握手:

         建立一個(gè)TCP連接,必須經(jīng)歷三次握手過(guò)程,其中發(fā)送第一個(gè)SYN的一端將執(zhí)行主動(dòng)打開(kāi),接收這個(gè)SYN并發(fā)回下一個(gè)SYN的另一端執(zhí)行被動(dòng)打開(kāi)。

(2)  四次釋放:

         要釋放一個(gè)TCP連接,需要通過(guò)四次握手過(guò)程,這是由TCP的半關(guān)閉特性造成的,因?yàn)門(mén)CP連接時(shí)全雙工的,因此,需要TCP兩端要單獨(dú)執(zhí)行關(guān)閉。值得注意的是,,主動(dòng)關(guān)閉的一端在發(fā)送FIN之后,依然還能正常接收對(duì)方的數(shù)據(jù),只是通知對(duì)方它已經(jīng)沒(méi)有數(shù)據(jù)需要發(fā)送了,同理,被動(dòng)關(guān)閉的一端在收到FIN之后,仍然可以發(fā)送數(shù)據(jù),直到它自身同樣發(fā)出FIN之后,才停止發(fā)送數(shù)據(jù)。
 

(3)  TCP連接的超時(shí)問(wèn)題:

         完成一個(gè)TCP連接,中間涉及到一個(gè)超時(shí)的問(wèn)題,大多數(shù)伯克利系統(tǒng)的超時(shí)時(shí)限為75s,Solaris9的超時(shí)時(shí)限為240s,因此,一般認(rèn)為是在75-240之間。

【引申】在具體的實(shí)現(xiàn)中,如何由用戶(hù)自己去完成設(shè)置socket連接超時(shí)時(shí)間?

【解決方法】目前實(shí)現(xiàn)socket超時(shí)連接主要是通過(guò)select來(lái)完成的。具體步驟如下:

    ◆     建立socket

    ◆     將socket設(shè)置為非阻塞模式(若是阻塞模式,那么時(shí)間設(shè)置就毫無(wú)意義)

    ◆     調(diào)用connect去進(jìn)行連接

    ◆     使用select檢查socket是否可寫(xiě),并同時(shí)判斷其結(jié)果(為什么是可寫(xiě)?因?yàn)樾枰獧z測(cè)socket是否收到ACK。)

    ◆     將socket轉(zhuǎn)化為阻塞模式
 

(4)TCP的半關(guān)閉    

         所謂“半關(guān)閉”,是指連接的一端在結(jié)束它的發(fā)送之后還能接收到對(duì)方發(fā)過(guò)來(lái)的數(shù)據(jù)的能力。具體表現(xiàn)在,當(dāng)完成三次握手的雙方,其中有一端發(fā)出FIN,此時(shí)它將進(jìn)入半關(guān)

閉狀態(tài),此時(shí)它關(guān)閉了自身的發(fā)送功能,但是它依然可以接收到對(duì)方的數(shù)據(jù),如對(duì)方發(fā)過(guò)來(lái)的ACK消息。那么在實(shí)際開(kāi)發(fā)中,是怎么實(shí)現(xiàn)的呢?

這牽涉到系統(tǒng)中shutdown和close函數(shù)的區(qū)別問(wèn)題。

        int shutdown(int s, int how)      

  本文關(guān)鍵詞:tcp協(xié)議,由筆耕文化傳播整理發(fā)布。



本文編號(hào):159033

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/xxkj/159033.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶(hù)ffc2e***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
国产一区二区精品高清免费| 蜜桃av人妻精品一区二区三区| 成在线人免费视频一区二区| 又大又长又粗又黄国产| 国产一区二区三区四区中文| 国产一区二区三中文字幕| 中文字幕精品人妻一区| 欧美激情一区=区三区| 高潮少妇高潮久久精品99| 中日韩免费一区二区三区| 欧美日韩综合免费视频| 国产剧情欧美日韩中文在线| 亚洲一区二区三区日韩91| 色偷偷偷拍视频在线观看| 精品视频一区二区三区不卡| 色婷婷视频国产一区视频| 久热青青草视频在线观看| 日韩一级免费中文字幕视频| 黄色激情视频中文字幕| 欧美熟妇喷浆一区二区| 自拍偷拍一区二区三区| 亚洲成人免费天堂诱惑| 国产精品午夜一区二区三区| 欧美整片精品日韩综合| 在线九月婷婷丁香伊人| 久久热麻豆国产精品视频| 日本女人亚洲国产性高潮视频| 亚洲国产一区精品一区二区三区色| 国产成人精品国产亚洲欧洲| 99热九九热这里只有精品| 亚洲国产成人av毛片国产| 日韩精品人妻少妇一区二区| 国产真人无遮挡免费视频一区| 日本少妇三级三级三级| 婷婷亚洲综合五月天麻豆| 九九热精品视频免费观看| 午夜视频成人在线免费| 日韩中文高清在线专区| 91免费精品国自产拍偷拍| 免费特黄一级一区二区三区| 国产精品亚洲一区二区|