6. 네트워킹 (Networking)과 인터넷 (Internet)

Slides:



Advertisements
Similar presentations
제 4 장 인터넷 네트워크 구성 2 LAN(Local Area Network) LAN  근거리 통신망으로 집, 사무실, 학교 등의 건물과 같이  가까운 지역을 한데 묶는 컴퓨터 네트워크 Serial port connection  가장 단순한 LAN.
Advertisements

제 4 장 인터넷 창병모 네트워크 구성 2 LAN(Local Area Network) LAN  근거리 통신망으로 집, 사무실, 학교 등의 건물과 같이  가까운 지역을 한데 묶는 컴퓨터 네트워크 이더넷 (Ethernet)  제록스 PARC.
제 4 장 인터넷 네트워크 구성 2 LAN(Local Area Network) LAN  근거리 통신망으로 집, 사무실, 학교 등의 건물과 같이  가까운 지역을 한데 묶는 컴퓨터 네트워크 Serial port connection  가장 단순한 LAN.
7 장. 원격지에서 리눅스서버를 관리하자. 텔넷서버를 설치 / 운영한다. SSH 서버를 운영한다. VNC 서버를 설치 / 운영한다.

정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
8. Networking 유닉스는 재미있다. 유닉스는 사용하기는 쉽지만 배우기는 어렵다.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
제8장 네트워킹.
Understanding of Socket and File I/O
Chapter 7 Networking.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Chapter 6. 리눅스 백도어 황 선 환.
Network Lab. Young-Chul Hwang
제4장 인터넷.
NFS, FTP coearth, george.
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Minicom,tftp,nfs설정,vnc설정
DPR-1630&1615 IP공유기 셋팅 방법 고객지원팀 작성자 : 정청석.
Chapter 02 네트워크에 대한 이해.
Network Lab. Seoung Hyeon, Lee
8. 네트워킹 (Networking) 9. 인터넷 (Internet)
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
5. 네트워킹 사용자 표시 : users/ rusers/who/w users 지역 호스트 상에 있는 사용자의 간단한 목록 표시
Root Filesystem Porting
Chapter 21 Network Layer: ARP, ICMP (IGMP).
Root Filesystem Porting
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
Chapter 06. UDP 서버/클라이언트.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
제9장 네트워킹 숙명여대 창병모 2011 가을.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
TCP/IP Socket Programming…
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
Cross Compiler를이용한 커널 컴파일 및 포팅
시스템 인터페이스 Lab3 Unix 사용법 실습.
Linux/UNIX Programming
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
㈜시스원이 제공하는 시스템 관리 통합 솔루션 SysmanagerOne Agent설치 안내서
(분산 통신 실습) : 소켓(Sockets)
Linux/UNIX Programming
ACL(Access Control List)
제8장 네트워킹 숙명여대 창병모
Linux/UNIX Programming
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Network 네트워크 이론 및 실습 TCP / IP 4장.
Chapter 26 IP over ATM.
Linux/UNIX Programming
Linux/UNIX Programming
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
웹(WWW).
Chapter 27 Mobile IP.
 파일 아카이브와 압축 명령 익히기.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
Docker Study 6~7.
Linux/UNIX Programming
ARP.
Presentation transcript:

6. 네트워킹 (Networking)과 인터넷 (Internet) 유닉스는 재미있다. 유닉스는 사용하기는 쉽지만 배우기는 어렵다. 유닉스의 모든 것을 배우는 것은 불가능하다. 필요한 것과 재미있을 것 같다고 생각되는 부분에 관심을 쏟는 것이 좋다. 유닉스는 세련되고 영리한 사람들을 위한 도구의 집합이다. 유닉스는 문화(文化; culture)이다.

소개 일반 네트워크 용어 네트워크 구축 방법 네트워크 상에서 다른 사람들과 대화 방법 네트워크 상에서 다른 컴퓨터의 사용 방법 Unix/Linux

네트워크 구축 Serial port 끼리의 연결 Ethernet Bridge Router Gateway 가장 단순한 연결 대표적인 LAN 구성방식, 기계마다 주소 지정 필요  각 컴퓨터 - 고유의 주소, 이더넷 카드 장착  동일한 단일 동축 케이블에 연결  메시지 전송시 - 헤더에 주소 적재  collision 발생시 - random waiting으로 처리 Bridge 적은 수의 Ethernet 네트워크 구역을 직렬로(serial) 연결할 때  Repeater Router Ethernet 네트워크 구역 다 수를 상호(mutual) 연결할 때 Gateway 고용량의 Router로서, LAN에서 WAN으로의 확장 기준 라우터 기능 + 브리지 기능 + 다른 형식 또는 프로토콜로 변환 기능, (예) AppleTalk 라우터 Unix/Linux

