Java网络知识点总结——Web服务之HTTP协议
Posted 懵懂少年songyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java网络知识点总结——Web服务之HTTP协议相关的知识,希望对你有一定的参考价值。
Java网络知识点系统学习第三篇
1、学习逻辑图:
逻辑图为百度脑图,以下为原图连接:http://naotu.baidu.com/file/dfd5a7c01fe90f36ba4add9af663d389?token=46cda713dd4cef22
2、学习内容简介:
2.1、HTTP协议内容:HTTP协议用于客户端和服务端之间的通信。请求文本或图像等资源的一端为客户端,提供资源响应的为服务端。
HTTP协议不保存状态(无状态协议):HTTP协议自身不对 请求和响应之间的通信状态进行保存。
HTTP协议使用URI定位互联网上的资源,完整的URI格式为:GET http://test/index.htm HTTP/1.1。
持久连接:为了节省通信量,HTTP/1.1默认的连接为持久连接,即在建立连接后没有任意一端明确提出断开连接,则保持TCP连接状态。
管线化:同时发送多个请求,同时等待响应。
无状态协议优点:减少服务器的CPU和内存资源的消耗。使HTTP协议更加简单。
2.1.1、HTTP支持的方法:HTTP协议通过提交不同的方法与服务器进行特定形式的通信。
a)、GET(获取资源):用来请求访问已被URI识别的资源。如果请求资源时文本,则直接将文本内容返回。如果请求内容是CGI(通用网关接口),则返回执行后的输出结果。
b)、POST(传输实体主体):用来传输实体的主体内容到服务端。
c)、PUT(传输文件):该协议主要用来传输文件,请求的报文的主体内容为文件内容,之后保存到URI的指定位置。由于HTTP/1.1的PUT方法自身不带验证机制,存在安全性问题,因此Web网站基本不会使用。
d)、HEAD(获取报文首部):用于确认URI的有效性和资源更新的日期时间。
e)、DELETE(删除文件):与PUT方法相反,该方法用来删除文件,按照请求的URI删除指定的资源。同样不带验证机制,存在安全性问题。
f)、OPTIONS(询问支持的方法):查询针对请求URI指定的资源支持的方法。即返回服务器支持的方法。
g)、TRACE(追踪路径):可以查询到发送出去的请求时怎样进行加工和处理的。请求可能经过代理最后到达目标服务器,TRACE用来确认连接过程发生的一系列操作。
h)、CONNECT(用隧道协议连接代理):使用该方法与服务器通信时,要求用隧道协议进行TCP通信,使用SSL(安全套接层)/TLS(传输层安全)协议把通信内容加密后进行网络隧道传输。
2.1.2、Cookie技术:由于HTTP本身并不支持状态保存,因此如果web需要保存状态信息,可以通过Cookie技术进行实现。服务端通过响应报文的set-Cookie通知客户端保存Cookie。下次客户端在发送请求时,请求报文中会加入Cookie值后发送。
2.2、HTTP报文 :
2.2.1、报文首部:服务端或客户端需处理的请求或响应的内容及属性。
a)、请求行:包含请求的方法、请求URI、HTTP版本。
b)、状态行:表明响应结果的状态码、原因短语、HTTP版本。
c)、首部字段:表示请求和响应的各种条件和属性的各类首部。
d)、其他:包含HTTP的RFC里未定义的首部,如Cookie。
2.2.2、报文主体:应被发送的数据,当传输的实体数据没有经过编码时,报文主体等于实体主体。
a)、编码处理:通信过程中会将实体数据进行编码处理,提高传输速率。
常用的编码技术有:gzip(GNU zip)、compress(UNIX系统的标准压缩)、deflate(zlib)、identity(不进行编码)。
b)、分块发送:在进行大量传输数据时,通过将数据分割成多块,可以让浏览器逐步显示内容。
2.2.3、多种数据对象集合:HTTP协议采纳了MIME中扩展的多部分对象集合的方法,发送一份报文主体内容可包含多类型主体。
部分对象集合包含如下:
multipart/form-data:Web表单文件上传使用。
multipart/byteranges:状态码206响应报文包含了多个范围的内容使用。
2.2.4、内容协商机制:web页面一般会有中文版和英文版,根据浏览器默认的语言,在请求访问URI的web页面时,会显示对应的中文版或英文版,该机制为内容协商。
内容协商以语言、字符集、编码方式等为基准判断响应的资源。
请求报文的首部字段为基准的内容有如下几个:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
a)、服务器驱动协商:由服务器进行内容协商,以请求的首部字段为参考。该方式对于用户来说,并不一定能筛选出最优内容。
b)、客户端驱动协商:由客户端进行内容协商,用户通过浏览器显示的可选项中手动选择,也可通过javascript脚本在Web页面自动进行选择。如按OS类型自动切换PC版页面或手机版页面。
c)、透明协商:该方式为服务器驱动和客户端驱动结合的方式进行内容协商的一种方法。
2.3、HTTP状态码:状态码为客户端请求服务器返回的结果标识。客户端通过状态码可以知道请求是否成功。
2.3.1、1XX(信息性):原因短语:接收的请求正在处理。
2.3.2、2XX(成功):以2开头的状态码表示客户端发送的请求被服务器正常处理完成。
原因短语:请求正常处理完毕。
204:表示请求已成功处理,返回的响应报文不含实体的主体部分,即浏览器的页面不会发生更新。
206:该状态码表示客户端进行了范围请求,服务器成功执行了这部分请求,响应报文有Content-Range指定范围的实体内容。
2.3.3、3XX(重定向):3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
原因短语:需要进行附加操作以完成请求。
301:表示永久性重定向,请求的资源已被分配了新的URI。以后使用资源将一直使用新的URI。
302:临时性重定向,请求的资源已被分配了新的URI,本次使用新的URI访问。
303:表示由于请求对应的资源存在着另一个URI,表明客户端应采用GET方法获取资源。
304:表示客户端发送附带条件的请求时,当因条件未满足的情况下,直接返回304,即服务器的资源未改变,可直接使用客户端未过期的缓存。
307:临时重定向,与302的区别为遵守浏览器标准,不会从POST变为GET。
2.3.4、4XX(客户端错误):该状态码表示客户端发生错误。
原因短语:服务器无法处理请求。
400:该状态码表示请求报文存在语法错误。
401:该状态码表示发送的请求需要通过HTTP认证(BASIC认证、DIGEST认证)。
403:该状态码表示请求资源的访问被服务器拒绝了。如未过得文件系统的访问授权、访问权限出现问题等。
404:该状态码表示服务器上无法找到请求的资源。
2.3.5、5XX(服务端错误):表明服务器本身发生错误。
原因短语:服务器处理请求出错。
500:该状态码表示服务器在执行请求时发生了错误。
503:该状态码表示服务器正处于超负荷或停机维护,暂时无法处理请求。
2.4、HTTP首部:无论是HTTP请求报文或响应报文都包含首部属性。
HTTP请求报文由以下部分组成:方法、URI、HTTP版本、HTTP首部字段。
HTTP响应报文由以下部分组成:HTTP版本、状态码(数字和原因短语)、HTTP首部字段。
HTTP首部字段根据实际用途可分为如下4类。
2.4.1、通用首部字段:请求报文和响应报文都会使用的首部。
a)、Cache-control:控制缓存的行为,主要的功能如:
Cache-control:private,响应的缓存只针对特定用户。
Cache-control:no-store,暗示请求或响应中包含机密信息。
缓存时间期限,s-maxage优先级高于max-age和Expires,max-age当包含在请求报文中时,如果缓存资源的时间小于该时间,则返回缓存资源。当包含在响应报文中时,该值代表了资源保存的最长时间。
b)、Connection:逐跳首部、连接的管理。
主要功能为:控制代理不再转发的首部字段和管理持久连接,HTTP1.1版本默认为持久连接,当服务器响应的报文中含有Connection:close,则表示连接可以关闭。HTTP1.1之前的版本如向使用持久连接,则需要在报文首部字段Connection:Keep-Alive。
c)、Date:创建报文的日期时间。
d)、Pragma:报文指令。
e)、Trailer:报文末端的首部一览,表示说明在报文主体后记录了那些首部字段。该字段可用在HTTP1.1版本分块传输编码。
f)、Transfer-Encoding:指定报文主体的传输编码方式,仅对分块传输编码有效。
g)、Upgrade:升级为其他协议,用于检测HTTP协议及其他协议是否可使用更高的版本进行通信。
h)、Via:代理服务器的相关信息,用于追踪传输路径,即请求从客户端到服务器之间的请求和响应报文的传输路径。
i)、Warning:错误通知,告知用户一些缓存相关的问题的警告。
2.4.2、请求首部字段:从客户端向服务器发送请求报文时使用的首部字段。
a)、Accept:用户代理可处理的媒体类型,媒体类型主要分为:文本文件、图片文件、视频文件、应用程序使用的二进制文件。
1)、文本文件:text/html、text/plain、text/css等等,application/xhtml+xml、application/xml等。
2)、图片文件:image/jpeg、image/gif、image/png
3)、视频文件:video/mpeg、video/quicktime等。
4)、二进制文件:application/octet-stream、application/zip等。
b)、Accept-Charset:优先的字符集,用来通知服务器用户代理支持的字符集及字符集相对应的优先顺序。可同时指定多个字符集,利用权重q表示优先级。
c)、Accept-Encoding:优先的内容编码,内容编码方式有如下几个:gzip、compress、deflate、identity。
1)、gzip:由文件压缩程序gzip生成的编码格式。
2)、compress:由UNIX文件压缩程序compress生成的编码格式。
3)、deflate:组合使用zlib格式及由deflate压缩算法生成的编码格式。
4)、identity:不执行压缩或不会变化的编码格式。
d)、Accept-Language:优先的语言,用来告知服务器用户代理能够处理的自然语言集(中文或英文)。
e)、Authorization:Web认证信息,告知服务器,用户代理的认证信息。
f)、Expect:期待服务器的特定行为。
h)、Host:请求资源所在服务器,用来告知服务器,请求的资源所处的互联网主机和端口号。
i)、Max-Forwards:最大传输逐跳数。
j)、Proxy-Authorization:代理服务器要求客户端的认证信息。
k)、Range:实体的字节范围,对于只需要获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。
l)、Referer:对请求中URI的原始获取方,告知服务器请求的原始资源的URI。
m)、User-Agent:HTTP客户端程序的信息,将创建请求的浏览器和用户代理名称等信息传给服务器。
2.4.3、响应首部字段:从服务器返回客户端响应报文时使用的首部字段。
a)、Accept-Ranges:是否接受字节范围请求,告知客户端服务器是否能处理范围请求。
b)、Age:推算资源创建经过时间。
c)、Etag:资源的匹配信息。
d)、Location:令客户端重定向至指定URI。
e)、Proxy-Authenticate:代理服务器对客户端的认证信息。
f)、Retry-After:对再次发起请求的时机要求。
g)、Server:HTTP服务器的安装信息,告知客户端当前服务器安装的HTTP服务器应用程序信息。
h)、Vary:代理服务器缓存的管理信息。
i)、WWW-Authenticate:服务器对客户端的认证信息,告知客户端适用于访问请求URI所指定资源的认证方案和带参数提示的质询。
2.4.4、实体首部字段:针对请求报文和响应报文的实体部分使用的首部。
a)、Allow:资源可支持的HTTP方法,用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。
b)、Content-Encoding:实体主体适用的编码方式,用于告知客户端服务器对实体的主体选用的内容编码方式。主要有4种,分别为:gzip、compress、deflate、identity。
c)、Content-Language:实体主体的自然语言,告知客户端实体主体使用的自然语言。
d)、Content-Length:实体主体的大小。
e)、Content-Location:替代对应资源的URI。
f)、Content-MD5:实体主体的报文摘要,一串由MD5算法生成的值,目的在于检查报文主体在传输过程中是否保持完整及确认送达。
g)、Content-Range:实体主体的位置范围。
h)、Content-Type:实体主体的媒体类型。
i)、Expires:实体主体过期的日期时间,用于将资源失效日期告知客户端,缓存服务器在接收到这个首部字段后,在该字段日期之前,会以缓存来应答请求,当超过这个时间后,缓存服务器接收到请求后会转发到源服务器。
j)、Last-Modified :资源最后修改日期时间。
2.4.5、cookied持有的首部字段:web网站为了管理用户的状态通过Web浏览器,会把一些数据临时写入到用户的计算机,利用Cookie的机制,来达到保存用户状态的功能。并在客户端和服务端进行传输。
a)、Set-Cookie:响应首部字段,该字段包含的属性有如下几个:
1)、expires:指定浏览器可发送Cookie的有效期。
2)、path:限制指定Cookie的发送范围的文件目录。
3)、domain:指定的域名可做到与结尾匹配一致,当指定多个域名时,安全性较低。
4)、secure:限制Web页面仅在HTTPS安全连接时才能发送Cookie。
5)、HttpOnly:使JavaScript无法获得Cookie,从而防止跨站脚本攻击(XSS)对Cookie的窃取。
b)、Cookie:请求首部字段,告知服务器,当客户端想获取HTTP状态管理支持时,会在请求中包含从服务器接收到的Cookie。
2.5、HTTPS协议:由于HTTP协议中没有加密机制,但可以通过和SSL(安全套接层)或TLS(安全传输协议)的组合使用,加密HTTP的通信内容。这种组合使用被称为HTTPS(超文本传输安全协议)。
两种加密方式分别为:
1、基于SSL或TLS技术是对整个通信线路进行加密。
2、对HTTP传输的报文主体进行加密,内容有被篡改的风险。
SSL不仅提供加密处理,还提供整数认证技术,明确客户端和服务端的真实性。
HTTPS技术=HTTP+加密+认证+完整性保护。
2.6、基于HTTP追加协议:
HTTP协议存在的瓶颈:
1、一条连接上只能发送一个请求。
2、请求只能从客户端开始,客户端不可以接收除响应之外的指令。
3、请求/响应首部未经压缩就发送,首部信息越多延迟越大。
4、发送冗长的首部,每次互相发送相同的首部导致传输的浪费。
5、可任意选择压缩格式,不强制压缩发送。
2.6.1、SPDY协议:作用在应用层(HTTP)和表示层(SPDY)之间的会话层(SSL),消除了HTTP协议的瓶颈,主要有如下特点:
1、多路复用流:通过单一的TCP连接,可以处理多个HTTP请求。
2、请求优先级:为请求逐个分配优先级,解决在发送多个请求时,由于响应慢而影响主要业务处理。
3、压缩HTTP首部:压缩HTTP请求和响应的首部。
4、推送功能:支持服务器主动向客户端推送数据的功能。
5、服务器提示功能:服务器可以主动提示客户端请求所需的资源。
2.6.2、WebSocket协议:Web服务器和客户端实现全双工通信,建立在HTTP基础上的协议,通信过程中可发送的数据格式为JSON、XML、HTML、图片等任意格式。
主要特点如下:
a)、推送功能:支持由服务器向客户端推送数据的功能。
b)、减少通信量:只要建立起WebSocket连接之后,就可以一直保持连接,减少每次建立连接和关闭连接的开销,同时WebSocket的首部信息少,减少通信量的开销。
2.7、构建Web内容:Web内容主要由以下内容组成。
2.7.1、HTML(超文本标记语言):为了发送Web上的超文本而开发的标记语言,HTML文档内容使用的特殊字符为HTML的标签,使用HTML标签可编写出有利于我们阅读的页面视图。
2.7.2、CSS(层叠样式表):样式表标准之一,可以指定如何展现HTML内的元素。丰富HTML文档内容页面的表现形式。
2.7.3、XML(可扩展标记语言):一种可按照应用目标进行扩展的通用标记语言。使互联网中的数据共享变得更加容易。同HTML一样使用标签构成树型结构,并且可自定义扩展标签。
2.8、Web攻击技术:根据攻击方式及攻击目标进行分类,同时简单总结了系统安全漏洞。
2.8.1、攻击模式分类:Web应用的攻击模式主要分为主动攻击和被动攻击。
a)、主动攻击:指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式,以服务器为目标的攻击方式。主要表现为SQL注入攻击和OS命令注入攻击。
1)、SQL注入攻击:指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。可能会导致个人信息及机密信息的泄露。
2)、OS命令注入攻击:指通过Web应用,执行非法的操作系统命令达到攻击的目的。通过Shell脚本调用操作系统命令。
2.8.2、跨站脚本攻击(XSS):指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签和JavaScript脚本进行的一种攻击。
攻击方式为:
1、利用虚假输入表单骗取用户个人信息。
2、利用脚本窃取用户的Cookie值,并发送恶意请求。
2.8.3、HTTP首部注入攻击:指攻击者通过在响应首部字段插入换行,添加任意响应首部或主体的一种攻击。
2.8.4、安全漏洞:简单总结了系统处理不当导致的安全漏洞。
a)、远程文件包含漏洞:指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取后,可运行任意脚本的一种攻击。
b)、Web文件预览漏洞:通过特定的URL路径可访问Web应用服务器上指定路径下的文件。
c)、不正确的信息处理:当Web应用在使用过程中,如发生程序错误抛出的错误信息到页面上,攻击者可根据错误信息内容进行特定的攻击。
d)、会话漏洞:主要包含两种。
1)、会话劫持:指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的。
2)、会话固定攻击:指攻击者强制用户使用指定的会话ID。
2.8.5、跨站点请求伪造:指攻击者通过设置好的陷阱,强制对完成认证的用户进行非预期的个人信息或设定信息等某些状态更新。
2.8.6、破解密码:利用一定的技术手段算出密码,通过系统认证。
a)、穷举法:又称为暴力破解,指对所有秘钥集合构成的秘钥空间进行穷举,即用所有可行的候选密码对目标的密码系统试错。
b)、字典攻击:指利用事先收集好的候选密码,枚举字典中的密码,尝试通过认证的一种攻击手段。
2.8.7、DoS攻击:一种让运行中的服务呈停止状态的攻击,包括Web网站和网络设备及服务器。攻击方式为:
1、集中利用访问请求造成资源过载,资源耗尽的同时,服务也呈停止状态。
2、通过攻击安全漏洞使服务停止。
往期回顾:
3)、Java网络知识总结——http协议知识点(采用图文配合方式总结知识点)
4)、Java网络知识总结——网络硬件相关知识点(采用图文配合方式总结知识点)
本人独立开发的小程序已上线,如有兴趣可扫码进入。
以上是关于Java网络知识点总结——Web服务之HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章