2012-05-18 27 views

回答

0

send() API將會返回成功幾乎立即當且僅當有可用來保存數據路由表仍然顯示的方式將數據包路由到對端足夠的緩衝空間。 (它實際上並不是能夠到達對等體 - 只需要該機器必須有下一跳可用...)如果需要等待緩衝區空間釋放,它將會。 (看到數據被確認或在線路上發送應該很容易與Wireshark。)

順便說一句,OSI層不完美應用於TCP/IP協議家族;第1層和第2層非常接近,第3層大致是IP路由,第4層大致是TCP,UDP,SCTP,ICMP等等。但是第5,6,7層沒有真正的類比--TLS上的SMTP可能被認爲是第7層,或者SMTP可能是第7層,而TLS是第6層......它們很快就會變得非常模糊。

僅僅談談TCP/IP協議棧中您感興趣的特定層就比較容易。 send()適用於流,數據報和原始套接字,因此它可以跨越堆棧的多個層 - 您可以使用它發送TCP,UDP,SCTP或ICMP數據包,或者根據需要直接在網絡上塗抹。