The Simplest LAN: Serial Port Connection serial connection Unix/Linux

Ethernet Ethernet cable Ethernet card Unix/Linux

Bridge Bridge Ethernet cable Ethernet cable Unix/Linux

Router Router Ethernet cable Ethernet cable Ethernet cable Unix/Linux

Gateways Gateway Gateway Corporate Lan Corporate Lan Corporate Lan Unix/Linux

인터넷(Internet) TCP/IP UDP/IP SRI-NIC, NIC, interNIC (KRNIC) TCP (Transport Control Protocol) : packet 전송 IP (Internet Protocol) : stream 전송 연결형 소켓 (connection oriented protocol) 등기우편 소스 노드 주소와 목적 노드 주소 지정 수신여부 확인(ACKnoledge), ACK 못 받으면 재전송 UDP/IP UDP (User Datagram Control Protocol) : packet 전송 비연결형 소켓 (connectionless protocol) 일반우편 SRI-NIC, NIC, interNIC (KRNIC) SRI (Stanford Research Institute) NIC (Network Information Center) http://www.internic.net/ 인터넷 상의 LAN에 호스트의 고유 주소 할당 인터넷 Backbone에 어떻게 연결 되는지만 담당 (내부적인 관리는 무관) Unix/Linux

인터넷 주소 IP Address vs. Symbolic Address vs. Physical Hardware Address 8 bit 4 fields = 32 bits (예) 117.16.244.59 Class A, B, C, D Domain Name = Symbolic Address (예) csblade.incheon.ac.kr Symbolic Address com (회사), edu (교육기관), gov( 정부), org( 비영리기관), mil (군용), XX (2자리 국가코드) Physical Hardware Address: 이더네트 주소 (Linux) $ ifconfig –a 또는 (Unix) $ arp -a 6-octet 수치 콜론으로 분리된 16진수 (예) 20:81:0a:10:c4:93 (처음 두 octet은 제 작사 코드) Unix/Linux

OSI 7 Layers & Internet protocol suite Application Layer 6 Presentation Layer 5 Session Layer 4 Transport Layer 3 Network Layer 2 Data Link Layer 1 Physical Application TCP UDP IPv4, IPv6 Device Driver and Hardware Application sockets XTI Transport Network Link OSI 7 Layers Model Internet protocol suite OSI : Open System Interconnection XTI : X/Open Transport Interface Unix/Linux

인터넷에서의 데이터 흐름 Application Transport Transport Network Link 도착주소(IP) 전달 세그먼트 분할+포장+도착주소 중간주소 붙여 포장(도착주소 or라우터주소) 중간주소를 local network 주소로 변환 포장 벗겨 도착주소 확인 후 아니면 다시 포장+새중간주소(옆의 다른 라우터 주소) 메시지 재구성 포장 벗겨 도착주소 확인 맞으면 위로 전달 포장 벗겨 위로 전달 Transport 16-bit quantity 536~1460 1024+66=1090 포장 벗겨 위로 전달 Unix/Linux

연결형 시스템 호출 TCP/IP read( ) bind( ) listen( ) accept( ) socket( ) 연결형 소켓(connection oriented protocol : TCP(Transmission Control Protocol)) 서버(server) 클라이언트(client) 클라이언트로부터 연결이 올 때까지 대기 프로세스에 요청 read( ) bind( ) listen( ) accept( ) socket( ) write( ) connect( ) Data 응답 Data 요청 연결설정 [참고 P535] Unix/Linux

비연결형 소켓 시스템 호출 UDP/IP 비연결형 소켓(connectionless protocol : UDP(User Datagram Protocol)) blocks until data received from a client data(request) process request data(reply) 서버(server) socket() bind() 클라이언트(client) recvfrom() socket() bind() sendto() write() read() Unix/Linux

인터넷(Internet) Address Mapping Service Routing Service /etc/hosts Symbolic Address/Host Name/IP Address 간의 변환 Routing Service /etc/defaultrouter GATE (gateway) IP 주소 정의하여 DEST (destination)으로 갈 수 있는 정보 제공 arp (address resolution protocol) ‘누가 210.126.35.99의 h/w 주소 아니?’ 방송  해당 컴퓨터가 ‘저예요’ 대답 (Unix) $ /usr/sbin/arp -a (캐시 내용 출력) (Linux) $ /sbin/arp -a 신뢰하는 호스트 개념 [최근 버전에서는 안됨] rlogin, rcp, rsh 시스템: su가 /etc/hosts.equiv에 리스트 기록 (‘remote-호스트’ 형식) 사용자: $HOME/.rhosts에 신뢰하는 호스트 또는 호스트-사용자 쌍 Unix/Linux

