[TCP/IP] #1-2. 소켓의 개념

소켓

  • 소켓(socket)
    • 네트워크 프로그램을 만들 때 사용하는 통신 인터페이스
    • 윈도우는 윈도우 소켓 형태로 제공한다.
    • 개발자는 통신 내부 구조를 몰라도, 절차에 따라 데이터 초기화하고 함수를 호출하면 된다.

 

  • 소켓 통신과 전화 통신 비교
    • 전화: 사람이 말한 내용이 상대방의 전화기에 들린다.
    • 소켓: 소켓에 넣은 데이터가 상대편 소켓을 통해 빠져 나온다.
    • 각 역할
      • 사용자: 사람 - 응용 프로그램
      • 연결 식별: 내선 번호 - 포트 번호
      • 주소: 대표 전화 번호 - IP 주소
      • 연결망: 전화망 - 인터넷
      • 포트번호 + IP 주소 = 소켓

 

소켓을 데이터 타입, 통신 종단점, 네트워크 프로그래밍 인터페이스 등 세 가지 관점에서 알아보자.


1. 데이터 타입

  • 소켓은 프로그램에서 사용하는 핸들(윈도우) 또는 파일 디스크립터(리눅스)처럼 다룬다.
  • 소켓을 생성하고 설정하면, 함수 호출만으로 통신 가능하다.
  • 응용 프로그램 통신시 결정되어야 할 요소
    • 사용할 프로토콜: TCP/IP, UDP/IP 등
    • IP 주소: 송신, 수신 측
    • 포트 번호: 송신, 수신 측
    • 이 정보는 OS가 내부적으로 관리하고, 응용 프로그램은 소켓을 통해 접근할 수 있다.

2. 통신 종단점

  • 응용 프로그램 관점에서 통신의 출발점과 도착점이다.
  • 예시. 클라이언트가 서버에 데이터를 보내는 경우
    • 클라이언트는 send() 함수 호출하여 데이터 전송
    • 서버는 recv() 함수를 호출하여 데이터를 수신
    • 양쪽은 각자 소켓을 통해 연결되어 있다고 생각하고 통신한다.

3. 네트워크 프로그래밍 인터페이스

  • TCP/IP 구조의 응용 계층과 전송 계층 사이에 위치한 인터페이스
  • 응용 프로그램이 소켓을 사용하지 않아도, 동일한 프로토콜과 규칙을 따르면 통신이 가능하다.
  • 그치만 대부분 소켓 인터페이스를 통해 TCP/UDP에 접근한다.

출처 TCP/IP 소켓 프로그래밍

Categories:

Updated:

Leave a comment