나미/리눅스

통신버퍼의 유무확인과 버퍼크기 셋팅

규남 2013. 8. 6. 12:50
반응형

브로드 캐스트 - 안에서만 메세지 전송이 가능 ,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  함수는 화면지우는 함수 

 

 

728x90
반응형

'나미 > 리눅스' 카테고리의 다른 글

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