应用层协议——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协议)---阿冬专栏!!