파일 전송 프로토콜 (FTP)
FTP는 File Transfer Protocol의 약자로, 네트워크를 통한 클라이언트와 서버 간 파일 전송을 위해 설계된 프로토콜이다. FTP의 가장 큰 특징은 데이터 전송을 관리하기 위해 control channel과 data channel의 두 가지 채널을 사용한다는 것이다.
Control Channel
Control channel은 클라이언트와 서버 간의 지속적인 연결을 유지하는 데 사용된다. 해당 채널을 통해 모든 FTP 명령과 응답이 전송된다. 이는 client가 server에 로그인하고, 파일 리스트를 요청하고, 다양한 명령을 실행하는 데 사용된다.
- 특징
- TCP port 21번 사용
- FTP 명령과 응답 모두 평문 형태로 보내지기 때문에 debugging과 logging 등 human-based action에 탁월하지만 보안상 취약점이 존재한다.
- 사용자가 FTP session을 종료하거나 네트워크 연결이 끊어지기 전까지 control channel은 계속 열려 있다.
Data Channel
Data channel은 실제 파일 데이터나 디렉토리 리스트 같은 데이터 전송을 위해 사용된다. 해당 channel은 data 전송이 필요할 때만 열리며, 전송이 완료되면 바로 닫힌다.
- 특징
- TCP port 20번 사용
- client가 data channel을 위한 연결을 초기화하며, server는 사용할 port를 client에게 알린다. (이 방식은 client가 방화벽 뒤에 있을 때 유용하다.)
- data channel은 각 파일 전송 요청마다 별도로 설정되며, 데이터 전송 후 자동으로 닫히는데, 이는 control channel과 독립적으로 작동한다.
Active mode
- Control channel : TCP port 21번을 사용하여 FTP 명령어를 전송하고 응답을 수신하는 데 사용된다.
- Data channel : client가 PORT 명령을 전송하여 통신을 위해 사용할 port 번호를 알리면, server는 자신의 port 번호 20번을 통해 data 연결을 시도한다.
Active mode FTP가 가진 문제점은 client와 server 사이에 방화벽이 존재하거나 client 네트워크가 NAT을 사용 중이면 동작하지 않는다는 것이다. 이 문제를 해결하기 위해 만들어진 것이 Passive mode FTP이다.
Passive mode
- Control channel : Active mode와 동일하게 TCP port 21번을 사용한다.
- Data channel : server가 random port 번호를 수신으로 돌리고, 이를 PASV 명령어로 client에게 전달한다 .그러면 client는 server의 해당 port에 대한 data 연결을 시도한다.
정리하면, active mode와 passive mode 모두 data 연결에 대한 설정을 관리하기 위해 control channel의 TCP 21번 port를 사용한다. 주된 차이점은 data channel을 어떻게 확립하는지다. Active 모드는 TCP port 번호 20번으로 data channel을 연결하여 FTP의 표준 방식으로 연결하는데 반해, Passive 모드는 server가 지정한 random port 번호를 사용하여 FTP에 대한 공격을 방지하는데 사용된다.
메일 관련 프로토콜
SMTP와 POP3, 그리고 IMAP은 인터넷상에서 이메일을 다루는 데 사용하는 근본 프로토콜이지만 각자 다른 목적을 위해 운용된다. SMTP는 메일 전송을 위해 사용되는 반면, POP3와 IMAP은 메일 수신 및 관리 기능을 수행한다. 여기서 "메일을 전송한다"는 것은 송신자가 수신자에게 메일을 전송하는 것이 아닌, 클라이언트가 메일 서버로 메일을 전송하는 것을 의미한다. 마찬가지로, 메일 수신 또한 메일 서버가 클라이언트에게 메일을 전송하는 것을 의미한다.
SMTP (Simple Mail Transfer Protocol)
SMTP는 클라이언트-서버 간 혹은 서버 간 이메일을 전송하고 경로를 설정하기 위한 프로토콜이다.
- 특징
- 목적지에 도달할 때까지 수신자의 메일 서버로 메일을 전송하고 서버 간 이메일을 연동한다
- 서버 간 전송에는 포트 번호 25번을, 클라이언트-서버 간에는 587번을 사용한다.
- 메일 전송만 담당하며, 전송 취소와 저장에는 관여하지 않는다.
예를 들어, Microsoft Outlook 같은 이메일 클라이언트가 메일을 전송하면, SMTP 서버는 이를 수령한 뒤 바로 적절한 수신자 서버에 연동한다.
POP3 (Post Office Protocol version 3)
POP3는 email client가 server에 전송된 email을 취소하거나 client computer에 저장하기 위해 사용한다. 한번 message를 저장한다면, 일반적으로 서버에서 제거된다.
- 특징
- server로부터 모든 새 message를 client가 download하고, 그 뒤 모두 server에서 제거된다.
- 때문에 offline에서도 email을 볼 수 있지만 오직 이를 download한 client만 이용 가능하다.
- 표준 연결을 위해서 TCP 번호 110번을, 안전한 연결을 위해서는 995번을 사용한다.
- 여러 기기에 걸쳐 읽음/안읽음 상태를 연동하는 것은 지원되지 않는다.
POP3는 단일 기기에서 email을 관리하고자 할 경우 적합하며, 때문에 다른 지역과 기기에선 email에 접근이 불가능하다.
IMAP (Internet Message Access Protocol)
IMAP을 사용하면 server에 저장된 email을 손쉽게 접근하고 관리할 수 있다. POP3와 달리, IMAP은 여러 기기에서 mail에 접근해야 한다는 현대적 요구사항을 충족하기 위해 만들어졌다.
- 특징
- Email 상태 동기화 : 여러 기기 간 email 상태를 동기화한다. Email은 server에 저장되고 어디서든 접근 가능하다.
- 표준 연결을 위해 TCP 번호 143번, 안전한 연결을 위해 993번을 사용한다.
- server folder에 email 저장하기, email 읽음/안읽음 상태 확인, 그리고 email 찾기 등 mail message 관련 상호작용을 지원한다.
IMAP은 smartphone, laptop 등 여러 기기에서 email을 확인하기 원하는 사용자에게 이상적이며, mail을 개인 기기에 download 하기 보다 server에서 관리하고자 할 때 더 적합하다.
- 정리
SMTP | POP3 | IMAP | |
목적 | Email 전송 | 단일 기기에서 local로 email 관리 | 여러 기기에서 동시에 email 관리 |
포트 번호 | i. 서버-클라이언트 간 : 25 ii. 서버 간 : 587 |
i. 표준 연결 : 110 ii. 안전한 연결 : 995 |
i. 표준 연결 : 143 ii. 안전한 연결 : 993 |
특징 | mail 전송 외에 mail 취소, 관리에 관여하지 않음 | mail 읽음/안읽음 상태 동기화 지원 안함 |
mail 상태 동기화, mail 찾기 등 확장된 기능 제공 |
IMAP은 여러 기기에서 동시에 email을 관리하고, 읽음/읽지 않음 상태가 동기화되는 등 현대적인 요구사항을 충족하지만 보안 공격에 취약하다. 그런 점에서 서버에서 로컬로 메일을 한번 내려받으면 메일을 자동 삭제하는 POP3는 약간의 불편함은 있지만 안전하다는 장점이 존재한다.
네트워크 관련 프로토콜
ICMP (Internet Control Message Protocol)
ICMP는 네트워크 내 장치가 데이터 전송과 관련된 문제를 전달하기 위해 사용하는 프로토콜이다. ICMP의 주된 용법 중 하나는 data가 대상에 도달하는지와 도달 시간이 적절한지 확인하는 것이다.
즉, ICMP는 (network가 data를 얼마나 잘 전송하는지 확인하는) 오류 보고용 process 및 test 이다.
(ICMP flooding 공격 같은 DDoS 공격에도 사용 될 수 있다.)
- 특징
- Encapsulated within IP datagram : ICMP message가 IP packet과 동일한 방식으로 처리됨을 의미한다.
- No Handshaking : data 전송 전에 연결을 확립하지 않기 때문에 message 전달을 보장하지 않는다.
- Message 유형
- Error reporting : IP packet을 처리하는 것과 관련된 issue에 대한 메시지를 출발지 IP 주소로 반환
- Query : host가 접근 가능한 것이고 응답 가능한 것인지 진단하기 위한 메시지 전송
- 동작 방식
- ICMP는 IP packet 내에 캡슐화되어 전송된다. (이때, ICMP message는 IP header에 의해 싸여 있으며, IP 헤더의 'protocol' 영역은 ICMP를 나타내는 특정 값을 가진다.)
- ICMP는 속한 packet의 source와 destination IP 주소를 사용하여 송신자와 수신자를 결정한다. 이를 통해 ICMP는 특정 호스트와 직접 통신하는 것이 가능하다.
- error message는 원본 IP packet을 받은 장치에서 송신자로 보내지며, 이 메시지는 네트워크 문제를 진단할 중요 정보를 제공한다.
- Echo Request 같은 query message는 네트워크를 통해 특정 호스트로 보내지며, 수신 호스트는 Echo Reply로 응답한다.
ICMP는 네트워크 계층(3 계층) 프로토콜로, 데이터 전송이 아닌 IP packet의 처리 문제를 다루기 때문에 명시적인 'port' 개념이 적용되지 않는다.
- ICMP Type
Type | Message | 설명 |
0 | Echo Reply | Echo 메시지 응답 |
3 | Destination Unreachable | 목적지 도달 불가 |
4 | Source Quench | 혼잡제어 용도 |
5 | Redirect | 더 빠른 경로가 있음을 알리는 용도 |
8 | Echo Request | Echo 메시지 요청 |
11 | Time Exceeded | TTL 초과 |
- Error Type 3 : Destination Unreachable
- Code 0 : Network 도달 불가 - Network ID 문제
- Code 1 : Host 도달 불가 - Host ID 문제
- Code 2 : Protocol 도달 불가 - Protocol 타입 문제
- Code 3 : Port 도달 불가 - Port Number 문제
- Code 4 : IP 헤더의 'Don't Fragment' 플래그가 설정되어 단편화 할 수 없는 경우
- 등 15가지 코드가 존재한다.
- Error Type 4 : Source Quench
- TCP는 알아서 혼잡을 제어하고, UDP는 하지 않기 때문에 더 이상 사용되지 않는다.
- Error Type 5 : Redirect
- 현재 진행 상황이 최적의 경로로 가는 것이 아님을 알 때 표시됨
- Error Type 11 : Time Exceeded
- Code 0 : Time To Live 필드가 0이 되어서 데이터그램이 폐기된 경우
- Code 1 : 지정된 시간 내에 패킷이 도착하지 않아 재조립이 실패한 경우
참고 출처
- 주요 프로토콜
'리팩토링 > 1. CS' 카테고리의 다른 글
리팩토링 6주차. OSI 계층별 프로토콜 특징 (2) (1) | 2024.07.22 |
---|---|
리팩토링 4주차. OSI 계층별 네트워크 장비 특징 (2) | 2024.07.02 |
리팩토링 3주차. TCP와 UDP의 특징과 차이점 (1) | 2024.06.18 |
리팩토링 2주차. OSI 7계층 (1) | 2024.06.10 |
리팩토링 1주차. 제로 트러스트(Zero Trust)에 대해 (1) | 2024.06.03 |