• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            loop_in_codes

            低調(diào)做技術(shù)__歡迎移步我的獨(dú)立博客 codemaro.com 微博 kevinlynx

            tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念

            Author : Kevin Lynx 

            TCP是TCP/IP協(xié)議簇中傳輸層上的一種網(wǎng)絡(luò)協(xié)議,它是一種面向連接的、可靠的協(xié)議。為了提供這種可靠性,
            TCP實(shí)現(xiàn)了各種有效的機(jī)制、算法。為了從一種宏觀的角度去了解這個(gè)協(xié)議,這里先大致地提一下與之相關(guān)
            的概念。

            1. 什么是‘面向連接的’?
               引用<TCP/IP協(xié)議詳解>中的概念:
               面向連接意味著兩個(gè)使用TCP的應(yīng)用(通常是一個(gè)客戶和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立
               一個(gè)TCP連接。

            2. 什么是‘三次握手’?
               在建立TCP連接之前,兩個(gè)使用TCP的應(yīng)用需要交換三次網(wǎng)絡(luò)數(shù)據(jù)。這三個(gè)數(shù)據(jù)包的來往也就是所謂的‘
               三次握手’。

            3. 報(bào)文段segment
               我們說TCP是流式的網(wǎng)絡(luò)協(xié)議,那是因?yàn)?,?yīng)用程序可以一直往TCP寫數(shù)據(jù),無論你是逐byte,還是write
               a chunk,TCP對應(yīng)用傳給它的數(shù)據(jù)進(jìn)行緩沖,直到緩沖數(shù)據(jù)達(dá)到一定尺寸才發(fā)送。可以看出,對于應(yīng)用
               而言,TCP就像是stream的。但事實(shí)上,在TCP層,數(shù)據(jù)還是以塊為單位的。這個(gè)塊也就是所謂的報(bào)文段
               segment。

            4. 什么是MTU?
               MTU即最大傳輸單元(Maximum Transmission Unit,MTU)是指一種通信協(xié)議的某一層上面所能通過的
               大數(shù)據(jù)報(bào)大小(以字節(jié)為單位)。我個(gè)人目前的理解認(rèn)為,MTU是一個(gè)網(wǎng)絡(luò)在硬件層次上所允許的最大
               數(shù)據(jù)包大小,例如以太網(wǎng)大概是1500字節(jié)。

            5. 什么是MSS?
               MSS即最大報(bào)文段大?。∕aximum Segment Size),它是指TCP中一個(gè)報(bào)文段上附加的用戶數(shù)據(jù)的最大大小。
               這里稍微說下應(yīng)用層發(fā)送某個(gè)數(shù)據(jù)包時(shí)整個(gè)TCP/IP協(xié)議棧的操作過程:應(yīng)用層將自己的用戶數(shù)據(jù)傳給TCP
               層(傳輸層),TCP在這些數(shù)據(jù)前添加自己的協(xié)議頭(簡單地理解為附加一些數(shù)據(jù)),然后將數(shù)據(jù)交給
               IP層(網(wǎng)絡(luò)層),IP層附加自己的協(xié)議頭,以此類推。
               雖然MSS意思是最大報(bào)文段大小,但事實(shí)上它是排除了協(xié)議頭的用戶數(shù)據(jù)。

            6. MTU and MSS ?
               可以簡單地給你一個(gè)這樣的公示:mss = mtu - tcp_header_size - ip_header_size。
               而通常,IP協(xié)議附加的協(xié)議頭大小和TCP的協(xié)議頭大小都是20字節(jié),所以通常的MSS為1460字節(jié)。
               注意,這里說的數(shù)字并不見得正確,因?yàn)镸SS是可以被協(xié)商的。各種協(xié)議頭也可能被添加附加數(shù)據(jù),但是
               他們的關(guān)系是這樣的。

            7. 什么是窗口大???
               找本TCP的書看下TCP數(shù)據(jù)包的包頭(本文多次使用數(shù)據(jù)包、報(bào)文的概念,我這里說的都是一樣的),你會
               發(fā)現(xiàn)那個(gè)16位的窗口大小。
               窗口這個(gè)域?qū)τ谡麄€(gè)TCP協(xié)議都很重要。簡單地說,窗口大小是指接收端的接收緩存的大小。上面說了,應(yīng)用
               在發(fā)數(shù)據(jù)的時(shí)候,TCP會緩存這些數(shù)據(jù),稍后發(fā)送。接收數(shù)據(jù)時(shí)也一樣,TCP接收數(shù)據(jù)并緩存起來,直到應(yīng)用
               調(diào)用recv之類的函數(shù)取數(shù)據(jù)時(shí),TCP才將這些緩存數(shù)據(jù)清除。

               TCP發(fā)送端會根據(jù)TCP接收端那個(gè)接收緩存大小決定發(fā)送多少數(shù)據(jù)(如何知道這個(gè)緩存大???稍后給概念)。
               這樣,TCP接收端的接收緩存才不至于緩沖溢出。

            8. 提供可靠性的方法之一:ACK確認(rèn)?
               這里還不敢提序號、確認(rèn)號、延時(shí)ACK等亂七八糟的東西。我只能告訴你,當(dāng)TCP發(fā)送某些數(shù)據(jù)給TCP接收方
               時(shí),TCP接收方會發(fā)回一個(gè)確認(rèn)報(bào)文。TCP發(fā)送方收到這個(gè)確認(rèn)報(bào)文后,就可以確認(rèn)剛才發(fā)送的數(shù)據(jù)包成功到達(dá)。

               為什么這個(gè)確認(rèn)報(bào)文叫ACK確認(rèn)(貌似是我臨時(shí)給的概念:D)?再翻到TCP包頭結(jié)構(gòu)那張圖,ACK是TCP包頭中
               的1bit標(biāo)志位,如同SYN、PSH、RST之類的標(biāo)志一樣,這些標(biāo)志都有一個(gè)專有的用途。當(dāng)ACK標(biāo)志位被設(shè)置為1
               時(shí),我就稱其為ACK確認(rèn)標(biāo)志,因?yàn)锳CK就是用于確認(rèn)報(bào)文段的。

               在上面所說的窗口大小中,我提到,發(fā)送方如何知道接收方的接收緩存大小呢?這也是通過確認(rèn)報(bào)文段實(shí)現(xiàn):
               當(dāng)接收方接收到數(shù)據(jù)后,發(fā)送ACK確認(rèn)數(shù)據(jù)包給發(fā)送方,就設(shè)置包頭中的窗口域。

            9. 提供可靠性的方法之二:各種定時(shí)器
               TCP中會設(shè)置很多計(jì)時(shí)器,這些定時(shí)器大多用于超時(shí)重傳(老半天得不到回應(yīng),所以重傳數(shù)據(jù))。

            10.什么是全雙工?
               全雙工就是你可以同時(shí)在一個(gè)TCP連接上進(jìn)行數(shù)據(jù)的發(fā)送和接收。這種雙工特性也促使了關(guān)閉TCP連接時(shí)的四次
               握手。

            11.TODO : more concepts...


            這里我盡量簡單地介紹一些TCP中的概念,希望可以讓你有概括性的了解。預(yù)計(jì)下一節(jié)我會講講建立TCP連接的相關(guān)細(xì)節(jié)。
            除了Stevens的<TCP/IP詳解>,我推薦<The TCP/IP Guide>,據(jù)說是另一部TCP的權(quán)威之作。

            posted on 2008-05-09 16:30 Kevin Lynx 閱讀(2917) 評論(7)  編輯 收藏 引用

            評論

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念 2008-05-09 17:20 Xw.Y

            學(xué)習(xí)筆記贊~順便提一下,MTU是硬件層的嘛?我記得在PPPoE寫一下MTU通常是1492,就這個(gè)來說,MTU更像是協(xié)議層的東西。。。我不確定。。。需要查一下資料:-)  回復(fù)  更多評論   

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念 2008-05-09 18:08 Kevin Lynx

            @Xw.Y
            我的意思是硬件那一層(網(wǎng)絡(luò)協(xié)議棧)中的東西(鏈路層)  回復(fù)  更多評論   

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念 2008-05-09 19:55 true

            總結(jié)的不錯(cuò):)  回復(fù)  更多評論   

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念[未登錄] 2008-05-09 21:16 杜中偉

            不錯(cuò),能有毅力看下去.  回復(fù)  更多評論   

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念 2008-05-10 10:35 zhang某人

            看到21章沒?  回復(fù)  更多評論   

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念 2008-05-11 23:42 look&think

            mark....  回復(fù)  更多評論   

            # re: tcp要點(diǎn)學(xué)習(xí)-基礎(chǔ)概念 2010-02-11 09:50 tcpcoder

            so good.i study tcp/ip too.thanks!  回復(fù)  更多評論   

            精品久久久久久中文字幕| 久久亚洲中文字幕精品一区| 久久久久亚洲av无码专区 | 日韩十八禁一区二区久久| 久久婷婷五月综合色99啪ak| 亚洲国产成人精品91久久久| 亚洲日本va中文字幕久久| 久久精品免费一区二区三区| 日韩电影久久久被窝网| 亚洲午夜久久久久久久久电影网 | 久久只有这精品99| 麻豆av久久av盛宴av| 韩国免费A级毛片久久| 国产精品免费久久| 伊人久久大香线蕉av不卡| 精品国产91久久久久久久 | 伊人久久综在合线亚洲2019 | 伊人色综合久久天天人守人婷| 国产成年无码久久久免费| 国产A级毛片久久久精品毛片| 思思久久99热只有频精品66| 中文字幕久久欲求不满| 久久AV无码精品人妻糸列| 91精品国产91久久久久久蜜臀| 尹人香蕉久久99天天拍| 国内精品久久久久久99蜜桃| 久久精品国产色蜜蜜麻豆| 久久综合给合久久狠狠狠97色| 久久精品国产精品亜洲毛片| 国产成人精品白浆久久69| 亚洲精品无码久久不卡| 91精品国产91热久久久久福利 | 久久综合久久伊人| 久久91精品国产91久久麻豆| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久国产成人精品国产成人亚洲| 亚洲级αV无码毛片久久精品| 久久久久婷婷| 久久精品国产清自在天天线| 久久精品嫩草影院| 国内精品伊人久久久久AV影院|