iknowDev
Blog Driven Development
iknowDev ๐Ÿ˜
/
  • ์ž‘์„ฑ ๊ธ€ ๋ชฉ๋ก
  • Github
  • Category (30)
    • ๐Ÿ“• CS ์Šคํ„ฐ๋”” (22)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ (0)
      • Java, Spring (5)
      • ๋„์ปค, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค, ๋ฆฌ๋ˆ…์Šค (4)
      • ๋„คํŠธ์›Œํฌ (11)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (1)
      • ๋””์ž์ธ ํŒจํ„ด (1)
      • ์ž๋ฃŒ ๊ตฌ์กฐ (0)
    • ๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” (4)
      • Java (3)
      • JavaScript (0)
      • Python3 (1)
    • ๐Ÿ’ป ํ† ์ด ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๊ธฐ (2)
    • ๐Ÿš€ ๊ฒฝํ—˜ (2)
      • ์—๋Ÿฌ ๋Œ€์‘ (2)
      • ํšŒ๊ณ  (0)
      • ์ฆ๊ฑฐ์šด์ผ (0)

Popular

Tag

์—๋Ÿฌ ๋Œ€์‘   
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค   
Spring   
Was   
๋ฐฑ์ค€   
side Project   
java   
๊ณจ๋“œ   
ํŠธ๋žœ์žญ์…˜   
Netty   

Comment


Designed By hELLO
iknowDev

Blog Driven Development

๐Ÿ“• CS ์Šคํ„ฐ๋””/๋„คํŠธ์›Œํฌ

๐Ÿ“ก FTP ํ†ต์‹ , Socket ์ด์•ผ๊ธฐ

2023. 8. 10. 23:02

FTP

FTP ์„œ๋ฒ„์— ํŒŒ์ผ๋“ค์„ ์—…/๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ๋กœ TCP/IP ๋„คํŠธ์›Œํฌ(์ธํ„ฐ๋„ท)์ƒ์˜ ์žฅ์น˜๊ฐ€ ํŒŒ์ผ์„ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœํ† ์ฝœ := ์ „์ž๊ธฐ๊ธฐ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํ†ต์‹  ๊ทœ์•ฝ(์–ด๋–ป๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์„์ง€ ์•ฝ์†)

 

FTP์˜ ๋ชฉํ‘œ

FTP ์„œ๋ฒ„์™€ FTP Client ๊ฐ„ ํšจ์œจ์ ์ธ ํŒŒ์ผ ์ „์†ก

 

ํฌํŠธ ์„ค์ •

์ผ๋ฐ˜์ ์œผ๋กœ ๋‘๊ฐœ์˜ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ œ์–ด ํฌํŠธ(Control Port)

  • ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๋ช…๋ น์ž…๋ ฅ์— ์‚ฌ์šฉ๋˜๋Š” ํฌํŠธ
  • ftp ํด๋ผ์ด์–ธํŠธ๊ฐ€ 21๋ฒˆ์„ ํ†ตํ•ด ftp ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด ์ œ์–ด์™€ ๊ด€๋ จ๋œ ์„ธ์…˜์ด ์—ด๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ํฌํŠธ(Data Port)

  • ftp ์„œ๋ฒ„์—์„œ 20๋ฒˆ์„ ํ†ตํ•ด ftp ํด๋ผ์ด์–ธํŠธ๋กœ ์ ‘์†ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ์ดํ„ฐ ์ „์†ก ์—ฐ๊ฒฐ ์ ‘์† ๋ฐฉ์‹

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์ค‘ ๋ˆ„๊ฐ€ ์ ‘์†์„ ์‹œ๋„ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด ์ง‘๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Passive mode๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ณ , Filezilla ๋“ฑ๊ณผ ๊ฐ™์€ FTP ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ Active mode๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Active Model (๋Šฅ๋™ ๋ฐฉ์‹)

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ ‘์†ํ•˜๋Š” ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ 21๋ฒˆ ํฌํŠธ๋กœ ์ ‘์†ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ง„ํ–‰ํ•˜๊ณ , ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” 20๋ฒˆ ํฌํŠธ๋กœ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†กํฌํŠธ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ ํฌํŠธ๋กœ ํด๋ผ์ด์–ธํŠธ PC์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์ ์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐฉํ™”๋ฒฝ ํฌํŠธ๋ฅผ ์—ฌ๋Š” ์„ค์ •์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋ณด์•ˆ์— ์ด์ ์„ ๊ฐ€์ง
  • ๋‹จ์ ์€ FTP๊ตฌ์กฐ๋ฅผ ์ž˜ ๋ชจ๋ฅด๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” FTP ์ ‘์†์— ์–ด๋ ค์›€์„ ๊ฒช์Œ

