Fall 2009 Ch.1 TCP/IP, Linux 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Internet, packet switched network 인터넷: 컴퓨터들을 연결한 통신망 Computer Networks 패킷교환망 packetization: 메시지 패킷 중계 routing based on IP addr bridging based on Ethernet Address Store-and-Forward, Cut-Through Switching 2 Services Connection-Oriented Service : reliable with TCP Connectionless Service : less delay with UDP 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Protocol = 통신장치간에 교환되는 표준화된 패킷의 형식과 절차 규정 표준화 기구 IETF IEEE802 etc… IP related protocols RFC IEEE802 LAN related protocols etc… 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
TCP/IP layered architecture 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Network Layer 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
데이터 전달과정 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
(tcp/udp) Port 응용프로세스 식별자 Well-known port 임시 포트 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Connection, Association {protocol, local-address, local-process, remote-address, remote-process} half-association: {protocol, local-address, local-process} : 소켓 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Byte-Stream , Push, Message TCP: 스트림(stream)방식 byte단위 전송. 운영체제가 임의의 바이트열을 TCP에 수납하여 전송. push 기능: 텔넷과 같은 경우, 버퍼의 내용을 한꺼번에 송신하는 기능 UDP : 메시지 방식 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Out-of-band 전송 Ctrl+C입력 경우 별도의 버퍼 사용 우선 처리 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Byte Order Little-endian : Intel Big-endian : Motorola Network byte order : Big-endian 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Process, Daemon 프로세스(process): 독립적으로 동작 가능한 단위 프로그램 데몬(daemon): 백그라운드(background) 프로세스, event발생시 까지 대기. 상주 데몬: SNMP나 HTTP 데몬, xinetd 데몬 등 /etc/rc.d/init.d/” 디렉토리에 위치. 필요시 호출되어 동작하는 데몬: 텔넷(Telnet), FTP, echo, daytime, discard 데몬 상주 데몬인 xinetd 데몬에 의해 호출됨. xinetd데몬은 supersever 또는 수퍼데몬이라고도 불림. “/etc/xinetd.d” 디렉토리에 위치. 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Application architectures Client-server Peer-to-peer (P2P) Hybrid of client-server and P2P 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Client-server archicture always-on host permanent IP address server farms for scaling clients: communicate with server may be intermittently connected may have dynamic IP addresses do not communicate directly with each other 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Pure P2P architecture no always on server arbitrary end systems directly communicate peers are intermittently connected and change IP addresses example: Gnutella Highly scalable But difficult to manage 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Hybrid of client-server and P2P Napster File transfer P2P File search centralized: Peers register content at central server Peers query same central server to locate content Instant messaging Chatting between two users is P2P Presence detection/location centralized: User registers its IP address with central server when it comes online User contacts central server to find IP addresses of buddies 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Processes communicating Client process: process that initiates communication Server process: process that waits to be contacted Process: program running within a host. within same host, two processes communicate using inter-process communication(IPC) (defined by OS). processes in different hosts communicate by exchanging messages Note: applications with P2P architectures have both client processes & server processes 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Sockets process sends/receives messages to/from its socket TCP with buffers, variables socket host or server process TCP with buffers, variables socket host or server process sends/receives messages to/from its socket socket analogous to door sending process shoves message out door sending process relies on transport infrastructure on other side of door which brings message to socket at receiving process controlled by app developer Internet controlled by OS API: (1) choice of transport protocol; (2) ability to fix a few parameters 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
소켓과 소켓 라이버러리 소켓: TCP/IP : 커널에 위치함. {Protocol, IP주소, 포트번호}의 조합 특정 응용계층의 서비스를 식별하는 식별자 read/write 형식으로 데이터의 입 출력이 가능한 일종의 디바이스로 간주됨. file descriptor로 식별됨. sockfd(socket file descriptor)라고 부름. TCP/IP : 커널에 위치함. 소켓 라이버러리: 응용계층 프로그래머들이 커널내의 TCP/IP의 사용을 용이하게 한 네트워킹 라이버러리. Socket API로 접근. 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
“My First Socket Program” #include <netinet/in.h> struct in_addr{ union{ struct {u_char sb_1,sb_2,sb_3,s_b4;} S_un_b; struct { u_short s_w1, s_w2;} S_un_w; u_long S_addr; }S_un; }; struct sockaddr_in{ short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; main(){ int sockfd; struct sockaddr_in saddr; unsigned char buffer[20]; sockfd = socket(AF_INET,SOCK_DGRAM,0); printf(“sockfd = %u\n”,sockfd); memset((char *)&saddr,0x00,sizeof(struct sockaddr)); saddr_in.sin_family = AF_INET; saddr_in.sin_port = htons(9); //echo port saddr_in.sin_addr.S_un.s_addr = inet_addr(“200.0.1.2”); bind(sockfd.&saddr, sizeof(struct sockaddr)); buffer = “My First Socket”; sendto(sockfd,buffer,strlen(buffer)+1,flags,&saddr,sizeof(struct sockaddr)); receivefrom(sockfd, buffer, sizeof(buffer), ),0,&saddr,sizeof(struct sockaddr)); //blocked until receives printf(“%s\n”,buffer); close(sockfd); } 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
리눅스에서의 TCP/IP *TCP/IP in Kernel 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Addressing processes For a process to receive messages, it must have an identifier A host has a unique 32-bit IP address Q: does the IP address of the host on which the process runs suffice for identifying the process? Answer: No, many processes can be running on same host Identifier includes both the IP address and port numbers associated with the process on the host. Example port numbers: HTTP server: 80 Mail server: 25 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
App-layer protocol defines Types of messages exchanged, eg, request & response messages Syntax of message types: what fields in messages & how fields are delineated Semantics of the fields, ie, meaning of information in fields Rules for when and how processes send & respond to messages Public-domain protocols: defined in RFCs allows for interoperability eg, HTTP, SMTP Proprietary protocols: eg, KaZaA 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
What transport service does an app need? Data loss some apps (e.g., audio) can tolerate some loss other apps (e.g., file transfer, telnet) require 100% reliable data transfer Bandwidth some apps (e.g., multimedia) require minimum amount of bandwidth to be “effective” other apps (“elastic apps”) make use of whatever bandwidth they get Timing some apps (e.g., Internet telephony, interactive games) require low delay to be “effective” 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Transport service requirements of common apps Application file transfer e-mail Web documents real-time audio/video stored audio/video interactive games instant messaging Data loss no loss loss-tolerant Bandwidth elastic audio: 5kbps-1Mbps video:10kbps-5Mbps same as above few kbps up Time Sensitive no yes, 100’s msec yes, few secs yes and no 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Internet transport protocols services TCP service: connection-oriented: setup required between client and server processes reliable transport between sending and receiving process flow control: sender won’t overwhelm receiver congestion control: throttle sender when network overloaded does not provide: timing, minimum bandwidth guarantees UDP service: unreliable data transfer between sending and receiving process does not provide: connection setup, reliability, flow control, congestion control, timing, or bandwidth guarantee Q: why bother? Why is there a UDP? 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Internet apps: application, transport protocols layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] proprietary (e.g. RealNetworks) (e.g., Dialpad) Underlying transport protocol TCP TCP or UDP typically UDP Application e-mail remote terminal access Web file transfer streaming multimedia Internet telephony 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
미리 설치해야 할 서버 프로그램 l Telnet l FTP l DNS l RARP l TFTP l DISCARD l DHCP l Apache 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
실험망의 구성 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
프로토콜 분석기 e-watch 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
분석 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Home Works 집 컴퓨터에 리눅스를 설치할 것 기능과 명령어 숙달 프로그래밍 Network 설정 연습문제 풀이 RedHat의 최신버전인 Fedora를 설치. 기능과 명령어 숙달 GUI화면에서 각 메뉴의 기능 Console모드에서의 명령어 프로그래밍 간단한 c 프로그램을 vi로 작성하고 compile printf(“hello world\n”); Network 설정 ifconfig route 연습문제 풀이 연습문제 2개 작성 및 풀이 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
Fedora 11 on USB Stick/Externet HDD Get Fedora 11 Desktop Edition ISO File On Windows XP liveusb-creator-3.7.1.zip from https://fedorahosted.org/liveusb-creator/ Run 만약 Target Device가 선택되지 않으면… 강제로 다음과같이 liveusb-creator --force F: 만약 Target Device에 F:^v$3 등 이상한 글자가 나오면, 해당 드라이버의 이름을 한글에서 영문으로 바꿀 것. 컴퓨터 BIOS의 부팅순서를 USB를 우선으로 선택 만약 외장형 HDD(usb연결)의 경우, HDD의 부팅순서를 외장형 HDD가 우선하도록 설정. Booting 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
설치된 Fedora에서… gcc컴파일러, telent server, quagga 설치 yum intall gcc yum install telnet-server telnet Yum quagga yum ethereal-gnome GUI /메인창의 Internet부분에 wireshark로 설치됨. … 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
참고: 유용한 리눅스 정보 (1) 파일의 위치 l 데몬들의 설정화일(script) 위치 : /etc/rc.d/init.d, /etc/xinetd l 네트워크 서비스 설정 파일의 위치 : /etc/services l 네트워크 드라이버 모듈의 위치 : /lib/modules/리눅스버전/kernel/drivers/net (2) telnet 데몬의 설정화일 내용 #cd /etc/xinetd.d #ls #vi telnet # service telnet { disable = no ; 텔넷 서비스가 가능하도록 설정함. .. } 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
참고: 유용한 리눅스 명령어 (1) 일반 l 버전 확인 #uname –r l CD mount #mount /dev/cdrom /mnt/cdrom ; CD ROM장치를 /mnt/cdrom디렉토리로 마운트한다. #cd /mnt/cdrom/ #ls ; CD의 내용을 보여줌 l Unmount : CD나 플로피를 제거할 경우 (반드시 /mnt/cdrom 디렉토리가 아닌 곳에서 실행해야 함.) #umount /mnt/cdrom l 압축해제 #tar xvf <압축화일명.tar> #tar zxvf <압축화일명.tar.gz> l socket programming compile cc main.c –lnsl // link with network service library 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
계속.. (2) RPM(Redhat Package Management) 패키지 관리 rpm –qa ; 설치된 rpm 종류 나열 rpm –qa ; 설치된 rpm 종류 나열 rpm –e <rmp명> ; 제거 rpm –i ; 추가 rpm –U ; 갱신 (3) 모듈관리 l 적재된 모듈 확인 : lsmod l 적재된 모듈 제거 : rmmod <모듈 이름> l 모듈의 적재 : modprobe <모듈 이름> 라우터와 라우팅 프로토콜 한국항공대학교 윤종호
계속… l DNS설정 #vi /etc/resolv.conf … nameserver 200.0.1.x l 설정내용의 적용 (4) Network관련 l 일반설정 : /etc/sysconfig/network파일을 열어, 다음 사항을 편집함. NETWORKING=yes HOSTNAME=hanul DOMAINNAME=ewatch.ac.kr FORWARD_IPV4=no //라우터로 설정할 경우에는 반드시 yes로 설정해야 함. GATEWAYDEV=eth1 GATEWAY=200.0.1.1 //자신의 기본 라우터 l 카드 설정 #vi /etc/sysconfig/network-scripts/ifcfg-eth0 … DEVICE=eth0 ONBOOT=yes BOOTPROTO=none IPADDR=200.0.1.2 NETMASK=255.255.255.0 NETWORK=200.0.1.0 BROADCAST=200.0.1.255 l host name 설정 #vi /etc/HOSTNAME HOSTNAME=hanul.ewatch.ac.kr l DNS설정 #vi /etc/resolv.conf … nameserver 200.0.1.x l 설정내용의 적용 #/etc/rc.d/init.d/network restart Shutting down interface eth0: [OK] Setting network parameters: [OK] Bring up interface lo: : [OK] Bring up interface eth0 : [OK] l xinetd의 시동 및 중지 #/etc/rc.d/init.d/xinetd [start stop restart] l 인터페이스 설정 및 활성화 #ifconfig <인터페이스 명> <IP주소> netmask 255.255.255.0 [up, down] l 기본 라우터 설정 #route add default gw <라우터 주소> l 경로확인 #route 라우터와 라우팅 프로토콜 한국항공대학교 윤종호