FTP 가 설정되면 서버와의 두 가지 연결은 무엇입니까?
FTP 는 OSI 모델의 7 층, TCP 모델의 4 층, 즉 애플리케이션 계층에서 작동하는 TCP/IP 의 특정 애플리케이션입니다. UDP 대신 TCP 전송을 사용하여 FTP 고객은 서버에 연결하기 전에 잘 알려진' 3 회 핸드쉐이킹' 프로세스를 거쳐야 합니다.
이제 FTP 고객이 서버에 연결하는 과정을 살펴 보겠습니다 (표준 FTP 포트 번호를 예로 들어). < P > 우선, FTP 는 HTTP 프로토콜과 달리 하나의 포트 (HTTP 의 기본 포트는 8, FTP 의 기본 포트는 21) 만 있으면 되고, FTP 에는 2 개의 포트가 필요합니다. 하나는 제어 연결 포트, 즉 21 로 서버에 명령을 보내고 서버 응답을 기다리는 데 사용됩니다. 또 다른 포트는 포트 번호 2 (PORT 모드만 해당) 인 데이터 전송 포트로, 데이터 전송 채널을 설정하는 데 사용되며,
가 고객으로부터 서버로 파일을 보내는 데 주로 세 가지 역할을 합니다.
서버에서 고객에게 파일을 보냅니다.
서버에서 고객에게 파일 또는 디렉토리 목록을 보냅니다.
둘째, FTP 의 연결 모드는 PORT 와 PASV 의 두 가지입니다. 포트 모드는 액티브 모드이고, PORT 는 패시브 모드이며, 이 경우 모두 서버에 상대적입니다. 이 두 가지 모델을 명확하게 이해할 수 있도록, 랑월별은 각각 예를 들어 설명한다. < P > 포트 모드 < P > FTP 고객이 포트 모드로 서버에 연결할 때 포트 번호 (이번 실험은 615) 를 동적으로 선택하여 서버의 21 포트를 연결하는데, 이 포트 번호는 124 이상이어야 합니다. 124 이전 포트는 미리 정의되어 있고 몇 가지 일반적인 서비스에 의해 사용되기 때문입니다. TCP 의 세 번의 핸드셰이크를 통과하면 연결 (제어 채널) 이 설정됩니다 (그림 1 및 그림 2).
그림 1: FTP 고객이 FTP 명령을 사용하여 서버에 연결
그림 2: netstat 명령으로 보고 제어 채널이 클라이언트의 615 및 서버의 2 포트
에서 서버의 디렉토리 구조를 나열하려는 경우 (ls 또는 dir 명령 사용) 먼저 다음을 수행해야 합니다 이 시점에서 사용자는 데이터 채널을 설정하기 위해 서버에 연결된 포트 (제어 채널에서 서버로 전송) 를 알려주는 PORT 명령을 실행하고, 서버가 이 명령을 받으면 서버는 2 포트를 사용하여 사용자가 PORT 지시어에 지정한 포트 번호를 연결합니다. 디렉토리 목록을 보냅니다 (그림 3).
그림 3: ls 명령은 먼저 서버와 데이터 전송 채널을 설정하는 대화형 명령입니다. 이 파일럿 클라이언트가 644 포트 < P > 를 사용하여 이 작업을 완료할 때 FTP 고객이 파일을 다운로드해야 할 경우 get 명령이 실행됩니다. 이때 고객은 서버에 연결된 "새" 포트를 알려주는 포트 명령을 다시 보내 netstat -na 명령을 사용하여 확인할 수 있습니다. < P > 그림 4: ls 명령을 사용하여 마지막으로 설정된 데이터 전송 채널이 꺼져 있는지 확인하기 위해 netstat 명령을 사용합니다. < P > 이 새로운 데이터 전송 채널이 설정되면 (Microsoft 시스템에서 클라이언트는 일반적으로 연속 포트를 사용합니다. 즉, 이 클라이언트는 645 개의 포트를 사용합니다.) 파일 전송을 시작합니다.
PASV 모드
그러나 FTP 고객이 PASV 모드로 서버에 연결할 경우 상황이 다소 다릅니다. 연결을 초기화하는 과정에서 서버에 연결하는 과정은 포트 모드와 동일합니다. 단, FTP 고객이 ls, dir, get 등 데이터 반환을 요구하는 명령을 전송할 때, 그는 서버에 포트 명령을 보내지 않고 PASV 명령을 보냅니다. 이 지침에서 사용자는 서버에 연결할 포트 중 하나를 알려 줍니다. 이 서버의 이 포트가 유휴 상태인 경우 그러면 서버는 ACK 의 확인 메시지를 반환하고 데이터 전송 채널이 설정되고 사용자가 요청한 정보 (ls, dir, get 등) 를 반환합니다. 서버의 이 포트가 다른 자원에서 사용 중인 경우 서버가 UNACK 의 정보를 반환하면 FTP 고객이 다시 PASV 명령을 보냅니다. 이를 연결 설정 협상 프로세스라고 합니다. 이 과정을 검증하기 위해 우리는 CUTEFTP Pro 가 자주 사용하는 FTP 클라이언트 소프트웨어를 이용해야 한다. Microsoft 고유의 FTP 명령 클라이언트는 PASV 모드를 지원하지 않기 때문이다. QUOTE PASV 명령을 사용하여 PASV 모드를 강제할 수 있지만 ls 명령을 사용하여 서버 디렉토리 목록을 나열하면 여전히 PORT 방식으로 서버에 연결되어 있음을 알 수 있습니다. 이제 CUTEFTP Pro 를 사용하여 PASV 모드로 서버에 연결합니다 (그림 5).
그림 5: CUTEFTP Pro 를 사용하여 PASV 모드로 서버 연결
연결 로그에는
COMMAND:> 라는 몇 마디가 있습니다 Pasv
227 entering passive mode (127,,,1,26,18)
command: > 목록
상태: > Connecting FTP data socket 127...1: 6764 ...
125 data connection already open; Transfer starting.
226 transfer complete.
여기서 227 entering passive mode (127,,,1,26 (물론 서버가 이 모델을 지원해야 함)
125 Data connection already open; Transfer starting. 설명 서버의 이 포트를 사용할 수 있으며 ACK 정보를 반환합니다.
이제 CUTEFTP Pro 를 사용하여 PORT 모드로 서버에 연결하는 경우를 살펴보겠습니다. 로그에는
COMMAND:> Port127,,,1,28,37
2 port command successful.
command: > List
15 opening ascii mode data connection for/bin/ls.
status: > Accepting connection: 127...1: 2.
226 transfer complete.
status: > Transfer complete.
여기서 PORT 127,,,1,28,37 은 이 PORT 명령을 받으면 FTP 고객을 연결하는 28x256+37=725 라는 포트를 서버에 알려줍니다.
accepting connection: 127...1: 2 은 서버가 지시를 받은 후 2 포트로 725 포트를 연결하고 FTP 고객이 수락한다는 의미입니다.
비교 분석
두 예에서 PORT 모드는 서버측에서 데이터 전송 채널을 설정하고 서버는 2 포트를 사용하여 클라이언트의 124 보다 큰 포트 중 하나에 연결합니다. PASV 모드에서 데이터 전송 채널은 FTP 클라이언트가 설정하며 124 보다 큰 포트를 사용하여 서버의 124 개 이상의 포트에 연결합니다. C/S 모델의 관점에서 PORT 는 서버에 OUTBOUND 이고 PASV 모드는 서버에 INBOUND 인 경우, 특히 Microsoft 의 ISA Server 2 을 사용하여 FTP 서버를 게시하는 것과 같은 방화벽을 사용하는 기업에는 매우 중요합니다 < P > 마지막으로 FTP 고객이 서버에 연결하는 동안 제어 채널은 항상 연결된 상태로 유지되며 데이터 전송 채널은 임시로 설정됩니다. < P > 이 문서에서는 FTP 의 연결 모드에 초점을 맞추고 FTP 의 파일 유형 (유형), 형식 제어 (Format control) 및 전송 방법 (Transmission mode) 등 FTP 와 관련된 다른 내용은 없습니다. 그러나 요즘 유행하는 FTP 클라이언트는 자동으로 올바른 패턴을 선택하여 처리할 수 있고 FTP 서버측에도 다음과 같은 제한이 있기 때문에 많은 시간을 들이지 않아도 됩니다. < P > 유형: A S C I 또는 이미지.
형식 제어: 인쇄되지 않는 것만 허용됩니다.
구조: 파일 구조만 허용됩니다. < P > 전송 방법: 스트리밍 방식 < P > 만 허용됩니다. 이 내용은 편폭으로 제한되므로 더 이상 소개하고 싶지 않습니다. 이 문장, 특히 ISA Server2 을 공부하고 있는 친구와 FTP 에 대해 잘 모르는 친구들에게 도움이 되었으면 합니다.