Socket Programlama Nedir?



Soket bir ağa bağlı olan en az 2 cihaz (Server, Kişisel Bilgisayar, Arduino, Raspberry Pi, Gömülü sistem, PLC, HMI vb.) arasında kurulan iletişim bağlantı noktasıdır. Soket bağlantısı istemci sunucu olarak yapılandırılır. Bir cihaz server ise diğer cihaz client olmalıdır. 

Soket programlama IPv6 ve IPv4 üzerinde TCP, UDP, IP, ICMP ve RAW olarak ayrılır. TCP SOCK_STREAM, UDP SOCK_DGRAM ve IP, ICMP ile RAW ise SOCK_RAW olarak sınıflandırılmıştır.




TCP : Akış soketi (SOCK_STREAM) arabirimi, güvenilir bir bağlantı yönelimli hizmeti tanımlar. Veriler hatasız veya tekrarlanmadan gönderilir ve gönderildiği sırayla alınır.

UDP : Datagram soketi (SOCK_DGRAM) arayüzü, datagramlar veya mesajlar için bağlantısız bir hizmeti tanımlar. Datagramlar bağımsız paketler olarak gönderilir. Güvenilirlik garanti edilmez, veriler kaybolabilir veya çoğaltılabilir ve datagramlar bozuk gelebilir. Bununla birlikte, datagram soketleri, akış soketlerine göre gelişmiş performans kapasitesine sahiptir ve kullanımı daha kolaydır.

IP, ICMP, RAW : Ham soket (SOCK_RAW) arabirimi, İnternet Protokolü (IP) gibi alt katman protokollerine doğrudan erişim sağlar .

HTTP, FTP, SMTP, MQTT gibi ağ protokolleri soket yapısı üzerinde çalışmaktadır.

Kaynaklar : 
https://www.hivemq.com/blog/mqtt-essentials-special-mqtt-over-websockets/
https://docs.oracle.com/cd/E19455-01/806-1017/sockets-4/index.html
https://www.ibm.com/docs/en/ztpf/1.1.0.15?topic=sockets-types-supported-by-tcpip