Lectures/CN/2016

From MCLab
Jump to: navigation, search

Contents

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

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

화 7 8 목 7 8 (5213)
실습은 과실습실(5301호)에서 하는 경우도 있음
Textbook
Jame F. Kurose, Keith W. Ross, Computer Networking - A Top-Down Approach Featuring the Internet, 6th Ed., Addison Wesley Longman, 2012. 2.
번역판: 최종원, 강현국, 신용태 옮김, 컴퓨터네트워킹 - 하향식 접근, 6판, Pearson Education Korea, 2012. 11.
보조 web site [1]
References
Ying-Dar Lin, Ren-Hung Hwang, and Fred Baker, Computer Networks - An Open Source Approach, McGraw-Hill, 2012.
Evaluation
시험 4회(80%), 실습 보고서/Homeworks/Assignments(20%)
결석 -0.5%p/회, 지각 -0.25%p/회
과제물의 제출
PDF로 변환하여 자정(24:00) 이전에 E-class에 제출한다. 단, 조를 구성해서 수행하는 경우 대표 한 사람만 제출한다.
Teaching Assistant
박경수, phone : 010-2592-0887, ks08_18@naver.com, 공대 425호

준비사항

PC/Notebook

301호 학과 실험실의 PC 중 하나를 선택하여 학기 끝날 때 까지 이용하도록 함. (다만, 노트북이 있는 학생은 실습시간에 지참하길 권장함) 학과 PC를 사용해야 하는 경우, booting할 때 SBC server로 booting하지 말고, local에서 부팅하고 설치해야 여러분 개인이 사용할 소프트웨어가 설치된다.

Python Programming

각자 Python language를 습득하여 프로그래밍 숙제할 수 있도록 준비한다.

인터넷응용및실습 강좌 강의자료
Python Programming on-line books and tutorials

공지사항

과제물의 제출 요령과 기한

Lab Report
매 실습시간 마다 실습한 결과를 당일 저녁 6시까지 제출한다. (당일 자정까지 지연 제출하면 1점 감점)
Exercises
수업후 당일 자정까지 제출하는 간단한 coding 연습 (지연제출 불가)
Programming Assignments
지정된 마감일 자정까지 제출한다. (지연제출 가능. 지연 제출시 1일 10% 감점)
Cheating은 허용되지 않는다. 
토론은 가능하지만, 다른 학생의 결과를 본 후 수행하거나, 복제하거나, 복제 후 일부 편집하는 일은 이유 여하를 막론하고 용인되지 않는다. 학생들은 제출한 과제물에 대해 조교가 질문하면 답변에 응해야 하고, 충분히 설명할 수 있어야 한다. 한 번의 잘못으로 과목을 이수하지 못하는 불행을 초래하지 않기 바란다.
과제물 제출처
e-class의 과제란에 제출하되 결과물은 첨부파일로 upload한다.
첨부파일명은 <과제물 번호>-<학번> 으로 하고 확장자는 '.pdf' 또는 '.zip' (파일이 여러개일 때)
예) AS-1-201402222.pdf

시험-1 (중간고사)

평가결과가 나왔으니 e-class를 확인하세요. e-class 공지사항에 점수분포가 게시됨.

  • 1등: 정윤직, 2등: 황재동, 3등: 이민근
재시험 공고
11/10(목) 15:30
장소: 전과 동일 (PC 실습실)
원시험 : 재시험 = 2 : 1
  • 1등: 권기성, 2등: 정윤직, 3등: 심범

시험-2

시험범위
3장
시험일시
11/22(화) 수업 종료후
  • 1등 신유정, 공동 2등 강민우, 조현우

시험-3 (기말고사)

시험범위
4장, 5장
일시
12/15(목) 7교시
장소
강다영 ~ 신형균: 405호 PC 실습실
심범 ~ 황현호: 406호 PC 실습실

강의노트

실습

Lab-1 수강에 필요한 Software 설치 - DIY (9/1)

각자 301호 실험실과 집/기숙사 등 과제를 수행할 PC에 적어도 다음의 소프트웨어를 설치하고 활용할 수 있도록 준비한다. 단, 실습 떄에 노트북을 이용할 학생은 여기에만 설치해도 좋다.

  1. WireShark Protocol Analylzer
    • WireShark download [3]:
    • WireShark 사용법 [4]
  2. Google Chrome browser - https://www.google.com/chrome/browser/desktop/index.html
  3. Cygwin 설치 - Linux feeling on Windows
    • POSIX API 기능을 Windows의 DLL로 구현
    • Ubuntu 등 Linux VM을 쓰면 더 좋음. (Linux에 친숙해지기 위해)
  4. Python 2.7 on Windows과 IDLE 설치
    • Download page로 가서 자신의 PC와 맞는 Windows x86[-64] MSI Installer를 download하여 설치한다. (Windows help file도 download한다.) IDLE이라는 Python IDE도 설치된다.
Report
301호 실험실 PC 또는 자신의 노트북에 WireShark, Chrome, Cygwin, Python 2.7을 모두 설치하고, 설치 완료했음을 보이는 screen shot을 떠서 하나의 실습 report 파일(PDF 포맷)에 포함시켜어 e-class에 제출하라.

