当前位置:   article > 正文

HTTP学习总结

HTTP学习总结

cookie的引用为了解决什么问题
答:cookie是无状态的,登陆后保存登陆人的信息,就会使用到cookie,
在服务器端生成cookie信息,在客户端发送请求报文中加入cookie。

Tcp的三次握手

在这里插入图片描述
• 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
• 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
• 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。 完成三次握手,客户端与服务器开始传送数据.

四次挥手
在这里插入图片描述
这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

HTTP状态码

在这里插入图片描述
2开头 (请求成功)表示成功处理了请求的状态代码。

200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建) 请求成功并且服务器创建了新的资源。
202 (已接受) 服务器已接受请求,但尚未处理。
203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
206 (部分内容) 服务器成功处理了部分 GET 请求。

3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。

400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
405 (方法禁用) 禁用请求中指定的方法。
406 (不接受) 无法使用请求的内容特性响应请求的网页。
407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408 (请求超时) 服务器等候请求时发生超时。
409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 (未满足期望值) 服务器未满足"期望"请求标头字段的要求。

5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

 http请求头:.setRequestHeader设置

使用首部字段是为了给浏览器和服务器提供报文主体大小、 所使用的
语言、 认证信息等内容。
通用首部字段:
Cache-Control操作缓存
缓存请求
no-cache 无 强制向源服务器再次验证,不使用本地缓存的资源
客户端发送的请求中。 客户端会要求所有的中间服务器不返回缓存的资源,Pragma: no-cache
max-age = [ 秒] 必需 响应的最大Age值
max-stale( = [ 秒]) 可省略 接收已过期的响应

min-fresh = [ 秒] 必需 期望在指定时间内的响应仍有效,还未过指定时间的缓存资源
no-store 无 不缓存请求或响应的任何内容
only-if-cached 无 从缓存获取资源
no-transform 无 代理不可更改媒体类型,可预防图片压缩等

缓存响应
public 无 可向任意方提供响应的缓存
private 可省略 仅向特定用户返回响应

no-cache 可省略 缓存前必须先确认其有效性
no-store 无 不缓存请求或响应的任何内容

max-age = [ 秒] 必需 响应的最大Age值 资源给缓存服务器保存的期限
s-maxage = [ 秒] 必需 公共缓存服务器响应的最大Age值
must-revalidate 无 可缓存但必须再向源服务器进行确认
no-transform 无 代理不可更改媒体类型

Connection

  1. 控制不再转发给代理的首部字段
  2. 管理持久连接
    请求头中
    • Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
    • Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

响应头中Connection:keep-alive 这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的tcp连接也是一个长连接,客户端可以继续使用这个tcp连接发送http请求。
Date 创建报文的日期时间

请求头
• Accept: text/html 浏览器可以接受服务器回发的类型为 text/html。
Accept-Charset: 通知服务器用户代理支持的字符集及
字符集的相对优先顺序。
Accept-Encoding:服务器用户代理支持的内容编码及内容编码的优先级顺序。通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)
Accept-Language浏览器申明自己接收的语言
Authorization用来告知服务器, 用户代理的认证信息(证书)
Expect期望出现的某种特定行为。
From用户代理的用户的电子邮件地址。
Host主要用于指定被请求资源的Internet主机和端口号
If-Match 的字段值跟 ETag (实体标记值)值匹配一致时, 服务器才会接受请求
If-Modified-Since:请求的资源是否更新过,若更新过:Last-Modified确定
If-None-Match请求的实体标记PUT不一致时
If-Range它告知服务器若指定的 IfRange 字段值(ETag 值或者时间) 和请求资源的 ETag 值或时间相一
致时, 则作为范围请求处理。 反之, 则返回全体资源。
Range指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。
.Referer告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。
User-Agent会将创建请求的浏览器和用户代理名称等信息传
达给服务器
响应头
Accept-Ranges 是否可处理范围请求
Age源服务器在多久前创建了响应。
ETag:告知客户端实体标识,做唯一标识
Location:重定向资源的URI
Server HTTP 服务器应用程序的信息
Server: Apache/2.2.6 (Unix) PHP/5.2.5
Vary:本地缓存只能缓存vary指定的头部字段
实体首部字段
Allow告知客户端能够支持 Request-URI 指定资源的所
有 HTTP 方法 (响应)
Content-Encoding告知客户端发送的压缩格式
Content-Language告知客户端实体语言
Content-Length表明了实体主体部分的大小
Content-Location表示的是报文主体返回资源对应的 URI。
Content-Range作为响应返回的实体的哪个部分符合范围请求。
Content-Type实体主体内对象的媒体类型
Expires首部字段 Expires 会将资源失效的日期告知客户端。 缓存服务器在接收到含有首部字段 Expires 的响应后,会以缓存来应答请求,
Last-Modified指明资源最终修改的时间
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收到的Cookie信息 请求首部字段

Cookie让服务器辨别用户身份

HTTPS的通信步骤

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

  1. 客户端发起HTTPS请求

这个没什么好说的,就是用户在浏览器里输入一个HTTPS网址,然后连接到服务端的443端口。

  1. 服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。如果对公钥不太理解,可以想象成一把钥匙和一个锁头,只是世界上只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

  1. 传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

  1. 客户端解析证书

这部分工作是由客户端的SSL/TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警示框,提示证书存在的问题。如果证书没有问题,那么就生成一个随机值。然后用证书(也就是公钥)对这个随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  1. 传送加密信息

这部分传送的是用证书加密后的随机值,目的是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  1. 服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值,然后把内容通过该随机值进行对称加密,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  1. 传输加密后的信息

这部分信息就是服务端用私钥加密后的信息,可以在客户端用随机值解密还原。

  1. 客户端解密信息

客户端用之前生产的私钥解密服务端传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
Cookie和session的区别

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上。
  2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。
  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

Get和post的区别
get是从服务器上获取数据,post是向服务器传送数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/616254
推荐阅读
相关标签
  

闽ICP备14008679号