기술(Tech, IT)/네트워크 (Networking)

[Networking] Socket Programming (소켓 프로그래밍) - 1

Daniel803 2024. 5. 5. 01:03

Socket Programming은 일반적으로 서로 다른 시스템에서 실행되지만 같은 시스템에 있을 수도 있는 서로 다른 프로세스 간의 통신을 가능하게 하는 방법이다. 본질적으로는 통신 채널의 엔드포인트인 'Socket'을 만드는 것이다. Socket Programming은 네트워크를 통해 통신하는 모든 애플리케이션의 기본이므로 네트워크 소프트웨어 개발에 매우 중요하다.

 

  1. Socket의 정의
    : Socket은 네트워크에서 실행 중인 두 프로그램 간의 양방향 통신 링크의 endpoint다. Socket읜 포트 번호에 바인딩 되어 TCP 계층에서 데이터가 전송될 애플리케이션을 식별할 수 있다.
  2. 작동 방식
    : Socket Programming은 일반적으로 TCP/IP 프로토콜 스택을 사용한다. 데이터는 네트워크 프로토콜(주로 TCP 또는 UDP)을 통해 표준 형식으로 전송된다. TCP (Transmission Control Protocol)은 안정적이며 데이터가 순서대로 도착하고 손실된 패킷을 재전송하도록 보장한다. UDP (User Datagram Protocol)은 더 빠르지만, 전송, 순서 또는 중복 보호를 보장하지 않는다.
  3. Socket Programming의 용도
    1. 네트워크 통신
      : 웹 서버 및 브라우저, 채팅 애플리케이션 또는 분산 컴퓨팅과 같이 서로 다른 애플리케이션이 네트워크를 통해 통신해야 하는 시나리오에서 사용된다.
    2. 프로세스 간 통신 (IPC, Inter-process Communication)
      : 네트워크를 통해 더 일반적으로 사용되지만 Socket Programming은 동일한 컴퓨터의 프로세스 간 통신을 용이하게 할 수도 있다.
  4. 프로그래밍
    : 대부분의 프로그래밍 언어는 Socket Programming을 위한 API를 제공한다. 예를 들어, Python에서는 Socket library를 통해 개발자가 Socket을 생성하고, 연결하고 데이터를 주고받을 수 있다.

 

참고

- https://www.geeksforgeeks.org/socket-programming-cc/