7-2. 응용계층 : HTTP, FTP, SMTP, DNS
HTTP
- 메시지 형식
Client -- http요청메시지 --> Server
Client <-- http 응답메시지 -- Server
(a) 요청 메시지
- 요청 라인
- 예) get, headm post
- 요청 헤더
- 클라이언트와 서버 사이의 부수적인 정보 전달 목적
- 헤더 값 여러 개일 경우 콤마로 구분
- <요청 헤더 이름>:<헤더 값> ex) Accept:image/gif, image/jpeg, */*
- 바디필드
- get 메소드에서는 사용x, post메소드에서만 사용
(b) 응답 메시지
- 상태라인
- <HTTP 버전><상태 코드><상태 설명>
- 응답헤더
- <요청 헤더 이름>:<헤더 값>
- 바디필드
- 클라이언트에서 요청한 데이터를 포함
예제)
1) HTTP는 stateless protocol인데, stateless protocol의 의미는?
답) http를 통해서 웹서비스가 이루어질때 서버는 클라이언트에 어떠한 정보도 저장하지 않는다는 의미
그렇기 때문에 클라이언트가 서버에게 방문 기록을 알고자할 때도 클라이언트에게 정보를 줄 수 없음
2) HTTP가 stateless이면, 온라인 쇼핑회사는 사용자의 로그인 또는 쇼핑정보를 어떻게 아는가?
답) 웹의 cookie서비스를 통하여 사용자의 로그인또는 쇼핑정보를 알 수 있음
cookie는 서버가 클라이언트에게 보낸 정보를 클라이언트가 자신의 로컬정보에 저장해놓은 것
3) 웹서비스의 성능을 개선하기 위해 HTTP 또는 웹 캐싱(Caching)을 이용할 수 있는데 웹 캐싱을 설명하시오
답) 클라이언트는 원격의 서버에게 HTTP요청을 보내고 서버는 HTTP응답을 보내며 화면에 웹페이지를 띄울수 있게 되는데 이 과정에서 클라이언트와 서버가 멀리 떨어져 있으면 응답시간이 오래걸릴 수 있음.
이때 응답시간을 절감하기 위해 클라이언트와 가까운 호스트에 방문기록(웹 캐시)을 저장해두는 것이 웹 캐싱.
웹 캐싱을 통해 다음에 동일한 경로를 방문할 때 웹 캐시가 저장된 호스트에서 응답을 주고받아 응답시간이 절감
FTP(File Transfer Protocol)
- 두 호스트 사이에 파일전송 할 경우 사용
- 두 개의 분리된 채널 사용 : 두 개의 TCP연결을 사용한다는 점이 다른 프로토콜과의 차이점
1) 제어채널 : FTP명령과 같은 제어정보 주고받기 위해 사용
2) 데이터 채널 : 실질적인 파일 데이터 전송위해 사용
- Active Mode
- 서버가 데이터 채널 연결을 시도하는것
- 클라이언트 호스트의 방화벽 또는 기타 원은으로 막혀있는경우 오류 발생 -> 패시브모드 등장
- Passive Mode
- 클라이언트쪽에서 데이터 채널 연결을 시도하는 것
- 포트 막히는 경우 해결 가능
- FTP 서버 포트 21은 고정, 나머지 포트는 임의로 설정
- FTP 명령과 응답
*2^16개의 포트
0~1023 : reserve
1023~65535 : 사용 가능
- FTP 명령
- FTP클라이언트에서 FTP 서버로 보내는 명령
- 보통 GUI 환경 지원하여 명령 모르더라도 쉽게 사용 가능
- RETR : 원격지 파일 가져오기
- STOR : 원격지에 파일 저장
- FTP 응답
- FTP서버에서 FTP 클라이언트로 보내는 상태 코드
- 처리한 결과를 받아 회신해주기 위해 전송
- 200 : 정상 처리됨
- 사용자 명령
- FTP명령과는 다른 개념
- 보통 윈도우에선 GUI 환경 제공, 유닉스 환경에선 텍스트 기반의 사용자 명령 이용
- GET : 원격 시스템에서 파일 수신 -> 실제 FTP서버로 전송되는 명령 : RETR
- MGET : 원격시스템에서 여러 파일 수신
- PUT : 원격시스템으로 파일 송신 -> 실제 FTP서버로 전송되는 명령 : STOR
- Anonymous FTP
- 공개 자료를 서비스하는 FTP서버
- 익명 FTP서버로 접근하여 FTP를 사용할 경우 anonymous사용하여 공개자료 수신
- FTP서버에 저장된 공개자료의 목록 전체가 저장된 파일
퀴즈)
1. FTP는 Client - server 구조로 만들어졌다.
2. FTP는 하나의 파일을 전송하기 위해 2개의 TCP연결을 이용하여 전송한다.
제어Control/데이터Data
3. 동일한 세션에서 서버 A에서 클라이언트B로 5개의 파일을 전송한다고 했을 때 A와 B사이의 TCP연결의 수는 6이다.
Control 1 , data 5
4. FTP에 관한 설명 중 잘못된 것은?
a) FTP는 File Transfer Protocol
b) FTP는 두 개의 병렬 TCP연결을 사용
c) FTP는 제어정보를 in-band형태로 전송 -> out-of-band형태로 전송한다.
d) FTP는 하나의 데이터 연결 상에 하나의 파일만 보낸다.
SMTP(Simple Mail Transfer Protocol)
- 컴퓨터 사용자 간 메일 서비스를 온라인으로 사용하는 서비스
- TCP/IP가 전자메일 주고받기위해 사용
- 하위계층으로 TCP사용
- 두 개의 SMTP프로세스 들 간에 발생하는 데이터 교환만을 다룸
- 전자메일의 세가지 구성요소
- UA(User Agent)
- 사용자는 UA로 전자메일 작성
- Unix에선 mailx,elmd, 윈도우에선 마이크로소프트 아웃룩
- MTA(Message Transfer Agent) 또는 메일 서버
- 메일의 교환은 MTA가 수행
- Unix환경에서 가장 많이 쓰이는 MTA는 Sendmail
- SMTP
- 두 MTA간에 전자메일을 전송하는 과정에서의 프로토콜 규약
- 메일의 구성 : 메시지 헤더 + 메시지 내용 (공백 한 줄로 구분)
- SMTP 동작절차
1) SMTP클라이언트와 서버간의 TCP연결 설정 : 서버 준비 220 -> OK상태 250
2) 설정된 연결을 통한 메일 전송 : 송신자 메일주소 MAIL -> 서버 정상상태 250 -> 데이터 전송 -> 클라이언트가 전송 끝을 알리기 위해 점(.)보냄
3) 연결 해제 : QUIT
- SMTP 명령
- SMTP클라이언트에서 SMTP 서버로 보내는 명령
- HELLO : 송신측 호스트명 전송
- MAIL FROM : 송신측 메일주소
- RCPT TO : 수신측 메일주소
- SMTP 응답
- SMTP서버에서 SMTP 클라이언트로 보내는 상태 코드
퀴즈)
1. SMTP는 이메일을 전송하기 위해 TCP 트랜스포트 게층 프로토콜을 사용한다.
2. SMTP는 25번 TCP포트를 사용한다.
* 22-SSH
* 23-Telnet
* 21-FTP제어용
3. 다음 프로토콜 중에서 어느 것이 메일을 받기 위해 사용되는가? (Email Access Protocol)
a) SMTP -> 보낼 때 사용 b) Post Office Protocol (POP) -> pop3사용
c) Internet Message Protocol (IMAP)
d) FTP
4. SMTP는 message transport을 정의한다.
5. 이메일 송신자와 수신자가 다른 시스템에 있을 때 다음 중 맞는 것은?
a) 1MTA (Message Transfer Agent)
b) 2UA (User Agent : 메일 작성)
c) 2UA와 1MTA
d) 2UA와 2MTA
-> 수신측, 송신측 모두 ua와 mta있어야 함
6. UA에서 지원하지 않는 것은?
a) 이메일 작성
b) 이메일 읽기
c) 이메일 회신
d) 이메일 라우팅
DNS (Domain Name System)
- 도메인 네임 : IP주소는 사람이 기억하기 어려워 기억하기 쉽게 바꾼 이름
- DNS : 도메인 네임을 IP주소 혹은 그 반대로 바꿔주는 시스템
- 도메인 네임 구조 : <호스트 이름><소속 단체(3단계)><단체 성격(2단계)><소속 국가(최상위)>
- DNS 세가지 구성요소
- 도메인 네임 스페이스 (Domain Name Space)
- DNS는 전 세계적으로 저장, 관리되어 있는 거대한 분산 시스템
- DNS 서버
- DNS는 도메인 네임 스페이스의 계층적 구조에 대한 정보 필요
- 이러한 정보를 가지고 있는 서버 = DNS서버
- 로컬 DNS 서버
- 웹브라우저와 같은 사용자 프로그램으로부터 요청을 받아 DNS서버로 전달
- DNS 서버로부터 정보(도메인 이름과 IP주소)를 받아 다시 사용자 프로그램에게 제공하는 기능 수행
퀴즈)
1. DNS는 분산 데이터베이스 시스템 형태로 유지/관리 된다.
2. 임의의 DNS는 다른 도메인에 대한 요청을 DNS server로의 요청을 통해 처리한다.
* DNS는 분산데이터 베이스 시스템으로 계층적으로 구성되어 있어 임의의 DNS가 도메인에 대한 서비스 요청을 할 수 없을 경우 다른 DNS server로의 요청을 통해 처리해야한다.
3. DNS는 UDP 트랜스포트 계층 프로토콜을 사용하고 포트번호는 53이다.
* DNSSEC 보안기능이 포함되어 있으면 TCP사용
4. DNS에서 DNS캐싱을 사용하여 성능을 개선하는데 DNS캐싱이란 무엇인가?
도메인네임에 대한 IP주소를 일정시간 동안 캐싱(본인 컴퓨터에 저장)해두어
동일한 요청이 오면 캐시되어 있던 정보를 되돌려줌으로써 성능 개선
* 2번~7번까지의 과정 거치지 않고도 전송 가능