2025년 3월 8일
소켓 (Socket)
1. TCP/IP 통신의 접점, 소켓 (Socket)의 개념
개념도 | ![]() |
---|---|
개념 | 원격지 호스트 간 상호 통신을 위해 TCP/IP 기반 연결 및 데이터 전송을 수행하는 네트워크 종단점(Endpoint) |
2. TCP 소켓 (TCP Socket) 동작 과정 및 소켓 함수
(1) TCP 소켓 동작 과정
![]() |
- 서버/클라이언트 모두 소켓 생성 후 클라이언트에서 서버로 연결 요청 후 데이터 전송
(2) TCP 소켓 함수
구분 | 소켓 함수 | 역할 |
---|---|---|
공통 함수 | Socket | 통신을 위한 초기 소켓 생성 |
Read | 연결된 소켓 스트림에 데이터 읽기 | |
Write | 연결된 소켓 스트림에 데이터 쓰기 | |
Close | 연결된 소켓을 종료 | |
서버측 함수 | Bind | 생성된 소켓에 네트워크 주소 부여 |
Listen | 서버 대기큐 지정을 통한 클라이언트의 연결요청 대기 | |
Accept | 서버측에서 클라이언트와 연결 | |
클라이언트측 함수 | Connect | 클라이언트가 서버측에 소켓 통신 요청 |
- TCP 소켓은 Listen, Accept 함수를 이용한 연결 기반 신뢰성이 필요한 서비스에 사용
3. UDP 소켓 (UDP Socket) 동작 과정 및 소켓 함수
(1) UDP 소켓 동작 과정
![]() |
- 서버/클라이언트 모두 소켓 생성 후 클라이언트는 서버에 연결 요청 없이 즉시 데이터 전송
(2) UDP 소켓 함수
구분 | 소켓 함수 | 역할 |
---|---|---|
공통 함수 | Socket | 통신을 위한 초기 소켓 생성 |
Recvfrom | 데이터 수신 및 송신지 정보 획득 | |
Sendto | 전송할 목적지 지정 및 데이터 전송 | |
서버측 함수 | Bind | 생성된 소켓에 네트워크 주소 부여 |
- UDP 소켓은 사전 연결 절차 없이 빠른 데이터 전송 기반 실시간 서비스에 사용
- 최근 HTTP 환경에서 웹소켓 (Web Socket)을 통해 양방향 실시간 통신 채널 제공
4. 웹소켓 (Web Socket)의 개념 및 동작 과정
(1) 웹소켓의 개념 및 특징
웹소켓 개념 | 웹서버와 웹브라우저 간 실시간 통신을 위해 ws 프로토콜 기반 클라이언트와 서버 사이에 지속적인 양방향 통신 채널을 제공하는 기술 |
---|---|
기술 구현 특징 | – HTML5의 기능으로 양방향 통신 API 제공 – 웹서버와 웹응용 간 Handshake 기반 상호 연결 – 양방향 전이중 통신 (Bi-Direction Full Duplex) – TCP/IP 소켓 구조 (Listen, Accept, Send, Receive 등) |
서비스 제공 특징 | – 대부분의 웹브라우저 지원(Google Chrome, MS Edge, Firefox 등) – 기능이 웹브라우저에 내장되어 별도의 설치 과정 불필요 – Windows, UNIX/Linux 등 운영체제 플랫폼에 독립적 – 연결 지향 서비스로 서버 측면의 오버헤드, 보안취약점 발생 |
(2) 웹소켓의 동작과정
![]() |
① | – 웹브라우저와 웹서버간 Handshake를 통해 연결 – 웹브라우저에서 WebSocket 객체 생성 |
② | – 웹브라우저는 연결 시 사용한 WebSocket 객체를 이용하여 데이터 전송 (send() 함수 이용하여 웹서버로 데이터 전송) – 웹서버로부터 처리된 결과는 WebSocket 객체의 핸들러를 통해서 수신 (onMessage() 핸들러를 이용하여 웹서버로부터 데이터 수신) |
③ | – Event 발생 시 웹서버에서 데이터를 브라우저로 Push – 웹브라우저는 WebSocket 객체의 핸들러를 통해 지속적 수신 (onMessage() 핸들러를 이용하여 웹서버로부터 데이터 수신) – 웹브라우저는 이를 위해 Polling 불필요 |
- 웹소켓 사용시 보안취약점 존재 여부 점검 및 웹서버 부하를 고려한 서비스 설계 필요
[참고]
- 백창우, 한빛미디어, TCP/IP 소켓 프로그래밍, 2005
- MDN Web Docs, WebSocket을 이용하여 클라이언트 애플리케이션 작성하기