소켓 유형

소켓 호출의 두 번째 매개변수는 소켓 유형을 결정합니다. 소켓 유형은 한 시스템 또는 프로세스에서 다른 시스템 또는 프로세스로 데이터를 전송할 수 있도록 설정된 연결의 유형 ID 및 특성을 제공합니다.

시스템은 다음 소켓 유형을 지원합니다.

스트림(SOCK_STREAM)

이 소켓 유형은 연결 지향성입니다. bind(), listen(), accept()connect() API를 사용하여 엔드-투-엔드 연결을 설정하십시오. SOCK_STREAM은 오류 또는 복제 없이 데이터를 송신하며, 송신한 순서대로 데이터를 수신합니다. SOCK_STREAM은 데이터 오버런을 방지하기 위해 흐름 제어를 빌드합니다. 데이터에 레코드 경계를 설정하지 않습니다. SOCK_STREAM은 데이터를 바이트 스트림으로 취급합니다. IBM® i 구현에서는 TCP(Transmission Control Protocol), AF_UNIX 및 AF_UNIX_CCSID를 통해 스트림 소켓을 사용할 수 있습니다. 보안 호스트(방화벽) 외부의 시스템과 통신하는 데 스트림 소켓을 사용할 수도 있습니다.

데이터그램(SOCK_DGRAM)

인터넷 프로토콜 용어에서 데이터 전송의 기본 단위는 데이터그램입니다. 데이터그램은 기본적으로 헤더와 이를 따르는 데이터로 구성됩니다. 데이터그램 소켓은 비연결성입니다. 이 소켓은 전송 제공자(프로토콜)와 엔드-투-엔드 연결을 설정하지 않습니다. 데이터그램 소켓은 데이터그램을 전달을 보장하지 않는 독립적 패킷으로 송신합니다. 데이터는 유실되거나 복제될 수 있습니다. 데이터그램은 순서에 상관없이 도착할 수 있습니다. 데이터그램의 크기는 한 번의 트랜잭션에서 송신할 수 있는 데이터 크기로 제한됩니다. 일부 전송 제공자의 경우에는 각 데이터그램이 네트워크에서 서로 다른 경로를 사용할 수 있습니다. 이 소켓 유형에는 connect() API를 실행할 수 있습니다. 그러나 connect() API에서는 프로그램과 데이터를 송신하고 수신할 목적지 주소를 지정해야 합니다. IBM i 구현에서는 사용자 데이터그램 프로토콜(UDP), AF_UNIX 및 AF_UNIX_CCSID를 통해 데이터그램 소켓을 사용할 수 있습니다.

원시(SOCK_RAW)

이 소켓 유형은 인터넷 프로토콜(IPv4 또는 IPv6) 및 인터넷 제어 메세지 프로토콜(ICMP 또는 ICMP6)과 같은 하위 계층 프로토콜에 직접 액세스할 수 있도록 합니다. SOCK_RAW는 사용자가 직접 전송 제공자가 사용하는 프로토콜 헤더 정보를 관리하므로 프로그래밍에 대한 전문 지식을 필요로 합니다. 이 레벨에서는 전송 제공자가 자신에게 고유한 데이터 형식 및 시맨틱을 지정할 수 있습니다.