소켓 통신

송지윤·2026년 5월 19일

Spring Boot

목록 보기
80/81

네트워크 드라이브(NAS, SMB 공유폴더) 접근도 결국 내부적으로는 소켓(Socket) 통신 사용
포트를 통해서 통신하고 해당 포트가 열려 있어야 함.

소켓(Socket)이란?

프로그램끼리 네트워크로 데이터를 주고받는 통신 창구

비유

컴퓨터를 아파트라고 생각하면

  • IP 주소 = 아파트 주소
  • 포트(port) = 집 호수
  • 소켓(socket) = 실제 통화 연결

과 비슷함

예를 들어

192.168.0.10:445

의미

  • 192.168.0.10 -> 컴퓨터 주소(IP)
  • 445 -> SMB 서비스 포트

소켓 통신
예를 들어 프로그램이 SMB 공유 폴더에 파일 요청
내부적으로는 이 파일 열어줘, 이 데이터 보내줘 같은 데이터를 네트워크로 주고받음
이 연결 자체가 소켓 통신

정확히는 운영체제가 제공하는 Socket API를 사용해서 통신함
Java에서도 있음

Socket socket =
    new Socket("192.168.0.10", 445);

포트

한 컴퓨터에서 여러 프로그램이 네트워크 사용

  • 웹서버
  • DB
  • NAS
  • SSH
  • 게임 서버

운영 체제가 어느 프로그램에게 전달할지 구분해야 함. 그래서 포트 사용

예시

웹 서버 : 80, 443
SSH : 22
SMB 공유폴더 : 445

네트워크 드라이브도 소켓 통신함.
접속 시 내부적으로 SMB 프로토콜 + TCP 소켓 통신 사용
그래서 포트 열려있어야함 (TCP 445 포트 사용)
방화벽에서 막혀 있으면 네트워크 드라이브 연결 실패 가능

파일 복사 시 실제 내부
내 PC -> NAS 파일 복사
내부적으로
1. TCP 연결 생성
2. 인증
3. 파일 열기 요청
4. 데이터 packet 전송
5. ACK 응답
6. 완료 응답
등 수행
전부 소켓 기반.

TCP/UDP도 연결됨

소켓 통신은 보통 TCP, UDP 기반

TCP

대표적 파일 전송 방식
특징

  • 안전
  • 순서 보장
  • 재전송
  • 느리지만 안정적
    SMB/NAS 대부분 TCP 사용

UDP

특징

  • 빠름
  • 순서 보장 X
  • 유실 가능
    영상 스트리밍, 게임 등에 사용

소켓 자체는 프로토콜이 아님
많이 헷갈리는 부분

Java 에서 보면 서버

ServerSocket server =
    new ServerSocket(8080);

포트 열고 대기
클라이언트

Socket socket =
    new Socket("IP", 8080);

접속

Spring 서버도 결국 소켓 서버
Tomcat 실행하면 내부적으로 8080 포트 listen
브라우저가 http://localhost:8080 접속하면 TCP 소켓 연결 발생

0개의 댓글