• <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东京热| 精品免费久久久久国产一区| 理论片午午伦夜理片久久| 国产午夜精品理论片久久| 久久久精品一区二区三区| 久久久WWW成人免费毛片| 青草影院天堂男人久久| 青青草国产精品久久久久| 国产精品青草久久久久婷婷| 国产精品久久影院| 99久久99久久精品国产片| 亚洲国产天堂久久久久久| 久久久久亚洲AV无码专区桃色| 久久精品国产欧美日韩| 亚洲人成网站999久久久综合| 久久精品亚洲精品国产欧美| 久久99精品久久久久久野外| 最新久久免费视频| 久久婷婷五月综合色奶水99啪| 久久久久这里只有精品| 香蕉久久永久视频| 国内精品久久久久久麻豆| 中文成人久久久久影院免费观看| 久久免费视频1| 精品无码人妻久久久久久| 亚洲欧洲久久av| 久久无码人妻一区二区三区 | 久久精品水蜜桃av综合天堂| 国产精品久久久久久久久软件| 精品国产乱码久久久久久浪潮| 狠狠色丁香婷婷久久综合五月| 久久夜色精品国产欧美乱| 欧美激情精品久久久久久久九九九 | 亚洲国产成人精品女人久久久| 久久国产精品成人片免费| 亚洲国产高清精品线久久| 久久精品国产99国产精偷|