본문 바로가기
network/socket_communication

소켓 통신이란 무엇인가 – TCP/IP의 진짜 동작 방식 이해하기 | 소켓종류와 통신흐름 | 소켓통신 언제 쓰는지

by 죄니안죄니 2025. 4. 9.

들어가며

개발자가 실시간 데이터 전송, 장비 연동, 서버 간 통신, 채팅 시스템 등을 구현할 때 반드시 만나게 되는 개념이 있습니다.
바로 **소켓(Socket)**입니다.

소켓은 네트워크 상에서 컴퓨터 간 통신을 가능하게 해주는 **프로세스 간 통신(IPC, Inter-Process Communication)**의 한 형태이며, TCP/IP 기반 통신의 가장 핵심적인 기술 중 하나입니다.

이 글에서는 소켓 통신의 개념, 구조, TCP와 UDP의 차이, 서버-클라이언트 간 동작 흐름을 살펴보며 📂 Network / Socket Communication 카테고리의 출발점을 마련하겠습니다.


소켓(Socket)이란?

소켓은 **네트워크 연결의 끝점(endpoint)**입니다.
즉, 두 컴퓨터 간 통신을 위해 서로 연결되는 '통신 인터페이스'라고 할 수 있습니다.

소켓 통신은 IP 주소 + 포트 번호 조합을 통해 서로 데이터를 주고받는 구조로 동작합니다.

✔ 소켓 = IP + Port + Protocol(TCP/UDP)로 구성된 연결 단위


TCP 소켓 vs UDP 소켓

항목 TCP UDP
연결 방식 연결 기반 (3-way handshake) 비연결 기반 (빠름)
신뢰성 보장 (순서, 재전송) 보장하지 않음 (순서 보장 없음)
속도 느림 (신뢰성 확보 비용) 빠름 (간단한 전송 구조)
사용 예시 웹 서버, 파일 전송, DB 통신 스트리밍, 게임, 센서 데이터

실시간성이 중요할수록 UDP, 안정성이 중요할수록 TCP를 선택합니다.


소켓 통신 흐름 (TCP 기준)

  1. 서버 소켓 열기: 포트를 바인딩하여 대기 상태 유지 (ServerSocket)
  2. 클라이언트 요청: 서버 IP와 포트로 연결 요청 시도 (Socket)
  3. 3-way handshake: 연결 확립 (SYN → SYN/ACK → ACK)
  4. 데이터 송수신: 양방향으로 스트림 기반 데이터 주고받기
  5. 연결 종료: FIN/ACK을 통한 종료 핸드셰이크 진행

실무에서 소켓 통신이 필요한 상황들

분야 활용 예시
실시간 시스템 채팅, 알림, 게임 서버, 실시간 피드
장비 연동 프린터, 저울, 바코드 리더기 (Zipher 등)
로컬 IPC 클라이언트-서버 간 직접 통신 (ex. Redis 클라이언트)
분산 시스템 서버 간 통신, 메시지 브로커 직접 연결 등

실무 포인트

  • TCP 소켓은 연결 관리가 핵심 → 타임아웃, 재시도, keep-alive 설정 필요
  • 포트 충돌, 방화벽, NAT 환경에서는 포트 바인딩 에러 고려해야 함
  • 병렬 클라이언트 처리 시 스레드/비동기/이벤트 루프 구조 고려 필요
  • 소켓이 닫히지 않으면 리소스 누수 발생 가능 → 명시적 close() 처리 필요

 


마치며 – 앞으로 다룰 Socket Communication 시리즈

📂 Network / Socket Communication 카테고리에서는 다음과 같은 실무 주제를 정리할 예정입니다:

  • Java로 TCP 소켓 서버/클라이언트 구현하기
  • 멀티 클라이언트 구조 (스레드 vs 비동기 NIO)
  • 프린터/저울과의 TCP 기반 연동 구조 설계
  • 소켓 타임아웃 및 재시도 로직 설계
  • 웹소켓과의 차이점 (WebSocket vs Socket)

단순한 개념을 넘어 실전 통신을 이해하고 싶다면, 소켓부터 제대로 알아야 합니다. 지금부터 하나씩, 진짜 네트워크를 연결해봅시다!

뭔가 쓰는 중…


📌 
다음 글 미리보기
👉 이벤트 루프와 논블로킹 구조 

📚 socket통신 시리즈 전체 보기
👉 https://jobreview.tistory.com/category/network/socket_communication



댓글