인터넷(Internet) Port Service password 없이 다른 호스트의 셸을 얻는 두 가지 방법 (둘 중 한가지만 하면 됨)  원격 호스트들의 home directory 상의 .rhosts 화일 안에 이들 호스트들의 symbolic name들을 명시함 (remote command 실행 가능)… (Solaris9에서 안됨, 권장 않음)  시스템 관리자가 /etc/hosts.equiv안에 globally equivalent computer들의 symbolic name들을 나열함 (password 없이 login가능 / remote command 실행 가 능) Port Service 인터넷 호스트들간이 통신은 주소(번호)가 주어진 포트를 통하여 이루어짐 /etc/services 화일은 표준 포트(일반 사용자 용)의 목록을 보여줌 Unix/Linux

사용자 users ( /usr/ucb/users ) : local host 상의 사용자 표시 rusers (/usr/bin/rusers ) : remote host 상의 사용자 표시 (Unix Only) who : 더 많은 사용자 표시 users와 비슷하며 추가적인 정보가 제공 (형) who [ whoFile ] [ am i ] whoFile의 사례: /var/adm/wtmpx (예) who (예) who am i (예) [Unix] who /var/adm/wtmpx (strings /var/adm/wtmpx | more) cf. last (예) [Linux] who /var/log/wtmp (strings /var/log/wtmp | more) cf. last last : /var/log/wtmp 파일이나, -f 옵션에서 지정한 파일을 통해서 사용자의 로그인, 로그아웃 시간을 보여준다 /var/log/wtmp 파일 없을 때는 $ touch /var/log/wtmp Unix/Linux

사용자 w whois : 인터넷 정보 who와 거의 비슷하나 명시된 사용자가 실행 하고 있는 동작도 보여줌 (형) w userId * (예) w mysung whois : 인터넷 정보 주요 인터넷 위치에 관한 정보를 얻음 (형) whois [ -h hostName ] id hostName은 whois 서비스를 실행하고 있는 호스트이고 id는 찾고자 하는 인터넷 식별자임 (예) whois -h whois.krnic.net 117.16.244.59 (KRNIC registry) KRNIC: Korea Network Information Center (예) whois -h whois.ripe.net seoul (European registry) Unix/Linux

사용자 hostname [name-of-host] finger 자신의 local host이름을 알아냄 슈퍼유저는 name-of-host 매개변수를 입력하여 local host의 이름을 바꿀 수 있음 finger 여러 출처에서 모은 사용자들에 관한 정보를 표시 (형) finger userId * - /etc/passwd - $HOME/.plan - $HOME/.project (예) finger (예) finger mysung (예) finger mysung@multi Unix/Linux

사용자들과 통신 mesg write wall talk 사용자들간의 통신을 가능(y) 또는 불가능(n)하게 함 (예) $ mesg y write 한 줄 씩 통신할 때 사용 (형) write userId [ tty ] 다수의 터미날 사용할 때 tty 명시 처음 통신자가 자신의 위치를 알려주는 것이 예의임(write 명령 초기화) 동기화용 상호 규약을 정하는 것이 편리 (예: -o- over, -oo- over and out) 끝낼 때, ^D 사용 wall local host상의 모든 사람들에게 메시지 전송(Broadcasting) (형) wall [ fileName ] talk [Solaris 10] $ inetadm -e talk 로 enable (root만) ] 분리된 화면 인터페이스를 통해 인터넷 상 (같은 호스트 또는 원격호스트)의 다른 사람과 대화(chatting) 화면 다시 그리기: ^L 종료: ^C (예) talk mysung@multi.incheon.ac.kr [Linux] $ /sbin/chkconfig --add talk 로 enable (root만) core 15 이상 지원 않음 Unix/Linux

전자우편: Mail mail : 전자 우편 메시지 전송 (형) mail -H [ -f fileName ] userID * userID가 없으면, 전자우편을 읽는 것으로 간주함 (/user/spool/mail/<userID>에서) f 옵션으로 사용자의 전자우편 보관장소를 지정할 수 있음 H 옵션으로 사용자의 전자우편 보관장소로부터 제목들을 볼 수 있음 전자우편 시작하기 화일 ($HOME/.mailrc) $MAILRC에 이 화일경로가 명시됨 사용자의 요구를 맞추어 구성할 수 있음 특히 유용한 기능 전자우편 그룹 형성 group name userID + (Linux) group music mysung stu guest # in ".mailrc" $ mail music < letter ( 자기 자신한테는 오지 않음) (Solaris) 시스템 관리자가 그룹 형성 /etc/mail/aliases에 그룹 등록하고 $ newaliases 실행 $ cat /etc/mail/aliases music: mysung, stu, guest … Unix/Linux

