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

            山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版MSDN

            Blog @ Blog

            當華美的葉片落盡,生命的脈絡才歷歷可見。 -- 聶魯達

            常用鏈接

            統計

            積分與排名

            BBS

            Blog

            Web

            最新評論

            TCP/IP 協議的結構與運行原理[圖]

            本文背景:
            TCP/IP模型很成功,其設計已經經得起多年的磨練。無奈,TCP/IP協議族是很繁雜的一個模型,為了全面理解它,宜采取先全局后局部的庖丁解牛式。本文從應用的角度試著去理解TCP/IP的全貌,配合例子加以講解。
            本文目的:
            鞏固自己這方面的知識,作為深入TCP/IP協議族的基礎。
            本文內容:


            1. TCP/IP協議族組成
            從字面上理解,TCP/IP協議族只有TCP、IP協議,其實不然。其真正的名字是Internet協議族 (Internet Protocol Suite) 。和大型軟件一樣,其分為四層:應用層、傳輸層、網絡層、鏈路層。
            每一層的功能和目的都是不一樣的,每一層上服務的協議也不是有區別的。從上往下看:
            應用層(產生|利用數據)
            協議:FTP、HTTP、SNMP(網管)、SMTP(Email)等常用協議;
            職責:利用應用層協議發送用戶的應用數據,比如利用FTP發送文件,利用SMTP發送Email;由系統調用交給運輸層處理。
            運輸層(發送|接收數據)
            協議:TCP(有連接)、UDP(無連接);
            職責:負責建立連接、將數據分割發送;釋放連接、數據重組或錯誤處理。
            網絡層(分組|路由數據)
            協議:IP、ICMP(控制報文協議)、IGMP(組管理協議);
            職責:負責數據的路由,即數據往哪個路由器發送。
            鏈路層(按位發送|接收數據)
            協議:以太網卡設備驅動、令牌網卡驅動程序、ARP、RARP等;
            職責:負責傳輸校驗二進制用戶數據。

            從可靠性角度看各層區別:
            網絡層IP協議是不可靠的協議,為此,如果其上面的層也不做任何特殊處理,也將是不可靠的。于是,運輸層的TCP協議彌補了這個空缺,提供有連接的、可校驗的數據傳輸服務。
            應用層的話可對數據進行加密之類的處理,增強的是傳輸數據的安全性,如https。
            鏈路層可對數據進行校驗。

            從運行進程態看各層區別:
            應用層運行在用戶程序進程中,屬性用戶態;
            其他層則在系統內核進程運行,屬于核心態;
            從通信方式上看各層區別:
            傳輸層是端對端的通信,也就是說,處理的是進程與進程之間的通信,如兩個TCP進程;
            網絡層是點對點的通信,也就是說,處理的是機器之間的 邏輯連接。

            從傳輸數據單元上看區別:
            傳輸層上形成的是TCP或UDP報文段;
            網絡層形成的是IP數據報;
            數據鏈路層形成的是幀(Frame)。

            從尋址方式上看各層區別:
            網絡層通過IP尋址;
            鏈路層通過MAC尋址。

            注解:
            ICMP: 供IP用于發送錯誤報文,也可由應用層直接調用;
            IGMP: 用于多播(Multicast),比如,UDP可用多播IP地址往多個目標主機發送數據報,就是依靠它。
            ARP&RARP: 用戶在IP地址與MAC地址互相轉換。
            2. TCP/IP模型基礎設施
            IP地址
            共分五類地址,分別如下:
            A類:0.  0. 0. 0——127.255.255.255(單播)
            B類:128.0.0.0——191.255.255.255(單播)
            C類:192.0.0.0——223.255.255.255(單播)
            D類:224.0.0.0——239.255.255.255(多播)
            E類:240.0.0.0——247.255.255.255(待用)  
            附加類:255.255.255.255 (傳輸層UDP廣播)

            MAC地址
            每個網卡的MAC地址世界唯一,不可變;計算機通信其實靠的是MAC地址,而不是IP地址,請看下面注解。

            端口
            端口在硬件里的名稱為接口,跟網卡的入口一樣;在軟件概念里,可以理解為一些數據結構數據緩沖區。
            端口可分為:
            知名端口:0001——1023 (例如FTP 20,TCP 21,UDP 69)
            臨時端口:1024——5000
            預留端口:5000——65535
            假設你的應用程序需要端口,一般是從臨時端口分配,只在應用程序運行時有效,故稱臨時端口。
            傳輸層可將進程與端口進行綁定,當數據到來時,其知該往哪個進程緩沖區里送。

            注解:
            IPMAC的區別:IP地址是基于網絡拓撲結構的,是動態可變的。MAC地址是由網卡廠商定的,是終身不可變且唯一的。假設應用層利用MAC地址傳輸數據,那么其是不靈活的,因為它不能變。所以,應用層用IP尋址。
            但是,硬件又必須用MAC才能找到機器,為此引入ARP及RARP來做兩地址的查詢與轉換。


            3. TCP/IP應用案例分析
            場景:左邊用戶利用FTP客戶端與右邊FTP服務器端進行連接上傳文件。
            數據將從上往下流,每到一層都會加上層頭,數據以類堆棧形式存儲,到目標機器時,底層數據先得,由底向上,符合堆棧先進后出的特性。
              
            1  TCP/IP內部分解圖
            步驟1:應用層準備好數據文件,調用Windows API通知傳輸層TCP建立連接,傳輸層加入TCP包頭,其中包含標識應用層協議的標識符——端口 21。
            步驟2:網絡層接收了傳輸層的TCP包,由于IP協議可接收ICMP(1)、IGMP(2)、TCP(6)、UDP(17)來的數據,其需要一個標識域來表明是那個協議發來的數據。此數據域將加于IP包頭中。除此之外,還將賦以IP地址。
            步驟3:數據鏈路層接收網絡層來的數據后,加之標識域表明數據是從IP、ARP或RARP來。然后,加上MAC地址往外發送。
            步驟4將數據由網卡送出,送的過程中,ARP利用目標IP找到最近的路由器MAC地址,然后將包發往它,之后由它找到一個路由器,最終將數據包送到右邊機器的網卡中。
            步驟5根據包頭的標識域可知這是一個IP數據包,利用IP協議拆包。
            步驟6根據包頭的標識域可知這是一個TCP包,利用TCP協議拆包。
            步驟7根據包頭的端口號,將數據直接送入應用層的對應緩沖區中,應用程序負責解析數據包,做相應的業務邏輯處理。


            注解:
            RFC(Request for Comment)各種Internet的正式標準都以RFC文檔形式發布。
            各種協議文檔:RFC 1122是鏈路層、網絡層、傳輸層的文檔;RFC 1123是應用層的文檔;RFC 1600是各種Internet協議的標準化現狀。

            posted on 2008-05-19 23:18 isabc 閱讀(2082) 評論(3)  編輯 收藏 引用 所屬分類: 網絡編程

            評論

            # re: TCP/IP 協議的結構與運行原理[圖] 2008-05-20 09:13 補考少年

            very good, 3x  回復  更多評論   

            # re: TCP/IP 協議的結構與運行原理[圖] 2008-05-20 12:53 true

            總結的很好。  回復  更多評論   

            # re: TCP/IP 協議的結構與運行原理[圖] 2008-10-16 17:01 大笨狼

            好文章,看了很有收獲  回復  更多評論   

            廣告信息(免費廣告聯系)

            中文版MSDN:
            歡迎體驗

            av无码久久久久不卡免费网站 | 久久久精品视频免费观看| 久久精品国产乱子伦| 久久婷婷色香五月综合激情| 久久99国产精品久久99| 国产精品99久久不卡| 亚洲国产成人精品女人久久久| 天天影视色香欲综合久久| 国产美女亚洲精品久久久综合| 久久久久亚洲AV无码麻豆| aaa级精品久久久国产片| 成人国内精品久久久久影院VR| 99久久精品免费国产大片| 久久夜色精品国产亚洲av| 久久精品国产亚洲av麻豆蜜芽| 亚洲国产美女精品久久久久∴| 久久综合久久自在自线精品自| 久久国产精品-国产精品| 精品无码久久久久久久久久| 久久精品国产亚洲7777| 久久九九兔免费精品6| 久久96国产精品久久久| 色综合久久天天综线观看| 久久久精品国产sm调教网站| 成人久久综合网| 久久精品国产亚洲AV无码偷窥| 狠狠色丁香婷婷综合久久来来去 | 香蕉99久久国产综合精品宅男自| 亚洲αv久久久噜噜噜噜噜| 国产精品嫩草影院久久| 婷婷久久香蕉五月综合加勒比| 久久99久久无码毛片一区二区| 久久精品九九亚洲精品| 伊人久久成人成综合网222| 色综合合久久天天综合绕视看| 久久无码人妻一区二区三区| 久久综合九色综合精品| 久久久久亚洲AV片无码下载蜜桃 | 青青草原综合久久| 久久精品国产一区| 国产精品久久久天天影视香蕉|