Getting_Start

Download Report

Transcript Getting_Start

Getting Started
2007. 3. 9 (금)
김희준
[email protected]
실습준비
 실습 서버
▲ amg.hufs.ac.kr
 OS : Red hat Linux 9
 Intel x86
▲ 220.67.124.140
 OS : Red hat Linux 9
 Intel x86
▲ 220.67.124.129
 OS : Solaris 5.8
 SPARC
▲ 세 개의 계정 배정
실습 시 주의사항 (1/3)
 실습용 서버주소 : amg.hufs.ac.kr
[Allocation of port numbers]
 자신에게 정해진 port만 사용
▲ port number : ‘5xxxx’ 부터 +10까지
학번 뒤에 4자리
ex) 학번이 200430128 일때  50128~50138까지
Command Line Tool
 SSH secure shell
▲ 네트워크의 다른 컴퓨터에 로그인 할 수 있으며 원격 시스템에서 명령을
실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 프로그램
 ftp://ftp.kreonet.re.kr/pub/security/ssh/
 SSHSecureShellClient-3.2.9.exe 파일 다운 받아 설치
▲ 기능
 원격 호스트에 로그인 하거나 호스트끼리 데이터를 복사하기 위해 사용
 강력한 인증방법과 안전하지 못한 네트워크에서 안전하게 통신을 할 수
있는 기능을 제공
 SSH는 두 호스트간의 통신 암호화와 사용자 인증을 위하여 공개 열쇠 암
호 기법을 사용
 세션 하이젝킹(Session Hijacking)과 DNS 스푸핑을 방지
SSH secure shell
 Main Window
▲
▲
▲
▲
Green : Will connect Remote Host
Violet : Register Remote Host
Red : New Terminal
Blue : New File Transfer
SSH secure shell
 Connecting host
▲ Click
InputConnect
Result
Parameters
or Quick Connect
 Host IP or Domain Name
 ID, Password
 Port
SSH secure shell
 File Transfer
UNP Library (1/2)
 Wrapper function - W. Richard Stevens
 Solaris, Linux, FreeBSD 등에 설치 가능
 Libunp.a, libfree.a, libroute.a, libxti.a로 구성
※ XTI [ X/Open Transport Interface ]
OSI 기본 참조 모델의 제4계층(transport layer)에서의 응용 프로그램 인
터페이스(API)에 대한 X/Open의 규정. 이 API를 사용하면 제3계층 이하
의 어떤 망 방식을 사용하든 관계없이 망 응용 프로그램을 작성할 수 있
다.
UNP library (2/2)
 UNP library의 directory 구조
unpv13e
각 chapter의 source code (ex> intro, select…)
lib
libfree
config*.*
libunp.a
▲ config*.* : library 설치관련 파일
ex> config.h, config.h.in, config.log, config.status, configure.in 등
▲ libunp.a : UNP library archive 파일
▲ lib, libfree : library에서 추가한 함수들의 object 파일
UNP library - install
 http://www.unpbook.com/unpv13e.tar.gz
 SSH Secure Shell 을 이용하여 file upload
 압축해제
gunzip unpv13e.tar.gz
tar xvf unpv13e.tar
tar xvfz unpv13e.tar.gz
 설치방법
cd unpv13e # into the basic directory that all programs need
./configure # try to figure out all implementation differences
cd lib
make
# build the basic library that all programs need
# use "gmake" everywhere on BSD/OS systems
cd ../libfree # continue building the basic library
make
cd ../intro # build and test a basic client program
make daytimetcpcli
./daytimetcpcli 127.0.0.1
Source Editing Tool
 Source Insight
▲ 객체지향의 프로그램 편집기
▲ 코드 브라우저로 C/C++, C# 및 Java program의 분석기를 내장
▲ 소스 코드를 분석하여 작업 중에 동적으로 기호정보에 관한 자체 데이터
베이스를 유지
 자동적으로 유용한 문맥(contextual) 정보를 제공