Mail 명령 모드 ? 도움말 copy [mesgList] [fileName] 메시지 복사, "saved"라는 표시 없음 ? 도움말 copy [mesgList] [fileName] 메시지 복사, "saved"라는 표시 없음 delete [mesgList] 메시지 삭제 file [fileName] 우편함 fileName으로부터 우편 읽기 header [message] message를 포함하는 메시지 제목 보이기 mail [userId]+ 전자우편 전송 print [mesgList] more를 이용하여 메시지를 보여줌 quit mail 빠져 나옴 reply [mesgList] 메시지의 송신자에게 응답함 save [mesgList] [fileName] 메시지 저장, fileName (default: mbox) mesgList (전자우편 메시지 집합) . 현재 메시지 nn 번호가 nn인 메시지 ^ 지워지지 않은 메시지 중에서 첫 번째 $ 마지막 메시지 * 모든 메시지 nn-mm 번호가 nn부터 mm사이의 메시지 user 사용자 user로부터 온 메시지 Unix/Linux

Mail mail 보내기 (예) $ mail stu Subject: ……… ^D (예) $ mail stu < letter mail 받기 (예) $ mail (예) $ mail -f mbox (예) $ mail -H Linux에서 mail group 만들기 (예) $ vi .mailrc group mygg mysung stu guest (예) $ mail mygg … (예) $ mail mygg < letter Unix/Linux

분산 자료 rcp(remote copy) uucp (Unix-to-Unix CoPy) /etc/hosts.equiv안에 등록된 globally equivalent computer들의 복사 (형) rcp -pr fileName + directory p 복사 하면서도 마지막 수정시간, 접근시간, 허가권을 보존 r recursively copy (예) rcp file1 unix1:file2 # 원격지 mysung의 같은 홈 디렉토리로 복사 (예) rcp stu@unix1:file1 file2 # 원격지 mysung의 stu 홈 디렉토리에 있는 file1을 복사해옴 uucp (Unix-to-Unix CoPy) 초기 USENET 시절 직렬선, 다이얼업 네트워킹에 사용 (이더넷 네트워킹은 IP 프로토콜 이용) unix 호스트들간의 화일 복사, rcp와 비슷 uucp sourcefile destfile 유사한 명령: cu (call Unix), tip (full-duplex terminal connection) 명령 이용 Unix/Linux

분산 자료 ftp ftp 프로토콜을 지원하는 다양한 호스트들간의 화일 복사 원격지 호스트의 .netrc를 탐색하여 anonymous ftp인지를 검사함(만일 anonymous ftp가 아니면, 계정과 패스워드를 물어봄) ^C 화일 전송 중지 (단, ftp는 지속됨) ftp의 명령 등 !command local host 상에서 명령 command 수행 append localFile remoteFile 지역화일을 원격지화일 끝에 추가 bell 모든 화일이 전송된 다음 벨이 울림 bye 원격지 호스트 연결 폐쇄 후, ftp 종료 cd remoteDir 원격지 호스트의 경로 바꾸기 close 원격지 호스트 연결 폐쇄 delete remoteFile 원격지 호스트로부터 화일 삭제 get remoteFile [ localFile ] 원격지 화일을 지역 화일로 복사 help [ command ] 도움말 표시 lcd localDir 지역 호스트의 경로 바꾸기 ls remoteDir 사용중인 원격지 호스트의 호일 목록 보기 mkdir remoteDir 사용중인 원격지 호스트에 디렉토리 만들기 open hostNane [ port ] 호스트 연결 시도 put localFile [ remoteFile ] 지역 화일을 원격지 화일로 복사 pwd 현재 작업 중인 원격지 호스트의 디렉토리 표시 quit bye와 같음 rename remoteFrom remoteTo 원격 화일 이름의 재정의 rmdir remoteDir 사용중인 원격지 호스트에 디렉토리 지우기 Unix/Linux

