본문 바로가기
Computer Science/TCP&IP 소켓 프로그래밍

1-2. 소켓(socket)의 개념 (윈도우 소켓)

by JI NY 2023. 9. 26.

1-2. 소켓의 개념


목차

01. 소켓의 개념

    1) 소켓의 관점 : 데이터 타입

    2) 소켓의 관점 : 통신종단점

    3) 소켓의 관점 : 네트워크 프로그래밍 인터페이스

 


01. 소켓의 개념

  1. 소켓이 뭘까?

  • 소켓에 넣은 데이터는 상대편 소켓을 통해 빠져나온다.
  • 소켓은 포트 번호와 IP 주소 등의 통신 관련 정보를 포괄하는 개념으로 볼 수 있다.
  • TCP를 바로 쓰기 어려워서 운영체제의 힘을 빌리는데, 인터페이스로 소켓을 이용한다.
  1. 앞으로 소켓을 세 가지 관점에서 공부해보자.
    1. 데이터 타입
    2. 통신 종단점
    3. 네트워크 프로그래밍 인터페이스

1) 소켓의 관점 : 데이터 타입

파일 디스크립터(file descripter) & 핸들(handle)과 유사한 개념

→ 프로그래밍 관점에서 소켓은, 생성과 설정 과정이 끝나면 운영체제의 통신 관련 정보를 참조해 다양한 작업을 편리하게 사용할 수 있는 데이터 타입으로 볼 수 있다.

  • 일단 소켓을 만들고 나면 함수를 호출하여 손쉽게 통신을 수행할 수 있다.
  • 파일 생성하는 것처럼 소켓도 저렇게 생성하믄 됨.
  1. 응용 프로그램이 통신하려면 결정되어야 하는 요소
    1. 사용할 프로토콜(TCP/IP, UDP/IP 등)
    2. 송신 측 IP 주소
    3. 송신 측 포트번호
    4. 수신 측 IP 주소
    5. 수신 측 포트 번호
    6. OS는 내부적으로 통신때 필요한 정보를 결정하고 관리한다. 이때 응용프로그램은 소켓을 사용해 이 정보에 접근할 수 있다.

2) 소켓의 관점 : 통신 종단점

→ 응용 프로그램은 자신의 소켓이 상대편의 소켓과 연결된 것이라고 생각하고 데이터를 주고 받는다.

  • 통신 종단점(communication end-pointer), 즉 통신의 출발점과 도착점이라고 간주할 수 있다.
  1. 클라이언트가 서버에 데이터를 보내는 경우를 가정한 그림

  1. 클라이언트
    1. 자신의 소켓이 <서버 소켓>연결된 것으로 생각하고, send() 함수를 호출해 데이터를 보낸다.
  2. 서버
    1. 자신의 소켓이 **<클라이언트 소켓>과 연결된 것으로 생각**하고, recv() 함수를 호출해 데이터를 받을 수 있다.

3) 소켓의 관점 : 네트워크 프로그래밍 인터페이스

TCP/IP 프로토콜의 관점에서 소켓은 application 개층과 transport 계층 사이에 위치하는 ‘네트워크 프로그래밍 인터페이스’에 불과하다.

  • 소켓은 통신 양단이 모두 소켓을 사용할 필요는 없다
    • 프로그래밍할때 클라이언트가 서버거까지 만들 필요 없다
    • 서버도 마찬가지로 자기 소켓만 만들면 됨 클라소켓 안만들어도 된다는 뜻
  1. TCP/IP 프로토콜 구조에서의 소켓 : 응용 계층과 전송 계층 사이의 소켓
    1.  
    2. TCP/IP 프로토콜 구조에서 소켓은 응용 계층(application)과 전송 계층(transport) 사이에 위치한다고 간주한다.
    3. 그림과 같이 전송 (transport)계층의 TCP, UDP를 건너뛰고 바로 인터넷(Network) 계층(IP)사용할 수도 있다.
  2. 소켓은 통신 양단이 모두 소켓을 사용할 필요는 없다. 둘 다 같은 프로토콜을 사용하고 정해진 형태와 절차에 따라 데이터를 주고 받으면 된다.
    1. 용어 정리
      1. 소켓 : 소켓은 네트워크 통신을 위한 인터페이스로, 컴퓨터간에 데이터를 주고받을 수 있게 해줌.
      2. 통신 양단 (Endpoints) : 네트워크 통신에서 통신 양단은 데이터를 주고받는 두 개체. (웹 서버와 웹 브라우저같은거)

 

 


출처 및 참고자료

- TCP/IP 윈도우 소켓 프로그래밍 [한빛아카데미]

- 윈도우 소켓 데이터 타입 정리

- 네트워크 소켓(Socket)은 무엇인가

댓글