Socket   소켓

(2021-01-31)

1. 소켓 (Socket) 이란?

  ㅇ 일반적으로, 전선/리드선,플러그 등을 접속하기 위한 홀/구멍을 말함

  ㅇ 전산분야에서는, 소프트웨어로 구현시킨 추상적포트를 말함
     - 원격 및 동일 호스트프로세스프로세스 통신(IPC) 기능을 범용화시킨 추상적포트
        . 통신 상의 양 끝점(endpoint)
     - UNIX 등 대부분의 운영체제에서 이를 지원


2. 소켓의 출현 및 확산BSD 계열의 UNIX 시스템에서부터 시작됨
     - 프로세스간 통신(IPC)에 공통적인 연결 방법을 제공하고,
     - 복잡한 네트워크 프로토콜들을 단순하게 사용하는 Socket 이라는 메커니즘을 개발함

  ㅇ 오늘날에는 BSD 계열 UNIX 이외에도 소켓 기능이 기본적으로 실장되어 있음
     - 소켓은 통신 관련 어느 표준화 기구에서도 표준화 노력이 없었으나,
     - 산업계에서는 사실상의 표준으로 받아들여지고 있음
     - 심지어 MS社의 윈도우즈에서도 이를 활용하고 있음  ☞ Winsock 참조


3. 소켓 인터페이스 특징소켓 인터페이스 그 자체는  TCP/IP 표준이 아니나,
     - 소켓은 네트워킹 프로그램을 작성할 때 매우 유용한 도구역할을 함

  ㅇ 소켓 API운영체제에서 제공됨
     - 응용 프로그램통신 프로토콜들과의 인터페이스(API)를 위함
        . 결국, 특정 운영체제프로그램 언어에 의존적으로 동작함

  ㅇ 소켓은 기본적으로, 네트워킹을 위한 I/O (입출력) 임     ☞ 아래 5.항 및 파일 I/O 참조
     - 양 종단 간의 통신

  ㅇ 소켓 통신클라이언트/서버 모델에 기초함


4. 소켓의 구조, 호출, 주소, 연결소켓 구조
     - 인터넷 통신용 소켓은, 응용 프로그램이 읽고 쓸 수 있는 소프트웨어 자료 구조임

  ㅇ 소켓 호출
     - 소켓의 생성,읽기,쓰기,종료 등

  ㅇ 소켓 주소 (Socket address = IP Address + Port Number)
     - 통신 상의 양 끝점 각각에서 소켓 주소를 갖음 

  ㅇ 소켓 연결은, 한 쌍의 소켓으로 구성됨
     - 모든 소켓 연결은, 항상 유일해야 만 함


5. 소켓 I/O 및 화일 I/O 비교UNIX 에서는 기존 I/O 방식과 네트워크 I/O 방식이 비슷하면서도 약간 다르게 취급

  ㅇ 기존 I/O 방식     : 화일, 장치, 파이프
     - 어떠한 입출력이라도 기본적으로 표준 화일식별자를 사용하여 입출력을 수행

  ㅇ 네트워크 I/O 방식 : 소켓
     - 소켓의 생성
        . 일반적인 표준 화일과 관련된 시스템 호출을 사용하지 않고,
        . 자체 소켓 시스템 호출(BSD)을 사용하게 됨 
     - 일단 생성된 소켓은, 소켓 식별자로 구분되며, 
        . 이때부터 소켓,파일 간에 구분 없이, 파일 식별자에 의해서도 해당 소켓에 접근 가능함
        . 저수준 입출력 함수들(read,write,close; open은 제외)에 의해,
        . 마치 파일 처럼 소켓에 접근 가능
     - 소켓은 양방향성(bi-directional)의 특징을 갖음


6. 통신계층 상에서 소켓의 의미

  ㅇ 양방향(two-way) 통신 경로 상의 양끝점(End Point)
     - 서비스 인터페이스에 중점을 둔 개념
     - OSISAP(Service Access Point)와 비슷

  ㅇ 응용 프로세스전송계층 프로토콜 간의 인터페이스 또는 전달하려는 메세지에 대한 출입구


7. `프로세스` 및 `TCP 프로토콜` 간의 소켓 연결 例클라이언트 측의 프로세스는 소켓을 생성할 때,
     - 서버 측의 IP 주소,포트번호 (소켓 주소)를 명시하고, TCP 연결 요청을 함

  ㅇ 서버 프로세스는 그 응답으로 서버용 소켓을 생성하며,
     - 양 소켓 간에는 TCP 연결 회선이 확립됨



Copyrightⓒ written by 차재복 (Cha Jae Bok)