Lectures/CN/2012

From MCLab
Jump to: navigation, search

Contents

컴퓨터네트워크및실습 Class Overview

인터넷을 중심으로 컴퓨터를 네트워킹하고 유용한 정보통신서비스를 제공하여 주는 기본 구조와 인터네트워킹 기술, 프로토콜을 학습하고 내재한 기본 원리를 시스템 관점에서 분석함으로써 네트워크의 실체와 응용 능력을 배양함과 아울러 공학적 측면에서 설계할 수 있는 이론과 분석 능력을 키운다.

화 1, 2교시 (5214), 목 7, 8교시 (5405)
Textbook
Jame F. Kurose, Keith W. Ross, Computer Networking - A Top-Down Approach Featuring the Internet, 5th Ed., Addison Wesley, 2010.
번역판도 무방 (번역판은 제4판까지 나와 있음.) 원서는 5판이 나왔으나, 번역판이 4판까지만 출판되었기에 혼선을 없애기 위해 4판으로 통일함.
References
Larry L. Peterson, Bruce S. Davie, Computer Networks – A Systems Approach, 2nd Ed., Morgan Kaufmann Publishers, Inc., 2000.
Evaluation
중간고사(40%), 기말고사(40%), 실습 및 과제물(20%)
Teaching Assistant
한민규 박사과정
mailto:hufs96mk@hufs.ac.kr, Tel : 031) 330-4511, 공과대학 425호

공지사항

중간고사
10/23(화), chap 1, 2
1차시험 평가결과
1등 이지혜, 공동 2등 정광현, 이형욱
중간고사2
11/20(화), chap 3 Transport Layer
중간고사2 평가결과
1등 이지혜, 2등 김난하, 3등 이형욱
중간고사2 재시험
12/4(화)
중간고사2 재시험 평가결과
문제 4.3) 에서 round [23, 26] 의 slow start threshold 값은 21이 아니라 13이 맞음. 잘못 채점된 것을 수정해서 재 공지 하니 다시 확인 바람
중간고사2, 재시험 종합하여 1등 이지혜, 2등 정광현, 3등 김난하
기말고사
12/18(화)
기말고사 평가결과
1등 임지수, 2등 정광현, 3등 황세영/박종원
기말고사 재시험
12/24(월) 10:30 214호 강의실
기말고사 성적이 너무 나빠서 재시험을 실시합니다. (자원자에 한함)
12/18일 기말고사 2/3, 이번 재시험 1/3 반영할 예정입니다. 재시험 미응시자는 12/18일 시험으로 대체됩니다.
기말고사 재시험 평가결과
기말고사와 재시험 종합하여 1등 정광현, 2등 임지수, 3등 황세영
레포트 및 프로젝트 채점결과
레포트및 프로젝트 채점결과(최종:2012-12-13 update)
레포트 채점 누락인원은 공대 425호로 직접 오셔서 확인 바랍니다.
종합평가
실습 리포트, HW, Project를 20%, 3차례의 시험을 80% 반영하여 당초 계획대로 평정하였습니다. 단, 결석 -1%/회, 지각 -0.5%/회
A+ 취득자 순서대로 정광현, 황세영, 이형욱, 이지혜, 조준, 최정선 - 축하합니다.
학과에서 졸업자격을 엄격하게 시행하고 있습니다. 본 과목은 전공필수이기 때문에 이수 여부를 더욱 엄격하게 판정합니다. 46명 수강자 중 중간 포기자 2명 포함하여 총 8명이 학점을 취득하지 못했습니다. 내년에는 더욱 분발하여 졸업자격을 충족하기 바랍니다. (이 과목을 이수하지 못하면 졸업이 불가합니다.)
임지수 양이 가장 괄목할만하게 성장했습니다. 앞으론 숙제와 프로젝트도 소홀히 하지 말아야겠습니다.

