# Datagram Congestion Control Protocol
Datagram Congestion Control Protocol (DCCP), mesaj tabanlı bir Ulaşım katmanı protokolüdür.
DCCP, çokluortam trafiğini desteklemek üzere IETF topluluğu tarafından önerilmiş bir iletim protokolüdür. Güvenilir olmayan veri iletimi gerçekleştirmektedir. Bağlantı kurulumu, sonlandırımı ve uygun tıkanıklık kontrol mekanizmasının seçimi için anlaşmalar yapmaktadır. ECN mekanizmasında, tıkanık durumda olan yönlendiriciler (router), paketleri atmak yerine paketleri işaretleme işlemini gerçekleştirirler. DCCP, herhangi bir paket kaybı olduğunda, Explicit Congestion Notification (ECN) olarak adlandırılan bir bilgilendirme mekanizması kullanmaktadır. Bu mekanizma ile de göndericiye, alıcının hangi paketleri alabildiğine ve hangi paketlerin kaybolduğuna dair bilgiler gönderilir. 
DCCP= UDP+ (Tıkanıklık Kontrolü+ Tokalaşmalar+ Bağlantı Kurulumu)
DCCP= TCP-(Güvenirlik+ Sıralı Paket İletimi+ Bayt akışı )


## Paket Yapısı.
DCCP protokol fonksiyonları on adet paket türü ile gerçekleştirilmektedir. Bu paketlerden sekizi bağlantı kurulumu için kullanılırken diğer ikisi de senkronizasyonu sağlamak için kullanılır. DCCP-Request paketi, istemci tarafından bağlantının kurulumunun başlaması için gönderilir. DCCP-Response paketi, sunucu tarafından DCCP-Request paketine cevap olarak gönderilir. DCCP-Data paketi ile uygulama verisi, DCCP-Ack paketi ile yalın onay bilgisi, DCCP-DataAck paketi ile de uygulama verisi ile onay bilgisi birlikte gönderilmektedir. DCCP-CloseReq paketi sunucunun istemciye bağlantıyı kapatması için gönderdiği bir istek paketidir. DCCP-Close paketi sunucu ya da istemcinin bağlantıyı kapatması için kullandığı bir pakettir. DCCP-Reset paketi, bağlantının beklenmedik bir durumda sonlandırımı için kullanılmaktadır. DCCP-Sync ve DCCP-SyncAck paketleri paket iletiminde senkronizasyonu sağlamak için kullanılır. Her bir DCCP paketi birer sıra numarası taşır böylece paket kayıpları kolayca belirlenip rapor edilebilir.


## Bağlantı Kurulumu.
DCCP bağlantısı kurulmadan önce istemci ve sunucu arasında hangi tıkanıklık mekanizmasının ve parametrelerinin kullanılacağına dair bir anlaşmaya varılmış olması gerekir. DCCP, güvenilir olmayan bir veri iletimi gerçekleştirse de, onay bilgilerinin gönderiminin güvenilir olması beklenir. Bunun içinde göndericinin, alıcının göndermiş olduğu onay bilgilerinden en az birisini onaylaması gerekmektedir. DCCP'de, göndericinin bu onaylama işlemini gerçekleştirebilmesi için kullanılan yöntem, alıcının gönderdiği onay bilgisinde paket sıra numarası bilgisinin bulunmasını sağlamaktır ki gönderici alıcıya hangi pakete ait onay bilgisinin alındığını rapor edebilsin.
DCCP'de bağlantılar iki yönlüdür yani veri ve onay bilgisi eş zamanlı olarak her iki yönde iletilebilmektedir. Bu durum video akışlandırma uygulamalarda kullanılan DCCP gibi bir protokol için uygun değildir. Çünkü sunucudan istemciye video gibi büyük bir boyutta veri iletilirken, istemciden sunucuya sadece dosya ismi gönderilebilmektedir. Yani tek bir bağlantıda asimetrik bir durum oluşmaktadır. Bu duruma çözüm olarak, DCCP bağlantısının iki yarım bağlantıya ayrılması önerilmiştir. Alıcıdan göndericiye, göndericiden alıcaya olan bağlantıların her birine yarım-bağlantı (half-connection) denmektedir. Bu yarım bağlantıların her biri tıkanıklık kontrol mekanizmasına sahiptir.