25 Temmuz 2017 Salı

IPV6 Header

Giriş
Şöyledir.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class |           Flow Label                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Payload Length        |  Next Header  |   Hop Limit   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                         Source Address                        +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                      Destination Address                      +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Linux'ta şu satırı dahil ederiz.
#include <netinet/in.h>
#include <netinet/ip6.h>
Kod olarak şöyle. Traffic Class ve Priority aynı anlama gelir.

struct ipv6header {
  unsigned char priority:4, version:4;
  unsigned char flow[3];
  unsigned short int length;
  unsigned char nexthdr;
  unsigned char hoplimit;

  unsigned int saddr[4];
  unsigned int daddr[4];
};
IPv6 şöyle düşünülebilir. 8 byte kontrol bilgisi + 32 byte adres bilgisi. Yani toplam 40 byte. Kontrol bilgisi uzunluğu IPV4'e göre bayağı kısaltılmış durumda. IPv6 ile NAT gerekmiyor. Bir arayüze birden fazla IPv6 adresi atanabilir. Dahili kullanım için olan - yani Internete baglanmayan - adreslere Unique Local Address (ULA) deniliyor. ULA adres bloğunu ilk yarısı rezerve edilmiş durumda. Diğer yarısı ise isteyen herkes tarafından kullanılabilir. ULA prefix'inden sonra gelen 40 bit rastgele seçilir ve bir adres yaratılır.

IV4 ve IPV6 Farkı

1. Version
Şöyle yaparız.
ip->version = 6;

2. Traffic Class
Açıklaması şöyle
8-bits, the most significant 6 bits are Type of Service and the remaining 2 are used for Explicit Congestion Notification (ECN).
Şöyle yaparız.
ip->priority = 0;
3. Flow Label
Açıklaması şöyle
Used to maintain the sequential flow of the packets belonging to a communication. The source labels the sequence to help the router identify that a particular packet belongs to a specific flow of information. This field helps avoid re-ordering of data packets. It is designed for streaming/real-time media.
Şöyle yaparız.
(ip->flow)[0] = 0;
(ip->flow)[1] = 0;
(ip->flow)[2] = 0;
4. Payload Length
Açıklaması şöyle
Payload is composed of Extension Headers and Upper Layer data.
ICMPv6 gönderdiğimizi varsayarsak şöyle yaparız.

ip->length = ((unsigned short int) sizeof(struct icmpv6header));
5. Next Header
Açıklaması şöyle
Indicates either the type of Extension Header, or if the Extension Header is not present then it indicates the Upper Layer.
Açıklaması şöyle
You can check the IPv4 "Protocol" field, or the IPv6 "Next Header" field to determine the payload of the IP packets.
ICMPv6 gönderdiğimizi varsayarsak şöyle yaparız.
ip->nexthdr = 58;
6.  Hop Limit: 
Açıklaması şöyle
This is the same as TTL on IPv4.
Şöyle yaparız.
ip->hoplimit = 255;
7. Source Address (128-bits)
Açıklaması şöyle
Private IPv6 addresses allow you to design your network in such a way that some entirely local services simply can't communicate with the outside world.
8. Destination Address (128-bits)
Açıklama yaz

Hiç yorum yok:

Yorum Gönder