더북(TheBook)

소켓으로 주고받을 패킷의 종류는 type 파라미터로 지정한다. 이 값에 따라 소켓이 사용하는 전송 계층 프로토콜이 패킷을 처리하는 방식이 달라진다. 주로 사용되는 값을 표 3-2에 나열했다.

▼ 표 3-2 소켓 생성 시 지정할 수 있는 소켓 종류

매크로

의미

SOCK_STREAM

순서와 전달이 보장되는 데이터 스트림. 스트림의 각 세그먼트를 패킷으로 주고받음

SOCK_DGRAM

각 데이터그램을 패킷으로 주고받음

SOCK_RAW

패킷 헤더를 응용 계층에서 직접 만들 수 있음

SOCK_SEQPACKET

SOCK_STREAM과 유사하나 패킷 수신 시 항상 전체를 읽어 들여야 함

 

소켓 타입을 SOCK_STREAM으로 하면 운영체제가 소켓을 만들 때 상태유지형(stateful) 연결을 만들게 된다. 그러면 신뢰성 있고 순서가 보장되는 스트림으로 데이터를 처리할 수 있게 필요 리소스가 할당된다. 이는 TCP 프로토콜에 어울리는 소켓 형식이다. 반면 SOCK_DGRAM으로 하면 연결 상태를 유지할 필요가 없으므로 최소한의 리소스만 할당하여, 개별 데이터그램 단위로만 주고받을 수 있게 된다. 신뢰성을 신경 쓸 필요도, 패킷의 순서를 보장할 필요도 없는 이런 형태의 소켓 형식은 UDP 프로토콜에 어울린다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.