FTPλž€ λ¬΄μ—‡μΌκΉŒ

FTPλŠ” File Transfer Protocol의 μ•½μžλ‘œ 말 κ·ΈλŒ€λ‘œ νŒŒμΌμ„ μ „μ†‘ν•˜λŠ” 톡신 κ·œμ•½μž…λ‹ˆλ‹€. FTP μ„œλ²„μ— νŒŒμΌλ“€μ„ μ—…λ‘œλ“œ, λ‹€μš΄λ‘œλ“œν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” ν”„λ‘œν† μ½œμ΄λ©°, μ΄λŠ” FTP μ„œλ²„μ™€ FTP ν΄λΌμ΄μ–ΈνŠΈ 간에 ν†΅μ‹ μ—μ„œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

FTPλŠ” Active λͺ¨λ“œμ™€ Passive λͺ¨λ“œλΌλŠ” 2개의 λͺ¨λ“œκ°€ μ‘΄μž¬ν•˜λ©° 각각의 λͺ¨λ“œμ—μ„œλŠ” 2개 λ˜λŠ” 2개 μ΄μƒμ˜ ν¬νŠΈκ°€ 연결을 λ§Ίκ³  데이터λ₯Ό μ „μ†‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ‚¬μš©λ˜λŠ” ν¬νŠΈλŠ” 연결을 μ œμ–΄ν•˜λŠ” Command ν¬νŠΈκ°€ 있으며 데이터λ₯Ό μ „μ†‘ν•˜λŠ” DATA ν¬νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.

FTPλŠ” TCP 기반으둜 λ§Œλ“€μ–΄μ Έ 있으며 κΈ°λ³Έ λ™μž‘ λͺ¨λ“œλ‘œ Active λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λ©° 20번 λ˜λŠ” 1024번 μ΄ν›„μ˜ 데이터(Data) ν¬νŠΈλŠ” 데이터λ₯Ό μ „μ†‘ν•˜λŠ” 데 μ‚¬μš©ν•˜κ²Œ 되고, 21번 ν¬νŠΈλŠ” 접속 μ‹œμ— μ‚¬μš©λ˜λŠ” λͺ…λ Ή(Command) ν¬νŠΈμž…λ‹ˆλ‹€.


Active λͺ¨λ“œ

FTP Active λͺ¨λ“œμ˜ λ™μž‘ 방식을 그림으둜 보면 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. 참고둜 μ•„λž˜ μ‚¬μš©λœ λͺ…λ Ή(Command) ν¬νŠΈμ™€ 데이터(Data) ν¬νŠΈλŠ” μ„œλ²„μ˜ μ„€μ •μ—μ„œ μž„μ˜λ‘œ μˆ˜μ •ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ftp active mode


  • 1) ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ 21번 포트둜 μ ‘μ†ν•œ 후에 μžμ‹ μ΄ μ‚¬μš©ν•  두 번째 포트λ₯Ό μ„œλ²„μ— 미리 μ•Œλ €μ€λ‹ˆλ‹€.
  • 2) μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— μ‘λ‹΅ν•©λ‹ˆλ‹€. (acks)
  • 3) μ„œλ²„μ˜ 20번 데이터 ν¬νŠΈλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•Œλ €μ€€ 두 번째 포트둜의 접속을 μ‹œλ„ν•©λ‹ˆλ‹€.
  • 4) ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ˜ μš”μ²­μ— μ‘λ‹΅ν•©λ‹ˆλ‹€. (acks)

μœ„ κ³Όμ •μ—μ„œ μ•‘ν‹°λΈŒ λͺ¨λ“œλŠ” β€œν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 접속을 ν•˜λŠ” 것이 μ•„λ‹Œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ— 접속을 ν•˜λŠ” 것”을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 만일 FTP ν΄λΌμ΄μ–ΈνŠΈμ— 방화벽이 μ„€μΉ˜λ˜μ–΄ μžˆλŠ” λ“± μ™ΈλΆ€μ—μ„œμ˜ 접속을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” 상황이라면 FTP 접속이 μ •μƒμ μœΌλ‘œ 이루어지지 μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. 접속이 λ˜λ”λΌλ„ 데이터 λͺ©λ‘μ„ λ°›μ•„μ˜€μ§€ λͺ»ν•˜κ²Œ λ˜λŠ” κ²½μš°λ„ μžˆκ³ μš”.


Passive λͺ¨λ“œ