Lab-2 WWW and HTTP

Sample Web Page http://mclab.hufs.ac.kr/test/index.html

Chrome Browser

  1. '개발자 도구' 창을 열고 url을 입력해 보자.
  2. 이 창에서 Network 탭을 들여다 보자. Base html 파일은 무엇이고 하나의 page를 rendering하기 위해서는 추가로 얼마나 많은 object들을 가져와야 하는가?
  3. Base html 파일을 선택하고 'Source'를 탭하여 html source를 들여다 보자.

Form과 POST method

  1. Chrome browser에서 다음 link로 넘어가자. http://np.hufs.ac.kr/cgi-bin/account.py
  2. form tag 사이에 있는 html source와 browser 창을 비교해 보고 form을 어떻게 정의하고 있는지 알아보자.
  3. 학번 란에 시험적으로 123456을 입력하고 'Confirm' 박스를 눌러보자.
  4. 이 박스를 눌러 다음 과정을 확인해 보자.
    1. HTTP POST method로 form이 server로 전달되고,
    2. Web server는 account.py 라는 web application을 실행시키고 form에 있는 파라미터들을 전달한다. 이 프로그램은 실행 결과로서 html contents를 생성된하고 web server에 return한다. (서버 뒤에서 실행됨으로 확인할 수는 없음)
    3. Web server는 이때 생성된 html 페이지를 response message에 넣어 응답한다.

wget

  1. Cygwin 창을 열고 아래의 명령을 입력하자.
    wget -d http://mclab.hufs.ac.kr/test/index.html
  2. request message와 response message를 살펴 보자.
  3. header들은 어떻게 정의 되었나? Persistent connection 인가?
  4. 가져온 object 파일의 길이를 길이를 확인해 response message에서 알아 보자.
  5. Download된 'index.html' 파일의 byte count를 'wc' 명령으로 알아 보자. 같은가?
    wc index.html

Parsing URLs

Python urlparse module [5]

Python 2.7 web modules

Python 2.7 web modules (modified)

Homeworks

HW-1 1장 연습문제 풀기(9/9)

1장 복습문제 R4, R6, R21, 연습문제 P6, P7, P25-28에 답하라. PDF로 변화하여 e-class에 제출한다.

HW-2 5장 연습문제 풀기 (11/28)

데이터통신 과목에서 이미 배운 Data Link Layer를 복습하자. 교재 5.1 ~ 5.4절을 읽고 복습문제 R1 ~ R11의 물음에 답하라.

Assignments

AS-1 Python Data Types - String, List, Tuple (9/5)

w3resource에서 제공하는 Python Tutorial의 해당 page를 읽고, w3cresource Python Exercises로 가서 다음 연습문제 중 짝수번 문제에 답하라. .

  • Python Data Types - String [ 24 Exercises with Solution ]
  • Python Data Types - List [ 34 Exercises with Solution ]
  • Python Data Types - Tuple [ 19 Exercises with Solution ]

Go to editor를 클릭해서 코드를 입력하세요. 다만, 이 사이트는 Python 3 인터프리터를 사용하니 유의바람. Solution도 볼 수 있지만 스스로 풀어보고 solution과 대조해 보세요. 스스로 프로그램을 짜고나서 남이 짠 프로그램을 읽어 보면 프로그래밍 실력이 늘어요.

제출요령
주어진 문제마다 coding해서 답이 오른지 검토하고
문제, 코드, 실행결과를 MS word나 한글을 이용하여 복사하여 붙이고 편집한다음
한개의 pdf 파일로 변환한여 저장한 후
이 파일을 e-class 과제란에 첨부파일로 제출한다.
Python 2와 3 차이
  • print는 Python 2에서는 statement이지만 Python 3에서는 function이다.
    • print "Hello, world!!" ==> print("Hello, world!!")
  • 기타 약간의 차이가 있으나 지금 단계에는 무시해도 좋음
  • 자세한 사항은 다음을 참고. Python 2 vs Python 3

주말을 Python과 함께!!

AS-2 Python Data Types - Dictionary and Set, Conditional Statements, and Loops (9/12까지)

w3resource에서 제공하는 Python Tutorial의 해당 page를 읽고, w3cresource Python Exercises로 가서 다음 연습문제 중 짝수번 문제에 답하라. .

  • Python Data Types - Dictionary [ 18 Exercises with Solution ]
  • Python Data Types - Sets [ 15 Exercises with Solution ]
  • Python Conditional statements and loops [ 43 Exercises with Solution]
  • Python functions [ 18 Exercises with Solution ]

AS-3 Python Functions, Date Time, and Classes (9/19까지)

w3resource에서 제공하는 Python Tutorial의 해당 page를 읽고, w3cresource Python Exercises로 가서 다음 연습문제 중 짝수번 문제에 답하라. .

  • Python File Input Output [ 12 Exercises with Solution ]
  • Python Data Structures and Algorithms
    • Search and Sorting [ 10 Exercises with Solution ]
    • Recursion [ 11 Exercises with Solution ]
  • Python Date Time [ 26 Exercises with Solution ]
  • Python Math [ 31 Exercises with Solution ]
  • Python Class [ 12 Exercises with Solution ]

