TCP/IP協議棧中,爲何選擇IP層負責分片?

這是知乎上被邀請的一個問題TCP/IP協議棧中,爲何選擇IP層負責分片?,我從沒思考過這個問題甚至不認爲這是個有意義的問題,可是當我研究思考後卻發現這麼一個小問題也許正是當初設計TCP/IP協議棧時的一種考量。編程


TCP/IP是一個分層協議,協議棧的最底層是鏈路層,接下來依次是網絡層,傳輸層,應用層。網絡

100859505.jpg

能夠看見tcp

  • 連接層負責創建電路鏈接,是整個網絡的物理基礎;ide

  • 網絡層負責分配地址和傳送二進制數據,主要協議是IP協議;計算機網絡

  • ......設計

再來看看幾個概念blog

  • PDU:計算機網絡各層對等實體間交換的單位信息稱爲協議數據單元(protocol data unit,PDU),好比分節(segment)是對應於TCP傳輸層的PDU,IP數據報(IP datagram)對應網絡層實體間交換的PDU;接口

  • SDU:按照協議與服務之間的關係,除了最低層(物理層)外,每層的PDU經過由緊鄰下層提供給本層的服務接口,做爲下層的服務數據單元(service data unit,SDU)傳遞給下層,並由下層間接完成本層的PDU交換。若是本層的PDU大小超過緊鄰下層的最大SDU限制,那麼本層還要事先把PDU劃分爲若干個合適的片斷讓下層分開載送,再在相反方向把這些片斷重組爲PDU。get

  • :鏈路層實體間交換的PDU稱爲幀,其長度取決於具體的接口;網絡編程

  • MTU:咱們進行分片的依據是MTU,而MTU是網絡層和鏈路層之間的接口屬性;


咱們能夠很清楚的看到若是要在最低層的數據鏈路層作分片,你必需要去對不一樣的物理網絡的驅動程序作更改; 若是要在上層的傳輸層或者應用層作分片,既然數據都要經過網絡層實際上就是各協議對分片功能的重複造輪子,咱們有必要付出這種成本去實現分片嗎?我想IP層就是咱們在軟件設計裏經常使用的適配層,着這裏作分片是成本最低的選擇。

參考書籍《UNIX網絡編程卷1》

相關文章
相關標籤/搜索