Passive Mode (์ˆ˜๋™ ๋ฐฉ์‹)

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ 21๋ฒˆ ํฌํŠธ๋กœ ์ ‘์†ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ง„ํ–‰ํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ์ „์†ก์„ ์œ„ํ•œ ์ ‘์†ํฌํŠธ๋ฅผ ์•Œ๋ ค์ฃผ๊ฒŒ ๋˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์‹œ ํ•ด๋‹น ํฌํŠธ๋กœ ์„œ๋ฒ„์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์ ์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ(๊ณต์œ ๊ธฐ ๋“ฑ)์— ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ FTP์˜ ์„ค์ •์„ ์ž˜ ๋ชฐ๋ผ๋„ ์ ‘์†์ด ์šฉ์ด
  • ๋‹จ์ ์€ ์„œ๋ฒ„์—์„œ ๋ฐฉํ™”๋ฒฝ์˜ ๋ฐ์ดํ„ฐ ํฌํŠธ๋ฅผ ์—ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ๋ณด์•ˆ์„ค์ •์— ์†์ด ๋” ๋งŽ์ด ๊ฐ€๊ฒŒ ๋จ
  • active mode์˜ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ ์•ž์— ๋ฐฉํ™”๋ฒฝ์ด ์žˆ๋‹ค๋ฉด ์ ‘์†์ด ๋˜์ง€ ์•Š์ง€๋งŒ passive mode์˜ ๊ฒฝ์šฐ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†์„ ํ•˜๋‹ˆ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐฉํ™”๋ฒฝ๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ์ ‘์†์— ๋ฌธ์ œ๊ฐ€ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

ํ†ต์‹  ๋ฐฉ์‹

HTTP์™€ ๋‹ฌ๋ฆฌ FTP๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์ด ๋งบ์–ด์ง€๋ฉด ํ•ด๋‹น ์—ฐ๊ฒฐ์€ ๋ช…๋ น์–ด ์ž…๋ ฅ์„ ์œ„ํ•ด ๋‚จ๊ฒจ๋†“๊ณ (Control Connection), ํŒŒ์ผ์„ ๋ณด๋‚ผ ๋•Œ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒŒ์ผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.(File Connection)

 

 

 

FTP์™€ TCP์˜ ์ฐจ์ด์ 

TCP๋Š” IP ์œ„์—์„œ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

IP๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฐฐ๋‹ฌ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด, TCP๋Š” ํŒจํ‚ท์„  ์ถ”์  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

TCP๋Š” IP๋ฅผ ์ƒ์†๊ณผ ๊ฐ™์€ ๋А๋‚Œ์œผ๋กœ ๋ฐ›์•„ ๊ตฌํ˜„ํ•ด IP์˜ ๊ธฐ๋Šฅ์€ ๋ณ„๋„๋กœ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

UDP๋„ IP ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ TCP๋‚˜ UDP๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์ž…๋‹ˆ๋‹ค.

 

FTP, HTTP ๋“ฑ์€ TCP ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

HTTP๋Š” ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์›น ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋กœ ํŒŒ์ผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

FTP๋Š” ์ค‘๊ฐ„์— ์ข…๋ฃŒํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์ด์–ด ๋ฐ›๊ธฐ ๊ธฐ๋Šฅ ๋“ฑ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ œ๊ณต ๋˜๊ณ  ์žˆ๊ณ , ๋ฒ”์šฉ์ ์ด์—ฌ์„œ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ๋งŽ๊ธฐ์— TCP๋กœ ๊ตณ์ด ์ง์ ‘ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

TCP์™€ UDP๋Š” ์–ด๋–ค ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋А๋ƒ์˜ ์ฐจ์ด๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • TCP : reliable transport(๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐฉ์ง€), flow control(ํŒจํ‚ท ํ๋ฆ„ ์ œ์–ด), congestion control(ํ˜ผ์žก ์ œ์–ด), connection-oriented( handshake๊ณผ์ •์„ ๊ฑฐ์ณ ๋ฏธ๋ฆฌ ์—ฐ๊ฒฐํ•œ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ), ์†๋„ ๋А๋ฆผ
  • UDP : unrelaible data transfer, ์†๋„ ๋น ๋ฆ„

 

์ผ์ƒ์—์„œ ์ˆ˜์—†์ด ๋งŽ์€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ํŠน์ • ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์ง์ ‘ ์†Œ์ผ“์„ ์—ด๊ฑฐ๋‚˜ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Application Layer๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

์†Œ์ผ“

์„œ๋กœ ๋‹ค๋ฅธ host ๊ฐ„ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ process๋Š” message๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

message๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ socket์ด๋ผ๋Š” ๋ฌธ์„ ํ†ตํ•ด transport layer๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

    '๐Ÿ“• CS ์Šคํ„ฐ๋””/๋„คํŠธ์›Œํฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [DR ๐Ÿ”€] ์žฌํ•ด ๋ณต๊ตฌ / ์ด์ค‘ํ™”,์ด์›ํ™” / ํšŒ์‚ฌ๋ณ„ ํ™˜๊ฒฝ ์‚ฌ๋ก€
    • ๐Ÿ›ข๏ธ [์„œ๋ฒ„ ์œ ํ˜•๋ณ„ ํŒŒ์•…] AP ์„œ๋ฒ„ / Web ์„œ๋ฒ„ / DB ์„œ๋ฒ„ / WAS
    • [Web ๐ŸŒ] WebServer/WAS, ์ •์ ํŽ˜์ด์ง€/๋™์ ํŽ˜์ด์ง€
    • [WEB ๐ŸŒ] CSR/SSR/SSG, SPA/MPA, AJAX ๋ชฝ๋•… ์ •๋ฆฌ
    iknowDev
    iknowDev
    iknowDev ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ SSAFY 8๊ธฐ Java

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”