AS-4 Persistent HTTP Client (10/3까지)

AS-4_http_cli.zip 파일을 다운받아 압축을 풀면 html 파일이 있다. 문제와 요구사항을 읽고, 설명과 주요 코드를 참조하여 수행하라.

제출물

아래 두개 파일을 zip 파일로 압축하여 제출한다. 파일명: AS-4-학번.zip

  1. source code
  2. 보고서: 실행결과를 포함해서 보고서를 작성한다. (PDF 파일로)
    • download된 파일은 제출할 필요없다.

AS-5 A Web Application (10/10까지)

Form을 처리하는 적당한 Web Application을 가정하여 개발하고 chrome browser로 (localhost에서) 시험하라. 단, 이 web application은 database를 사용해야 한다.

제출물
아래 파일들을 담은 하나의 zip 파일로 제출하라. (zip 파일명 작명 원칙은 전과 동일)
  1. source code
  2. Web browser 화면 캡쳐 이미지 (.png 파일): URL input한 결과 및 form을 작성하여 submit한 후의 화면
  3. 위 두개의 화면에 해당되는 HTTP header와 HTML source 이미지 (chrome browser의 개발자도구 화면 capture할 것)
  4. 실행 전과 실행 후의 database table 내용
  5. 이 실험 결과를 종합 분석한 보고서(PDF)
참고
SQL Database Interfaces

AS-6 Web Crawling (10/24까지)

AS-6_Web_Crawling.zip 파일을 다운받아 압축을 풀면 html 파일이 있다. 설명과 주요 코드를 참조하여 'Source Code'를 완성하라.

제출물

아래 두개 파일을 zip 파일로 압축하여 제출한다. 파일명: AS-6-학번.zip

  1. source code
  2. 보고서: 실행결과를 포함해서 보고서를 작성한다. (PDF 파일로)

AS-7 Specification of rdt 3.0 in SDL(11/7)

SDL(Specification and Description Language)는 통신 프로토콜의 설계 명세를 작성하는데 널리 사용되는 ITU-T 표준 diagram으로 extended FSM 모델을 기반으로 하고 있다. rdt 3.0 sender, receiver의 specification을 SDL로 작성하라. 단, state 수를 절반으로 줄여라.

손으로 그려서는 안되고 PPT나 기타 도구를 이용하여 그려야 한다. 결과물은 PDF로 변환하여 제출.

SDL Example
rdt_send(data) event와 timeout 등 incoming event는 INPUT으로, udt_send(sndpkt)과 deliver_data(data)등 outgoing message는 OUTPUT으로 그려야 한다.
모든 INPUT은 state 바로 아래 그려야 한다. (왜냐 하면, state transition을 유발하는 외부로 부터의 stimulus이니까...)
아래 example에서는 보이지 않지만, decision(또는 condition)은 마름로로 그린다. corrupt(rcvpkt) && isACK(rcvpkt, seq) 등은 decision으로 표현할 수 있다. (Decision이 추가된 FSM을 EFSM이라 한다.)
PROCEDURE CALL과 TASK는 구분하지 않고 그냥 TASK로 그려도 무방하다.

Sdl example.png

AS-8 Internetworking Principle (11/2)

Internetworking 원리를 이해하기 위해, IP protocol의 동작과정을 알아보자.

  • UP: 도착한 datagram에 대해서는 자신에게 오는 것인지 확인하여 위로(UP) 보내고,
  • DOWN: 보낼(DOWN) datagram에 대해서는 어떻게 outgoing interface를 선택하여 forwarding시키려면, datagram이 frame에 encapsulation해야 하는지를 알아보자.
  • FORWARD: Router는 도착한 datagram이 자기 자신에게 오는 것이 아닐 때 버리지 않고 forwarding하는 기능만 추가된 것임을 이해하자.

Media:ip_forwarding.docx 문제를 다운받고 여기에서 network interface(L2)나 upper layer(L4)에서 도착한 IP datagram을 어떻게 forwarding해야 하는지 답하라.

AS-9 Dijkstra Algorithm for Shortest Paths and Building Forwarding Tables (12/6)

Python으로 구현한 Dijkstra's algorithm for shortest paths (by David Eppstein, UC Irvine, 4 April 2002 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/117228)와 graph G가 다음 source와 같이 주어져 있다. Media:dijkstra.zip

다음을 수행하라. (손으로 그리지 말 것)

  1. Source를 보고 주어진 graph를 그려라.
  2. 노드 3개를 선택하여 이 노드에서 위 알고리즘을 실행시켜 shortest path tree를 구하고
  3. 이 3개의 tree를 그린 graph위에 도시하라. (각각 다른 색으로 선을 그린다.)
  4. 위 노드 3개에서의 forwarding table을 작성하라. Forwarding table의 column은 다음과 같다
    • destination node
    • outgoing link - node의 pair로 표시. 예: (u, v)
    • distance - 이 node에서 destination node까지의 path cost
제출물
source 실행 IDLE shell화면과 위 문서를 하나의 파일(PDF)로 만들어 제출한다.