17 Ağustos 2017 Perşembe

UDP Header

Giriş
Internette bölünmeye uğramadan gönderilebilecek en büyük UDP büyüklüğü şöyle hesaplanır. IP paketinin MTU değeri 576 byte kabul edilirse, 20 byte IP header, 8 byte UDP header çıkınca geriye 548 byte kalır.

IP header diğer seçeneklerle 60 byte büyüklüğüne kadar çıkabiliyor. Biraz daha tedbirli olmak iççin 512 byte seçilebilir

Yapısı 
Şöyledir.
0      7 8     15 16    23 24    31  
+--------+--------+--------+--------+ 
|     Source      |   Destination   | 
|      Port       |      Port       | 
+--------+--------+--------+--------+ 
|                 |                 | 
|     Length      |    Checksum     | 
+--------+--------+--------+--------+ 
|                                     
|          data octets ...            
+---------------- ...                 
Şöyledir. struct olarak şöyle gösteririz.
struct udphdr {
  u_int16_t source;
  u_int16_t dest;
  u_int16_t len;
  u_int16_t check;
};
UDP Port Numaraları
TCP Port Numaraları ile aynı mantığa sahip.

Source Port

Port numarası karşı taraf cevap verebilsin diye kullanılır.
Just like TCP, UDP randomly selects an Ephemeral port for one data stream. So when a datagram is sent by a client from an unbound port number, an ephemeral port number is assigned automatically so the receiving end can reply to the sender.
Checksum Alanı
Checksum alanını IPv4'te isteğe bağlı, IPv6'da ise mecburi. IPv4'te bu alanın konulmayabiliyor olması ilginç. Checksum şöyle. Hep IP Header'dan hem de UDP Header'dan alanları kullanıyor.
Checksum is the 16-bit one's complement of the one's complement sum of a pseudo header of information from the IP header, the UDP header, and the data, padded with zero octets at the end (if necessary) to make a multiple of two octets.
The pseudo header conceptually prefixed to the UDP header contains the source address, the destination address, the protocol, and the UDP length. This information gives protection against misrouted datagrams. This checksum procedure is the same as is used in TCP.
              0      7 8     15 16    23 24    31 
             +--------+--------+--------+--------+
             |          source address           |
             +--------+--------+--------+--------+
             |        destination address        |
             +--------+--------+--------+--------+
             |  zero  |protocol|   UDP length    |
             +--------+--------+--------+--------+
If the computed checksum is zero, it is transmitted as all ones (the equivalent in one's complement arithmetic). An all zero transmitted checksum value means that the transmitter generated no checksum (for debugging or for higher level protocols that don't care).

Hiç yorum yok:

Yorum Gönder