2월 172010
 

NS2(네트워크 시뮬레이터)를 설치 할 때 에러가 발생하였다.
 
./install을 수행하고 느긋하게 기다리고 있는데 아래의 에러가 발생하였다.

 ld: libotcl.so: hidden symbol `__stack_chk_fail_local’ isn’t defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] Error 1
otcl-1.13 make failed! Exiting …

그래서 구글신에게 문의 결과 gcc의 버젼문제 때문이라고 한다.
 [참조: http://blog.ceglug.org/venkat/?p=26 ]

이 문제는 아래의 문장을 추가함으로서 해결된다.

 CC=gcc-4.3 ./install

gcc 버젼을 임의로 집어넣는 것이다. 성공하였다. ./validation 도 성공!!

1월 212008
 


  어제 휴가 나온김에 외식 한번 하자는 부모님의 제안에 갈매기 고기를 먹으러 가게 되었습니다.

  갈매기고기집에 도착해서 고기를 주문 했습니다.

  나 : “갈매기 3인분에 공기밥 2개요.”

  점원 : “예! 이모, 3에27번 2개요!”

  나 : ” 응? “

 뭐 평소였으면 그냥 듣고 넘어갈 일이였지만, 어떤 단어가 떠오르더군요.

 요즘 네트워크 책을 보고 있었던 것도 있는데,  “왠지 지금 점원의 말은 프로토콜이 아닐까?” 라고 생각한 것이였습니다.

 컴퓨터에서의 프로토콜에 대해서 네이버 백과사전을 찾아보면 “정보기기 사이 즉 컴퓨터끼리 또는 컴퓨터와 단말기 사이 등에서 정보교환이 필요한 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속 즉, 통신의 규약을 의미한다.”라고 써있습니다. 여기서 중요한 곳은 ‘규약’이라는 부분입니다. 제가 점원의 대사에서 ‘규약’을 보았습니다. 서빙하는 사람과 조리하는 사람 사이의 규약을 본 것입니다. 아마 위의 뜻은 갈매기 집이니까 3은 갈매기 고기 3인분을 의미하고 27은 테이블 번호 밥2개는 공기밥 2공기를 의미 했을 것입니다. 뭐 물론 이를 사용한 이유는 제가 말한 “갈매기 3인분에 공기밥2개 27번테이블”이란 내용을 바쁜데도 이야기 하고 있을 시간이 없었기 대문이겠죠. 그래서 자주사용되는 반복적인부분, 메뉴가 적다는것 등을 이용해서 암묵적으로 꼭필요한 내용을 첨가해서 어느센가 정해져 쓰고있는 것일 겁니다. 규약은 정해진 규칙을 뜻합니다. 만약 제가 이 가게의 신임 점원이라 잘 몰라서 주문을 조리사에게 전달할 때 내 마음대로 ‘2에 27 3이요’라고 말했다면 조리사는 규칙대로 ‘2에 27 3’을 해석(Parse)해서  손님은 아마 시키지도 안은 밥을 하나 더 받고 당황해 했을지도 모릅니다. 이와 동일하게 통신에서 사용되는 프로토콜도 비슷한형태로 되어 있습니다. 데이터 하나를 전송할 때도 마음대로 그냥 보내는게 아니고 ‘도착주소, 목적주소, 타입, 데이터’로 정해진 방법에 따라서 구조적으로 되어있다는 것이죠.

사용자 삽입 이미지

Ethernet Frame Structure

      표1.  이더넷 프레임 구조 (모든 이더넷 프레임은 위와 같이 구조적으로 정해진 방법대로 움직인다.
             이는 넓은 의미로 이더넷 통신을 위한 프로토콜이라고도 말 할 수 있다.

 자 그럼 프로토콜을 알아냄으로 할 수 있는 일을 상상해 볼까요? 만약 와우라는 게임이 서버와 어떻게 데이터를 주고 받는지 프로토콜을 알고 있다고 한다면, 와우 클라이언트가 아닌 직접 만든 임의의 프로그램을 이용해서 직접 서버로 프로토콜에 맞게 데이터를 만들어서 전송이 가능하므로 매우 힘들겠지만 콘솔로 작동하는 와우 게임이라거나 (와우를 클라이언트를 켜지 않아도 움직이는)봇도 만들 수 있고, 역으로 서버도 만들어 낼 수 있게 되는 겁니다. 왜냐하면 와우 클라이언트와 서버 사이의 프로토콜을 다 파악 했다는 것은 클라이언트에서 호출하는 반응을 우리가 임의로 만든 서버가 해줄 수있게 만들면 된다는 것이죠.

 우리가 쓰는 프로그램은 데이터를 주고 받기 위해 프로토콜이라는 것을 사용한다는 것을 아시면 되겟습니다. 간단한 채팅 프로그램을 만들 때도 서버와 클라이언트사이에 데이터를 정확하게 주고 받기 위해 ‘채팅 프로그램 프로토콜’을 만들어서 사용한다는 것이죠. 그리고 서버와 클라이언트 사이에 데이터가 어떤 방법으로 교환되는지 알 수 있기 때문에 서버와 클라이언트를 각자 다른사람이 개발 할 수 있게 되는거죠.

 이해 되셨나요?

  출처 : 1. 이더넷 4강 (그림)