cURL-01-基本概念與瞭解


title: cURL-01_基本概念與瞭解
date: 2019-11-03 11:59:28
tags: [cURL]
categories: cURL

一、基本概念

cURL(Client URL Library Functions)is a command line tool for transfering data with URL syntax(使用 URL 語法傳輸數據的命令行工具),即客戶端向服務器請求資源的工具。
在這裏插入圖片描述

curl庫是C語言封裝的一個強大的庫,使用curl比封裝socket更加方便。

cURL 最初的設計初衷是使用不同的協議(比如 FTP、HTTP、SCP 等)在端點之間移動文件。它最初是一個命令行實用工具,但現在也是一個綁定了 30 多種語言的庫。因此,現在不僅可以通過 shell 使用 cURL,您還可以構建合併了這個重要功能的應用程序。libcurl 庫也是可以移植的,支持 Linux®、IBM®AIX®操作系統、BSD、Solaris 以及許多其他 UNIX®變體。

cURL是一個命令行工具和庫,實現了各種客戶端協議。它支持 12 種以上的協議,包括 FTP、HTTP、Telnet 以及其他安全變體。許多平臺上都能找到 cURL,包括 Linux、AIX、BSD 和 Solaris,它支持 30 多種語言。

PycURL是 libcurl API 之上的一個薄層,PycURL 速度非常快。使用 PycURL,您可以使用 libcurl 庫開發 Python 應用程序。

關於cURL,這裏有更詳細的介紹。

二、使用場景

1.網頁資源(例如編寫網頁爬蟲)

2.WebService 數據接口資源(比如動態獲取接口數據,比如天氣、號碼歸屬地等)

3.FTP 服務器裏的文件資源(下載 FTP 服務器裏面的文件)

4.其他資源(所有網絡上的資源都可以使用 cURL 訪問和下載到)

三、延伸(爲什麼要用cURL)

開發 HTTP 和 FTP 之類依賴於應用層協議的應用程序並不複雜,但也不簡單。進一步講,這不是應用程序的重點,因爲大部分情況下,協議之上的內容纔是真正重要的內容。因此,libcurl 引起了許多人的興趣,因爲它的重點是應用程序而不是開發的各個方面。注意,很少有應用程序開發自己的 TCP/IP 堆棧,所以老話重提:儘可能重用以最小化開發安排並提高應用程序的可靠性。

關於Web 協議

如今構建應用程序已與過去大不相同。現在的應用程序需要能夠通過網絡或 Internet 進行通訊(提供人類可用的網絡 API 或接口),還要能支持用戶腳本化以提高靈活性。現代應用程序通常使用 HTTP 公開 Web 接口,並通過 Simple Mail Transport Protocol (SMTP) 提供警告通知。這些協議允許您將 Web 瀏覽器指向設備以獲得配置或狀態信息,並從設備或常用的電子郵件客戶端接收標準電子郵件(分別通過 HTTP 和 SMTP)。

這些 Web 服務通常構建在網絡堆棧的套接字層上(見圖 1)。套接字層實現一個最先出現在 Berkeley Software Distribution (BSD) 操作系統上的 API,並提取底層傳輸和網絡層協議的詳細信息。

圖 1. 網絡堆棧和 libcurl

在這裏插入圖片描述

Web 服務發生在客戶端和服務器之間的協議對話中。在 HTTP 上下文中,服務器是終端設備,客戶端是位於端點上的瀏覽器。對於 SMTP,服務器是郵件網關或端點用戶,客戶端是終端設備。在某些情況下,協議對話發生在兩個步驟(請求和響應)中,但另一些情況下,需要協商和通訊的通信量更多。這種協商可能增加了大量複雜性,這可以通過 API 進行抽象,比如 libcurl。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章