분산 처리 rsh rlogin /usr/sbin/in.rlogind 실행 안 해도 암호치고 로그인 원격 unix 호스트로의 login (형) rlogin -ec [ -l userId ] hostName (예) $ rlogin -l mysung 117.16.244.53 (또는 multi.incheon.ac.kr) 신뢰하는 원격 호스트가 아니면 password 검사 escape sequence (~: tilde) -e 옵션으로 이 문자를 바꿀 수 있음 ~.  원격 호스트로부터 연결 즉시 폐쇄, ^D(종료)와 동일 ~susp  원격 login을 일시 중시, fg로 재개함 ~dsusp ~susp과 동일  단, 원격 로그인 세션으로부터의 출력을 지역 터미널로 에코함 rsh 원격 unix 호스트 상에서의 shell 실행 (단 하나의 명령 실행 시 유용) (형) rsh [ -l userId ] hostName [ command ] 중지 (^D) (예) $ rsh -ㅣ mysung 117.16.244.53 Unix/Linux

분산 처리 telnet telnet 서버를 보유하고 있는 모든 원격 호스트로의 접근 및 명령어 수행 지원 (형) telnet [ host [ port ] ] escape 명령 (^]) : 명령 모드로 들어감 명령 모드 - ? telnet의 명령어 요약 출력 - close 연결 폐쇄 - open host [port] 호스트 연결 - quit telnet을 중단 - z telnet을 일시 중단 종료: ^] quit (Ctrl-] 후 quit) (예) $ telnet csmail.incheon.ac.kr 7 # 보통 7번 포트는 ping-port임(자신의 터미날로 echo) (예) $ telnet 117.16.244.53 13 # 보통 13번 포트는 현재 시간을 보여주고 종료함 (예) $ telnet 211.119.245.53 Unix/Linux

네트워크 파일 시스템 : NFS Sun Microsystems에서 유닉스 네트워크를 위해 개발한 Network File System (BSD 계열) 단일 네트워크 화일 계층 구조로의 마운팅 기능 제공 여러 개의 지역 화일 시스템을 RPC (Remote Procedure Call) 다른 기계로의 분산 처리 의뢰 XDR (External Data Representation) 호스트 중심의 데이터 표현 방식 지원 (confer) AFS AFS is based on a distributed file system originally developed at the Information Technology Center at Carnegie-Mellon University that was called the "Andrew File System". Unix/Linux

NFS NFS(Network File System) NFS와 자동 마운팅(Automounting) 계정이 없는 다른 호스트의 디스크에 있는 파일 접근 서버 호스트에서 클라이언트 호스트로 파일 시스템 설치 NFS와 자동 마운팅(Automounting) /etc/vfstab에 이용할 모든 파일 시스템을 등록하면 과부하로 파일 서버 및 파일 서버 이용하는 모든 호스트의 성능 저하  자동 마운팅으로 기계 의존성 줄임 부팅시 vfstab의 파일시스템만 설치됨 automount map에 등록된 자동 설치 가능한 파일 시스템들은 주문형(on demand) 마운팅 접근하기만 하면 자동 설치되었다가 일정시간 (디폴트 5분) 사용되지 않으면 조용히 해제됨 Solaris의 automount autofs 설치 (/etc/rc2.d/S74autofs 스크립트) automount map은 /etc/auto_master 또는 /etc/auto_home에 automountd 디몬은 /usr/lib/autofs/automountd Unix/Linux

NFS NFS 관리 be exported(or be shared) = 파일 시스템이 원격 마운팅(remote mounting)으로 이용 가능하게 되었다는 뜻 서버 호스트 Linux 및 SunOS 등 BSD 계열: /etc/exports (예) /usr -access = natasha:rocky, root=natasha Solaris: /etc/dfs/dfstab에 share명령 삽입하고 재부팅 또는 셸 명령으로 share 실행하고 /usr/lib/nfs/nfsd와 /usr/lib/nfs/mountd 실행 (예) share -F nfs -o ro=csblade:mysung /multishare (rw가 디폴트) 클라이언트 호스트 Linux 및 SunOS 등 BSD 계열: /etc/fstab (예) boris:/export/exec/sun4 /usr nfs r0 0 0 $ mount –t nfs multi:/tmp /mnt Solaris: /etc/vfstab에 mount 정보 기록하고 재부팅 (예) multi:/usr/FTP/pub multi:/multishare /multi nfs 1 yes - 또는 셸 명령으로 mount 실행 (예) $ mount -F nfs multi:/multishare /multi dfstab 편집, share, vfstab 편집, mount, umount는 root만 diskless workstation 저렴 network traffic 증가 Unix/Linux

