Socket Structure   소켓 구조

(2025-04-29)

소켓 구분, SOCK_STREAM, SOCK_DGRAM


1. 소켓 데이터구조(자료구조)인터넷 통신을 위한, 소켓은, 
     - 응용 프로그램이 읽고 쓸 수 있는 소프트웨어 자료 구조임

  ㅇ 소켓 자료구조 관리
     - 운영체제 커널에서 제공하는, 소켓 API(소켓 시스템호출 : socket())를 통해,
     - TCP 커넥션의 양측 종단 각각에, 소켓 자료구조가 생성되고 관리됨


2. 소켓속성에 따른 구분도메인 (domain)  :  소켓 통신이 존재하는 범위
      - AF_UNIX : 클라이언트서버가 동일한 기계 내 존재
      - AF_INET : IPv4 기반 인터넷 통신 (가장 흔함)
      - AF_INT6 : IPv6 기반 인터넷 통신
      - AF_NS   : XNS 프로토콜 사용
      - (이외에도, AF_IPC, AF_X25 등 여러가지가 있음)

   ㅇ 유형 (type)  :  통신을 하는 방식 (데이터 전달 형식)에 따른 유형
      - SOCK_STREAM : 스트림 방식 (TCP)
         . 가변길이의 스트림으로써, 연결지향적, 신뢰성 보장, 양방향 통신 가능
      - SOCK_DGRAM : 데이터그램 방식 (UDP)
         . 고정길이의 메세지로써, 비연결형, 비 신뢰성, 빠름
      - SOCK_RAW : Raw 소켓
         . 사용자 정의 프로토콜을 직접 다루는 소켓 (네트워크 진단용 등)

   ㅇ 프로토콜 (protocol)
      - IPPROTO_IP
         . 기본 IP 프로토콜
      - IPPROTO_TCP 
         . TCP 프로토콜 (주로 SOCK_STREAM과 함께 사용)
      - IPPROTO_UDP
         . UDP 프로토콜 (주로 SOCK_DGRAM과 함께 사용)
      - IPPROTO_ICMP
         . ICMP 프로토콜 (ping 등에 사용)
      * 통상, socket() 시스템호출 시, 프로토콜을 0으로 두면, 운영체제가 자동 선택함


3. 소켓 관련 시스템 호출(System Call)의 例들

  ※ ☞ 소켓 시스템 호출 참조
     - 종류 : socket(), bind(), connect(), listen(), accept(), write(), close(), read() 등
     - 흐름 : socket() -> bind() -> listen() -> accept() -> read()/write() -> close()


4. 소켓 주소정보 표현 (구조체 기반)IPv4 주소 표현  :  struct sockaddr_in
     
struct sockaddr_in
{
    sa_family_t  sin_family;   // 주소 체계 (Address Family)
    uint16_t     sin_port;     // 16비트 TCP/UDP 포트번호
    struct       sin_addr;     // 32비트 IP 주소
    char         sin_zero[8];  // 사용되지 않음
}
ㅇ Pv4 주소 필드 : struct in_addr
struct in_addr
{
    in_addr_t   s_addr;   // 32비트 IPv4 주소
}
헤더 파일 내 정의된 자료형 정의 (POSIX) - sys/types . int8_t : signed 8-bit int . uint8_t : unsigned 8-bit int (unsigned char) . int16_t : signed 16-bit int . uint16_t : unsigned 16-bit int (unsigned short) . int32_t : signed 32-bit int . uint32_t : unsigned 32-bit int (unsigned long) - sys/socket.h . sa_family_t : address family . socklen_t : length of struct - netinet/in.h . in_addr_t : IP Address (uint32_t에 의함) . in_port_t : Port Number (uint16_t에 의함)

소켓
1. 소켓   2. 소켓 구조   3. 소켓 인터페이스   4. 소켓 주소   5. 윈속(WinSock)  

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]        편집·운영 (차재복)          편집 이력          편집 격려 (소액 후원)
[소켓]1. 소켓   2. 소켓 구조   3. 소켓 인터페이스   4. 소켓 주소   5. 윈속(WinSock)  

  1. Top (분류 펼침)      :     1,607개 분류    6,634건 해설