优秀的编程知识分享平台

网站首页 > 技术文章 正文

文件传输工具curl来剖析http请求与https请求

nanyue 2024-10-23 12:08:38 技术文章 2 ℃

curl是一个利用URL语法在命令行下工作的文件传输工具,它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。

这篇就用curl这个工具来查看一下http请求与https的请求过程。首先在命令行中输入curl -v http://www.baidu.com,结果如下:

其中前两行:Rebuilt URL to: http://www.baidu.com/和Trying 182.61.200.6...是请求了DNS,也就是域名解析服务器,找出对应的IP地址,进而去请求IP地址;

第三行:TCP_NODELAY set是建立了TCP连接,这也说明HTTP协议是基于TCP连接的

第四行:Connected to www.baidu.com (182.61.200.6) port 80 (#0)是向你请求的服务器建立了连接;

下面就是请求与响应的过程,其中>是客户端向服务器请求的标志,<是服务器向客户端响应的标志。

第五行:GET / HTTP/1.1,是请求方式和请求协议及版本;

第六行:Host: www.baidu.com,是请求的主机;

第七行:User-Agent: curl/7.54.0,是请求的客户端,这里用的是curl工具;

第八行:Accept: */*,意思是接受任何MIME类型的资源;

接下来开始就是服务器向客户端的响应了。

第九行:HTTP/1.1 200 OK,是交流所用的协议及版本号,响应的状态码及信息;

状态码信息:

1xx表示临时响应;

2xx表示成功的响应

3xx表示重定向相关

4xx表示是客户端引起的错误;

5xx表示服务端的错误。

第十行:Accept-Ranges: bytes,响应的 HTTP 标头是由服务器使用以通告其支持部分请求的标志物。此字段的值表示可用于定义范围的单位。

第十一行:Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform,与缓存设置相关的信息;

第十二行:Connection: Keep-Alive,由于http连接是无状态的,有了这个属性,就可以在设定的时间范围内保持连接;

第十三行:Content-Length: 2381,响应内容的长度;

第十四行:Content-Type: text/html,响应文件的类型;

第十五行:Date: Sat, 20 Jul 2019 11:28:20 GMT,是日期;

第十六行:Etag: "588604c8-94d",与响应相关的标签;

第十七行:Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT,最后一次被修改的日期和时间;

第十八行:Pragma: no-cache,另一种随报文传送指示的方式,但并不专用于缓存;

第十九行:Server: bfe/1.0.8.18,服务器应用程序软件的名称和版本

第二十行:Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/,cookie设置的相关信息;

接下来的<!DOCTYPE html>就是响应的内容,在浏览器中经过渲染就可以看到那个简单又大方的界面。

以上是通过工具curl请求http的过程,下面来瞧瞧curl来请求https的过程:

从图中可以很明显看出,https多了安全认证的过程:

经过握手认证之后,才向你请求的服务器资源发起了请求。

所以说https较http安全,就是多了一层ssl,也就是安全认证的过程,之后就在安全传输层进行数据交换。

Tags:

最近发表
标签列表