Bir soket oluşturduğunuzda, kullanmak istediğiniz iletişim tarzını ve bunu uygulayacak protokol türünü de belirtmeniz gerekir. Bir soketin
iletişim tarzı, soket üzerinde veri gönderimi ve alımının kullanıcı-seviyesindeki anlamını tanımlar. İletişim tarzının seçimi aşağıdaki sorulara cevap olur:
- Veri iletimi birimleri nelerdir?
Bazı iletişim tarzları veriye büyük bir yapısı olmayan bir dizi bayt olarak bakar; diğerleri ise bu baytları gruplayarak birer kayıt olarak ele alır (bu bağlamda paket olarak bilinirler).
- Normal bir işlem sırasında veri kaybı olur mu?
Bazı iletişim tarzları gönderilen her verinin ulaştığını garanti eder (sistem veya ağ göçmediği takdirde); diğer tarzlar ara sıra gerçekleşen veri kaybını normal karşılayıp, bazı paketleri mükerrer veya yanlış sırada gönderebilirler.
Güvenilmez bir iletişim tarzını kullanan bir yazılım tasarımı genellikle kayıp veya yanlış sırada gönderilen paketleri tespit edecek, gerektiğinde veriyi tekrar gönderecek tedbirler içerir.
- İletişim sadece tek eşle mi gerçekleştirilir?
Bazı iletişim tarzları telefon konuşmasına benzer-- karşı soket ile bir bağlantı kurarsınız ve veri alışverişini gerçekleştirirsiniz. Diğer tarzlar ise mektuba benzer--gönderilecek her ileti için adres belirtmek gerekir.
Ayrıca, soketi isimlendirmek için bir
isim alanı seçilmelidir. Soket adı ("adresi") sadece belirli bir isim alanı içerisinde anlamlıdır. Aslında, soket ismi için kullanılacak veri türü bile isim alanına bağlı olabilir. İsim alanları "Etki Alanı" (domain) olarak da adlandırılır, ancak kavram karmaşası yaratmamak için bu kullanımdan kaçınıyoruz. Her isim alanının
PF_ ile başlayan sembolik bir ismi vardır. Buna ilişkin
AF_ ile başlayan sembolik isim bu isim alanının adres biçimini gösterir.
Son olarak i sağlayacak protokolün seçilmesi gerekir.
Protokol veri gönderim ve alımında hangi alt seviye mekanizmanın kullanılacağını belirler. Her protokol belirli bir isim alanı ve iletişim tarzı için geçerlidir; bir isim alanı zaman zaman
protokol ailesi olarak adlandırıldığı için, isim alanının sembolik ismi
PF_ (Protocol Family) ile başlar.
Protokol kuralları iki yazılım, belki de iki ayrı bilgisayar arasında geçen veriye uygulanır; bu kuralların birçoğu işletim sistemi tarafından halledilir ve sizin hakkında bilgi sahibi olmanız gerekmez. Protokoller ile ilgili sizin bilmeniz gerekenler:
-
İki soket arasında iletişimin gerçekleşmesi için, soketler aynı protokolü kullanmalıdır.
-
Her protokol belirli bir tarz ve isim alanının bir birleşimi olarak anlam kazanır ve uygun olmayan bileşimlerle kullanılamaz. Örneğin TCP protokolü sadece bayt akımı tarzında iletişim ile İnternet isim alanına uyar.
-
Her tarz ve isim alanı bileşimi için bir öntanımlı protokol vardır, protokol numarasına 0 verilerek istenebilir. Normalde yapmanız gereken de budur--öntanımlı olanı kullanın.
Bu kısımdaki açıklamaların başından sonuna çeşitli yerlerde değişken/parametre boyutunu göstermek gerekmektedir. Ve işte burada sorun başlar. İlk uygulamalarda bu değişkenlerin değişken türü basitçe int idi. Zamanımızda bir çok makinede int 32 bit genişliğindedir ve fiilen 32 bitlik bir değişken standardı yaratmıştır. Bu tür değişkenlerin referansları, çekirdeğe aktarıldığı için önemlidir.
Ardından Posixçiler, "bütün büyüklük değerleri size_t türündedir" sözleriyle arayüzü birleştirmiştir. 64 bitlik makinelerde size_t 64 bit genişliğindedir, böylece değişkenlere göstericiler ortadan kalkmıştır.
Unix98 belirtimi socklen_t türü ile bir çözüm üretmiştir. Bu tür, POSIX'in size_t olarak değiştirdiği tüm hallerde kullanılır. Bu türün tek gereksinimi işaretsiz en az 32 bittir. Bu nedenle 32 bitlik değişkenlere aktarılacak göstericiler, 64 bitlik değerler kullanan uygulamalarla kolayca aktarılabilir.