8. Networking
유닉스는 재미있다 . 유닉스는 사용하기는 쉽지만 배우기는 어렵다 . 유닉스의 모든 것을 배우는 것은 불가능하다 . 필요한 것과
재미있을 것 같다고 생각되는 부분에 관심을 쏟는 것이 좋다 . 유닉스는 세련되고 영리한 사람들을 위한 도구의 집합이다 .
8. Networking 3
8.2 네트워크 구축 Serial port 끼리의 연결
가장 단순한 연결
Ethernet 대표적인 LAN 구성방식 , 기계마다 주소 지정 필요 각 컴퓨터 - 고유의 주소 , 이더넷 카드 장착 동일한 단일 케이블에 연결 메시지 전송시 - 헤더에 주소 적재 collision 발생시 - random waiting 으로 처리
Bridge 적은 수의 Ethernet 네트워크 구역을 직렬로 (serial) 연결할 때 Repeater
Router Ethernet 네트워크 구역 다 수를 상호 (mutual) 연결할 때
Gateway 고용량의 Router 로서 , LAN 에서 WAN 으로의 확장 기준 라우터 기능 + 브리지 기능 + 다른 형식 또는 프로토콜로 변환 기능 , ( 예 ) AppleTalk
라우터
8. Networking 4
8.3 인터넷 (Internet)
TCP/IP TCP(Transport Control Protocl) IP(Internet Protocol) 동일한 주소지정 방식 및 전송 방식
SRI-NIC (KRNIC) SRI (Stanford Research Institute) NIC (Network Information Center) 인터넷 상의 LAN 에 호스트의 고유 주소 할당 인터넷 Backbone 에 어떻게 연결 되는지만 담당 ( 내부적인 관리는 무관 )
IP Address vs. Symbolic Address vs. Physical Hardware Address IP Address
• 8 bit 4 fields = 32 bits ( 예 ) 211.119.245.68• 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: 이더네트 주소• 6-octet 수치• 콜론으로 분리된 16 진수 ( 예 ) 20:81:0a:10:c4:93
» 처음 두 octet 은 제작사 코드
8. Networking 5
8.3 인터넷 (Internet)
Address Mapping Service /etc/hosts Symbolic Address/Host Name/IP Address 간의 변환
Routing Service /etc/defaultrouter GATE(gateway) IP 주소 정의하여 DEST(destination) 으로 갈 수 있는 정보
제공
다른 컴퓨터의 명령 수행하기 (rsh)( 예 ) rsh mysung date # mysung is a host name
( 단 , passwd 없이 호스트의 셸을 얻을 수 있어야 함 )
8. Networking 6
8.3 인터넷 (Internet)
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 화일은 표준 포트 ( 일반 사용자 용 ) 의 목록을 보여줌
8. Networking 7
8.4 사용자
users : 사용자 표시 local host 상의 사용자 표시
rusers: 사용자 표시 local network 상의 사용자 표시 ( 단 , /usr/lib/netsvc/rusers/rpc.rusersd 이 먼저 실행되어야 함 )( 형 ) rusers -al host *( 예 ) rusers –al
who : 더 많은 사용자 표시 users 와 비슷하며 추가적인 정보가 제공( 형 ) who [ whoFile ] [ am i ]
whoFile 의 사례 : /var/adm/wtmpx
( 예 ) who( 예 ) who am i( 예 ) who /var/adm/wtmpx
8. Networking 8
8.4 사용자
rwho : 더 많은 사용자 표시 (Solaris 에서 안됨 ) local network 에 대한 who 실행 ( 단 , /usr/sbin/in.rwhod 이 먼저 실행되어야 함 )
w who 와 거의 비슷하나 명시된 사용자가 실행 하고 있는 동작도 보여줌( 형 ) w userId *( 예 ) w mysung
whois : 인터넷 정보 주요 인터넷 위치에 관한 정보를 얻음( 형 ) whois [ -h hostName ] id
• hostName 은 whois 서비스를 실행하고 있는 호스트이고 id 는 찾고자 하는 인터넷 식별자임
( 예 ) whois -h whois.krnic.net 211.119.245.68 (KRNIC registry) (KRNIC: Korea Network Information Center)( 예 ) whois -h whois.arin.net seoul (North American registry)( 예 ) whois -h whois.ripe.net seoul (European registry)( 예 ) whois -h whois.aspic.net incheon (Asia-Pacific Registry)( 예 ) whois -h whois.nic.mil Smith (American Military)( 예 ) whois -h whois.nic.gov Smith (American Government) ㄴ
8. Networking 9
8.4 사용자
hostname [name-of-host] 자신의 local host 이름을 알아냄슈퍼유저는 name-of-host 매개변수를 입력하여 local host 의 이름을 바꿀 수 있음
finger 여러 출처에서 모은 사용자들에 관한 정보를 표시( 형 ) finger userId *
- /etc/passwd - $HOME/.plan - $HOME/.project
( 예 ) finger ( 예 ) finger mysung( 예 ) finger mysung@multi
8. Networking 10
8.5 사용자들과 통신
mesg 사용자들간의 통신을 가능 (y) 또는 불가능 (n) 하게 함( 예 ) # mesg y
write 한 줄 씩 통신할 때 사용( 형 ) write userId [ tty ]
다수의 터미날 사용할 때 tty 명시 처음 통신자가 자신의 위치를 알려주는 것이 예의임 (write 명령 초기화 ) 동기화용 상호 규약을 정하는 것이 편리 ( 예 : -o- over, -oo- over and out) 끝낼 때 , ^D 사용
wall local host 상의 모든 사람들에게 메시지 전송 (Broadcasting)( 형 ) wall [ fileName ]
talk 분리된 화면 인터페이스를 통해 인터넷 상 (같은 호스트 또는 원격호스트 ) 의 다른
사람과 대화 (chatting) 화면 다시 그리기 : ^L 종료 : ^C( 예 ) talk [email protected]
8. Networking 11
8.5 사용자들과 통신
mail : 전자 우편 메시지 전송( 형 ) mail -H [ -f fileName ] userID * userID 는 전자우편 전송 대상자임 userID 가 없으면 , 전자우편을 읽는 것으로 간주함 (/user/spool/mail/<user
ID>에서 ) f 옵션으로 사용자의 전자우편 보관장소를 지정할 수 있음 H 옵션으로 사용자의 전자우편 보관장소로부터 제목들을 볼 수 있음 전자우편 시작하기 화일 ($HOME/.mailrc)
• $MAILRC 에 이 화일경로가 명시됨 사용자의 요구를 맞추어 구성할 수 있음 특히 유용한 기능
• 전자우편 그룹 형성 group name userId +( 예 ) group cic kim lee park # in ".mailrc" mail cic < kongmoon 시스템 관리자가 그룹 형성
• /etc/mail/aliases 에 그룹 등록하고 newaliases
8. Networking 12
8.5 사용자들과 통신
명령 모드
• ? 도움말
• 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)
8. Networking 13
8.5 사용자들과 통신
mesgList ( 전자우편 메시지 집합 )현재 메시지
• nn 번호가 nn 인 메시지• ^ 지워지지 않은 메시지 중에서 첫 번째• $ 마지막 메시지• * 모든 메시지• nn-mm 번호가 nn 부터 mm 사이의 메시지• user 사용자 user 로부터 온 메시지
mail 보내기 ( 예 ) $ mail stu
Subject: ……… ^D
( 예 ) $ mail stu < letter mail 받기
( 예 ) $ mail( 예 ) $ mail -f mbox( 예 ) $ mail -H
8. Networking 14
8.6 분산 자료
rcp(remote 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) 명령 이용
8. Networking 15
8.6 분산 자료 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 사용중인 원격지 호스트에 디렉토리 지우기
8. Networking 16
8.7 분산 처리
rlogin 원격 unix 호스트로의 login( 형 ) rlogin -ec [ -l userId ] hostName 신뢰하는 원격 호스트가 아니면 password 검사 escape sequence (~: tilde)
• -e 옵션으로 이 문자를 바꿀 수 있음• ~. 원격 호스트로부터 연결 즉시 폐쇄 , ^D(종료 ) 와 동일• ~susp 원격 login 을 일시 중시 , fg 로 재개함• ~dsusp ~susp과 동일 . 단 , 원격 로그인 세션으로부터의 출력을 지역 터미널로
에코함
rsh 원격 unix 호스트 상에서의 shell 실행 ( 단 하나의 명령 실행 시 유용 )( 예 ) rsh [ -l userId ] hostName [ command ] 중지 (^D)( 예 ) rsh mysung hostname (mysung 호스트에서 hostname 실행 )
8. Networking 17
8.7 분산 처리 telnet
telnet 서버를 보유하고 있는 모든 원격 호스트 로의 접근 및 명령어 수행 지원( 형 ) telnet [ host [ port ] ]
• escape 명령 (^]) : 명령 모드로 들어감• 명령 모드
- close 연결 폐쇄- open host [port] 호스트 연결- quit telnet 을 중단- z telnet 을 일시 중단- ? telnet 의 명령어 요약 출력
• 종료 : ^] quit (Ctrl-] 후 quit)( 예 ) telnet multi.incheon.ac.kr 7
# 보통 7번 포트는 ping-port 임 ( 자신의 터미날로 echo)
( 예 ) telnet multi.incheon.ac.kr 13 # 보통 13 번 포트는 현재 시간을 보여주고
종료함( 예 ) telnet 211.119.245.149
8. Networking 18
8.8 네트워크 서비스 USENET
uucp 유틸리티로 구현된 주제별 전자게시판 이용 : tin, rn, xrn, xvnews, nn, pine 등 multi.inchon.ac.kr (211.119.245.149) 에서 tin 이용 가능
Sun Microsystems 에서 유닉스 네트워크를 위해 개발한 Network File System (BSD 계열 )
유용한 기능들 단일 네트워크 화일 계층 구조로의 마운팅 기능 제공
• 여러 개의 지역 화일 시스템을
RPC (Remote Procedure Call) • 다른 기계로의 분산 처리 의뢰
XDR (External Data Representation) • 호스트 중심의 데이터 표현 방식 지원
YP (Yellow Page) NIS, NIS+ (Solaris)• password 와 그룹 정보를 다루기 위한 Network Database Management system 으로 local server
들 사이에 분산 저장
8.9 네트워크 파일 시스템 : NFS
8. Networking 19
보충 NFS(Network File System)
계정이 없는 다른 호스트의 디스크에 있는 파일 접근서버 호스트에서 클라이언트 호스트로 파일 시스템 설치
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
8. Networking 20
보충 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=multi:unix2:mysung /usr/FTP/pub (rw 가 디폴트 )
클라이언트 호스트• Linux 및 SunOS 등 BSD 계열 : /etc/fstab
( 예 ) boris:/export/exec/sun4 /usr nfs r0 0 0• Solaris: /etc/vfstab 에 mount 정보 기록하고 재부팅
( 예 ) multi:/usr/FTP/pub multi:/usr/FTP/pub /mnt nfs 1 yes - 또는 셸 명령으로 mount 실행 ( 예 ) % mount -F nfs multi:/usr/FTP/pub /mnt
dfstab 편집 , share, vfstab 편집 , mount, umount 는 root 만diskless workstation
• 저렴• network traffic 증가
8. Networking 21
보충 네트워크 디몬 (Daemons)
daemon: 부팅시 시작되어 단일 태스크를 영원히 수행하는 백그라운드 프로세스inetd(eye-net-dee) : master daemon
/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 등
chkconfig --listRPC(Remote Procedure Call)
• 한 호스트에서 실행 중인 프로그램에서 다른 호스트의 프로시주어를 호출• inetd 에 의해 기동• 부팅시 개별적으로 기동되는 RPC 디몬
» nfsd : NFS daemon» rstatd : NIS 서비스 및 성능 통계 위한 디몬
• 프로그램 번호 + 포트 번호로 식별• well-known port numbers : /etc/services• portmap 디몬 : /etc/rpc 읽어 프로그램 번호와 IP 포트 번호 매핑 생성• RPC 요청 -> portmap 디몬 -> 포트번호 얻음
실행중인 daemon 찾기• ps -ef 해서 PID 가 200 보다 작은 프로세스들
8. Networking 22
보충 네트워크 디버깅 도구
ping: 호스트가 살아 있는지 알아보기$ ping mail.incheon.ac.kr
netstat: 네트워크 상태 알아보기• 네트워크 연결상태 : $ netstat -a• 인터페이스 구성 정보 조사 : $ netstat -i• 경로배정표 조사 : $ netstat -r• 네트워크 프로토콜 운용 상의 통계 : $ netstat -s
traceroute: IP 패킷이 목적지에 도착하기 위해 방문하는 게이트웨이의 순서 추적• free s/w -> 210.126.35.10 download • install: tar -xvf tracert.tar$ traceroute eecs.mit.edutraceroute to eecs.mit.edu(18.62.1.6), 40 bytes packets1 engr-gw-cr.cs.colorado.edu 3ms 2ms 2ms
snoop: 통신량 감시기 , 패킷 감시자 (root 만 실행 가능 ), 네트워크 상의 통신을 감시하다가 사용자가 명시한 조건에 맞는 패킷을 기록하거나 출력$ man snoop$ snoop $ snoop csblade $ snoop -o cap csblade (cap 파일에 저장 )$ snoop -i cap -p99,108 (cap 파일에서 패킷 99~108 내용을 출력 )
8. Networking 23
보충 네트워크 디버깅 도구 … 계속
arp: IP 주소를 하드웨어 주소 ( 이더네트 주소 ) 로 사상하는 커널표에 접근하여 주소사상검사와 관리$ arp -a ( 목록 )$ arp -d hostname (su 가 삭제 )$ arp -s hostname (su 가 등록 )
nslookup: name server 검색$ nslookup cs.mit.edu$ nslookup18.62.1.6
sar(system activity reporter): 시스템 사용 분석$ sar -u 5 5 (CPU 사용율 )$ sar -r 5 ( 메모리 사용량 )
8. Networking 24
보충
Berkeley 네트워킹 관리/etc/hosts : 네트워크 상의 각 이더네트 인터페이스의 IP 주소와 호스트 명/etc/ethers( 일부 시스템에서만 사용 ) : 네트워크 상의 각 이더네트 인터페이스의 이더네트 주소와 호스트명 : rarp 가 참조
• rarp(reverse arp): Solaris 의 해당 명령 Bonus! (BOOTP?) arp (address resolution protocol)
• ‘ 누가 210.126.35.99 의 h/w 주소 아니 ?’ 방송 -> 해당 컴퓨터가 ‘저예요’ 대답
• /usr/sbin/arp -a (캐시 내용 출력 )신뢰하는 호스트 개념
• rlogin, rcp, rsh • 시스템 : su 가 /etc/hosts.equiv 에 리스트 기록 (‘remote- 호스트’ 형식 )• 사용자 : $HOME/.rhosts 에 신뢰하는 호스트 또는 호스트 - 사용자 쌍