2007-1 컴퓨터네트워크 텀 프로젝트 1

주  제: 각 계층에서 일어나는 메시지의 캪슐화 과정 이해하기

제출일: 2007년 4월 5일까지 제출

개발 프로그래밍 언어: C 혹은 C++

제출방법: 모든 소스코드(소스코드내에 설명추가)를 지정된 site에 올려놓을 것 (제출 file들에 대한 설명 file을 추가하면 더욱 좋음)

* 절대로 타인의 프로그램을 카피하지 말 것. 확인후 관련된 학생 모두에게 불이익이 있음

내용: 2장에서 배운 Peer-to-Peer Process 구현해 보는 것으로 다음 요구 사항을 잘 읽고  프로그래밍 하세요.

입 력(화면으로부터 키): 송/수신자 이름(각 10자), 송/수신자 주소(각 50자), 송/수신자 우편번호(각 32자), 메시지(512자)

주의:  ( ) 안의 숫자는 최대 허용치임. 구조체 생성시 각 field 당 크기로 사용.

화면에서 입력을 받을 때는 ‘엔터키‘로 다음 항목으로 이동 함.

enc_function5(응용계층): 화면으로 부터 입력을 처리하고 마지막에 메시지만 출력한다.

enc_function4(전송계층): 처음에 입력 받은 각각의 송/수신자 이름과 이전 계층의 메시지(응용계층)를 하나의 구조체(struct 등: 가칭 tcphdr)에 assign하고 구조체 전체를 인쇄한다.

enc_function3(네트워크계층): 또 다른 구조체에(가칭 iphdr) 위의 계층(전송계층)의 내용을 하나의 데이터로 취급하고 추가로 송수신자의 우편번호와 주소를 assign 한 후 전체 계층의 메시지를 인쇄한다.

enc_function2(데이타링크계층): 또 다른 구조체(가칭 framehdr)에 네트워크 계층 내용을 데이터로 취급하고 랜덤으로 생성된 정수형 숫자하나를(물리 주소로 간주: phy_addr 로 명명) 넣고, 모든 데이터의 ASCII 값을 더해 구조체 내에 field(가칭 checksum으로 명명)에 추가 한다. 그리고 최종적으로 전체를 인쇄한다.

enc_function1(물리계층): 위의 계층에 있는 모든 내용을 이진수로 출력한다.

dec_function1(물리계층): enc_function1의 내용을 수신한 것으로 간주하고 다시 인쇄 한다.

dec_function2(데이타링크계층): enc_function2에서 사용한 구조체(framehdr)의 데이터 부분을 각 문자별로 다시 ASCII값으로 전환해 누계를 구한다. 그리고 checksum 과 비교한다. 이상 없을 시 전체를 인쇄한다. 데이터링크 계층에서 사용한 구조체에서 phy_addr과 checksum 을 제외한 부분을 enc_function3에서 사용했던 구조체(ipdhr)에 넣는다.

dec_function3(네트워크계층):  3계층 구조체를 인쇄한다. enc_function3에서 사용한 구조체에서 송/수신자의 우편번호, 송/수신자 주소를 제외한 부분을 enc_function4에서 사용했던 구조체(tcphdr)에 넣는다.

dec_function4(전송계층):  4계층 구조체를 인쇄한다. 순수 메시지만을 enc_function5에서 사용한 변수에 할당한다.

dec_function5(응용계층): 받은 메시지 전체를 인쇄한다.

주의:  3개의 구조체(tcphdr,iphdr,framehdr) 만들어 작업 바람. 혹 모든 구조체를 포함하는 1개의 큰 구조로 만들어 수행시 감점 30점