NFS 레드햇 기반의 리눅스 배포판을 사용하는 경우 NFS서버가 이미 설치되어 있다. # rpm -qa | grep nfs nfs-utils-lib-1.0.8-3.1 system-config-nfs-1.3.19-1 nfs-utils-1.0.8.rc2-4.FC5.2 설치되어 있지 않은 경우 http://download.fedora.redhat.com/pub/fedora/linux/core/5/i386/os/Fedora/RPMS/nfs-utils-1.0.8.rc2-4.FC5.2.i386.rpm http://download.fedora.redhat.com/pub/fedora/linux/core/5/i386/os/Fedora/RPMS/portmap-4.0-65.2.2.i386.rpm 을 다운로드하여 설치한다. # rpm –ivh nfs-utils-1.0.8.rc2-4.FC5.2.i386.rpm # rpm –ivh portmap-4.0-65.2.2.i386.rpm 부팅과 동시에 실행될 수 있도록 xinetd 환경을 설정해 준다. # ntsysv –level 345 ntpd와 portmap을 체크 후 확인을 선택한다. Unix/Linux

(참고) Linux NFS NFS 서버 쪽 /etc/exports 파일 설정 형식 : share-directory client1(options,,,) client2(options,,,) share-directory : 공유할 디렉토리명 client1 : 공유 디렉토리에 접근할수 있도록 허용된 호스트들 options : 접근 권한설정 options ro : 클라이언트는 공유 디렉토리에 대해 읽기만 가능하다. rw : 클라이언트는 공유 디렉토리에 대해 읽기/쓰기가 가능하다. no_root_squash : 클라이언트의 root는 서버의 root와 같은 권한을 갖지 않는다. no_subtree_check : 공유된 디렉토리 내에 있는 서브 디렉토리들을 공유에서 제외 시키는 경우 설정 /etc/exports 파일 설정 예 # vi /etc/exports /home/user01 *.incheon.ac.kr(ro) /export/ftp/pub 192.168.1.1/255.255.255.0(ro) / banana(rw),kiwi(rw,no_root_squash) Unix/Linux

(참고) Linux NFS 서버쪽 방화벽이 가동되고 있다면 공유가 되지 않는다. 따라서 방화벽을 꺼준다 # /sbin/service iptables stop 또는 # /etc/init.d/iptables stop 서버쪽 portmap과 nfs서비스를 가동한다. * nfs서비스는 portmap 서비스에 의존하여 가동되기 때문에 portmap 서비스를 먼저 가동해야 한다 # /sbin/service portmap start 또는 # /etc/init.d/portmap start Starting portmapper: [ OK ] # /sbin/service nfs start 또는 # /etc/init.d/nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] Unix/Linux

(참고) Linux NFS NFS 클라이언트 설정 # /etc/init.d/nfslock start or # /sbin/service nfslock start # mount –t nfs Server IP Address:Server directory pass mount directory pass mount 예 # mount -t nfs 117.16.244.53:/multishare /mnt 마운트 실행시 사용할수 있는 옵션들 -o timeo=10 : NFS 서버와 연결이 끊어진 경우 timeo에서 지정한시간(1/10초단위) 기다렸다가 경고 메시지를 발생 -o rsize=1024 wsize=1024 : 읽고/쓰기 버퍼의 크기를 설정한다 (1024KB=1M) -o soft : remote mount를 실행할 때 성공하지 못하면 timeo 까지만 retry 후 에러 메시지를 발생하고 종료 -o hard : remote mount가 성공할 때 까지 무한시 재시도한다 (디폴트값이다) -o bg : 첫번째 마운트 시도가 실패인 경우 백그라운드로 계속 마운트를 재시도한다 시스템 부팅시 자동으로 서버의 파일시스템을 마운트 하도록 설정할 경우 # vi /etc/fstab Server IP Address:Server directory pass mount directory pass nfs defaults NFS-서버:/export/myshare /mnt nfs defaults Unix/Linux

네트워크 디몬과 네트워크 서비스 daemon=demon [발음확인] : 부팅시 시작되어 단일 태스크를 영원히 수행하는 백그라운드 프로세스 (Linux) xinetd ( /sbin/xinetd ) : master daemon $ /sbin/chkconfig [ --list ] # /sbin/chkconfig --add echo (root만 수정 가능) (Unix) inetd (eye-net-dee) : master daemon [Solaris 9] /etc/inetd.conf 안의 서비스 요청 받으면 해당 daemon의 사본 실행시키고 일이 끝나면 사멸시킴 ftp `stream tcp nowait root /usr/sbin/in.ftpd in.ftpd telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd shell stream tcp nowait root /usr/sbin/in.rshd in.rshd login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind 등 [Solaris 10] smf (Service Management Facility)로 대체, inetadm 으로 서비스 관리 (root만) $ /usr/sbin/inetadm # /usr/sbin/inetadm –e talk 로 enable # /usr/sbin/inetadm –d talk 로 disable Unix/Linux

