<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 功能強大 支持多語言、二開方便! 廣告
                [TOC] # TCP、UDP 協議的區別 ![TCP、UDP協議的區別](https://user-gold-cdn.xitu.io/2018/4/19/162db5e97e9a9e01?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) UDP 在傳送數據之前不需要先建立連接,遠地主機在收到 UDP 報文后,不需要給出任何確認。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 確是一種最有效的工作方式(一般用于即時通信),比如: QQ 語音、 QQ 視頻 、直播等等 TCP 提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束后要釋放連接。 TCP 不提供廣播或多播服務。由于 TCP 要提供可靠的,面向連接的運輸服務(TCP的可靠體現在TCP在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、擁塞控制機制,在數據傳完后,還會斷開連接用來節約系統資源),這一難以避免增加了許多開銷,如確認,流量控制,計時器以及連接管理等。這不僅使協議數據單元的首部增大很多,還要占用許多處理機資源。TCP 一般用于文件傳輸、發送和接收郵件、遠程登錄等場景。 # 面向無連接 首先 UDP 是不需要和 TCP 一樣在發送數據前進行三次握手建立連接的,想發數據就可以開始發送了。 并且也只是數據報文的搬運工,不會對數據報文進行任何拆分和拼接操作。 具體來說就是: * 在發送端,應用層將數據傳遞給傳輸層的 UDP 協議,UDP 只會給數據增加一個 UDP 頭標識下是 UDP 協議,然后就傳遞給網絡層了 * 在接收端,網絡層將數據傳遞給傳輸層,UDP 只去除 IP 報文頭就傳遞給應用層,不會任何拼接操作 # 不可靠性 首先不可靠性體現在無連接上,通信都不需要建立連接,想發就發,這樣的情況肯定不可靠。 并且收到什么數據就傳遞什么數據,并且也不會備份數據,發送數據也不會關心對方是否已經正確接收到數據了。 再者網絡環境時好時壞,但是 UDP 因為沒有擁塞控制,一直會以恒定的速度發送數據。即使網絡條件不好,也不會對發送速率進行調整。這樣實現的弊端就是在網絡條件不好的情況下可能會導致丟包,但是優點也很明顯,在某些實時性要求高的場景(比如電話會議)就需要使用 UDP 而不是 TCP。 # 高效 雖然 UDP 協議不是那么的可靠,但是正是因為它不是那么的可靠,所以也就沒有 TCP 那么復雜了,需要保證數據不丟失且有序到達。 因此 UDP 的頭部開銷小,只有八字節,相比 TCP 的至少二十字節要少得多,在傳輸數據報文時是很高效的。 ![](https://user-gold-cdn.xitu.io/2018/5/1/163195b245ceb89c?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) UDP 頭部包含了以下幾個數據 * 兩個十六位的端口號,分別為源端口(可選字段)和目標端口 * 整個數據報文的長度 * 整個數據報文的檢驗和(IPv4 可選 字段),該字段用于發現頭部信息和數據中的錯誤 # 傳輸方式 UDP 不止支持一對一的傳輸方式,同樣支持一對多,多對多,多對一的方式,也就是說 UDP 提供了單播,多播,廣播的功能。 # 適合使用的場景 UDP 雖然對比 TCP 有很多缺點,但是正是因為這些缺點造就了它高效的特性,在很多實時性要求高的地方都可以看到 UDP 的身影。 # 參考資料 [前端面試之道 - 掘金小冊](https://juejin.im/book/5bdc715fe51d454e755f75ef/section/5bdc729af265da615a414603) [搞定計算機網絡面試,看這篇就夠了(補充版)](https://juejin.im/post/5b7be0b2e51d4538db34a51e#heading-18)
                  <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>

                              哎呀哎呀视频在线观看