网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。
网络层次可划分为五层因特网协议栈为:物理层,链路层,网络层,运输层,应用层
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
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