본문 바로가기
[개발] Info/용어

[Network] Socket

by Devsong26 2023. 12. 12.
반응형

소켓(Socket)은 네트워크를 통해 데이터를 교환하기 위한 엔드포인트(EndPoint)를 제공하는 메커니즘입니다. 소켓은 네트워크에서 통신을 가능하게 하는 기본적인 수단으로, 네트워크 프로그래밍에서 중요한 역할을 합니다.

 


소켓의 기본 개념

  • 엔드포인트
    • 소켓은 네트워크 상의 두 프로그램 간의 통신 엔드포인트로 작동합니다. 각 소켓은 IP 주소와 포트 번호의 조합으로 식별됩니다.
  • TCP/UDP 소켓
    • 소켓은 주로 TCP(Transmission Control Protocol) 또는 UDP(User Datagram Protocol) 위에서 작동합니다. TCP 소켓은 연결 지향적이고 신뢰성 있는 통신을 제공하는 반면, UDP 소켓은 비연결성이고 신뢰성이 떨어지지만 더 빠른 통신을 제공합니다.
  • 서버 소켓과 클라이언트 소켓
    • 일반적으로 서버는 서버 소켓을 생성하여 특정 포트에서 듣고(listen), 클라이언트는 클라이언트 소켓을 사용하여 서버에 연결합니다.

 

 

소켓 통신의 작동 방식

  • 서버 소켓 생성 및 바인딩
    • 서버는 서버 소켓을 생성하고, 특정 포트에 바인딩합니다. 이 포트는 서버가 클라이언트의 연결을 기다리는 포트입니다.
  • 연결 수신
    • 서버 소켓은 클라이언트로부터의 연결 요청을 기다립니다. TCP의 경우, 클라이언트로부터 연결 요청이 오면 서버는 이를 수락하여 새로운 소켓을 생성합니다.
  • 데이터 교환
    • 연결이 수립되면, 서버와 클라이언트는 데이터를 주고받을 수 있습니다. 데이터는 스트림(Stream) 형태로 전송됩니다.
  • 연결 종료
    • 데이터 전송이 완료되면, 서버나 클라이언트 어느 한쪽이든 연결을 종료할 수 있습니다.

 

 

소켓 프로그래밍

 

소켓 프로그래밍은 네트워크 통신을 위한 애플리케이션을 작성하는 과정입니다. Java, Python, C++ 등 대부분의 프로그래밍 언어는 소켓 프로그래밍을 위한 API를 제공합니다.

 


예시: Java에서의 소켓 프로그래밍

// 서버 소켓 생성
ServerSocket serverSocket = new ServerSocket(1234);

// 클라이언트 연결 기다림
Socket clientSocket = serverSocket.accept();

// 데이터 읽기 및 쓰기
InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();

// 데이터 처리...

// 소켓 및 서버 소켓 닫기
clientSocket.close();
serverSocket.close();

 

 

결론

 

소켓은 네트워크 통신의 핵심 요소로, 서버와 클라이언트 간의 데이터 교환을 가능하게 합니다. 소켓을 사용하면 다양한 종류의 네트워크 기반 애플리케이션을 개발할 수 있으며, 이는 웹 서버, 채팅 애플리케이션, 분산 시스템 등에 널리 사용됩니다.

반응형

'[개발] Info > 용어' 카테고리의 다른 글

Library  (0) 2023.12.17
Module  (0) 2023.12.17
전통적인 MVC  (0) 2023.12.12
Nexus Repository  (0) 2023.12.08
분산 락(Distributed Lock)  (1) 2023.12.06