Socket   소켓

(2022-10-21)

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 연결 회선이 확립됨

IPC
   1. IPC(프로세스간 통신)   2. 세마포어   3. 공유 메모리   4. 파이프   5. Named Pipe   6. 소켓  
소켓
   1. 소켓   2. 소켓 구조   3. 소켓 인터페이스   4. 소켓 주소   5. 윈속(WinSock)  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"