Lecture Material

  1. Introduction
  2. Application Layer
    Sample Web Page http://mclab.hufs.ac.kr/test/index.html
    Socket Programming in C - updated !!
  3. Transport Layer
  4. Network Layer
    IP addressing
  5. Link Layer and LAN
    A day in the life: scenario - PPT animation으로 채험해 보세요.
  6. Wireless and Mobile Networks

Practice

실습일 및 실습내용

실습 준비사항

  • 실습서버 ID는 "s+학번"이며, 실습시간에 말씀드린것과 같이 비번이 모두 동일하게(a12345) 부여되어 있습니다. XShell을 이용하여 접속하신 후 비번을 수정하시기 바랍니다.
(접속이 안되는 학생은 공대 425호로 찾아 오시거나 조교E-Mail로 문의 부탁드립니다.)
Practice report format
  • 아래 교수님께서 내주시는 HW를 수행할 시 직접 NP1/NP2 host에 접속하여 vi Editor를 사용하지 않고 GUI 환경(EClipse) 자신의 PC에 구성하여 테스트 후 NP1/NP2 host에 업로드하여 마지막 테스트를 수행하는 것을 권장합니다.
구성 방법은 아래 링크를 참조하시기 바랍니다.
*Cygwin + eClipse CDT 설치 관련사이트 [1]
*ToolChain 등록방법 : [2]
*JAVA 버전의 eClipse를 설치하시고도 C/C++ 컴파일이 가능합니다.[3]
(참고)가상머신-Linux Server-네트워크 프로그램을 위한 UNP Lib 설치 방법
*VirtualBox를 이용한 자신의 Testbed 구성하기(1)
*VirtualBox를 이용한 자신의 Testbed 구성하기(2)
*WAN & LAN 환경에서 Program Test

실습자료

Introduction to Practice Tools and Setting(9/6)
How to use Xschell and WireShark(9/6)
Java Applets Practice
HTTP실습내용,HTTP Overview(참고자료)
Java network programming
FTP 명령어실습
네트워크시뮬레이터를 이용한 버스 토폴로지 실습

Homeworks

HW-1 삼성과 애플간 특허전쟁 (9/11까지)

9개국에 걸쳐 벌어진 삼성전자와 애플간 특허소송이 벌어지고 있다 지난 8/24일 공교롭게도 같은 날에 한국과 미국 법정은 상반된 판결을 내렸으며, 특히 미국 배심원은 일방적으로 애플의 손을 들어 줌으로써 향후 세계시장에서 삼성전자 제품이 큰 형향을 받을 것이며 이후 세계 각국의 판결에도 영향을 미치리라 예상된다. 삼성전자와 애플사이에서 벌어지는 특허전쟁의 사례롸 판결를 조사하고 그 영향을 분석하여 삼성전자의 대응책을 생각해 보자.

제춟방법
pdf 파일로 변환하여 e-class에 제출

HW-2 Chap 1 Review Questions and Problems - 9/20(목)까지

Chap 1 Review Questions R6, R8, R11, R15, R17, R19, R23, R26과 Chap 1 Problems P5, P6, P9, P10, P18, P20, P22 를 풀라.

제춟방법
pdf 파일로 변환하여 e-class에 제출

HW-3 Packet Analysis - 11/13(화)까지

TCP를 사용하는 application(예: web)으로 발생시킨 트래픽을 WireShark으로 capture해서 적어도 다음 사항을 포함하게 분석하라.

  1. TCP connection set-up에서 close까지의 TCP segment 송수신하는 sequence diagram과 segment의 의미
  2. 교환되는 segment를 담은 Ethernet Frame, IP datagram, TCP segment header들을 모두 그려라
  3. TCP segment에 담긴 data(payload)의 길이는 어떻게 알 수 있나?
제춟방법
pdf 파일로 변환하여 e-class에 제출

Projects

Project-1 Simple HTTP Client - 10/9(월)까지

