공부방

응용계층 프로토콜-FTP 본문

CS/네트워크

응용계층 프로토콜-FTP

코딩 화이팅 2023. 6. 29. 00:29
  • 네트워크 21번 포트 : 데이터 전송을 제어하기 위한 신호를 주고 받기 위함
  • 네트워크 20번 포트 : 실제 데이터(파일) 전송에 사용
  • FTP는 데이터(파일)를 전송함에 있어, 수동 모드와 능동 모드 두가지를 지원한다.

능동 모드

  1. 클라이언트에서 FTP 서버의 21번 포트로 접속을 시도한다. 이 연결을 통해 FTP 명령을 주고 받는다.
  2. PORT 명령을 보내어 데이터 연결을 위한 포트를 서버에 알린다.
  3. 서버는 클라이언트에게 이 정보를 받아 20번 포트에서 클라이언트가 알려준 포트로 데이터 연결을 시작한다.
    포트에서 포트로 데이터 연결을 한다?
    • FTP에서 "포트에서 포트로 데이터 연결을 시작한다"는 말은 네트워크 연결을 설립하는 과정을 설명하는 것
    • 클라이언트는 자신의 IP 주소와 데이터 연결에 사용할 포트 번호를 서버에 알린다. 그 후 서버는 자신의 20번 포트에서 클라이언트가 알려준 포트로 데이터 연결을 시작한다.
    • 예를 들어 "227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)" 이런 응답이 왔다고 하면
      • h1, h2, h3, h4는 서버의 IP 주소를 나타내며, p1과 p2는 데이터 연결에 사용할 포트 번호를 나타낸다.
      • 이 포트 번호는 p1*256+p2 계산으로 얻을 수 있다.
    • 227 Entering Passive Mode (192,168,1,1,200,14) 이런 응답을 보냈다고 가정해보면
      IP 주소는 192.168.1.1이고, 포트 번호는 200*256+14=51214이다.
    • 이후 서버는 자신의 IP주소와 20번 포트에서 클라이언트의 51214 포트로 연결을 시작한다.
  4.  클라이언트는 이 연결을 확인(ACK)하고 그 후 파일 전송 등의 데이터 교환을 시작한다.

능동 모드의 문제점 : 서버가 클라이언트에게 데이터 연결을 시도할 때 내부적인 환경 요인(방화벽)과 외부적인 환경 요인(FTP를 제대로 인지하지 못하는 공유기)으로 FTP가 접속이 제대로 되지 않거나, 접속이 제대로 된다 하더라도 이 후 데이터 목록을 받아오지 못하는 에러가 발생할 수 있다.-> 수동 모드

수동 모드

  1. 클라이언트는 서버의 21번 포트로 컨트롤 연결을 수립
  2. 클라이언트는 서버에게 PASV(Passive Mode) 명령을 보낸다.
  3. 서버는 이 명령에 대한 응답으로 데이터 연결을 위한 비특권 포트 번호(1024~65535 사이)를 클라이언트에게 알려준다.
  4. 클라이언트는 서버가 알려준 포트로 새로운 연결을 시작하여 데이터 연결을 한다.
  5. 이제 클라이언트와 서버는 데이터 연결을 통해 파일 전송 등의 데이터 교환을 시작한다.

'CS > 네트워크' 카테고리의 다른 글

응용계층  (0) 2023.06.27
컴퓨터 네트워크  (0) 2023.06.20
컴퓨터 네트워크의 계층  (0) 2023.06.19
컴퓨터 네트워크  (0) 2023.06.19
컴퓨터 네트워크의 소개  (0) 2023.06.13