21
Chapter 6 Network Protocol 소소 소소소소소

Chapter 6 Network Protocol

  • Upload
    cherie

  • View
    273

  • Download
    9

Embed Size (px)

DESCRIPTION

Chapter 6 Network Protocol. 소켓 프로그래밍. Network Protocol. Hypertext Transfer Protocol (HTTP) Simple Mail Transfer Protocol (SMTP) Post Office Protocol Version 3 (POP3) File Transfer Protocol (FTP). Hypertext Transfer Protocol. Hypertext Transfer Protocol (RFC 2616) HTML 문서를 전송하기 위해 이용 - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 6 Network Protocol

Chapter 6Network Protocol

소켓 프로그래밍

Page 2: Chapter 6 Network Protocol

Hypertext Transfer Protocol (HTTP) Simple Mail Transfer Protocol (SMTP) Post Office Protocol Version 3 (POP3) File Transfer Protocol (FTP)

Network Protocol

Page 3: Chapter 6 Network Protocol

Hypertext Transfer Protocol (RFC 2616) HTML 문서를 전송하기 위해 이용 TCP 를 전송 프로토콜로 이용 요청 - 응답 메시지 교환 방식

◦ 클라이언트가 요청을 보낸 후 서버에 의해 순서대로 처리되고 응답이 올 때까지 대기해야 함 일반적인 HTTP 메시지 포맷 (based on RFC 822) :

Hypertext Transfer Protocol

Start Line

Message Header

Blank Line

Message Body

Page 4: Chapter 6 Network Protocol

HTTP 요청 메시지 포맷Hypertext Transfer Protocol

Method

General Header

Blank Line

Message Body

Request URI HTTP Version CRLF

Request Header

Entity Header

Start Line(request

line)

헤더

공백 (CRLF)

Page 5: Chapter 6 Network Protocol

HTTP 요청 메시지◦ Start Line (request line)

8 개의 메서드 ( 대소문자 구별 ) - OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

Request URI - 요청할 리소스 HTTP 버전

◦ 한 줄의 끝을 나타내는 문자 - Carriage Return (CR), Line Feed (LF)◦ Header ( 헤더 )◦ Blank line ( 공백 ) - CRLF 로만 구성◦ HTTP 요청 메시지의 예GET /rfc.html HTTP/1.1<CR><LF>Host: www.ietf.org<CR><LF><CR><LF>

HTTP 버전 1.1 에서는 Host 헤더가 필수

Hypertext Transfer Protocol

Page 6: Chapter 6 Network Protocol

HTTP 응답 메시지 포맷Hypertext Transfer Protocol

Status Code

General Header

Blank Line

Message Body

ReasonHTTP Version CRLF

Request Header

Entity Header

헤더

공백 (CRLF)

Start Line(status line)

HTML Content

Page 7: Chapter 6 Network Protocol

HTTP 응답 메시지◦ Start Line (status line)

HTTP 버전 Status Code ( 상태코드 )

첫 번째 숫자에 기초하여 5 개의 클래스로 분류 1## - Informational 2## - Success 3## - Redirection 4## - Client Error 5## - Server Error

Reason Phrase ( 설명 구 )◦ 가장 흔히 볼 수 있는 상태코드 – 404 Not Found◦ HTML 문서 - 응답 메시지의 끝 부분 (blank line 뒤 ) 에 위치

예제 프로그램 : HTTPClient.cs

Hypertext Transfer Protocol

Page 8: Chapter 6 Network Protocol

Simple Mail Transfer Protocol (RFC 5321) 메일을 보낼 때 사용되는 프로토콜 TCP 를 전송 프로토콜로 이용 RFC 5321 – SMTP 명령 , 응답 메시지에 대한 설명 각 명령은 CRLF 로 끝남 RFC 5322 – 이메일의 Date, Time 필드에 대한 정의 Example

Fri, 25 Dec 2009 13:15:33 +0900

Simple Mail Transfer Protocol

Page 9: Chapter 6 Network Protocol

SMTP 명령Simple Mail Transfer Protocol