HTTP 프로토콜 표준을 따라 GET method 만을 지원하는 HTTP client를 구현하라. GET method를 지원하고, page와 이에 포함된 image object들도 download해야 한다. 2인 1조로 구성해서 Project를 진행하세요. 조 구성은 수강생 스스로 짝을 찾기 바랍니다. (마지막 1명이 남을 경우는 3인 1조로 해도 좋다.)

  • Computer Networks 교재 2장, 보다 자세한 사항은 web에서 찾아 보기 바랍니다.
  • Linux나 Windows에서 C 또는 C++로 프로그래밍 하세요. Java는 허용하지 않습니다.
  • Eclipse IDE에서 C Programming하기 위해 MINGW나 Cygwin을 활용하면 편리합니다.
  • etcp 참고자료 : Introduction of Effective TCP/IP Programming , etcp source : etcpsrc.zip

참고: HTTP Client Procedure Outline

Project-2 JAVA Multi-Thread WebServer - 11/1(목)까지

JAVA Server를 Multi-Thread로 구현하여 여러 요청에 대해 응답하도록 구현하세요 지난 실습시간에 실습한 JAVA Server는 Single Thread 프로그램으로써, 하나의 요청에만 응답하는 구조를 가지고 있습니다. 이것을 Multi-Thread 기반으로 구현하여 테스팅 하시기 바랍니다.

Project-3 Design and Implementation of RDT 3.0 Protocol - 11/15(목)까지

문제

RDT 3.0 Protocol을 아래의 다음에 따라 설계하고, 최종 구현물을 작성하여, sender와 receiver가 잘 작동함을 검증하고(기능시험), timeout 기간을 달리 설정하면서 LAN 환경과 WAN 환경의 Internet에서 성능을 측정하라(성능시험).

  1. 팀구성: 3인 1조
  2. 설계
    • 교과서에는 sender나 receiver가 종료하는 event가 없다. Sender는 standard input에서 EoF를 읽으면 RDT sender가 END 라는 control packet을 보내고, ACK를 받아야 종료되게 하자. RDT recevier는 END packet을 받으면 ACK를 보내고 종료하도록 해보자. 물론, 종료하기 전에 receiver는 성능 측정치들을 output해야 할 것이다.
    • sequence number를 저장하는 variable 'seq'를 도입하여 state 갯수를 교과서의 절반으로 줄여보자. 그리고, 교과서와 달리 ACK 번호를 잘 받은 packet 번호가 아니라, 다음에 받을 번호로 하면 구현하기 더 편리한지도 알아보자. (UML state diagram 표준을 따라 그리세요.)
  3. 구현
    Hint: select() 함수를 사용하면, application message가 도착했는지(stdin ready?), 상대편에서 data packet이나 ACK packet이 도착했는지(socket ready?), timeout이 발생했는지를 확인할 수 있다. 물론, timer를 reset할 수도 있다.
  4. 기능 시험: test case들을 이용한 시험 (모든 경우에 잘 작동하는지 검증)
  5. 성능 시험: 기능시험이 통과된 후 Timeout은 LAN 환경과 WAN 환경 각각의 경우에 1, 10, 100, 1000 msec로 설정하여 아래의 통계치를 얻어서 성능을 보이고 분석하라.
    • # of DATA packets received (including retransmitted packets)
    • # of duplicated DATA packets received
    • # of DATA packets correctly received
    • # of bytes correctly received
    • Transmit duration (msec) - Receiver가 첫번째 packet을 받은 순간 부터 END packet을 받을 때 까지의 시간. gettimeofday()로 시작 시각과 종료 시각을 얻어서 그 차이를 계산하면 된다.
    • Throughput (byte/second)
