本文主要是介绍java复习网络重点协议 —— 应用层,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
应用层
应用层的作用: 为用户的应用进程提供网络通信服务的 应用层的协议: HTTP协议
HTTP协议
http协议是干嘛的? HTTP: 超文本传输协议,规定了浏览器和万维网服务器之间互相通信的规则。是一种应用层协议,工作在TCP之上。 HTTP就是一个通信规则,通信规则规定了客户端给服务的发送的内容格式,也规定了服务器给客户端的内容格式。 客户端发送给服务端称为请求协议 服务端发送给客户端称为响应协议 它是通过请求和响应交换达成的通信的 无状态 是一种不保存状态的协议 无连接 每次连接就只处理一个请求 处理完就断开 支持服务器/客户端模式 简单快速
工作流程:
浏览器分析URL 浏览器向DNS请求解析IP地址 DNS解析出了IP地址 浏览器与服务器建立TCP连接 浏览器发送HTTP请求:GET/chn/index.htm 服务器通过HTTP相应吧文件相应文件index.htm发送给浏览器 释放TCP连接 浏览器解析index.htm文件。并把web页显示给用户
HTTP的请求报文首部
首行: 方法 URL 版本
HTTP的相应
HTTP常用的方法:
get一般用于获取/查询资源信息,是对应增删查改中的查只是单纯的获取资源 post一般用于更新资源信息,语义上是对应的增需要提交信息到服务器
GET方法和POST方法的区别?
GET方法不携带请求体 POST方法要携带请求体 GET方法对数据的长度有限制 必须在1K之内 POSt对数据的大小没有限制 GET只允许ACSII字符,POST方法对字符要求是无限制的 GET方法的安全性能较差 因为发送的数据是URL的一部分 POST安全性能好,请求数据可以放到请求正文里 GET请求数据会显示在URL中,对所有人都是可见的 ,POST请求数据不会显示在URL中
PUT和POST方法的区别?
PUT请求: 如果两个请求相同,第二个会把第一个请求覆盖掉;(用PUT来改资源) POST请求:如果两个请求相同,第二个不会吧第一个覆盖掉(用POST来增资源) 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的缺点
HTTPS要比HTTP消耗更多的服务器资源 访问不如HTTP高效 HTTPS并不能防止站点被网络蜘蛛抓取。在某些情形中,被加密资源的URL可仅通过截获请求和响应的大小推得,这就可使攻击者同时知道明文(公开的静态内容)和密文(被加密过的明文),从而使选择密文攻击成为可能。 SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用 SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
HTTP和HTTPS的区别
HTTP是以http 开头的Https是以https开头的 http是不安全的是明文传输的 https是安全的具有安全性的SSL加密传输 http标准端口是80 https的标准端口是443 在OSI模型中 HTTP是工作在应用层 HTTPS工作与传输层 http是不需要加密也不需要证书 https是需要加密也需要证书的
HTTP1.0和HTTP1.1的区别
长连接 HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。Host头处理 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。错误通知的管理 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。节约带宽 HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。缓存处理 在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,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。
这篇关于java复习网络重点协议 —— 应用层的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!