İletim Kontrol Protokolü, OSI veya TCP/IP modeli için taşıma katmanında çok önemli bir protokoldür. TCP'de aşağıdakiler gibi birçok avantaj vardır:
- Gönderilen herhangi bir veri alıcı tarafından bir süre içinde onaylanmazsa, TCP yeniden iletim yapar.
- TCP, verileri göndermeden önce bir miktar bağlantı kurar. Biz bu bağlantıya 3'lü el sıkışma diyoruz.
- TCP, tıkanıklık kontrol mekanizmasına sahiptir.
- TCP, bazı yöntemleri kullanarak hatayı algılayabilir.
Esas olarak TCP 3 yollu el sıkışmayı öğrenelim. Wireshark'ta 3'lü el sıkışma için önemli alanları da öğrenelim.
3'lü El Sıkışma
3 yönlü bir el sıkışmada gerçekleşen üç çerçeve alışverişi vardır:
İlk çerçeve her zaman istemci tarafından sunucuya gönderilir. Bunu basit bir diyagramdan anlayalım:
'MÜŞTERİ SUNUCUSU'
Çerçeve1: İstemci, sunucuya SYN çerçevesi gönderir-------------------------------------------------><----------------------------------Sunucu SYN+ACK çerçevesini gönderir müşteriye: Frame2
Çerçeve3: İstemci, ACK çerçevesini sunucuya gönderir-------------------------------------------------->
Wireshark'ta bu üç kareyi görebiliriz. Wireshark'ta tüm TCP çerçevelerini görmek için “tcp” filtresi kullanılabilir. İşte üç kare için ekran görüntüsü:
Şimdi üç çerçeveyi de ayrıntılı olarak anlayalım:
SYN
Bu çerçeve, istemcinin sunucuyu bilgilendirme yetenekleri hakkında birçok bilgi içerir. Aşağıdaki ekran görüntüsü, SYN çerçevesinin tüm önemli alanlarını göstermektedir:
SYN çerçevesi için önemli alanlar şunlardır:
Kaynak Bağlantı Noktası: 50602Hedef Port: 80
Sıra Numarası: 0
Teşekkür Numarası: 0
Başlık Uzunluğu: 32 bayt
Bayraklar: 0x002 (SYN):
Onay: Belirtilmemiş
İtme: Ayarlanmadı
Sıfırla: Ayarlanmadı
Syn: Set -----> Bu bit, çünkü bu bir SYN çerçevesidir.
Fin: Ayarlanmadı
Pencere: 65535
Acil İşaretçi: 0
TCP Seçeneği - Maksimum segment boyutu: 1460 bayt
TCP Seçeneği - Pencere ölçeği: 3 (8 ile çarpın)
TCP Seçeneği - SACK'e izin verilir
GÖRÜNTÜLE+ONAYLA
Bu çerçeve, sunucunun istemciyi bilgilendirme yetenekleri hakkında birçok bilgi içerir. Aşağıdaki ekran görüntüsü, SYN+ACK çerçevesinin tüm önemli alanlarını gösterir:
Bu çerçeve aynı zamanda istemci tarafından gönderilen SYN çerçevesini de onaylar.
SYN+ACK çerçevesi için önemli alanlar şunlardır:
Kaynak Bağlantı Noktası: 80Hedef Bağlantı Noktası: 50602
Sıra Numarası: 0
Teşekkür Numarası: 1
Başlık Uzunluğu: 32 bayt (8)
Bayraklar: 0x012 (SYN, ACK)
Onay: Belirlendi
İtme: Ayarlanmadı
Sıfırla: Ayarlanmadı
Onun: Set
Fin: Ayarlanmadı
Pencere: 29200
Acil İşaretçi: 0
TCP Seçeneği - Maksimum segment boyutu: 1412 bayt
TCP Seçeneği - SACK'e izin verilir
TCP Seçeneği - Pencere ölçeği: 7 (128 ile çarpın)
Bu çerçevede “Acknowledge” ve “SYN” bitlerinin set edildiğini görebiliriz. Bunun nedeni, bu çerçevenin SYN+ACK olmasıdır.
ACK
Bu çerçeve, 3'lü el sıkışmanın son çerçevesi ve ayrıca SYN+ACK'nin müşteri tarafından onaylanmasıdır. Aşağıdaki ekran görüntüsü, ACK çerçevesinin tüm önemli alanlarını gösterir:
ACK çerçevesi için önemli alanlar şunlardır:
Kaynak Bağlantı Noktası: 50602Hedef Port: 80
Sıra Numarası: 1
Teşekkür Numarası: 1
Başlık Uzunluğu: 20 bayt (5)
Bayraklar: 0x010 (ACK)
Acil: Ayarlanmadı
Onay: Belirlendi
İtme: Ayarlanmadı
Sıfırla: Ayarlanmadı
Syn: Ayarlanmadı
Fin: Ayarlanmadı
Pencere: 32768
Burada sadece “Onay” biti ayarlanır çünkü bu bir ACK çerçevesidir.
Bazı Önemli Ortak Alanların Açıklaması
Bağlantı noktası 80 : Bu eğitimde bir sabit bağlantı noktası 80 gözlemledik. Bunun nedeni, bunun bir HTTP yakalaması olması ve HTTP iletişimi için 80 numaralı bağlantı noktasının sabitlenmesidir (sunucu tarafı).
Sıra numarası : O çerçevenin sıra numarası. Eşitleme ilk çerçevedir, bu nedenle sıra numarası olarak 0'a sahibiz.
TCP İşaretleri:
Teşekkür – Çerçeve bir ACK ise bu bit ayarlanır. Örnek: SYN+ACK, ACK çerçevesi.
SYN – Çerçeve bir SYN ise bu bit ayarlanır. Örnek: SYN.
pencere : Bu alan, göndericinin alma modundaki maksimum pencere boyutunu paylaşır. Örnek: SYN çerçevesinde 65535 bayt pencere boyutuna sahibiz. Bu, alıcının herhangi bir zamanda maksimum 65535 bayt TCP verisi alabileceği anlamına gelir.
Çuval İzin : Gönderim SACK'i [seçici onay] destekliyorsa bu bit ayarlanır.
Maksimum Segment Boyutu : MSS de diyebiliriz. Bu, göndericinin alabileceği maksimum veri çerçevesini tanımlar. Örnek: MSS'yi SYN çerçevesinde 1460 byte olarak alıyoruz.
Çözüm
TCP 3 yollu el sıkışma ve SYN, SYN+ACK ve ACK çerçeveleri için tüm yararlı alanları öğrendik. TCP hakkında daha fazla bilgi edinmek istiyorsanız, bu RFC bağlantısını takip edebilirsiniz. https://tools.ietf.org/html/rfc793 .