curl가 하는 일은 무엇인가?
cURL은 프로젝트이고 이것의 주요 목적과 촛점은 2개의 제품을 만드는 것이다:
- curl, 커맨드 라인 도구
- libcurl, C API를 갖는 전송 라이브러리
두개의 도구와 라이브러리는 인터넷 프로토콜(IP)를 사용하여 URL로 명시된 자원을 인터넷 전송하는 것을 수행한다.
인터넷 프로토콜(IP) 전송과 관련된 모든것은 curl의 비지니스로 간주 될 수 있다. 이것과 관련 없는 것들은 피해야 하고, 다른 프로젝트와 제품으로 남겨두어야 한다.
전송되는 실제 데이터를 다루는 것을 curl과 libcurl이 피하기 위한 노력을 고려하는 것은 매우중요할 수 있다. 예를 들어, HTTP또는 HTTP를 통해 전송하기에 유명한 컨텐츠의 어떠한 일부에 관한 지식이 없는 것. 그러나, HTTP를 통해 이러한 데이터를 어떻게 전송하는 지에 대한 모든것은 알고 있다.
두 가지 제품은 인터넷으로 연결된 세상을 위해 수 천, 수백만의 스크립트와 어플리케이션을 다루는 것 뿐만 아니라, 서버 테스팅, 프로토콜 다듬기, 뭔가 새로운것을 찾기 위한 노력을 위해 광범위하게 사용되어지는 것에서도 빈번하게 사용된다.
라이브러리는 자동차, 인포테인먼트, TV, 블루레이 플레이어, 셋탑 박스, 프린터, 라우터, 게임 시스템 등 인터넷 전송이 필요한 임베디드 장치의 모든 상상할 수 있는 종류에서 사용된다.
커맨드 라인 도구
커맨드 라인에서 curl을 구동하는 것은 자연스러웠고, 다니엘(Daniel)은 디폴트로 터미널에서 stdout으로 데이터가 출력되는 것이외에 다른것은 고려하지 않았었다. "모든것은 파이프다"라고 하는 표준 유닉스 철학의 진언은 다니엘이 믿는 것이었다. curl은 'cat' 혹은 다른 유닉스 도구중 하나 같다; 이것은 당신이 원하는 무언가를 하기위해 다른 도구와 함께 체인을 쉽게 만들 수 있도록 데이터를 stdout으로 보낸다. 그것은 또한 왜 가상적으로 파일로부터 읽기와 파일로 쓰기를 허용하는 모든 curl 옵션이 또한 stdout으로 또는 stdin으로 부터 수행할 것을 선택할 수 있는 능력을 가졌는지에 대한 이유이다.
유닉스 커맨드 라인 도구의 스타일에 따라, 커맨드 라인에서 여러 URL을 지원해야 한다는 것에 대해서 전혀 의문의 여지가 없었다.
커맨드 라인 도구는스크립트 또는 다른 자동화된 수단에서 완벽하게 동작하도록 설계되었다. 그것은 단순한 텍스트 입력, 텍스트 출력 뿐만 아니라 다른 GUI 또는 UI를 특징으로 하지 않는다.
라이브러리
커맨드 라인 도구가 처음 나온 동안, 네트워크 엔진은 분리되어 나왔고, 2000년 동안 라이브러리로 전환되었다. 그리고 우리가 여전히 가지고 있는 개념은 2000년 8월에 libcurl 7.1에서 소개되었다. 그 이후에 명령어 라인 도구는 모든 힘든 지우는 라이브러리 주변에 도구를 만들기 위한 로직의 얇은 레이어가 되었다.
libcurl은 소프트웨어, 플랫폼, 아키텍처 및 어떤 목적을 위해 클라이언트 측에 파일 전송 능력을 추가 하길 원하는 모든 사용자를 위해 설계 되었다. libcurl은 또한 장애가 되는 것을 피하기 위해서 극도로 자유롭게 라이센스가 부여된다.
libcurl은 전통적이고 보수적인 C로 작성되었다. 다른 언어가 선호되는 곳에도 사람들은 libcurl 바인딩(https://ec.haxx.se/bindings.html)을 만들었다.