应用层协议——HTTP

Posted Jqivin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用层协议——HTTP相关的知识,希望对你有一定的参考价值。


在浏览器中输入url回车之后会发生什么

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户
URL简介

http概述

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

http本身是无连接的,它只是使用了面向连接的运输层的TCP协议,保证了数据的可靠传输。虽然http使用了tcp连接,但是通信的双方在交换http报文之前不必建立连接。
http是无状态的,也就是说,同一个客户第二次访问服务器上的统一个页面的时候,服务器的操作是一样的。这样做的优点是,不需要维护客户端的信息,简化了服务器的设计,让服务器可以支持大量的连接。

http连接方式

1.非持久连接:close

http/1.0采用非持久连接。每次浏览器请求一个文件,都要与服务器建立TCP连接,当受到响应之后立即关闭连接。

缺点:每次请求一个文档都会有两倍的RTT开销。以前对于那些静态页面还好,现如今网页内容很丰富,如果网页上有很多连接,呢没打开一个连接就要有2RTT时间的开销。
浏览器会维护很多资源。
在这里插入图片描述

2.持久连接:keep-Alive

在这里插入图片描述
HTTP/1.1的持续连接有两种工作方式:非流水线方式,流水线方式。

非流水线方式特点是,用户在未收到上一条响应之前不会发送下一条请求。因为服务器在发送完一个对象后,TCP连接就处于了空闲状态,浪费了服务器的资源。
流水线方式的特点是,在用户收到http响应报文之前,就能够发送下一条报文。是TCP链接中的空闲减少,大大的挑高了效率。

http报文格式

http有两种报文格式:请求报文和响应报文。

1.请求报文

在这里插入图片描述

首行使用了相对的URL地址是因为,下面的首部行写明的主机的域名host。

在这里插入图片描述

GET 和 POST方法的区别:post方法用来获取传输实体的主体,虽然有时候get方法也可以获得传输实体的主体,但是一般不使用get,get主要用来请求URL指定的文档资源。
在这里插入图片描述
在这里插入图片描述

OPETIONS:可以用来查询针对请求URL指定的资源支持的方法;
在这里插入图片描述

CONNECT方法要求在通信的时候与代理服务器建立隧道,实现用隧道协议进行通信。主要使用SSL.TSL协议把信内容加密后经过网络隧道进行传输。
格式:CONNECT 代理服务器名:端口号 协议版本

2.响应报文

每一个请求报文发出之后都能收到一个响应报文,响应报文也是三部分组成。
短语是指解释状态码的短语。
在这里插入图片描述
在这里插入图片描述
状态码的含义:
在这里插入图片描述

在服务器上存放用户的信息——Cookie

cookie介绍

早期的上网需求很简单,浏览一些静态的网页,所以http被设计成是无状态的,但是现在有些时候我们却需要知道用户的一些状态信息,比如购物网站需要维护购物车里的信息,保存登录的账号和密码等操作。要做到这一点,可以再HTTP中使用cookie。
cookie愿意是小甜饼的意思,在这里指的是服务器和客户传递的信息。很多网站现在已经使用了cookie。Cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。也就说,Cookie是一种对无状态的HTTP进行状态化的技术。

工作过程
在这里插入图片描述
我们以这张图来看,当客户A浏览某个使用cookie的网站的时候,该网站的服务器就会维A产生一个惟一的识别码,并以此作为索引在网站的后端服务器的数据库中建立一个项目。接着再给A的响应报文中添加一个Set-cookie的首部行。例如:

Set-cookie: 12345678

当A收到这个响应报文后,其浏览器就会在他管理特定的Cookie文件中添加一行,其中航包括这个服务器主机的主机名和Set-cookie后面给出的是捏吗。当A继续浏览这个网页的时候,每发送一个请求报文,其浏览器就会从Cookie文件中取出这个网站的识别码,并放到HTTP请求报文的Cookie首部行中,例如:

Cookie:12345678

于是,这个网站就能够跟踪用户A在该网站的活动。其实服务器并不知道用户A的真实姓名和其他信息,但是服务器可以知道用户A在神秘时候访问了什么页面。如果A是在网上购物,那么服务器可以为他维护一个列表记录加入购物车中的商品。

代理服务器

在这里插入图片描述
如果原始服务器的内容更新了怎么版?

是这样处理的,代理服务器通常会为每个响应的对象设置有效日期字段(Expired)和修改时间字段(Last-Modified)来表示对象的状态。
当判断这个对象没有过期,就返回这个对象给客户。
当判断这个对象过期了,就会重新想原始服务器请求资源,如果发现资源并没有改变,就重新设置上面的两个字段。如果过期了就更新对象。

在这里插入图片描述
在这里插入图片描述

HTTP与HTTPS的区别

HTTP与HTTPS的区别
HTTP与HTTPS的区别
SSL

参考:
 《计算机网络第七版》谢希仁
  计算机网络微课堂.湖科大教书匠
  https://blog.csdn.net/pp_l_ly/article/details/106223958

以上是关于应用层协议——HTTP的主要内容,如果未能解决你的问题,请参考以下文章

JSSIP了解-----JS在通讯中的应用(使用sip协议)---阿冬专栏!!

JSSIP了解-----JS在通讯中的应用(使用sip协议)---阿冬专栏!!

怎么用http协议实现安卓数据

计算机网络——应用层-Web&HTTP

CPNtools协议建模安全分析---实例变迁标记

代码改变世界之http