๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์„œ๋ฒ„/Linux

[Linux] curl ์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด์ž

by yunamom 2022. 4. 6.
728x90
300x250

curl

โœจCURL ์ด๋ž€? 

curl ์˜ ๋ช…์นญ์€ "client URL" ์„ ๋Œ€ํ‘œํ•˜๋Š” ๊ฒƒ์œผ๋กœ 1997๋…„์— ์ฒ˜์Œ ์ถœ์‹œ๋˜์—ˆ๋‹ค.

์ฆ‰ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋กœ์จ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š”๊ฒƒ์„ ๋งํ•œ๋‹ค.

URL์— ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ(transferring) ์œ„ํ•˜์—ฌ

๋ช…๋ น ์ค„ ๋„๊ตฌ(command line tool)์™€ ์Šคํฌ๋ฆฝํŠธ(scripts)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”


๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” C ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์ด๋‹ค.

 

command line tool and library for transferring data with URLs (since 1998)

โœจCURL ์ด ๋ฌด์—‡์— ์“ฐ์ด๋‚˜์š”? 

curl์€ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž๋™์ฐจ, ํ…”๋ ˆ๋น„์ „, ๋ผ์šฐํ„ฐ, ํ”„๋ฆฐํ„ฐ, ์˜ค๋””์˜ค ์žฅ๋น„, ํœด๋Œ€ ์ „ํ™”, ํƒœ๋ธ”๋ฆฟ, ์…‹ํ†ฑ๋ฐ•์Šค, ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด์—์„œ๋„ ์‚ฌ์šฉ๋˜๋ฉฐ,

 

๋งค์ผ ์ˆ˜์‹ญ์–ต ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ธํ„ฐ๋„ท ์ „์†ก ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.


๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ 4๊ฐ€์ง€

๐Ÿ”ธ์ฒซ ๋ฒˆ์งธ, HTTP ํ”„๋กœํ† ์ฝœ

HTTP: HTTP(Hypertext Transfer Protocol)๋Š” ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋Š” ํ”„๋กœํ† ์ฝœ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์˜ ํ”„๋กœํ† ์ฝœ๋กœ TCP/IP์œ„์—์„œ ์ž‘๋™ํ•œ๋‹ค.

๊ฐ€์žฅ ์„ฑ๊ณต์ ์ธ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

HTTP๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ์ธํ„ฐ๋„ท์€ ์ง€๊ธˆ๊ณผ๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๋ชจ์Šต์ด์˜€์„๊ฑฐ๋‹ค.

HTTP๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋“ ์ง€ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋ผ ์žˆ๋‹ค. 

์ธํ„ฐ๋„ท์ƒ์—์„œ ํ”ํžˆ ๋ณผ์ˆ˜ ์žˆ๋Š” HTML๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋Š” HTTP๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํ•œ ์ข…๋ฅ˜์ผ ๋ฟ์ด๋‹ค. 

์ด๋ฏธ์ง€, ๋™์˜์ƒ, ์˜ค๋””์˜ค, ํ…์ŠคํŠธ ๋ฌธ์„œ๋“ค ์•„๋ฌดํŠผ ์ข…๋ฅ˜๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

Transfer๋ผ๋Š” ํ•ด์„ ๊ทธ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฒ ๋‹ค๋ผ๋Š” ์˜๋ฏธ๋กœ 

์•ž์— Hypertext ๊ฐ€ ๋ถ™์€ ์ด์œ ๋Š” ํ•˜์ดํผํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฒ ๋‹ค๋Š”

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋งํฌ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘์†ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋˜๊ฒ ๋‹ค.

HTTP๋Š” ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฅธ๋‹ค. 

ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ(request)๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์„œ ์‘๋‹ต(response)ํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ : ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„ค์น˜๋œ ์ปดํ“จํ„ฐ. chrom, firefox, ie๋“ฑ์˜ ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ด์šฉํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” URI๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์„œ๋ฒ„ : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„์„œ, ์š”์ฒญ์„ ํ•ด์„ํ•˜๊ณ  ์‘๋‹ต์„ ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„ค์น˜๋œ ์ปดํ“จํ„ฐ. Apache, nginx, IIS, lighttpd ๋“ฑ์ด ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด๋‹ค.

์›น์„œ๋ฒ„๋Š” ๋ณดํ†ต ํ‘œ์ค€ํฌํŠธ์ธ 80๋ฒˆ ํฌํŠธ๋กœ ์„œ๋น„์Šคํ•œ๋‹ค.

 

