初识HTTP

459 阅读4分钟

网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。

网络层次可划分为五层因特网协议栈为:物理层,链路层,网络层,运输层,应用层

HTTP(HyperText Transfer Protocol,超文本传输协议) 是 Web 的应用层协议, 使用TCP运输协议,规定了客户端和服务端通过 请求(requests)与响应(responses)进行交互。

HTTP requests(请求报文)格式

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成

请求行(request line):
请求方法 空格 URL 协议版本 回车符 换行符

首部行(header line):
头部字段名   :   值  回车符 换行符
……
头部字段名   :   值  回车符 换行符

空行: 
回车符 换行符

请求数据 实体(entity body):
GET方法时为空,POST方法中使用。
POST方法适用于需要客户填写表单的场合。
与请求数据相关的最常使用的请求头是Content-Type和Content-Length。 

HTTP responses(响应报文)格式

HTTP响应报文分为四个部分:初始状态行(status line),6个首部行(header line),空行 ,响应正文 实体(entity body)

初始状态行(status line):
HTTP协议版本字段 响应状态代码 相应状态描述信息

首部行(header line):
Connection: close 服务器发送报文后是否关闭
Date 服务器检索到文件的时间
Server :Apache 服务器系统
Last-Modified:对象创建或最后修改时间
Content-Length:文件对象字节数
Content-Type:对象文件类型

空行: 
回车符 换行符

响应正文 实体(entity body):

用Chrome开发者工具查看 HTTP 请求与响应

1.通过F12或浏览器设置选项打开开发者工具 2.切换至 Network 标签栏 3.刷新网站或输入新网址 4.监听到有关请求及响应的文件 5.点击文件名,切换至Headers标签,包括General,Response Headers,Request Headers

6.点击对应的下拉框查看数据,默认解析展示

7.点击view source 查看原文

如何使用 curl 命令

cURL是一个利用URL语法在命令行下工作,支持文件上传和下载的文件传输工具

语法:

curl [选项][参数]  

curl的常用选项:

-A/--user-agent <string> 设置用户代理发送给服务器,即告诉服务器浏览器为什么
-basic 使用HTTP基本验证
--tcp-nodelay 使用TCP_NODELAY选项
-e/--referer <URL> 来源网址,跳转过来的网址
--cacert <file> 指定CA证书 (SSL)
--compressed 要求返回是压缩的形势,如果文件本身为一个压缩文件,则可以下载至本地
-H/--header <line>自定义头信息传递给服务器
-I/--head 只显示响应报文首部信息
--limit-rate <rate> 设置传输速度
-u/--user <user[:password]>设置服务器的用户和密码
-0/--http1.0 使用HTTP 1.0

实例

文件下载

curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用yum install curl安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用--silent选项。

curl URL --silent

这条命令是将下载文件输出到终端,所有下载的数据都被写入到stdout。

使用选项-O将下载的数据写入到文件,必须使用文件的绝对地址:

curl http://man.linuxde.net/text.iso --silent -O

选项-o将下载数据写入到指定名称的文件中,并使用--progress显示进度条:

curl http://man.linuxde.net/test.iso -o filename.iso --progress
######################################### 100.0%

断点续传

curl能够从特定的文件偏移处继续下载,它可以通过指定一个便宜量来下载部分文件:

curl URL/File -C 偏移量

#偏移量是以字节为单位的整数,如果让curl自动推断出正确的续传位置使用-C -:
curl -C -URL

使用curl设置参照页字符串

参照页是位于HTTP头部中的一个字符串,用来表示用户是从哪个页面到达当前页面的,如果用户点击网页A中的某个连接,那么用户就会跳转到B网页,网页B头部的参照页字符串就包含网页A的URL。

使用--referer选项指定参照页字符串:

curl --referer http://www.google.com http://man.linuxde.net

用curl设置cookies

使用--cookie "COKKIES"选项来指定cookie,多个cookie使用分号分隔:

curl http://man.linuxde.net --cookie "user=root;pass=123456"

将cookie另存为一个文件,使用--cookie-jar选项:

curl URL --cookie-jar cookie_file