상세 컨텐츠

본문 제목

[LOB] level 20 소켓(socket) 생성 간단 정리

SYSTEM HACKING/LOB Redhat

by koharin 2019. 6. 30. 14:53

본문

728x90
반응형

int socket(int domain, int type, int protocol);

 

AF_INET은 socket의 인수에서 domain으로서 IPv4 네트워크 도메인 소켓으로 원격지까지 통신할 수 있다.

(물론 로컬 호스트와 통신을 위해 로컬 루프백의 주소(ex. 127.0.0.1)에 연결 가능)

접두어 AF_는 Address Family의 의미이다.

 

소켓 타입을 의미하는 SOCK_STREAM은 socket의 type 인수로 스트림 소켓을 의미한다.

SOCK_STREAM의 특징은 연결 지향형(connection oriented)으로, 연결을 맺고 1:1 통신을 한다.

연결 지향형인 SOCK_STREAM 소켓 타입을 구현한 프로토콜로 TCP가 대표적이고 일반적이다.

cf. SOCK_DGRAM 소켓 타입은 비연결 방식이 특징적으로 일회성 데이터나 응답이 필요없는 작은 데이터 조각들을 전송할 때 유리하고, 1:n 통신이 가능하다.

데이터그램 소켓은 하나의 소켓으로 여러 원격지로 송신하거나 여러 원격지로부터 데이터를 수신할 수 있다.

SOCK_DGRAM 소켓 타입을 구현한 대표적인 프로토콜은 UDP(User Datagram Protocol)이다.

 

세 번째 인수인 protocol은 전송에 사용될 프로토콜 타입을 의미한다. 이 부분에 보통 0이나 IPPROTO_IP로 지정한다. (IPPROTO_IP는 0으로 지정되어 있어서 둘 중 아무거나 사용해도 상관 X) IPPROTO_IP는 지정된 소켓 타입에 의거해 인터넷 프로토콜을 자동으로 세팅한다.  

따라서 SOCK_STREAM에 IPPROTO_IP를 사용하면 자동으로 TCP를 선택하고,

SOCK_DGRAM에 IPPROTO_IP를 사용하면 자동으로 UDP를 사용하게 된다.

(프로토콜을 직정 지정해서 UDP의 경우 IPPROTO_UDP를, TCP의 경우 IPPROTO_TCP를 사용해도 된다.)

 

 

데이터그램 소켓

스트림 소켓

데이터 경계 파일 경로 보존 안 됨
데이터 크기 제한 보존됨 없음
데이터 순서 보존 안 됨 보존됨
연결 과정

필요 없음

(1:n 통신 가능)

필요함

(1:1 통신)

신뢰성

낮음

(데이터 유실 시 복구 없음)

높음

(데이터 유실 시 재전송)

 

 

728x90
반응형

관련글 더보기