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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                在標準的TCP/IP協議棧中,各層之間都是一個獨立的模塊,它有著很清晰的層次結構,每一層只負責完成該層的處理,不會越界到其他層次去讀寫數據。而LwIP只是一個輕量級TCP/IP協議棧,它只是一個較完整的TCP/IP協議,多應用在嵌入式領域中,由于處理器的性能有限,LwIP并沒有采用很明確的分層結構,它假設各層之間的部分數據和結構體和實現原理在其他層是可見的,簡單來說就傳輸層知道IP層是如何封裝數據、傳遞數據的,IP層知道鏈路層是怎么封裝數據的等等。 為什么要模糊分層的處理?簡單來說就是為了提高效率,例如鏈路層完成數據包在物理線路上傳輸的封裝;IP層完成數據包的選擇和路由,負責將數據包發送到目標主機;傳輸層負責根據IP地址將數據包傳輸到指定主機,端口號識別一臺主機的線程,向不同的應用層遞交數據;但是,如果按照標準的TCP/IP協議棧這種嚴格的分層思想,在數據傳輸的時候就需要層層拷貝,因為各層之間的內存都不是共用的,在鏈路層遞交到IP層需要拷貝,在IP層遞交到傳輸層需要拷貝,反之亦然,這樣子每當收到或者發送一個數據的時候都要CPU去拷貝數據,這個效率就太慢了,所以LwIP假設各層之間的資源都是共用的,各層之間的實現方式也是已知的,那么在IP層往傳輸層遞交數據的時候,鏈路層往IP層遞交數據的時候就無需再次拷貝,直接操作協議棧中屬于其他層次的字段,得到相應的信息,然后直接讀取傳遞的數據即可,這樣子處理的方式就無需拷貝,各個層次之間存在交叉存取數據的現象,既節省系統的空間也節省處理的時間,而且更加靈活。例如在傳輸層,在計算TCP報文段的校驗以及TCP在重裝無需報文時,TCP層必須知道該報文的源IP地址和目的IP地址,為了得到這些信息,傳輸層并不是調用IP層的接口,而是直接訪問數據包中的IP數據報首部,因為傳輸層已經知道IP層的數據報的格式及作用,直接訪問讀取這些信息即可。 在小型嵌入式設備中,LwIP與用戶程序之間通常沒有太嚴格的分層結構,這種方式允許用戶處理數據與內核之間變得更加寬松。LwIP假設用戶完全了解協議棧內部的數據處理機制,用戶程序可以直接訪問協議棧內部各層的數據包,可以讓協議棧與用戶使用同樣的內存區域,允許用戶直接對這片區域進行讀寫操作,這樣子就很好地避免了拷貝的現象,當然這樣子的做法也有缺陷,取決于用戶對協議棧處理過程的了解程度,因為數據是公共的,如果處理不正確那就讓協議棧也沒法正常工作。 當然,除了標準的TCP/IP協議,還存在很多其他的TCP/IP協議,即使這些協議棧內部存在著模糊分層、交叉存取現象,但是對協議棧外部的應用層則保持著明顯的分層結構,在操作系統中,TCP/IP協議棧往往被設計為內核代碼的一部分,用戶可以的函數僅僅是協議棧為用戶提供的那些,或者直接完全封裝起來,用戶的操作類似于讀寫文件的方式進行(如BSD Socket),這樣子用戶就無法避免數據的拷貝,在數據發送的時候,用戶數據必須從用戶區域拷貝到協議棧內部,在數據接收的時候,協議棧內部數據也將被拷貝到用戶區域。 嚴格按照TCP協議的分層思想會導致數據包在各層遞交產生內存拷貝問題,影響性能。為了節省時間和空間的開銷,LwIP沒有遵循嚴格的分層機制,各層次之間存在交叉存取的現象,提高效率。 由于LwIP的內存共享機制,使得應用程序能直接對協議棧內核的內存區域直接操作,減少時間和空間的損耗。
                  <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>

                              哎呀哎呀视频在线观看