2010-10-13 21 views
8

Biraz arka plan.Başlık içeren bir IP paket çerçevesi ne kadar büyük?

UDP kullanan bir uygulama yazıyorum. Uygulama bir LAN (internet değil) üzerinde çalışacaktır. Eğer MTU'm 1500 ise o zaman UDP yükünün ne kadar büyük olabileceğini tahmin ediyorum, ama ben UDP başlığının buna uyup uymadığını anlamak için emin değilim.

Eğer 1500 byte'lık bir yükü olan bir UDP paketi göndersem ve MTU'nun 1500 byte'ı iki paket göndermeyi bitireceğinden şüpheleniyorum.

Net bir cevap için internette arama yapmak, olması gerekenden daha zor görünüyor, çelişkili bilgiler gördüm.

+0

Size kesin bir parçalanma sağlayacak. Bunu emin olmak için Wireshark'ı kullanabilirsiniz. –

+0

Teşekkürler, evet wireshark fazla bir şey göstermiyordu çünkü ben tecritte gelişiyorum. loopback MTU 16436! – Matt

+0

Herkese teşekkürler ve bağlantılar için teşekkürler. Google'da bulduğumdan daha iyilerdi. – Matt

cevap

9
------------------------------------------------------------------------------ 
|Ethernet | IPv4   |UDP | Data     |Ethernet checksum| 
------------------------------------------------------------------------------ 
    14 bytes 20 bytes  8 bytes x bytes    4 bytes 
      \ (w/o options)        /
      \___________________________________________/ 
           | 
          MTU 

, sen 1500-20-8 = 1.472 verileriniz için bayt var.

  • Bunu aşarsanız, paketler parçalanır, yani. daha fazla paket halinde bölünmüş.
  • Daha fazla katman söz konusu olabilir, örn. Bir vlan ethernet'in üstündeyseniz 4 bayt vlan başlığı.
  • Siz ve hedef arasında bulunan bazı yönlendiriciler daha fazla katman ekleyebilir.
+1

AFAIK MTU, Ethernet üstbilgisini ve CRC32'yi (sizin atladığınız) içermez, ancak IP protokolünün üstünü çıkarmanız gereken etkin Ethernet yüküdür. – Lucero

+0

Teşekkürler, şüpheliyim ama emin değildim. – Matt

+0

@Lucero Evet, MTU'yu tanımladığınız katmana bağlı olarak haklı olabilirsiniz. Bu durumda bir IP datagramının MTU'su sanırım. – nos

2

Belki bu makale yardımcı olur: MTU ise 1500 http://sd.wareonearth.com/~phil/net/overhead/

+0

Teşekkürler, çok kullanışlı bir link. Gig-e için verim oranları yararlıdır. Sunucu olmayan bir donanımda 760GB/s elde ediyorum, bu yüzden çok da kötü değil. Ancak, paket verilerimi doğru şekilde ayarlarsam iyileşebilir. – Matt

3

Evet, örneğiniz bir çerçeveye sığmaz.

Ethernet veri yükü 1500 bayttır. IPv4, başlığı için en az 20 bayt gerektirir. Alternatif olarak IPv6, en az 40 bayt gerektirir. UDP, başlığı için 8 bayta ihtiyaç duyar. Bu, verileriniz için 1472 bayt (ipv4) veya 1452 (ipv6) bırakır.

fazla bilgi: nasıl çalıştığını

-1

Yani, burada. 100 mega yağ borusuna sahip olmanıza rağmen Ethernet, veri akışınızı çerçeve başına 1500 bayta sınırlar. UDP uygulamanız üzerinden hat hızını gerçekten kullanmak için, kare başına 9000 bayta kadar destekleyebilen ethernet jumbo çerçevelerini kullanmanız/taşımanız gerekecektir. Ayrıca, netflix/youtube ve diğer akış protokollerine bakarsanız, akışınıza başlamadan önce bağlantınızı test ederler. Esas olarak ne yaparlarsa, size veri gönderirler ve akış hızını boşaltmadan önce bağlantı hızını hesaplar/ortalarlar. Esasen UDP kullanıyorlar ama çok büyük bir paket büyüklüğüne sahipler. Sanırım 1500 bayttan daha büyük.

+0

Bu yol MTU keşfini çağırdı ve orijinal sorumu ile ilgisi yok. Soruya 1 yıl önce yeterince cevap verildiği göz önüne alındığında cevabınızı göndermenin bir anlamı yok. Göndermeden önce dikkatlice düşünün. – Matt

İlgili konular