✅ curl이란?
curl (Client URL)은 데이터 전송을 위한 명령어 기반 툴 및 라이브러리입니다.
주로 HTTP, HTTPS, FTP, SFTP, SCP 등 다양한 프로토콜을 지원하며, 웹에서 데이터를 가져오거나 업로드하는 데 사용됩니다.
1. curl의 주요 특징
✔ 다양한 프로토콜 지원 – HTTP, HTTPS, FTP, SFTP, SCP, LDAP 등
✔ 파일 다운로드/업로드 가능 – wget처럼 파일을 내려받거나 업로드 가능
✔ API 요청 및 응답 처리 가능 – REST API 호출 및 JSON 데이터 전송 가능
✔ 다양한 인증 방식 지원 – Basic Auth, Bearer Token, OAuth 등
✔ SSL/TLS 지원 – HTTPS 요청 가능 (OpenSSL, NSS, GnuTLS 등 사용)
✔ 운영체제(OS) 독립적 – Windows, Linux, macOS 등에서 사용 가능
2. curl 기본 사용법
📌 1) 웹페이지 내용 가져오기 (GET 요청)
curl https://example.com
👉 해당 웹사이트의 HTML을 출력
📌 2) 파일 다운로드
curl -O https://example.com/file.zip
👉 -O 옵션: 원본 파일명을 유지하며 다운로드
📌 3) 파일 업로드 (FTP 사용)
curl -T myfile.txt ftp://example.com --user username:password
👉 -T 옵션: FTP 서버에 파일 업로드
📌 4) HTTP POST 요청 보내기
curl -X POST -d "name=John&age=30" https://example.com/api
👉 -X POST 옵션으로 POST 요청 수행
👉 -d 옵션으로 데이터 전송
📌 5) JSON 데이터 전송 (REST API 호출)
curl -X POST -H "Content-Type: application/json" -d '{"name":"Alice"}' https://example.com/api
👉 -H 옵션으로 헤더 추가
👉 -d 옵션으로 JSON 데이터 전송
3. curl과 wget 차이점
구분 | curl | wget |
주요 목적 | 데이터 전송 및 API 호출 | 파일 다운로드 |
지원 프로토콜 | HTTP, HTTPS, FTP, SCP, SFTP 등 | 주로 HTTP, HTTPS, FTP |
파일 다운로드 | 가능 (-O, -o 옵션) | 가능 (기본 기능) |
API 요청 가능 | 가능 (-X, -d, -H 옵션) | 제한적 |
반복 다운로드 | 수동 설정 필요 | 기본 제공 (-r 옵션) |
👉 curl은 다양한 프로토콜과 API 호출 지원이 강점, wget은 대량 다운로드에 최적화!
4. curl 라이브러리(libcurl)
curl은 단순 명령어 도구뿐만 아니라 libcurl이라는 C 기반 라이브러리를 제공하며, 이를 활용하면 프로그램에서 curl 기능을 사용할 수 있음.
📌 libcurl을 사용하는 언어 예시
- C/C++
- Python (pycurl)
- PHP (cURL 확장)
- Java (JcURL 라이브러리)
예제 (Python에서 pycurl 사용)
import pycurl curl = pycurl.Curl() curl.setopt(curl.URL, "https://example.com") curl.perform() curl.close()
5. 결론
- curl은 데이터를 송수신하는 범용 도구로, REST API 호출, 파일 다운로드, 업로드, 인증 요청 등 다양한 용도로 활용 가능
- libcurl을 활용하면 프로그램에서도 curl 기능을 쉽게 사용 가능
- wget은 주로 다운로드에 특화, curl은 다양한 기능 지원
즉, curl은 웹과 네트워크 프로그래밍에서 필수적인 도구
'IT' 카테고리의 다른 글
MGMT VPC 란? (0) | 2025.04.14 |
---|---|
Transit GW와 Internet GW 차이는? (0) | 2025.04.14 |
백업관리와 소산관리의 차이는? (0) | 2025.03.31 |
cmd 창에서 ipconfig 명령어 쳤을 경우 나오는 결과 의미는? (0) | 2025.03.09 |
cmd창에서 telnet으로 ip, port 명령어 쳐서 통신 확인하는 방법은? (0) | 2025.03.09 |