Command DescriptionHELO <SP> Domain 도메인 이름을 사용하여 서버로 클라이언트 식별EHLO <SP> Domain 서버로 클라이언트 식별 (multi-line reply)MAIL FROM: <Email> 송신자의 email 식별RCPT TO: <Email> 수신자의 email 식별DATA Email body, 메시지 내용 전송을 초기화RSET 메시지 트랜잭션을 무효화하고 버퍼 재설정VRFY <SP> Username Email 사용자명을 확인EXPN <SP> Listname Mailing 리스트 확장HELP Command SMTP 명령에 대한 도움말NOOP OK 응답 외에는 아무것도 수행하지 않음QUIT 메시지 종료

Page 10: Chapter 6 Network Protocol

SMTP 응답◦ Single line - 코드 다음에 메시지가 옴◦ Multi-line

Non-final line 코드 다음에 마이너스 (-) 기호가 온 후에 메시지가 옴

Final line Single line 과 동일한 방식으로 코드 다음에 메시지가 옴

Simple Mail Transfer Protocol

Page 11: Chapter 6 Network Protocol

SMTP 응답코드◦ 3 digits◦ 첫 번째 숫자 – 응답 상태를 나타냄

2## - Positive Completion reply 3## - Positive Intermediate reply 4## - Transient Negative Completion reply 5## - Permanent Negative Completion reply

◦ 두 번째 숫자 – 응답 코드의 범주 #0# - Syntax #1# - Information #2# - Connection #5# - Mail system

Simple Mail Transfer Protocol

Page 12: Chapter 6 Network Protocol

Sample SMTP TransactionS: 220 example.com ESMTPC: EHLO example.orgS: 250-Hello [208.77.188.166]S: 250-8BITMIMES: 250-SIZES: 250 HELPC: MAIL FROM:<[email protected]>S: 250 OKC: RCPT TO:<[email protected]>S: 250 OKC: DATAS: 354 Enter mail. End mail with <CRLF>.<CRLF>C: whatever content that should goes hereC: .S: 250 OKC: QUITS: 221 Bye

예제 프로그램 : SMTPClient.cs

Simple Mail Transfer Protocol

Page 13: Chapter 6 Network Protocol

Post Office Protocol Version 3 (RFC 1939) 메일을 가져올 때 사용되는 프로토콜 TCP 를 전송 프로토콜로 이용 각 POP3 명령은 CRLF 로 끝남 명령은 대소문자에 관계없이 사용가능 명령어가 인수를 포함하는 경우 명령어와 인수를 공백으로 구분 각 인수는 40 문자를 넘을 수 없음

Post Office Protocol Version 3

Page 14: Chapter 6 Network Protocol

POP3 명령Post Office Protocol Version 3

Command Return Description

QUIT 접속 종료STAT <count> <size> 전체 메시지 수와 크기를 출력LIST <message #> <msg #> <size> 특정 메시지의 크기를 출력RETR <message #> Message content 메일을 가져옴DELE <message #> 메일 삭제NOOP 아무것도 하지 않음RSET 삭제 마크 리셋TOP <msg #> <line> Message content 특정 메시지를 헤더를 제외한 line 수 만큼 출력UIDL <message #> <message #> <id> 특정 메시지의 ID 를 보여줌USER <name> 메일박스 사용자명PASS <password> 메일박스 암호APOP <name> <md5> MD5 로 암호화된 로그인

Page 15: Chapter 6 Network Protocol

POP3 응답◦ 서버에서 반환되는 두 가지 응답상태 , 대문자

+OK : 긍정적인 상태 -ERR : 부정적인 상태

◦ STAT 명령을 사용할 경우 status 뒤에 추가 메시지가 올 수 있음◦ 각 응답 메시지는 CRLF 로 끝남◦ 응답 메시지의 최대크기는 512 문자◦ Multiline 메시지를 반환할 경우에는 <CRLF>.<CRLF> 로 끝남

예제 프로그램 : POP3Client.cs

Post Office Protocol Version 3

Page 16: Chapter 6 Network Protocol

