- Soket, iki işlem arasında çift yönlü iletişime olanak sağlayan bir IP adresi, bir port ve bir protokolün birleşimidir.
- Kullanılan taşıma protokolüne göre iki ana tür vardır: Güvenilir ve sıralı bağlantılar için TCP ve garantili teslimat olmaksızın hızlı iletimler için UDP.
- Bunlar, uygulamaların TCP/IP modelinin taşıma katmanı üzerinden veri akışlarını gönderip almasına olanak tanıyan yazılım arayüzü görevi görürler.

Programlama veya ağ oluşturma işleriyle uğraşırken soketlerden muhtemelen haberdarsınızdır, ancak tam olarak ne olduklarını anlamak biraz kafa karıştırıcı olabilir. Basitçe anlatmak gerekirse, bir arkadaşınızı aramak istediğinizi düşünün: İkinizin de bağlı olması ve hangi kanalı kullanacağınız konusunda anlaşmış olmanız gerekir. Dijital dünyada, soket , iki cihazın veya uygulamanın veri alışverişini veri kaybı olmadan gerçekleştirmesini sağlayan sanal bağlantı noktasıdır .
Bu sadece bir sayı veya sıradan bir dosya değil; bir köprü görevi görüyor. IP adresi ev adresiniz, port ise giriş yaptığınız belirli ağ geçidi iken, soket ise aktif çağrının kendisidir. İletişimin doğrudan ve kontrollü bir şekilde akmasını sağlayan, WhatsApp sohbetinden çevrimiçi video oyununa kadar bugün gerçek zamanlı olarak yaptığımız her şeyin temel taşı olan bir araçtır.
Bir prizin temel bileşenleri
Bir soketin çalışması ve iki işlemin ağın genişliği boyunca bağlantı kurabilmesi için çeşitli unsurlara ihtiyaç vardır. İlk olarak, ağdaki her makine için benzersiz bir tanımlayıcı olan IP adresi vardır (örneğin IPv4 192.168.1.1). Bu olmadan, sunucu kime yanıt vereceğini bilemezdi.
Ardından, port numarası devreye giriyor . Bunlar 0 ile 65535 arasında değişen sanal kanallardır. Örneğin, web'de gezinirken genellikle HTTP için 80 veya HTTPS için 443 portunu kullanırsınız. Node.js gibi geliştirme ortamlarında ise 3000 portu çok yaygındır. Port numarası, işletim sisteminin gelen verileri hangi uygulamanın alması gerektiğini tam olarak bilmesini sağlar.
Son olarak, bir taşıma protokolüne ihtiyacımız var . Oyunun kurallarını burada belirliyoruz: Bilginin ne olursa olsun, sırayla ve hatasız bir şekilde ulaşmasını istiyorsak TCP kullanıyoruz; saf hızı tercih ediyorsak ve bazı paketlerin kaybolması bizi rahatsız etmiyorsa UDP'yi seçiyoruz. IP adresi, port ve protokolün birleşimi teknik olarak bir soketi tanımlar.
TCP ve UDP: Aralarındaki fark nedir?
Uygulama detaylarına inersek, TCP soketlerinin kritik görevler için en yaygın kullanılan yöntem olduğunu görürüz. Bunlar bağlantı odaklı olarak adlandırılır; yani ilk veri baytını göndermeden önce, istemci ve sunucu her ikisinin de hazır olduğunu doğrulamak için bir "el sıkışma" gerçekleştirir. Bu, verilerin doğru sırayla ve eksiksiz olarak ulaşmasını sağlar ; bu da bir dosya indirmek veya bir web sitesini yüklemek için hayati önem taşır.
Öte yandan, UDP (Kullanıcı Veri Paketi Protokolü) soketlerimiz var. Bunlar bağlantısızdır ; temelde, veri paketlerini havaya gönderir ve hedeflerine ulaşmalarını beklerler. Hata kontrolü veya sıra garantisi yoktur, ancak çok hafif bir başlığa sahiptirler, bu da onları son derece hızlı hale getirir . Bu nedenle, video akışında, sesli aramalarda veya oyunlarda kullanılırlar; burada küçük bir gecikme (lag) bile görüntünün bir karesini kaybetmekten çok daha kötüdür.
Yaşam döngüsü ve teknik operasyon
Soketler kullanılarak gerçekleştirilen iletişim süreci oldukça hassas bir koreografi izler. Her şey, sunucunun belirli bir portta dinleyici açtığı soketin oluşturulmasıyla başlar. Bir istemci bağlanmaya karar verdiğinde, erişim talebinde bulunur ve sunucu bunu kabul ederek çift yönlü iletişimi kurar.
Kanal açıldıktan sonra, veriler bayt dizileri şeklinde akar. Modern dillerde bu, genellikle olay odaklı modüller kullanılarak yönetilir : sunucu yeni veri geldiğinde bir bildirim gönderir ve yanıtı doğrudan istemcinin soketine yazar. Son olarak, sistem kaynaklarını serbest bırakmak ve gereksiz yere açık portları önlemek için bağlantıyı kapatmak çok önemlidir.
Veri tedariği ve istemci-sunucu mimarisi
Bu yapı tamamen iletişimi katmanlar halinde düzenleyen TCP/IP modeline dayanmaktadır. Soket öncelikle taşıma katmanında çalışır ; bu, gerçek bir noktadan noktaya bağlantının bulunduğu ilk katmandır. Uygulamaların portlar aracılığıyla verilerle ilişkilendirildiği yer burasıdır ve uygulama katmanının (tarayıcının veya uygulamanın bulunduğu yer) ağ donanımıyla etkileşim kurmasına olanak tanır.
Port ile soketi karıştırmamak önemlidir. Port, denklemin yalnızca bir parçasıdır. Tam bir soket, dört unsurla tanımlanır : kaynak IP adresi, kaynak port, hedef IP adresi ve hedef port. Bu, bir sunucunun binlerce istemciyi aynı anda işlemesine olanak tanır; hepsi aynı 443 numaralı port üzerinden bağlansa bile, her bağlantı benzersizdir çünkü istemcinin IP adresi veya kaynak portu farklıdır.
İş dünyasında gerçek dünya uygulamaları
İşletmelerin günlük operasyonlarında soketler otomasyonun motorudur. Sayfayı yenilemeye gerek kalmadan güncellenen canlı satış panoları oluşturmak veya CRM'de anlık bildirim sistemleri için kullanılırlar. Soketler olmasaydı, web statik olurdu ve herhangi bir değişiklik olup olmadığını görmek için sayfayı sürekli yenilememiz gerekirdi.
Bunlar aynı zamanda IoT cihazlarıyla entegrasyonun da temelini oluşturur . Örneğin, fabrika sensörleri, ağı aşırı yüklememek için UDP soketleri aracılığıyla sunucuya gerçek zamanlı okumalar gönderir. Benzer şekilde, Telegram gibi modern API'lar ve mesajlaşma servisleri, bağlantı sürekliliğini sağlamak ve anlık mesaj iletimini garanti etmek için bu teknolojiye güvenir.
Güvenlik ve risk yönetimi
Açık soketlere sahip olmak, sisteminizde kapıları açık bırakmak anlamına gelir. Düzgün yönetilmezlerse, saldırganların savunmasız hizmetleri aradığı port taramaları için hedef haline gelebilirler. Bu nedenle, en iyi uygulama , sunucunun belleğini tüketmeyi amaçlayan hizmet reddi (DoS) saldırılarını önlemek için aktif olarak kullanılmayan tüm soketleri kapatmayı ve eşzamanlı bağlantı sayısını sınırlamayı gerektirir.
Bilgileri korumak için, soketler genellikle TLS (Transport Layer Security) gibi şifreleme katmanlarıyla sarılır . Bu, herhangi birinin veri iletimi sırasında verileri ele geçirmesini (koklama saldırıları) veya paketlerin kimliğini taklit etmesini önler. UDP durumunda ise, hızlı ancak güvenli iletimler için gerekli güvenlik katmanını sağlayan DTLS bulunur.
TCP veya UDP gibi protokoller kullanarak IP adreslerini ve portları birleştirerek çift yönlü iletişim kanalları kurma yeteneği, modern web'in ve Nesnelerin İnterneti'nin temelini oluşturan görünmez altyapıyı oluşturmaktadır. Linux sistemlerinde SELinux ile süreç yönetiminden günümüzün düşük kodlu uygulamalarına kadar, soket, herhangi bir yazılımın diğeriyle verimli, güvenli ve gerçek zamanlı olarak iletişim kurmasını sağlayan kilit bileşen olmaya devam etmektedir.

