• <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

            低調做技術__歡迎移步我的獨立博客 codemaro.com 微博 kevinlynx

            tcp要點學習-基礎概念

            Author : Kevin Lynx 

            TCP是TCP/IP協議簇中傳輸層上的一種網絡協議,它是一種面向連接的、可靠的協議。為了提供這種可靠性,
            TCP實現了各種有效的機制、算法。為了從一種宏觀的角度去了解這個協議,這里先大致地提一下與之相關
            的概念。

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

            2. 什么是‘三次握手’?
               在建立TCP連接之前,兩個使用TCP的應用需要交換三次網絡數據。這三個數據包的來往也就是所謂的‘
               三次握手’。

            3. 報文段segment
               我們說TCP是流式的網絡協議,那是因為,應用程序可以一直往TCP寫數據,無論你是逐byte,還是write
               a chunk,TCP對應用傳給它的數據進行緩沖,直到緩沖數據達到一定尺寸才發送。可以看出,對于應用
               而言,TCP就像是stream的。但事實上,在TCP層,數據還是以塊為單位的。這個塊也就是所謂的報文段
               segment。

            4. 什么是MTU?
               MTU即最大傳輸單元(Maximum Transmission Unit,MTU)是指一種通信協議的某一層上面所能通過的
               大數據報大小(以字節為單位)。我個人目前的理解認為,MTU是一個網絡在硬件層次上所允許的最大
               數據包大小,例如以太網大概是1500字節。

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

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

            7. 什么是窗口大小?
               找本TCP的書看下TCP數據包的包頭(本文多次使用數據包、報文的概念,我這里說的都是一樣的),你會
               發現那個16位的窗口大小。
               窗口這個域對于整個TCP協議都很重要。簡單地說,窗口大小是指接收端的接收緩存的大小。上面說了,應用
               在發數據的時候,TCP會緩存這些數據,稍后發送。接收數據時也一樣,TCP接收數據并緩存起來,直到應用
               調用recv之類的函數取數據時,TCP才將這些緩存數據清除。

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

            8. 提供可靠性的方法之一:ACK確認?
               這里還不敢提序號、確認號、延時ACK等亂七八糟的東西。我只能告訴你,當TCP發送某些數據給TCP接收方
               時,TCP接收方會發回一個確認報文。TCP發送方收到這個確認報文后,就可以確認剛才發送的數據包成功到達。

               為什么這個確認報文叫ACK確認(貌似是我臨時給的概念:D)?再翻到TCP包頭結構那張圖,ACK是TCP包頭中
               的1bit標志位,如同SYN、PSH、RST之類的標志一樣,這些標志都有一個專有的用途。當ACK標志位被設置為1
               時,我就稱其為ACK確認標志,因為ACK就是用于確認報文段的。

               在上面所說的窗口大小中,我提到,發送方如何知道接收方的接收緩存大小呢?這也是通過確認報文段實現:
               當接收方接收到數據后,發送ACK確認數據包給發送方,就設置包頭中的窗口域。

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

            10.什么是全雙工?
               全雙工就是你可以同時在一個TCP連接上進行數據的發送和接收。這種雙工特性也促使了關閉TCP連接時的四次
               握手。

            11.TODO : more concepts...


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

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

            評論

            # re: tcp要點學習-基礎概念 2008-05-09 17:20 Xw.Y

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

            # re: tcp要點學習-基礎概念 2008-05-09 18:08 Kevin Lynx

            @Xw.Y
            我的意思是硬件那一層(網絡協議棧)中的東西(鏈路層)  回復  更多評論   

            # re: tcp要點學習-基礎概念 2008-05-09 19:55 true

            總結的不錯:)  回復  更多評論   

            # re: tcp要點學習-基礎概念[未登錄] 2008-05-09 21:16 杜中偉

            不錯,能有毅力看下去.  回復  更多評論   

            # re: tcp要點學習-基礎概念 2008-05-10 10:35 zhang某人

            看到21章沒?  回復  更多評論   

            # re: tcp要點學習-基礎概念 2008-05-11 23:42 look&think

            mark....  回復  更多評論   

            # re: tcp要點學習-基礎概念 2010-02-11 09:50 tcpcoder

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

            97精品依人久久久大香线蕉97| 久久久久亚洲AV成人网人人软件| 伊人久久久AV老熟妇色| 精品精品国产自在久久高清| 精品999久久久久久中文字幕| 欧美性大战久久久久久| 青青青青久久精品国产| 99久久免费国产精品特黄| 久久影院亚洲一区| 91麻豆精品国产91久久久久久| 日韩人妻无码精品久久免费一 | av午夜福利一片免费看久久| 久久婷婷国产剧情内射白浆| 成人综合久久精品色婷婷| 亚洲欧美成人久久综合中文网| 亚洲国产成人久久综合区| 久久人人青草97香蕉| 狠狠色丁香久久婷婷综合蜜芽五月| 日本久久久久久久久久| 亚洲国产日韩综合久久精品| 久久亚洲国产精品成人AV秋霞| 久久人人添人人爽添人人片牛牛| 国产精品99久久久久久宅男| 久久精品国产亚洲7777| 久久亚洲中文字幕精品一区| 色综合久久久久无码专区| 国产精品久久久久久影院| 品成人欧美大片久久国产欧美| 很黄很污的网站久久mimi色 | 国产成人精品久久一区二区三区| 久久久久久久免费视频| 91精品日韩人妻无码久久不卡| 亚洲国产另类久久久精品黑人| 亚洲香蕉网久久综合影视| 久久久久久精品免费看SSS| 91久久精品国产成人久久| 国产精品美女久久久久av爽 | 久久国产色AV免费看| 久久国产热这里只有精品| 亚洲国产香蕉人人爽成AV片久久| 伊人伊成久久人综合网777|