μœ„μ—μ„œ μ‚΄νŽ΄λ³Έ Active λͺ¨λ“œμ˜ 단점을 ν•΄κ²°ν•˜κΈ° μœ„ν•œ Passive λͺ¨λ“œλ₯Ό μ‚΄νŽ΄λ΄…μ‹œλ‹€. μ—­μ‹œλ‚˜ μ•„λž˜ κ·Έλ¦Όμ—μ„œ μ‚¬μš©λœ μ»€λ§¨λ“œ ν¬νŠΈμ™€ 데이터 ν¬νŠΈλŠ” μ„œλ²„ μ„€μ •μ—μ„œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히 Passive λͺ¨λ“œμ—μ„œλŠ” 데이터 포트 번호λ₯Ό νŠΉλ³„ν•˜κ²Œ μ§€μ •ν•˜μ§€ μ•ŠλŠ” 경우 1024 ~ 65535번 μ€‘μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ μž„μ˜ 포트λ₯Ό μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. 포트 번호λ₯Ό μ§€μ •ν•  λ•ŒλŠ” 10001 ~ 10005번과 같이 λ²”μœ„λ₯Ό μ§€μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

ftp passive mode


  • 1) ν΄λΌμ΄μ–ΈνŠΈκ°€ μ»€λ§¨λ“œ 포트둜 접속을 μ‹œλ„ν•©λ‹ˆλ‹€. (Passive λͺ¨λ“œ μ—°κ²°)
  • 2) μ„œλ²„μ—μ„œλŠ” μ‚¬μš©ν•  두 번째 포트λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ•Œλ €μ€λ‹ˆλ‹€.
  • 3) ν΄λΌμ΄μ–ΈνŠΈλŠ” λ‹€λ₯Έ 포트λ₯Ό μ—΄μ–΄ μ„œλ²„κ°€ μ•Œλ €μ€€ 포트둜 접속을 μ‹œλ„ν•©λ‹ˆλ‹€.
  • 4) μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— μ‘λ‹΅ν•©λ‹ˆλ‹€. (acks)

Passive λͺ¨λ“œμ—μ„œλŠ” μ•žμ„  Active λͺ¨λ“œμ—μ„œ μ‚¬μš©ν–ˆλ˜ 20번 포트λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  1024번 μ΄ν›„μ˜ μž„μ˜μ˜ 포트λ₯Ό 데이터 채널 포트둜 μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€.


μ—°κ²° 방식에 λ”°λ₯Έ μ£Όμ˜μ‚¬ν•­

Active λͺ¨λ“œμ˜ κ²½μš°λŠ” ν΄λΌμ΄μ–ΈνŠΈ 츑의 방화벽에 20번 ν¬νŠΈκ°€ μ°¨λ‹¨λ˜μ–΄ μžˆλ‹€λ©΄, 데이터 채널 연결이 λΆˆκ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€. 연결은 λ˜λ”λΌλ„ 데이터 μ‘°νšŒλΆ€ν„° μ‹€νŒ¨λ˜λŠ” κ²½μš°κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ„œλ²„ 츑은 20번 ν¬νŠΈλŠ” μ•„μ›ƒλ°”μš΄λ“œ(OUTBOUND, λ‚΄ μ„œλ²„μ—μ„œ μ™ΈλΆ€ μ„œλ²„λ‘œ λ³΄λ‚΄λŠ” μš”μ²­) ν—ˆμš©, ν΄λΌμ΄μ–ΈνŠΈλŠ” μΈλ°”μš΄λ“œ(INBOUND, μ™ΈλΆ€μ—μ„œ λ‚΄ μ„œλ²„λ‘œ λ“€μ–΄μ˜€λŠ” μš”μ²­) ν—ˆμš©μ΄ λ°©ν™”λ²½ 섀정에 ν•„μš”ν•©λ‹ˆλ‹€.

Passive λͺ¨λ“œμ˜ κ²½μš°λŠ” μ„œλ²„ 츑의 데이터 채널 ν¬νŠΈκ°€ λ§‰ν˜€μžˆλŠ” 경우 데이터 채널 연결이 λΆˆκ°€λŠ₯ν•˜κ²Œ λ©λ‹ˆλ‹€. 그리고 μ•žμ„œ μ†Œκ°œν•œ κ²ƒμ²˜λŸΌ 데이터 채널 포트의 λ²”μœ„λ₯Ό μ§€μ •ν•  수 μžˆλŠ”λ°, λ³„λ„λ‘œ μ§€μ •ν•˜μ§€ μ•ŠλŠ” κ²½μš°λŠ” 1024 ~ 65535번의 포트λ₯Ό μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. λ”°λΌμ„œ INBOUND λͺ¨λ‘ ν—ˆμš©μ΄ ν•„μš”ν•˜κ²Œ λ˜λŠ”λ°, μ„œλ²„ μΈ‘μ—μ„œ 데이터 채널 포트 λ²”μœ„λ₯Ό μ§€μ •ν•˜μ—¬ νŠΉμ • λ²”μœ„μ˜ 포트만 ν—ˆμš©ν•΄μ£Όλ©΄ λͺ¨λ“  포트 ν—ˆμš©μ˜ 문제λ₯Ό μ–΄λŠ 정도 ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.