Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

NEOS FTP 개선

Presented by 백영민

for NEOS 기술팀

I. FTP protocol

I. Protocol

파일 전송을 위한 애플리케이션 프로토콜 (RFC 959)

Transport 계층 프로토콜인 TCP/IP를 사용

파일 전송에 2개의 포트를 사용

FTP Protocol?

구성

제어 명령 송수신- PI (Protocol Interpretor)

구성

데이터 송수신 - DTP (Data Transmission Process)

PICTURES

모드

Passive 모드

지정된 서버 포트에 클라이언트가 연결

모드

Active 모드

지정된 클라이언트 포트에 서버가 연결

PASSIVE

ACTIVE

II. NEOS FTP Client API

II. API

NEOS에 구현되어 있는(FtpShellCmd.c)

FTP 관련 API

ftpget

NEOS FTP Client API

ftpput

ftpls

ftpget 명령어

TgsFtpGetCmd()에서 args를 받음.

TgsFtpGetCmdThread()를 생성 및 호출.

"RETR" FTP 서버용 명령어를 입력값으로

FtpXfer() 함수를 호출

fopen과 read로 서버의 파일을 읽어와 fwrite

으로 타겟보드 파일시스템 위에 저장.

ftpput 명령어

TgsFtpPutCmd()를 호출하여 args 입력값 받음.

TgsFtpPutCmdThread() 호출 및 생성.

"STOR" FTP 서버용 명령어를 인자값으로

FtpXfer()를 호출.

fopen()과 fread()로 클라이언트의 파일을 열고

write로 서버에 전달.

ftpput 명령어

ftpls 명령어

TgsFtpLsCmd()를 호출하여 옵션 인자값을 받음.

TgsFtpLsCmdThread() 호출 및 생성.

"NLST" 서버 명령어를 인자값으로 FtpXfer()를

호출.

서버에서 보내온 데이터를 read() 후, STD_OUT

옵션으로 write().

ftpls 명령어

FtpXfer 함수

FtpXfer 함수

인자 : host IP, Port #, user ID, password, 명령어, dir path, file name, socket

동작

1. HookUp - 제어 소켓 탐색

2. Login - 서버 접속을 위함

3. TYPE command - 데이터 전송 타입 선택 (binary/ASCII)

4. Init Pass/Act Mode - 수동/능동 모드(접속방식) 선택 및 데이터 소켓 설정

5. CWD command - 작업할 서버의 디렉토리 이동

6. 명령어 command - "STOR/RETR/NLST" 명령어 전달

7. QUIT command - 접속 종료

실행 결과 화면

III. 요구사항

III. Requirment

NEOS-1054 발췌

요구사항 정리

(NEOS-1054)

추가적인 Comment

추가적인 Comment

현재 FTP Client Command 디렉토리 복사 기능은 제공하지 않습니다.

하지만 여러 파일을 쉽게 다운로드 및 업로드하기 위해서 mget/mput 명령을 지원합니다.

저희도 mget/mput 명령과 유사한 기능을 지원하는 것으로 좋겠습니다.

IV. Sprint Plan

IV. Plan

Sprint Estimate : 3w

Sprint Plan

1. 디렉토리를 get/put하는 mget/mput 설계

2. Prototype 개발 및 공유

3. 구현

4. TEST 시험코드 작성

5. 사용자 문서 작성

6. 리뷰

Learn more about creating dynamic, engaging presentations with Prezi