▲ 소스코드 및 소스정보를 빨리 찾아주는 기능
▲ 소스편집도중 소스코드와 소스정보를 빠르게 찾아 바로 유용한 정보 및
분석을 제공
Source Insight (Main Window)
Source Insight 사용 (1/4)
 Project 를 생성
Source Insight 사용 (2/4)
 환경설정 및 Source가 위치할 디렉토리 선택
Source Insight 사용 (3/4)
 참고 및 소스확인이 필요한 파일들 프로젝트에 첨부
Source Insight 사용 (4/4)
 소스 에디팅
원격 디렉토리 관리
 네트워크 드라이브 연결
▲ 한번 등록으로 계속 사용
▲ 사용방법
 탐색기의 도구창의 네트워크 드라이브 기능
 직접 접속 연결
▲ 사용시 직접 ip address 입력을 통한 연결
▲ 컴퓨터 전원 오프시나 창을 닫은 후에는 다시 연결 필요
▲ 사용방법
 시작의 실행 창 클릭
 Ip address 입력
Netstat
 활성화된 연결에 대한 여러 네트워크 관련 데이터 구조의 내용을 표
시
▲ 열려있는 포트번호 같은 네트워크 상태를 확인하기 위해 사용
 Command option
Option
Discription
-a
현재 다른 호스트와 연결(Established)되어 있거나, 대기(Listening)중인 모든
포트번호 확인
-r
라우팅 테이블 확인 및 Connection 되어 있는 포트번호 확인
-n
현재 다른 호스트와 연결(Established)되어 있는 포트번호 확인(IP 주소로 화면
출력)
-i
네트워크 의 패킷 전송 상태를 검사
-c
Netstat의 결과를 연속적으로 출력
-l
현재 listen되고 있는 소켓 정보 출력
-p
실행되고 있는 각 프로그램과 PID 정보 출력
Netstat (실행 화면)
Linux Command
 디렉토리 생성
▲ # mkdir directory_name
 Compile Example
▲ Makefile 사용
▲ Simple Makefile Example
Linux Command
 ltrace
▲ Library call tracer
▲ 프로세스가 호출하는 공유 library 함수를 출력
▲ 사용방법
 # ltrace 실행파일명
 실행되는 프로그램에서 호출하는 공유 library 함수를 출력
 # ltrace –f 실행파일명
 Fork된 자식 프로세스가 요청하는 공유 library 함수까지 출력
 # ltrace –p [PID]
 현재 실행되고 있는 프로세스의 함수요청을 출력
 # ltrace –S 실행파일명
 시스템콜과 함수 호출 모두 출력
Program Compile & Run test - Echo client (1/2)
 주어진 source를 참고하여 Source insight로 echo client를 작성
int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr;
/* Echo client의 argument 확인하는 부분 추가
- argv[1] : server의 IP address
- argv[2] : server의 port number (default:7) */
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(7);
inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
/* 사용자의 입력을 받아 echo서버로 전송하고 서버로부터의
데이터를 화면에 출력(교재 p.88 참고) */
exit(0);
}
Program Compile & Run test - Echo client (1/2)
▲ 요구사항
 UNP library를 사용하지 말것
 소스 디렉토리는 따로 생성 ( unp 폴더 밑에 생성금지 )
 실행 옵션
 echo_client [Server IP address] [port_number]
 argument를 주지 않았을 경우 사용방법 출력
ex) usage :
echo_client [server IP address] [port_num]
 ‘port_number’ argument를 주지 않았을 경우 기본값(50007)으로 처리
 각 API의 에러처리
 완성된 echo client를 220.67.124.140에서 실행하여
amg.hufs.ac.kr(220.67.124.142)과 테스트
▲ 참고자료
 David A. Curry, UNIX System Programming for SVR4, O’Reilly
 프로그램 Run 이전과 이후의 네트워크 상태 변화 체크
▲ Netstat를 이용하여 확인
▲ ltrace를 사용하여 주어진 프로그램의 상태 체크 ( for debugging )