<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ![](https://img.kancloud.cn/1a/1e/1a1e80afe50135b6ecf021377bf84b48_640x273.png) # tcp/ip協議 四層: ![](https://img.kancloud.cn/a1/e9/a1e9ee0fabd650c2345ceb436a7263bf_1442x808.png) ![](https://img.kancloud.cn/e9/ee/e9ee09065c695b9c60eb6b4e70720274_1516x1286.png) 1. 應用層 2. 傳輸層 3. 網絡互聯層 4. 網絡訪問層 ## 應用層(Application Layer) 應用層的本質是規定了應用程序之間如何相互傳遞報文, 以 HTTP 協議為例,它規定了 * 報文的類型,是請求報文還是響應報文 * 報文的語法,報文分為幾段,各段是什么含義、用什么分隔,每個部分的每個字段什么什么含義 * 進程應該以什么樣的時序發送報文和處理響應報文 ### HTTP HTTP 客戶端和 HTTP 服務端的首要工作就是根據 HTTP 協議的標準組裝和解析 HTTP 數據包,每個 HTTP 報文格式由三部分組成: * 起始行(start line),起始行根據是請求報文還是響應報文分為「請求行」和「響應行」。這個例子中起始行是`GET / HTTP/1.1`,表示這是一個`GET`請求,請求的 URL 為`/`,協議版本為`HTTP 1.1`,起始行最后會有一個空行`CRLF(\r\n)`與下面的首部分隔開 * 首部(header),首部采用形如`key:value`的方式,比如常見的`User-Agent`、`ETag`、`Content-Length`都屬于 HTTP 首部,每個首部直接也是用空行分隔 * 可選的實體(entity),實體是 HTTP 真正要傳輸的內容,比如下載一個圖片文件,傳輸的一段 HTML等 ![](https://img.kancloud.cn/90/d2/90d27649cd3696a931f6533014935620_1810x876.png) 除了我們熟知的 HTTP 協議,還有下面這些非常常用的應用層協議 * 域名解析協議 DNS * 收發郵件 SMTP 和 POP3 協議 * 時鐘同步協議 NTP * 網絡文件共享協議 NFS ## 傳輸層(Transport Layer) 傳輸層的作用是為兩臺主機之間的「應用進程」提供端到端的邏輯通信,相隔幾千公里的兩臺主機的進程就好像在直接通信一樣 雖然是叫傳輸層,但是并不是將數據包從一臺主機傳送到另一臺,而是對「**傳輸行為進行控制**」 傳輸層用端口號來標識不同的應用程序,主機收到數據包以后根據目標端口號將數據包傳遞給對應的應用程序進行處理。 ![](https://img.kancloud.cn/c4/55/c4559da05e4fae498de8c2b7bad0b8e9_1506x510.png) 主要有TCP和UDP ## 網絡互連層(Internet Layer) 網絡互連層提供了主機到主機的通信,將傳輸層產生的的數據包封裝成分組數據包發送到目標主機,并提供路由選擇的能力 IP 協議是網絡層的主要協議,TCP 和 UDP 都是用 IP 協議作為網絡層協議。這一層的主要作用是給包加上源地址和目標地址,將數據包傳送到目標地址。 IP 協議是一個無連接的協議,也不具備重發機制,這也是 TCP 協議復雜的原因之一就是基于了這樣一個「不靠譜」的協議。 ## 網絡訪問層(Network Access Layer)網絡接口層 網絡訪問層也有說法叫做網絡接口層,以太網、Wifi、藍牙工作在這一層,網絡訪問層提供了主機連接到物理網絡需要的硬件和相關的協議。 ## 分層的好處 分層的本質是通過分離關注點而讓復雜問題簡單化,通過分層可以做到: * 各層獨立:限制了依賴關系的范圍,各層之間使用標準化的接口,各層不需要知道上下層是如何工作的,增加或者修改一個應用層協議不會影響傳輸層協議 * 靈活性更好:比如路由器不需要應用層和傳輸層,分層以后路由器就可以只用加載更少的幾個協議層 * 易于測試和維護:提高了可測試性,可以獨立的測試特定層,某一層有了更好的實現可以整體替換掉 * 能促進標準化:每一層職責清楚,方便進行標準化 ## 習題 1. 收到 IP 數據包解析以后,它怎么知道這個分組應該投遞到上層的哪一個協議(UDP 或 TCP) Internet Protocol 中的 Protocol: TCP (6) , 6為TCP協議,17為UDP
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看