• <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!  回復  更多評論   

            国产三级久久久精品麻豆三级| 久久er国产精品免费观看8| 久久99这里只有精品国产| 久久久www免费人成精品| 日产精品久久久久久久性色| 免费精品99久久国产综合精品| 国产精品久久久久久久午夜片 | 一本综合久久国产二区| 欧美一区二区久久精品| 国产精品久久自在自线观看| 狠狠色丁香久久婷婷综合图片 | 国产精品成人久久久久三级午夜电影| 久久久久久久综合综合狠狠| 人妻精品久久久久中文字幕69| 亚洲国产成人久久综合碰碰动漫3d | 婷婷久久综合九色综合绿巨人| MM131亚洲国产美女久久| 久久夜色撩人精品国产小说| 99久久99久久| 日本人妻丰满熟妇久久久久久| 欧美精品福利视频一区二区三区久久久精品| 亚洲综合日韩久久成人AV| 热久久最新网站获取| 久久精品夜色噜噜亚洲A∨| 久久久久免费精品国产| 国产精品免费福利久久| 日产精品久久久久久久| 精品久久亚洲中文无码| 久久强奷乱码老熟女网站| 久久久久亚洲av成人无码电影| 91久久精品国产91性色也| 久久综合久久综合久久综合| 精品国产一区二区三区久久久狼| 色综合久久中文字幕无码| 人妻无码久久一区二区三区免费| 久久国产免费直播| 欧洲人妻丰满av无码久久不卡| 影音先锋女人AV鲁色资源网久久| 伊人久久大香线蕉av不卡| 久久国产亚洲精品无码| 国产精品久久毛片完整版|