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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * [10.11:數據包發送流程](第10章:ARP協議/10.11:數據包發送流程.md) * [10.11.1:etharp_output()函數](第10章:ARP協議/10.11:數據包發送流程/10.11.1:etharp_output函數.md) * [10.11.2:etharp_output_to_arp_index()函數](第10章:ARP協議/10.11:數據包發送流程/10.11.2:etharp_output_to_arp_index函數.md) * [10.11.3:etharp_query()函數](第10章:ARP協議/10.11:數據包發送流程/10.11.3:etharp_query函數.md) 經過學習,我們知道一個數據包從底層傳遞進來的流程是怎么樣的,如果是ARP數據包就會給ARP去處理,如果是IP數據報就使用ip4_input()函數傳遞到上層,這些處理在后面的章節講解。那么如果上層協議想要發送數據,也肯定需要經過ARP協議將IP地址映射為MAC地址才能完成發送操作,IP數據報通過ip4_output()函數將上層數據包傳遞到ARP協議處理,關于IP協議是怎么樣傳遞的我們暫且不說,那么ARP通過etharp_output()函數接收到IP數據報后,就會進行發送,ARP會先從數據包中進行分析,看看這個IP數據報是單播數據包還是多播或者是廣播數據包,然后進行不同的處理: ? 對于多播或者是廣播數據包,這種處理就很簡單,直接將數據包丟給網卡就行了(調用ethernet_output()函數)。 ? 對于單播包的處理稍微麻煩一點,ARP協議需要根據IP地址找到對應的MAC地址,然后才能正確發送,如果找不到MAC地址的話,還要延遲發送數據包,ARP協議首先會創建一個ARP表項,然后將數據包掛到ARP表項對應的緩存隊列上,與此同時會發出一個ARP請求包,等待目標主機的回應后再發送IP數據報。 此處需要注意的是,對于PBUFF_ERF、PBUF_POOL、PBUF_RAM類型的數據包是不允許直接掛到ARP表項對應的緩存隊列上的,因為此時內核需要等待目標主機的ARP應答,而這段時間里,這些數據有可能會被上層改動,這是不允許的,所以LwIP需要將這些pbuf數據包拷貝到新的空間,等待發送。
                  <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>

                              哎呀哎呀视频在线观看