HTTP学习总结

《图解HTTP》是一本配有插图描述HTTP知识的书,没有那么枯燥。然后阅读HTTP也是Java EE老师布置的作业,于是就在一周内看完了。

1.HTTP的应用

1.1使用HTTP协议访问Web
在这里插入图片描述
1.2HTTP与IP、TCP、DNS

IP(Internet Protocal)网际协议位于网络层,它的作用是把各种数据包传送给对方。

这里有两个地址,IP地址和MAC地址,IP地址指明了节点被分配到的地址,可变换,MAC地址是网卡所属的固定地址,基本不会更改。IP地址可以和MAC地址进行配对。

在通信时,通常需要经过多台计算机和网络设备中转才能连接到对方,所以IP间的通信通常依赖MAC地址。ARP协议(Address Resolution Protocal)可以根据IP地址就反查出对应的MAC地址。

TCP(Transmission Control Protocal)位于传输层,提供可靠的字节流服务。为了准确无误地将数据送达目标处,TCP协议采用了三系握手策略。

TCP协议把带SYN标指的数据包发送出去之后,接收端收到则回传一个带有SYN/ACK标指的数据包以示传达确认信息,最后发送端再回传一个带ACK标指的数据包,代表“握手”结束。

如果再手握过程中某个阶段莫名中断,TCP协议会再次以相同顺序发送相同的数据包。

DNS(Domain Name System)服务适合HTTP协议一样位于应用层的协议,它提供域名到IP地址之间的解析服务。

所以我们再输入网址时,可以更便捷地输入好记的www.baidu.com,而不是一长串数字。

2.HTTP报文

客户端发出请求报文,然后服务器响应请求并返回响应报文。报文大致可以分为报文首部和报文主体两块。

请求报文的报文首部一般包括了请求行、请求首部字段、通用首部字段、实体首部字段。这是请求报文的构成↓
在这里插入图片描述
响应报文的报文首部一般包括了请求行、响应首部字段、通用首部字段、实体首部字段。这是响应报文的构成↓
在这里插入图片描述
2.1告知服务器意图的HTTP方法

GET:获取资源
在这里插入图片描述
POST:传输实体主体
在这里插入图片描述
PUT:传输文件
在这里插入图片描述
HEAD:获得报文首部在这里插入图片描述
DELETE:删除文件在这里插入图片描述
OPTIONS:查询支持的方法在这里插入图片描述
TRACE:追踪路径在这里插入图片描述
CONNECT:要求用隧道协议连接代理在这里插入图片描述
2.2使用cookie的状态管理

HTTP是无状态协议,它不对之前发生过的请求和想要的状态进行管理。虽然这也是无状态协议的有点,这样可以减少服务器的CPU及内存资源的消耗,也正是因为HTTP协议本身非常简单,所以才会被应用在各种场景里。

Cookie技术通过再请求和响应报文中写入Cookie信息菜控制客户端的状态。

当客户端第一次对服务器发送请求时,服务器会再响应报文内添加一个字段Set-Cookie,然后客户端会保存Cookie。当第二次客户都拿想要访问时发出的请求报文中就会包含了一个字段Cookie,同时服务器拿到Cookie对比之后就知道了之前客户端的状态信息。

2.3HTTP的状态码

状态码的作用是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端时正常处理了请求,还是出现了错误。在这里插入图片描述

3.HTTP报文首部

在这里插入图片描述
在这里插入图片描述
3.1首部字段

通用首部字段

首部字段名说明
Cache-Control控制缓存的行为
Connection逐跳首部、连接的管理
Date创建报文的日期时间
Pragma报文指令
Trailer报文末端的首部一览
Transfer-Encoding指定报文主体的传输编码方式
Upgrade升级为其他协议
Via代理服务器的相关信息
Warning错误通知

请求首部字段

首部字段名说明
Accept用户代理可处理的媒体类型
Accept-Charset优先的字符集
Accept-Encoding优先的内容编码
Accept-Language优先的语言(自然语言)
AuthorizationWeb认证信息
Expect期待服务器的特定行为
From用户的电子邮箱地址
Host请求资源所在服务器
If-Match比较实体标记(ETag)
If-Modified-Since比较资源的更新时间
If-None-Match比较实体标记(与 If-Match 相反)
If-Range资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards最大传输逐跳数
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体的字节范围请求
Referer对请求中 URI 的原始获取方
TE传输编码的优先级
User-AgentHTTP 客户端程序的信息

响应首部字段

首部字段名说明
Accept-Ranges是否接受字节范围请求
Age推算资源创建经过时间
ETag资源的匹配信息
Location令客户端重定向至指定URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息

实体首部字段

首部字段名说明
Allow资源可支持的HTTP方法
Content-Encoding实体主体适用的编码方式
Content-Language实体主体的自然语言
Content-Length实体主体的大小(单位:字节)
Content-Location替代对应资源的URI
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体的媒体类型
Expires实体主体过期的日期时间
Last-Modified资源的最后修改日期时间
4.HTTPS

HTTP除了优势之外,还有一些不足:

通信使用明文(不加密),内容可能会被窃听

不验证通信方的身份,因此有可能遭遇伪装

无法证明报文的完整性,所以有可能已遭篡改。

HTTPS=HTTP+加密+认证+完整性保护

HTTPS不是一种新协议,只是HTTP通信接口部分用SSL(Secure Soket Layer)和TSL(Transport Layer Security)协议代替而已。

在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。在这里插入图片描述
4.2公开密钥加密技术

SSL采用一种叫做公开密钥加密(Public-key cryptography)的加密处理方式。

加密和解密同用一个密钥的方式陈伟共享密钥加密(Commen key crypto system),也被叫做对称密钥加密。但是这种方法很容易被攻击者拿到密钥,也就失去了加密的意义。

公开密钥加密解决了这个困难,它使用一堆非对称的密钥,一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。

发送密文者使用对方的公开密钥进行加密处理,对方收到被加密的信息之后,再使用自己的私有密钥进行解密。这样的加密方式就安全了很多。

HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。因为公开密钥加密和共享密钥加密相比,前者处理速度更慢,所以在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段使用共享密钥加密方式。

4.3证书

公开密钥加密方式无法证明使用的公开密钥是否是货真价实的公开密钥,在传输途中,可能会被攻击者替换掉。所以可以使用由数字证书认证机构(Certificate Authority)和其相关机关办法的公开密钥证书。在这里插入图片描述
4.4HTTPS通信过程在这里插入图片描述

5.确认访问用户身份的认证

需要确认是否是用户本人,就要和对一些登录者本人才知道的信息。

认证方式:

  • basic认证
  • digest认证
  • ssl客户端认证
  • 基于表单的认证
6.web攻击技术
  • 因输出值转义不完全引发的安全漏洞
  • 因设置嚯设计上的缺陷引发的安全漏洞
  • 因绘画管理疏忽引发的安全漏洞
  • 其他安全漏洞(比如密码破解,点击劫持,dos攻击,后门程序2.0)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值