브로드 캐스트 - 안에서만 메세지 전송이 가능 ,IP주소를 A,B,C,D클래스로 봤을 때 D클래스만 변경된다.
멀티 캐스트 - 밖으로도 메세지 전송이 가능, TTL을 지정해야 한다.
<통신버퍼의 유무확인과 버퍼크기 셋팅>
-소켓을 생성하고,
getsockopt 함수로 버퍼의 크기를 확인한다.
getsockopt 의세번째인자는 send or receive buffer의 사이즈이고 ,네번째 인자는 버퍼사이즈를 담고 있는 버퍼를 적어 준다.
그리고 printf로 버퍼의 사이즈를 찍어주면
버퍼의 크기가 나온다.
-setsockopt는 버퍼의 크기를 변경할 수 있다.
임시 변수를 선언해 놓고 ,그 변수에 kbyte 단위를 적어놓고 함수의 버퍼사이즈 인자 부분에 이 임시버퍼를 넣으면
그 다음줄에 출력 되는 send or receive 버퍼의 크기가 달라져 있다.
<소스>
<실행 모습>
<문자로 된 인터넷 사이트 주소 접속 원리>
인터넷 주소를 쳤을 때 바로 접속이 되는 것이 아니라 gethostbyname이라는 함수를 거친 다음에,
이 함수가 IP주소를 반환하면 그 주소를 다시 찾아들어가서 사이트에 접속이 되는 것이다.
-밑의 소스를 보면 실행파일 이름과 IP주소를 알고 싶은 홈페이지 주소를 문자로 적으면
DNS서버에 호스트의 정보를 긁어와서 mynet이라는 원래 디파인 되어 있는 구조체에 넣는다.
-printf문으로 mynet구조체에 저장된 사이트 이름이 화면에 뜨고
IP값이 뜨게 되는 것이다.
<소스>
<실행된 화면 >
<패킷 건져 올리기 -함수 안쓰고>
-소켓생성은 하되 헤더는 비워놓게 셋팅
-랜카드의 이름을 구조체에 복사
-ioctl함수를 이용하여 랜카드의 찾은 정보를 구조체 안에 넣는다
-아직 소스 작성중........................
-마지막 write 함수는 화면지우는 함수
'나미 > 리눅스' 카테고리의 다른 글
centos ip 관련 정보 (0) | 2021.07.13 |
---|---|
리눅스 IRQ정보 (0) | 2015.11.17 |
리눅스 C언어 mysql 연동시 에러 (0) | 2015.06.10 |
ARP 헤더와 헤더 확인 소스 (0) | 2013.08.06 |
디버깅용 메세지 출력 (0) | 2013.08.06 |
패킷분석을 통한 프로토콜(handshake) (0) | 2013.07.02 |