네트워크 디몬과 RPC RPC(Remote Procedure Call) 실행중인 daemon 찾기 한 호스트에서 실행 중인 프로그램에서 다른 호스트의 프로시주어를 호출 inetd에 의해 기동 부팅시 개별적으로 기동되는 RPC 디몬 nfsd : NFS daemon rstatd : NIS 서비스 및 성능 통계 위한 디몬 프로그램 번호 + 포트 번호로 식별 well-known port numbers : /etc/services portmap 디몬: /etc/rpc 읽어 프로그램 번호와 IP 포트 번호 매핑 생성 RPC 요청  portmap 디몬  포트번호 얻음 실행중인 daemon 찾기 ps -ef 해서 PID가 200보다 작은 프로세스들 Unix/Linux

네트워크 디버깅 도구 arp: IP 주소를 하드웨어 주소(이더네트 주소)로 사상하는 커널표에 접근하여 주소사상검사와 관리 /sbin/ifconfig (또는 $ ip -s link): 네트워크 인터페이스 구성 (enable/disable) $ ifconfig -a /usr/sbin/ping : 호스트가 살아 있는지 알아보기 (ICMP 프로토콜 이용 바이러스 때문 에 인천대 서비스 불가) $ ping csmail.incheon.ac.kr (117.16.244.156) 또는 mail.incheon.ac.kr (117.16.191.1) netstat: 네트워크 상태 알아보기 네트워크 연결상태 $ netstat -a 인터페이스 구성 정보 조사 $ netstat -i 경로배정표 조사 $ netstat -r 네트워크 프로토콜 운용 상의 통계 $ netstat -s arp: IP 주소를 하드웨어 주소(이더네트 주소)로 사상하는 커널표에 접근하여 주소사상검사와 관리 (Linux) $ /sbin/arp -a (Unix) $ /usr/sbin/arp -a (목록) $ arp - d hostname (su가 삭제) $ arp -s hostname (su가 등록) nslookup: 인터넷 네임 서버 DNS (domain name server) 검색 $ /usr/sbin/nslookup eecs.mit.edu $ nslookup 168.62.1.6 Unix/Linux

네트워크 디버깅 도구 (Linux) tcpdump : dump traffic on a network (root만 실행가능) # /usr/sbin/tcpdump -w cap host multi (라이브러리 libpcap 이용) # /usr/sbin/tcpdump -r cap (Unix) snoop : capture and inspect network traffic (root만 실행가능) 네트워크 상의 통신을 감시하다가 사용자가 명시한 조건에 맞는 패킷을 기록하거나 출력 $ man snoop # snoop # snoop csblade # snoop -o cap csblade (cap 파일에 저장) # snoop -i cap -p99,108 (cap 파일에서 패킷 99~108 내용을 출력) traceroute : IP 패킷이 목적지에 도착하기 위해 방문하는 게이트웨이의 순서 추적 Free s/w  ftp://ftp.ee.lbl.gov/traceroute.tar.gz download (또는 anonymous ftp) Install $ tar -xvf tracertoute.tar $ cd traceroute-1.4a12 $ ./configure $ make $ make install $ make install-man Run $ traceroute eecs.mit.edu (18.62.1.6) eecs.berkeley.edu (169.229.60.161) mail.incheon.ac.kr (117.16.191.1) traceroute to eecs.mit.edu (18.62.1.6), 30 hops max, 60 byte packets 1 211.119.245.254 (211.119.245.254) 0.256 ms 0.237 ms 0.222 ms 2 211.119.242.205 (211.119.242.205) 0.391 ms 0.264 ms 0.285 ms Unix/Linux

시스템 관리 도구 shutdown : 유연한 방법으로 시스템을 종료 (경고 메시지 출력) # shutdown now +3 minutes [ =disk replacement = ] halt : 경고 메시지 없이 즉시 종료 (shutdown 호출) # halt +3 [message] reboot : 재부팅 (shutdown 호출) # reboot (Linux) top : display Linux task $ top $ top -d 0.5 (Unix) sar (system activity reporter) : 시스템 사용 분석 $ sar -u 1 5 (CPU 사용율) $ sar -r 1 5 (메모리 사용량) df : 마운트된 파일 시스템에서 서용중이거나 사용 가능한 디스크 공간 $ df $ df /dev/sdb1 du : summarize disk usage $ du $ du -s useradd / userdel : 사용자 추가 / 삭제 $ /usr/sbin/useradd guest –d /home/guest [ –s /bin/bash ] $ /usr/sbin/userdel -r guest Unix/Linux

