Lectures/NP/2012

From MCLab
Jump to: navigation, search

Contents

네트워크프로그래밍및실습 Class Overview

담당교수
홍진표
강의시간 (강의실)
월 7, 8 (5209), 목 7, 8 (5301)
선수과목
2-2 통신시스템프로그래밍및실습
선수권장 과목
2-1 자료구조
관련과목
3-2컴퓨터네트워크및실습, 3-2 정보통신종합설계, 4-1 멀티미디어통신
학습목표
TCP/IP 프로토콜의 내부 동작 원리를 이해하고, Socket API를 배워
이를 바탕으로 인터넷 상의 응용 프로그램의 구현 능력을 실습을 통하여 익혀 현장에서의 실무능력을 키우고,
새로운 네트워크 응용이나 서비스를 설계하고 개발하는 능력을 배양한다
교재
W.Richard Stevens, Bill Fenner, and Andrew M. Rudoff, UNIX Network Programming - The Sockets Networking API, Vol. 1, 3rd Ed., Addison Wesley, 2004. [1]
(번역판도 있으나 익숙하지 않은 한글 용어를 만들어서 사용하기 때문에 읽기가 힘들어 권장하지 않음)
참고문헌
Jon C. Snader, Effective TCP/IP Programming [2]
주요내용
TCP, UDP Transport Protocols의 개요와 Socket 개념을 이해한다.
TCP Socket API을 이해하고, UNP library 활용하여 TCP Client, Server를 개발 방법을 배운다.
UDP Socket API 이해하고, Broadcasting, multicasting을 배워, UNP library를 활용하여 UDP client, server 개발 방법을 배운다.
I/O multiplexing, concurrent processes, multi-threads 기법을 사용한 구현 방법을 익히고 성능을 분석하여, 효율적인 설계 대안을 선택하는 능력을 배양한다.
효율적인 Socket programming 방법론을 배우고 ETCP library 활용법을 배운다.
FSM, multiple-timeout, event-driven programming을 배워 TCP 기반 표준 프로토콜(HTTP, FTP)과 UDP기반 ARQ를 을 설계하고, 구현하는 방법을 익힌다.
Java(or Windows) Network Programming을 익힌다.
사용도구/방법론
Stevens의 UNP library, Snader의 ETCP library, X-Shell, SourceInsight
수업운영방법
주당 2시간 이론 강의, 2시간 실습, 팀 프로젝트도 실시
학습평가방법
시험(40%), 실습(10%), 개인과제(20%), 팀 Project(25%), 출석(5%)
시험은 1회만 실시함
특이사항
기타안내 및 유의사항
2013년 부터 4학년 1학기에서 3학년 1학기로 이전될 예정이니 3학년 학생은 올해 수강해야 합니다..
강좌 홈페이지 [3]
조교
한민규 박사과정 mailto:hufs96mk@hufs.ac.kr, Tel : 031) 330-4511, 공과대학 425호

공지사항

  • 창의도전형 SW R&D 프로그램
    대학생을 중심으로 지원하는 사업이니 공모전 경험자나 준비하는 학생은 응모해 보세요. 대학생의 창업을 지원하기 위한 정부 지원 사업입니다. 이 사업을 따면 이 과목에서 부가점을 줄 예정입니다.
    1. 사업 목적
      • 창의적인 아이디어와 열정을 가진 대학생 등 개인을 대상으로 SW R&D 기회를 제공하여, 우수 SW 개발 기회 마련
    2. 추진 내용
      • (지원대상) SW개발이 가능한 만 18세 이상의 모든 대한민국 국민
        • 개인(1인) 또는 팀(2인 이상)으로 지원 가능
      • (지원내용) SW 개발비용 1인당 최대 5천만원 지원(팀당 최대 1억원)
      • 접수기간 : 2012. 2.28(화), 09:00 ∼ 2012. 3. 28(수), 17 :00
    3. 상세내용: 정보통신산업진흥원 사업공고 참조 [4]

강의자료

  • Socket Introduction (PDF)
  • Transport Protocols: TCP and UDP (PDF)
  • Elementary Socket API (PDF)
  • TCP Client-Server Examples (PDF)
    • with Concurrent Processes
    • with I/O Multiplexing
    • with Threads
  • Name and Address Conversion (PPT)
  • IPv4 and IPv6 Interoperability (PPT)
  • Socket Options (PPT)
  • UDP Sockets (PPT)
  • Event-driven Programming with timeouts (PPT)
  • UNIX Domain Protocols (PPT)
  • Nonblocking I/O, I/O Control (ioctl), Signal-driven I/O (PPT)
  • Broadcast and Multicast (PPT)
  • Out-of-Band Data (PPT)
  • Final Remarks - Tips on Network Programming (PPT)
  • File:Etcp.zip

실습

실습 준비사항

  • 아래 notice를 다운받으셔서, 실습서버에 대한 사항을 다시 숙지하시기 바랍니다. 실습서버 ID는 "s+학번"이며, 비번이 모두 동일하게 부여되어 있습니다. 접속하셔서 비번을 수정하시기 바랍니다.
np1, np2 실습서버

Source Version Control

MCLAB-SVN Server 연동방법
    • 자신의 계정으로 시작하는 s+학번의 repository를 미리 관리자가 생성해 둘 것입니다. 이는 접속에 관한 계정으로 사용되며, web browser를 사용하여 접속하실 수 있습니다.(실습시간에 각자의 접속비번을 알려주세요)
    • 접속URL : https://gaia.hufs.ac.kr/svn/s+학번

실습자료

Programming Assignments

Ass 1. Getting Started: Word Counter (due date: 4/2)

Ass 2. Group Chatting (due date: 4/12)

Ass 3. UDP Packet Loss Experiment (due date: 5/30까지)

Team Projects

Project 1. Group Chatting with File Transfer (due date: 5/7)

(김두형 오진우) (김지훈 강건우) (김태영 송원준) (박경덕 이영호) (심한석 이정열) (양윤식 신영록) (이영곤 조성윤) (최영진 정광현) (최인준 김재윤)

공지: clientList, freeList를 access할 때 mutex가 필요합니다. 즉, createClient(), destoryClient(), findClient(), 및 clientList를 for loop으로 뒤질 때에 mutex를 사용해야 합니다.

Project 2. FTP Client Design and Implementation (due date: 5/21)

Project 3. FTP Client with GUI and FTP Server

팀을 해체하고 새로 만들되 3~4명이 한 팀이 되도록 구성하여 프로젝트를 수행한다.

  1. FTP Client의 User Interface를 GUI로 확장하라. Java나 Windows를 마음대로 선택할 수 있다.
  2. FTP Server는 UNIX위에 C로 프로그래밍하거나 Android 상에서 구현하기를 선택할 수 있다. Android를 이용한다면 동시에 하나의 client만 지원해도 무방하다.
발표 및 데모
6/7(목) 수업시간 (보고서와 발표자료는 eclass에 미리 올리세요.)