네트워크 프로그래밍의 기초 - Socket

네트워크 프로그래밍을 하기 전에는 Socket 이라는 개념을 이해하셔야 합니다. 왜냐하면, 대부분 네트워크 프로그램에는 바로 이 소켓을 사용하여 통신을 하고 있기 때문이지요. 오늘은 프로그래밍으로 다가가는 네트워크 첫 걸음인 소켓에 대해 시작해보려 합니다.


Network Socket

소켓이라는 것은 무엇일까요? 네트워크 프로그래밍에 관심을 가지고 있다거나 아니면 이제 시작하려고 하시는 분들이라면, 한 번 쯤은 들어봤을 법한 단어입니다. 컴퓨터에서 이야기하는 소켓은 보통 네트워크 소켓이라고 하며, 요즘에는 인터넷을 사용한 통신이 많기 때문에 인터넷 소켓이라고도 이야기를 합니다.


프로그램은 다른 컴퓨터에 있는 프로그램과 통신하기 위해 바로 이 소켓을 사용합니다. BSD UNIX 운영체제에서 처음 소개 된 소켓의 시작은 BSD Unix Socket이며 현재는 Unix Socket, Windows Socket이 있습니다. 둘의 차이점은 BSD Unix 운영체제에서 사용하는 소켓이냐, Windows 운영체제에서 사용하는 소켓이냐의 차이 입니다. (물론 사용 방법도 약간 다릅니다.)


다시 얘기하자면, 프로그램이 통신하기 위해 소프트웨어로 작성된 통신의 접속점이라고도 할 수 있지요. 네트워크 응용 프로그램은 바로 이 소켓을 이용해서 네트워크망(인터넷)으로 데이터를 수/발신합니다.


소켓이 어떤 방식으로 작동하는지를 보여드리기 위해 위 이미지를 만들어봤습니다. 보통 통신이 애플리케이션인 맨 위층에서 시작되어 아랫쪽으로 간다고 생각하시면 됩니다.

먼저 소켓은 TCP, UDP의 전달 계층을 이용하는 API 중 하나입니다. 따라서 응용 프로그램에 소켓을 사용하여 프로그래밍을 하게 되면, 전달 계층으로 전송되어 물리층으로 가서 전송돼 네트워크상에 돌아다니게 됩니다.


Socket에 대한 기본 개념에 대해 간단히 설명 드려봤습니다. 이제 Socket에 대한 기본 형태가 어떤 것인지 알았습니다. Socket은 Unix 계열에서 사용할 수 있는 BSD Socket과 Windows 계열에서 사용할 수 있는 Windows Socket이 있습니다.


따라서 제 블로그에서는 Linux에서 하는 Socket Programming과 Windows에서 하는 Socket Programming 이렇게 2개의 포스트를 각각 작성하려 합니다. 물론 이 두 개의 소켓은 형태가 약간 다르지만, 둘이 호환되지 않는 것은 아니며, Linux의 서버 프로그램이 Windows Socket으로 올 경우, 통신이 안 되는 문제가 있다는 것이 아닙니다. 하지만 두 운영체제 간 Socket 사용법이 다르므로, 아래 2개의 버튼을 통해서 각자 원하는 운영체제에서 Socket Programming 을 직접 해보시기 바랍니다.


Let's Coding !


BSD Socket Programming


Windows Socket Programming


'Network' 카테고리의 다른 글

MQTT 프로토콜 개념과 이해  (0) 2017.08.26
네트워크 프로그래밍의 기초 - Socket  (0) 2017.04.09
IP MASQUERADE  (0) 2016.07.02
NAT (Network Address Translation)  (0) 2016.06.24
TAGS. ,
comments powered by Disqus

Tistory Comments 0