网站首页 > 技术文章 正文
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,也就是安全认证的过程,之后就在安全传输层进行数据交换。
猜你喜欢
- 2024-10-23 微软发布6月Win11累积更新KB5039212/KB5039213
- 2024-10-23 快速体验之《gor+diffy实现线上流量复制到测试环境》
- 2024-10-23 Colbie Caillat: Try(colbiecaillattry歌词)
- 2024-10-23 基于阿里云 ASK 的 Istio 微服务应用部署初探
- 2024-10-23 浅谈ElasticSearch 集群部署(elastic集群配置)
- 2024-10-23 Python项目中跟踪系统导入Zipkin(基于python的目标跟踪算法)
- 2024-10-23 JVM参数及调优(jvm调优常用参数)
- 2024-10-23 Elasticsearch的路由routing的应用技巧
- 2024-10-23 如何将Elasticsearch的快照备份至OSS
- 2024-10-23 利用工具curl来查看http请求和https请求
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 506℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 485℃MySQL service启动脚本浅析(r12笔记第59天)
- 465℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 463℃启用MySQL查询缓存(mysql8.0查询缓存)
- 443℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 422℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)