ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java复习网络重点协议 —— 应用层

2021-07-17 12:01:34  阅读:168  来源: 互联网

标签:HTTP1.1 HTTP 请求 复习 HTTPS 服务器 java 应用层 客户端


应用层

在这里插入图片描述
应用层的作用: 为用户的应用进程提供网络通信服务的
应用层的协议: HTTP协议

HTTP协议

http协议是干嘛的?
HTTP: 超文本传输协议,规定了浏览器和万维网服务器之间互相通信的规则。是一种应用层协议,工作在TCP之上。
HTTP就是一个通信规则,通信规则规定了客户端给服务的发送的内容格式,也规定了服务器给客户端的内容格式。
客户端发送给服务端称为请求协议 服务端发送给客户端称为响应协议
它是通过请求和响应交换达成的通信的
无状态是一种不保存状态的协议
无连接 每次连接就只处理一个请求处理完就断开
支持服务器/客户端模式
简单快速

工作流程:

  1. 浏览器分析URL
  2. 浏览器向DNS请求解析IP地址
  3. DNS解析出了IP地址
  4. 浏览器与服务器建立TCP连接
  5. 浏览器发送HTTP请求:GET/chn/index.htm
  6. 服务器通过HTTP相应吧文件相应文件index.htm发送给浏览器
  7. 释放TCP连接
  8. 浏览器解析index.htm文件。并把web页显示给用户

HTTP的请求报文首部

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首行: 方法 URL 版本

HTTP的相应

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

HTTP常用的方法:

在这里插入图片描述
get一般用于获取/查询资源信息,是对应增删查改中的查只是单纯的获取资源
post一般用于更新资源信息,语义上是对应的增需要提交信息到服务器

GET方法和POST方法的区别?

  1. GET方法不携带请求体 POST方法要携带请求体
  2. GET方法对数据的长度有限制 必须在1K之内 POSt对数据的大小没有限制
  3. GET只允许ACSII字符,POST方法对字符要求是无限制的
  4. GET方法的安全性能较差 因为发送的数据是URL的一部分 POST安全性能好,请求数据可以放到请求正文里
  5. GET请求数据会显示在URL中,对所有人都是可见的 ,POST请求数据不会显示在URL中

PUT和POST方法的区别?

  1. PUT请求: 如果两个请求相同,第二个会把第一个请求覆盖掉;(用PUT来改资源)
  2. POST请求:如果两个请求相同,第二个不会吧第一个覆盖掉(用POST来增资源)
  3. PUT和POST方法都有更改指定URL的语义,POST如果多次执行产生的效果是一样的

HTTP常见的状态吗

在这里插入图片描述

HTTP和HTTPS

HTTP协议运行在TCP上的,使用明文传输。客户端和服务端无法验证对方的身份
HTTPS是身批SSL外壳的HTTP,运行在SSL上,SSL运行与TCP上,是添加了加密和认证机制的HTTP
1HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并在正确配置时被认为是安全的。
2,HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。
3,HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。

HTTPs访问流程

在这里插入图片描述
(1)客户使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL/TLS连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。

从上面可以总结出HTTPS的优点

(1)客户端产生的密钥只有客户端和服务器端能得到;
  (2)加密的数据只有客户端和服务器端才能得到明文;
  (3)客户端到服务端的通信是安全的。

HTTPS的缺点

  1. HTTPS要比HTTP消耗更多的服务器资源
  2. 访问不如HTTP高效
  3. HTTPS并不能防止站点被网络蜘蛛抓取。在某些情形中,被加密资源的URL可仅通过截获请求和响应的大小推得,这就可使攻击者同时知道明文(公开的静态内容)和密文(被加密过的明文),从而使选择密文攻击成为可能。
  4. SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用
  5. SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

HTTP和HTTPS的区别

  1. HTTP是以http 开头的Https是以https开头的
  2. http是不安全的是明文传输的 https是安全的具有安全性的SSL加密传输
  3. http标准端口是80 https的标准端口是443
  4. 在OSI模型中 HTTP是工作在应用层 HTTPS工作与传输层
  5. http是不需要加密也不需要证书 https是需要加密也需要证书的

HTTP1.0和HTTP1.1的区别

  1. 长连接 HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
  2. Host头处理在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
  3. 错误通知的管理 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  4. 节约带宽 HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。
  5. 缓存处理 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

2 HTTP1.1和HTTP2.0的区别

1 多路复用 HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

在这里插入图片描述
2头部数据压缩 在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费。
HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快
3 服务器推送 服务端推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。
为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。
在这里插入图片描述

标签:HTTP1.1,HTTP,请求,复习,HTTPS,服务器,java,应用层,客户端
来源: https://blog.csdn.net/weixin_42384355/article/details/118852702

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有