Http基本原理大全(总结)

---恢复内容开始---

要了解http协议,首先需要了解TCP/IP协议族

由上图可知,客户端想要浏览某个网页时,首先HTTP协议会生成针对目标Web服务器的HTTP请求报文,然后就到了运输层,TCP协议的目的,则是把HTTP请求报文切割成多个报文段(为了方便通信),接着传递到网络层,而IP地址的主要作用就是把数据包传递给对方,但是同时他又依赖于链路层的MAC地址,实际上的通信需要经过多次中转,才能到达目标服务器,怎么找到目标服务器的MAC地址呢?我们可以通过ARP协议来进行解析,就可以反查出对应的MAC地址,在链路层中与目标服务器进行比对,可以找到最终目标服务器,如图,发送方每经过一层就会添加该层的首部信息,目标服务器就会根据此标志获取到最终传递的HTTP请求内容,再根据请求内容,获取客户端需要访问的资源,最后如图反方向传递回给客户端。

如上有以下几个问题:

1.传输层中TCP协议将HTTP请求分割成了多个数据包,那么怎样确定数据能准确到达目标服务器呢?

   这里TCP协议采用了三次握手的策略,在发送数据包时会加上SYN的标志,当目标服务器接收到数据包返回时会加上SYN/ACK的标志,然后再发送ACk的数据包,代表握手结束

2.通常用户都是采用主机名或者域名来访问对方的计算机,但是计算机理解数字比一串字符来说容易的多,怎么将域名转换为IP地址呢?他又是在上图的哪一个步骤中?

   实际在发送HTTP请求前,客户端会先访问DNS服务器,他会将访问的域名转换为对应的IP地址,然后在生成对应的HTTP请求报文。。。

接下来进入重点内容,HTTP协议:

  • HTTP是无状态协议

  指的是HTTP协议本身不具备保存之前发送的请求或响应的功能。

      无状态会造成什么影响呢??举个例子,当用户登录后跳转到首页,接着又从首页跳转到其他页面,此时页面肯定忘记用户,又需要重新登录,这样势必体验性完全不好,所以就引入了Cookie技术。Cookie技术将在后面讲解,点此跳转到Cookie部分

  • HTTP/1.1中的请求方法
  1. GET(将请求条件内容添加在URL地址后,有大小限制,且对敏感信息不安全)
  2. POST(请求条件内容添加在请求主体中 )
  3. PUT(传输文件,因为自身不带验证机制,所以存在安全性问题,一般不使用该方法)
  4. HEAD(只用于获取响应首部,一般用来确认URI的有效性,资源更新的日期时间)
  5. DELETE(删除文件,同PUT,一般不使用)
  6. OPTIONS(用来查询服务器支持的资源方法(比如GET,POST等))
  7. TRACE(用来追踪通信路径,但是容易引发XST(跨站追踪),通常不使用)
  8. CONNECT(与代理服务器(后面解释)建立隧道,用隧道协议(一般是SSL和TLS)来进行TCP传输)

  HTTP/1.0 支持的方法GET/POST/PUT/HEAD/DELETE

  • 持久连接

  前面讲到三次握手协议,在HTTP/1.0中每发起一次请求,请求完成后就会断开,那下一次请求又需要再次握手,这大大增加了通信量的开销,那后面就提出了持久连接,只需要一次握手协议,就可以不断发送请求和响应数据,HTTP/1.1中默认打开,HTTP/1.0需要自己设置

  谈到持久连接,我们需要理解一个知识点,管线化(仅HTTP/1.1支持,某些浏览器默认未打开),持久连接时,客户端发送一个请求需要等待服务器响应后,才能发送下一个请求,这个肯定给用户带来的体验不好,而管线化则可以同时并行发送多个请求,减少了页面加载资源的时间

  • Cookie

  原理:服务器会在响应报文中添加一个Set-Cookie字段,通知客户端保存此Cookie,下次请求时在请求报文中添加此Cookie字段,就可以保存信息

  • HTTP报文

  分为请求报文和响应报文

  

猜你喜欢

转载自www.cnblogs.com/JiaFanFan/p/10532991.html