소켓 생성
socket( ${family}, SOCK_RAW, ${protocol});
family : IPv4 - AF_INET
IPv6 - AF_INET6
protocol : /usr/include/netinet/in.h 참조
protocol을 IPPROTO_RAW를 사용할 경우 ip헤더도 직접 조작하여 패킷을 전송할 수 있다.
IPv4에서는 ip헤더를 직접 조작한다는 옵션을 필히 주어야 한다.
int on = 1;
...
setsockopt( raw_socket, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on) );
IPv4에서는 IPPROTO_RAW로 생성한 소켓끼리 통신이 가능하다.
IPv6에서는 IPPROTO_RAW로 생성한 소켓을 전송할 때 받는 쪽에서는 전송하는 패킷의 페이로드에 해당하는 protocol로 생성한 소켓이어야 받을 수 있다.
'develop > linux' 카테고리의 다른 글
GCC에서 컴파일 시 문구 출력하기 (0) | 2013.04.18 |
---|---|
리눅스 키보드 이벤트 받아서 키 입력받기(개행포함) (0) | 2013.02.08 |
find 명령어로 특정 시간내의 파일 찾기 (0) | 2012.11.16 |
PostgreSQL Streaming Replication (0) | 2012.08.22 |
PostgreSQL replication, Slony 사용 (2) replication 설정 (0) | 2012.08.20 |