FTP 쪽에 오류가 있어서 이것저것 검색하다가
FTP에 passive/active 모드가 있다는 걸 알게되었다.
기존에 FTP하면 기본 포트인 21번, 데이터 포트는 20번 이라고 알고 있었는데~
각 모드에 따라 동작방식이 다른다는 거다!!
FTP 개발을 하게 된다면 필수로 알고 있어야 할 듯 하다.
일반적으로는 웹을 통해 접속하게 되면 Passive 모드로 접속되고 FTP 접속 프로그램을 통하면 Active 모드라고 알고있다.
FTP 접속할 때 21번 포트(기본)를 통해서 사용하게 되는데
클라이언트가 서버에 21번 포트로 접속한 후에 Active와 Passive 모드 동작이 다르다.
1. Active 모드
Active 모드는 클라이언트가 FTP 서버에 기본값인 21번 포트를 사용하여 접속
-> 클라이언트가 데이터로 받겠다는 응답을 서버에게 보내면서
데이터를 전송할 포트를 알려줌.
-> 서버는 자신의 20번 포트로 클라이언트가 알려준 데이터 포트로 데이터를 보냄
여기서 중요한 점 !
서버가 클라이언트의 해당 포트에 접속해 데이터를 보내준다는 것!
보통의 통신의 경우 클라이언트가 서버에 접속하는 형태인데 말이징~
그래서 클라이언트에서는 방화벽에 해당 포트를 열어서 사용하거나 NAT 환경에 있는 네트워크라면 포트포워딩을 해줘야 한다.
외부에서 접속을 허용하지 않는다면 문제가 발생할 것이다.
클라이언트쪽에서 사용하는 포트를 별도로 설정할수 있다면 문제는 없겠지만~.
모든 유저들이 FTP에 대한 지식이 있는 것은 아니니... 이 모드를 개선한 것이 Passive Mode이다.
2. Passive 모드
Passive 모드는 클라이언트가 FTP 서버에 기본값인 21번 포트를 사용하여 접속
-> 서버는 서버가 사용할 데이터 포트를 클라이언트에 알려줌
-> 클아이언트의 데이터 포트는 1024번 이상의 사용하지 않는 포트를 사용
-> 클라이언트가 임의의 포트 골라서 명령 포트로 사용하고 +1한 다음에 데이터 포트로 사용
Activce Mode 에서 있었던 문제점이 여기서 사라진다~
클라이언트가 서버측의 데이터 포트를 사용하기 때문에 당연하게 클라이언트의 방화벽이나 네트워크 구조에 신경을 쓸 필요가 없는 것!
참고사이트 : http://hoyatic.tistory.com/165
'IT' 카테고리의 다른 글
[Python] Python numpy, matplotlib 라이브러리 설치! (1) | 2018.01.20 |
---|---|
[도커] Docker 명령어 정리! (0) | 2018.01.19 |
[JavaScript] Ajax란 뭘까 (0) | 2018.01.19 |
[JavaScript] JSON.parse(), JSON.stringify() 사용하는법 (0) | 2017.04.05 |
[쿼리] WITH 구문 사용하기 (0) | 2017.04.05 |
댓글