๐Ÿ”ธ ๋‘ ๋ฒˆ์งธ, FTP ํ”„๋กœํ† ์ฝœ

File Transfer Protocol์˜ ์ค„์ž„๋ง์ด๋‹ค. ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ ํŒŒ์ผ์„ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•œ TCP๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

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

 

๐Ÿ”ธ์„ธ ๋ฒˆ์งธ, STMP ํ”„๋กœํ† ์ฝœ

๊ฐ„์ด ์ „์ž ์šฐํŽธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(Simple Mail Transfer Protocol, SMTP)์€ ์ธํ„ฐ๋„ท์—์„œ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์ด์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

์‚ฌ์šฉํ•˜๋Š” TCP ํฌํŠธ๋ฒˆํ˜ธ๋Š” 25๋ฒˆ์ด๋‹ค. 

์ƒ๋Œ€ ์„œ๋ฒ„๋ฅผ ์ง€์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ DNS์˜ MX๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. RFC2821์— ๋”ฐ๋ผ ๊ทœ์ •๋˜์–ด ์žˆ๋‹ค. 

๋ฉ”์ผ ์„œ๋ฒ„๊ฐ„์˜ ์†ก์ˆ˜์‹ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ๋ฉ”์ผ์„ ๋ณด๋‚ผ ๋•Œ์—๋„ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

SMTP๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ๋กœ์„œ ์š”๊ตฌ/์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฟ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ 7bit ASCII๋กœ ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ทœ์ •๋˜์–ด ์žˆ๋‹ค. 

์ด ๋•Œ๋ฌธ์— ๋ฌธ์ž ํ‘œํ˜„์— 8๋น„ํŠธ ์ด์ƒ์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋‚˜ 

์ฒจ๋ถ€ํŒŒ์ผ๊ณผ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ข… ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๋งˆ์ž„(MIME)์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ 7๋น„ํŠธ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค.

SMTP๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ทœ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

๋ฉ”์‹œ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•˜์—ฌ ๋กœ์ปฌ ํŽธ์ง‘์ด๋‚˜ ๋‹จ์ˆœํ•œ ์ „์ž ์šฐํŽธ ์‘์šฉ์ด ์‚ฌ์šฉ๋œ๋‹ค. 

๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ˜ธ์ถœ๋œ SMTP๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  TCP๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์˜ SMTP์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

 

๐Ÿ”ธ๋„ค ๋ฒˆ์งธ, TELNET

ํ…”๋„ท.tele network์˜ ์ค€๋ง. 

๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•ด ์ด์ชฝ ์ปดํ“จํ„ฐ๋ฅผ ๊ทธ์ชฝ์— ์—ฐ๊ฒฐ๋œ ํ„ฐ๋ฏธ๋„๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ธํ„ฐ๋„ท ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

ํ”ํžˆ ์ปดํ“จํ„ฐ ํ†ต์‹ ์„ ํ•  ๋•Œ ์“ฐ๋Š” ์ด์•ผ๊ธฐ ๋“ฑ๊ณผ ๊ฐ™์€ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. 

๋‹ค๋งŒ ํ…”๋„ท์€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด์„œ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ์ ๋งŒ์ด ๋‹ค๋ฅด๋‹ค. 

์‹ค์ œ๋กœ ํ•˜์ดํ…”์ด๋‚˜ ์ฒœ๋ฆฌ์•ˆ ๋“ฑ PCํ†ต์‹ ๋„ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐํ•˜๋ฉด ํ…”๋„ท์œผ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

ํ…”๋„ท ์ ‘์†์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ๋ฐ˜ ํ†ต์‹ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ํ…”๋„ท ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•˜๋‹ค.

 

์ถœ์ฒ˜ : ๋งํฌ

 

๐Ÿ‘‡curl ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ• (http/https ๊ด€๋ จ)

 

[Linux] curl ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ• (http/https ๊ด€๋ จ)

CURL ์ฃผ์š” ์˜ต์…˜ (http/https ๊ด€๋ จ) โœจcurl ๋ช…๋ น์–ด์˜ ์‚ฌ์šฉ๋ฒ• $ curl [options..] ํŠน์ • URL์„ ๋Œ€์ƒ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ URL ์•ž์—๋Š” curl์˜ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. curl ๋ช…๋ น์˜ ์˜ต์…˜์€ GNU getopt๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. curl..

yunamom.tistory.com

 

728x90
300x250

์ฝ”๋“œ