File Transfer Protocol (RFC 959) 파일 업로드와 다운로드를 위해 사용됨 TCP 를 전송 프로토콜로 이용 서버에 대해 두 개의 분리된 연결을 요구

◦ Out-of-band control 제어 연결 데이터 연결 제어와 데이터 전송이 같은 연결을 공유하지 않음

제어 연결을 통해 서버로 접속

File Transfer Protocol

Page 17: Chapter 6 Network Protocol

FTP 명령◦ 일반적인 콘솔 / 명령 프롬프트 상의 FTP 클라이언트에서 찾아볼 수 있는 FTP

명령과는 차이가 있음◦ 어떠한 명령은 데이터 연결을 요구

데이터 연결이 필요할 때에는 데이터 연결을 설정 수행이 완료될 때 데이터 연결을 종료

◦ 데이터 연결은 특정 포트번호를 통해 설정될 수 있거나 , 또는 서버에 의해 선택된 포트번호를 통해서도 데이터 연결이 설정될 수 있음 (Passive mode) 포트번호는 콤마 (,) 로 분리된 6 개의 10 진수 a1,a2,a3,a4,p1,p2 를 인수로 가지는

PORT 명령에 의해 계산될 수 있음 앞에 오는 4 개의 십진수는 IPv4 주소를 의미 마지막 2 개의 십진수가 포트번호를 의미 Port number = p1 × 256 + p2

File Transfer Protocol

Page 18: Chapter 6 Network Protocol

FTP 명령File Transfer Protocol

Command Description

ABOR 파일 전송을 중단ACCT info 사용자 계정정보를 서버에 보냄ALLO size 파일 저장공간 할당APPE filename 파일 끝에 추가CDUP 상위 디렉터리로 이동CWD pathname 특정 디렉터리로 이동DELE filename 파일 삭제HELP [command] 도움말LIST [filename] 파일이나 디렉터리 목록 확인MKD pathname 디렉터리 생성MODE S/B/C 전송 모드 변경

Page 19: Chapter 6 Network Protocol

FTP 명령File Transfer Protocol

Command Description

NLST [pathname] 디렉터리 내의 파일목록 확인NOOP 아무것도 하지 않음PASS password 비밀번호 입력PASV 수동으로 포트번호를 얻음PORT a1, a2, a3, a4, p1, p2 특정 주소와 포트번호로 데이터 포트를 열기 위해 사용PWD 현재 디렉터리 확인QUIT 로그아웃REIN 접속을 다시 초기화REST position 특정 위치로부터 파일 이어받기RETR filename 서버로부터 파일 수신RMD pathname 디렉터리 제거

Page 20: Chapter 6 Network Protocol

FTP 명령File Transfer Protocol

Command Description

RNFR filename 파일 이름을 변경할 때 사용되며 , RNTO 와 함께 사용RNTO filename 파일 이름을 변경할 때 사용되며 , RNFR 과 함께 사용SITE command 특정 사이트에서 지원되는 명령 실행SMNT pathname 다른 파일시스템 데이터 구조를 마운트할 때 사용STAT [pathname] 현재 상태 확인STOR filename 서버로 파일 송신STOU 파일을 보낼 때 서버에서 유일한 파일이름을 생성하도록 함STRU F/R/P 파일 구조 변경SYST 현재 접속된 시스템 타입 (OS) 확인TYPE A/E/I/L 데이터 타입을 변경 (ASCII, EBCDIC, BINARY 등 )USER name 로그인 사용자명

Page 21: Chapter 6 Network Protocol

FTP 응답◦ SMTP 응답 포맷과 유사함◦ 응답 코드 - 3 digits

첫 번째 숫자 – 응답 상태 1## - Positive Preliminary reply 2## - Positive Completion reply 3## - Positive Intermediate reply 4## - Transient Negative Completion reply 5## - Permanent Negative Completion reply

두 번째 숫자 – 범주 #0# - Syntax #1# - Information #2z - Connections #3# - Authentication and accounting #5# - File system

예제 프로그램 : FTPClient.cs

File Transfer Protocol