네트워크 소켓이란? 통신의 끝점(endpoint)

소켓이란?

소켓(Socket)은 네트워크에서 실행 중인 두 프로그램의 양방향 통신 끝점입니다. 즉, 통신의 끝과 끝입니다. 각 소켓에는 IP 주소와 포트 번호가 구성되어 있습니다.

 

통신의 끝과 끝이라는 말은 클라이언트-서버 모델을 떠올리면 이해가 쉽습니다. 클라이언트와 서버는 모두 소켓을 만들어 서로 데이터를 교환합니다. 가장 많이 사용되는 프로토콜은 TCP/IP 입니다. 

 

서버는 소켓을 만들어 클라이언트가 서비스를 요청할 때까지 기다립니다(LISTENING). 클라이언트는 소켓을 만들어 수신을 대기하고 있는 서버에 서비스를 요청합니다. 서버는 요청을 수행하고 응답을 반환합니다.

 

예를 들어, 리눅스에서 netstat -ntlp 명령어를 실행하면 LISTENING 상태인 프로세스 목록을 확인할 수 있습니다. 로컬 주소 항목에는 0.0.0.0:22, 0.0.0.0:80, 127.0.0.1:3306 등의 데이터가 출력됩니다. 이를 두고 0.0.0.0 IP 주소의 22번 포트에서 소켓이 바인딩되어 수신을 대기하고 있다고 표현할 수 있습니다. 여기서 바인딩(binding)이란 주소를 설정하는 작업을 말합니다.

소켓 작동 흐름

소켓의 작동 흐름은 아래의 이미지를 참고하시면 좋을 거 같습니다.

 

소켓 작동 흐름
출처=IBM

 

 

반응형

댓글

Designed by JB FACTORY