(실습) Unix/Linux 소켓 통신 프로그램 (실습1) 인터넷 hello 프로그램 netprog의 helloserver.c helloclient.c 소스코드 참조 실행 $ helloserver $ helloclient 서버호스트IP주소 (실습2) 인터넷 talk 프로그램 netprog의 talk_server.c talk_client.c 소스코드 참조 $ talk_server 포트번호 $ talk_client 서버호스트IP주소 포트번호 (실습3) 인터넷 chat 프로그램 하나의 프로세스가 채팅 참가 신청 처리와 클라이언트들의 통신 처리를 다 할 수 있도록 accept() 또는 read()에서 계속 기다리는 동기(synchronous, blocking) 모드 대신 select() 시스템 호출을 이용하여 소켓을 비동기(asynchronous, non-blocking) 모드로 이용 netprog의 chat_server.c chat_client.c 소스 코드 참조 $ chat_server 포트번호 $ chat_client 서버호스트IP주소 포트번호 Unix/Linux

소켓 통신 (Socket Communication) 운영체제

소켓 (참고) Unix Network Programming (UnixNetProg.ppt) 수업자료 프로세스간 상호 양방향 통신 방식 네트워크를 통한 통신 가능 소켓을 통한 프로세스 통신은 클라이언트-서버 모델(client-server model)에 기초 활용 한 기계에 존재하는 파일을 다른 기계에서 프린트 한 기계에서 다른 기계로 파일을 전송 (참고) Unix Network Programming (UnixNetProg.ppt) 수업자료 유닉스 네트워크 프로그래밍

소켓  서버가 명명된 소켓  클라이언트가 명명되지  클라이언트가 연결됨. 소켓 연결과정 서버 클라이 언트 이름 을 생성 완결된 연결  서버가 명명된 소켓 을 생성  클라이언트가 명명되지 않은 소켓을 생성하고, 연결을 요청  클라이언트가 연결됨. 서버는 원래 명명된 소켓을 유지 유닉스 네트워크 프로그래밍

유닉스 소켓 통신: helloserver.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #define PORTNUM 5059 main(int argc, char *argv[]) { int serverFd, clientFd, clilen, childpid; struct sockaddr_in cli_addr, serv_addr; // Open a TCP socket (an Internet stream socket). if((serverFd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ printf("server: can't open stream socket"); return -1; } // Bind our local address so that the client can send to us. bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(PORTNUM); if(bind(serverFd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) printf("server: can't bind local address"); printf("Server is binded\n");

유닉스 소켓 통신: helloserver.c listen(serverFd, 5); for( ; ; ){ // Wait for a connection from a client process. // This is an example of a concurrent server. clilen = sizeof(cli_addr); clientFd = accept(serverFd, (struct sockaddr *) &cli_addr, &clilen); printf("Server called\n"); if((childpid = fork()) < 0){ printf("server: fork error"); exit(0); } else if(childpid == 0){ /* child process */ /* printf("serverFd = %d, clientFd = %d\n", serverFd, clientFd); */ /* process the request */ write(clientFd,"Hello!",7); close(clientFd); /* close original socket */ return -1; close(clientFd); /* parent process */

유닉스 소켓 통신: helloclient.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #define PORTNUM 5059 main(int argc, char *argv[]) { int clientFd; char str[10]; char* hostaddress; struct sockaddr_in serv_addr; struct hostent* hostStruct; struct in_addr* hostNode; if(argv[1] == NULL){ printf("Usage: inetclient hostname(or server IP)\n"); printf(" (Ex) inetclient multi.inchon.ac.kr(or 211.119.245.149)\n"); exit(1); }

유닉스 소켓 통신: helloclient.c hostStruct = gethostbyname(argv[1]); if(hostStruct == NULL) return(0); hostNode = (struct in_addr*) hostStruct->h_addr; hostaddress = inet_ntoa(*hostNode); printf("host name is %s, host address is %s\n", argv[1], hostaddress); // Fill in the structure "serv_addr" with the address of the // server that we want to connect with. bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = hostNode->s_addr; serv_addr.sin_port = htons(PORTNUM); // Open a TCP socket (an Internet stream soskcet). if((clientFd = socket(AF_INET, SOCK_STREAM, 0)) < 0) printf("client: can't open stream socket"); // Connect to the server if(connect(clientFd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) printf("client: can't connect to server"); /* printf("clientFd = %d\n", clientFd); */ read(clientFd, str, 10); printf("%s\n", str); close(clientFd); exit(0); }