LAN 환경: 교내 LAN에 있는 np1.hufs.ac.kr과 np2.hufs.ac.kr 사이에서의 성능 시험
WAN 환경: np2.hufs.ac.kr에서 np1.hufs.ac.kr의 외부망과 접속된 interface의 IP address로 connect해야 함 
     유동 IP이니 교내 LAN에 부착되어 있는 np1.hufs.ac.kr로 login해서 IP를 확인하시기 바랍니다. 
     ifconfig  명령어를 쳐 보세요. eth0 interface의 IP address가 외부망(KT 초고속인터넷)을 경유해서 들어오는 WAN의 interface입니다.
Sender는 np2에서 receiver는 np1에서 실행시키세요. 물론 receiver를 먼저 실행시켜야겠지요.
Receiver의 port number는 팀별로 충돌이 없게 하기 위해서 '50000 + 학번 끝 4자리 수' 만 쓰도록 하세요. 
학번이 200801234 이면 51234번 port가 됩니다.
참고: RDT 3.0에 활용할 functions Media:rdt3.0_functions.zip.
       packet.h (packet format)
       np.h (Common header for network programming)
       sender.c (sender skeleton)
       error.c (exception handling and diagnostic message)
       in_chksum.c (Internet checksum generation and detection)
       set_address.c (IP address resolution function)
       udt_send.c (Unreliable data transfer function. May cause checksum errors and packet loss)
       tselect.c (set or reset timout)
       udp_server (Recevier에서 UDP Socket creation에 이용하세요.)
테스트 수행 시 필수사항 : Client의 processing time을 측정하기 위해서 다음과 같이 자신의 main 함수의 시작과 끝 라인에 gettimeofday()를 호출 하십시요
      #include<stdio.h>  
      #include

제약조건

  1. RDT 3.0 sender는 application data를 stdin에서 받으며, <LF>로 구분되는 한 줄(최대 1,400 bytes)을 읽고, packet을 만들어 보낸다. RDT 3.0 receiver는 받은 packet을 stdout으로 출력한다. File을 stdin이나 stdout으로 redirection 시킬 것.
    예:  % sender … < file,  % receiver … > file
  2. Sender는 EoF을 만나면 recever에게 종료를 알려주기 위해 END라는 control packet을 전송하고, 이를 받으면 recevier는 ACK로 응답한다. 물론 END와 ACK control packet도 lost 또는 corrupt될 수 있다.
  3. Packet은 하나도 빠짐없이, 순서에 맞게, 그리고 bit error 없이 정확하게 전달되어야 한다.
  4. 요즘 네트워크에서는 packet loss가 거의 발생하지 않기 때문에, udt_send()로 packet을 전송할 때 1/10 확률로 random하게 packet을 lost 시켜야 한다. (다시 말해, 보내지 않으면 된다.) 또한, Packet error rate (packet 중에 bit error 가 하나 있을 확률)은 1/10로 보내기 전에 bit error를 발생시켜야 한다. (참고: udt_send.c)

제출물과 시험

  • 최종 보고서 작성 및 제출: 11/15(목) 15:00까지
  • 기능시험: 11/15(목) 수업시간
  • 성능시험: 11/15(목) 수업시간
모든 조는 301호 실험실의 PC에 미리 설치하여, 기능시험을 받고 성능시험을 같은 조건에서 동시에 시험하여 우수한 성능을 가릴 것임.
성능시험시 사용될 Input File : testfile1.txt, testfile2.jpg

보고서 작성 요령

공학설계의 단계에 따라 다음 내용이 포함되어야 한다.

  1. 문제정의
    • 문제기술문(Problem statement)를 명확히 하고
    • 제한조건이 명시되어야 함
  2. 설계
    • 설계 명세를 포함해야 함
    • State diagram, information flow(sequence diagram)은 반드시 포함되어야 함
    • Test case들을 작성하고 시험 절차가 제시되어야 함
  3. 기능시험/성능시험 과정과 결과 증빙자료
  4. 첨부: source code (source를 인쇄하는 tool을 사용하여 double column으로 인쇄) (Source file들은 zip 파일로 제출)