네트워크
[네트워크] 소켓(Socket) 통신
찹쌀궁뎅이
2025. 3. 17. 17:25
반응형
웹 개발을 시작하면서 네트워크 공부에 대한 필요성을 깨닫게 되었다. 사실 고등학교 시절에 배웠는데 다 까먹어서 다시 공부를 시작하게 되었다. Socket 통신과 HTTP 통신에 대하여 다룰 것인데 이번 장에는 Socket 통신에 대하여 알아보자.
1. 소켓(Socket)이란?
사실 Socket에 대한 개념이 잡히지 않아서 정의부터 찾아보았다.
소켓(Socket)의 정의
- 네트워크 상에서 서버 프로그램과 클라이언트 프로그램이 통신하는 end-point이다. end-point는 IP 주소와 port 번호를 조합한 것으로, 최종 목적지를 나타낸다. 즉, 서버 프로그램과 클라이언트 프로그램이 통신할 수 있도록 하는 연결부, 연결 구멍이라고 할 수 있다.
소켓은 IP 주소, 포트 번호, 프로토콜이 필요하다.
2. 소켓(Socket) 통신 방식
소켓 통신은 서버 소켓과 클라이언트 소켓의 통신을 정의한다.
서버와 클라이언트를 나눠서 살펴보자.
서버 소켓
- 비어있는 소켓을 생성한다.
- IP와 포트번호를 생성한다.
- 하나의 프로세스는 동일한 포트로 여러 개의 소켓을 결합할 수 있다. 하나의 프로세스는 하나의 포트만으로 여러 프로세스를 처리할 수 있는 이유가 이것이다.
- 클라이언트 연결 요청을 대기한다.
- 클라이언트의 연결 요청을 받아들이고 동시에 새로운 소켓을 생성하여 클라이언트 소켓과 연결한다.
- 데이터의 송수신을 시작한다. 수신을 할 때에는 언제, 어떤 데이터를 보낼 지 모르기 때문에 별도의 Thread에서 작업하게 된다.
- 더 이상 데이터 송수신이 필요없다고 판단되면 소켓을 닫는다.
클라이언트 소켓
- 비어있는 소켓을 생성한다.
- 연결하려는 IP 주소와 포트 번호로 연결하고 request가 돌아오면 연결이 성사된다.
- 데이터의 송수신을 시작한다. 수신을 할 때에는 언제, 어떤 데이터를 보낼 지 모르기 때문에 별도의 Thread에서 작업하게 된다.
- 더 이상 데이터 송수신이 필요없다고 판단되면 소켓을 닫는다.
3. 소켓(Socket)의 종류
소켓 통신은 Stream Socket과 Datagram Socket으로 나뉜다.
TCP - Stream sockets
- TCP 사용
- 연결 지향형 소켓
- 데이터가 순서대로 송수신
- 신뢰성 있는 데이터 전송
- UDP보다 전송속도가 느림
UDP - Datagram sockets
- UDP 사용
- 비연결 지향형 소켓
- 데이터가 순서대로 송수신 되었는지 모름
- 신뢰성 없는 데이터 전송
- TCP보다 전송속도가 빠름
반응형