http的理解
title: http理解(上)
date: 2018-05-14 11:45:25
tags: http的理解
TCP/IP 通信传输流
首先来看 7层 协议 模型
七层结构记忆方法:应、表、会、传、网、数、物;
image.png其中传输也分为四种协议 应用层, 传输层 网络层 链路层
四层模型.png确保可靠性的TCP协议
三次握手.png为了确保准确无误的将数据送达目标。TCP协议采用了三次握手策略。
相当于 发送端 和 接受端之间的会话 。 你吃了吗?- 吃了。- 好的。
不过在握手过程中使用了TCP的标志 SYN和ACK
发送端首先发送一个带SYN标志的数据包给对方。接受端接受到了后,回传一个带有SYN/ACK的数据包。最后发送端再回传一个带ACK标志的数据包。代表结束。
握手失败该如何处理
第一次握手A发送SYN传输失败,A,B都不会申请资源,连接失败。如果一段时间内发出多个SYN连接请求,那么A只会接受它最后发送的那个SYN的SYN+ACK回应,忽略其他回应全部回应,B中多申请的资源也会释放
第二次握手B发送SYN+ACK传输失败,A不会申请资源,B申请了资源,但收不到A的ACK,过一段时间释放资源。如果是收到了多个A的SYN请求,B都会回复SYN+ACK,但A只会承认其中它最早发送的那个SYN的回应,并回复最后一次握手的ACK
第三次握手ACK传输失败,B没有收到ACK,释放资源,对于后序的A的传输数据返回RST。实际上B会因为没有收到A的ACK会多次发送SYN+ACK,次数是可以设置的,如果最后还是没有收到A的ACK,则释放资源,对A的数据传输返回RST
简单的HTTP协议
通常我们发送一个请求给服务器,服务器会给我们返回。
我们的请求,通常包括 方法 - URI - 版本协议 - 请求首部字段 - 内容实体
POST /from/entry HTTP /1.1
Host:hackr.jp
Connection:keep-alive
Content-Type:application/x-www-form-urlencoded
Content-Length:16
name=krislee & age = 25
请求的方法
GET POST PUT HEAD DELETE OPTIONS TRACE
Connection
持久连接的好处在于 减少了TCP链接的重复建立 和 断开 所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP请求和响应能够更早的技术。这样Web页面的显示速度也就相应的提高。
cookie
服务器端是不保存请求和响应的状态的。这时候应该如何处理?
返回结果的HTTP状态码
2XX 成功
3XX 重定向
4XX 客户端错误
5XX 服务器端错误
与HTTP协作的Web服务器
一台Web服务器可搭建多个独立域名的Web网站,也可作为通信路径上的中转服务器提升传输效率。
用单台虚拟机实现多个域名
方式通过虚拟主机的方式实现。
通信数据的转发程序:代理、网关、隧道
代理:
一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接受由客户端发送的请求并转发给服务器,同时也接受服务器发送的响应并转发给客户端。
代理服务器的基本行为就是接受客户端发送的请求后转发给其它服务器。不改变请求URI,直接发送给前方持有资源的目标服务器。持有资源实体的服务器被称为源服务器。从源服务器返回的响应经过代理服务器后再传给客户端。
在HTTP通信过程中,可级联多台代理服务器。请求和响应的转发会经过数台类似锁链一样连接起来的代理服务器。转发时,需要附加Via首部字段以标记出经过的主机信息。
-
利用缓存技术减少网络带宽的流量
*缓存代理:代理转发响应时,缓存代理会预先将资源的副本保存在代理服务器上。 当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。
-
组织内部针对特定网站的访问控制
通过设置组织内部的代理服务器可做到针对特定URI访问的控制。
- 以获取访问日志为主要目的
网关:
利用网关可以由HTTP请求转化为其它协议通信。 网关的工作机制和代理十分相似。
-
如果一个服务器是非HTTP服务器,而客户端想用HTTP协议与该服务器进行通信,那就要借助网关啦。因为网关能把HTTP协议转化为非HTTP协议,把非HTTP响应转化为HTTP响应。
-
利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。
隧道
隧道可按要求建立起一条与其它服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。
隧道本身不会去解析HTTP请求。也就是说,请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。
HTTP首部
HTTP首部报文
HTTP报文的结构 由 报文首部,空行(CR+LF)报文主体
HTTP请求报文 在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。
下面我截取一段信息
![屏幕快照 2018-05-14 下午3.10.53.png](https://img.haomeiwen.com/i5531021/4e1bea73071968d8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)