HTTP是TCP/IP的一个子集。
TCP/IP:计算机和网络设备进行通信,双方必须基于相同的方法。
分层:好处,解耦合,修改时只需修改相关层即可。
应用层:向用户提供应用服务时通信的活动。HTTP属于这一层。
传输层:TCP
网络层:IP
链路层
IP的作用是将各种数据包传输给对方。
两个重要条件是IP地址(节点被分配的地址,可变)和MAC(网卡所属的固定地址,不可变)
IP间的通信通过MAC,通过中转设备的MAC来进行连接。
ARP协议:传输通过路由,在未到达之前路线是不确定的。
提供可靠的字节流服务,将大数据流进行分割,并且能确认数据是否送达对方。
通过三次握手来确保通信的可靠性。
提供域名到IP地址之间的解析服务。
计算机可以用IP地址表示,也可以用主机名加域名表示,习惯上,在访问别人计算机时,通过主机名加域名进行访问。
根据解析的IP地址生成对目标服务器的HTTP请求报文。
后者是前者的子集。
以http://user:pass/hacker.jp:8888/dir/index.htm?uid=1#ch1
协议方案名:如http: 、https:、不区分字母大小写,后面要加:。
登录信息(认证):如 user:pass、此项是可选项。
服务器地址:分为三类,1、可用DNS解析的地址,如hacker.jp;2、IPV4:如192.168.0.1;3、IPV6
[0:0:0:0:0:0:0:0:1]通过方括号括起来。
服务器端口号:如8888,此项也是可选项,若被省略时,使用默认端口号。
带层次的文件路径:类似于目录结构。
查询字符串:此项可选,通过输入参数,使用特殊的查询方法
片段标识符:可选。
HTTP是一种不保存状态,即无状态协议。可以减少资源损耗,并且因为其简单,所以被广泛应用。
为了保存状态,引入了Cookie技术。
GET:获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获取报文首部
DELETE:删除文件
OPTIONS:访问支持的方法
CONNECT:使用隧道协议连接代理
通过在请求和响应报文里写入Cookie信息来控制客户端状态。
由报文首部和报文主体(可省略)两部分组成,中间通过空行间隔。
请求行:请求的方法、请求的URI、HTTP的版本。
首部字段:包括
状态行:表明状态转移结果的状态码、原因短语、HTTP版本。
首部字段:同上。
通常,报文主体即是实体主体,但当发生编码时,二者会有区别,编码会提升效率,但会占用CPU资源。
在传输此类对象时,要在报文主体首部加上Content-type。
报文主体首部加Range
200 OK:请求正常处理
204 No Content:请求处理,但无资源返回
206 Partial Content: 部分返回
301 Moved Permanently 永久性重定向
302 Found 临时性重定向
303 Set Other
304 Not Modified 不符合申请的条件要求
400 Bad Request 请求报文存在语法错误
401 Unauthorized
403 Forbidden 请求被拒绝
404 Not Found 请求被拒绝
500 Internal Sever Error 服务器在执行请求时发生错误
503 Service Unavailable 服务不可用
一台Web服务器可以搭载多个独立域名的Web网站,也可为通信服务的中转服务器提升效率。
在客户端和服务器之间传输时,还需要用到的应用程序,代理、网关、隧道。
代理:提供中转业务
网关:可以将非HTTP协议转为HTTP协议。
隧道:确保客户端和服务器的安全通信。
使用首部字段是为了给浏览器和服务器提供报文大小、所使用的语言、认证信息等内容。
首部字段名:字段值
分为四类:通用首部字段、请求首部字段、响应首部字段、实体首部字段。
Cache-Control:控制缓存
Connection:1、控制不在转发给代理的首部字段;2、管理持久连接
Date:创建报文的日期和时间。
Trailer:记录报文主体后出现的首部字段。
Transfer-Encoding:报文主体传输采用的编码方式。
Upgrade:申请使用更高的版本号
Via:追踪客户端和服务器之间的请求以及响应报文的传输路径
Warning:提供和缓存相关的警告
Accept:将客户端可以处理的文件格式向服务器说明
Authorization:提供认证信息
Expect:希望服务器出现的特定行为
From:告知服务器客户端的联系方式
Host:对在一个服务器上的虚拟机进行区分
If-XXX: 条件请求,只有条件为真时,服务器才会执行请求。
Max-forwards: 最大继续传输深度
Range: 只获取部分资源的要求
Referer :告知服务器原始请求资源的URI
Accept-Ranges:响应报文中使用的字符首段。
http缺点:内容可能被窃听,遭遇伪装,内容被篡改。
通信的加密:再加入SSL技术后,http变为https。
内容的加密:需要客户端和服务器具有解码功能。
HTTPS是身披SSL外壳的HTTP,是HTTP的通信接口被SSL代替。
使用公开密钥交换将要使用的共享密钥,而后采用共享密钥进行交换信息,因共享密钥的速度快于公开密钥。
通过认证机构提供的证书来确保公开密钥的正确性。
通过认证机构的服务器还证明这公司的确实存在,即是实力的证明,也是防止钓鱼。
HTTPS传输要比HTTP慢,且占用资源量较大。且需要购买证书,因此个人网站采用HTTP
直接以用户名和密码进行传输
服务器将质询码传递给客户端,然后客户端将响应码返回。
当用户名和密码被盗窃时,但仍需要客户端证书才能登录。
大部分使用的认证方式。
超文本标记语言:Web页面上大部分是以HTML进行编写的。HTML经浏览器打开进行渲染后,展现的就是Web页面。