本文以研究访问因特网上的Web服务器为例。
应用层:HTTP协议(对应传输层TCP协议)
TCP协议:传输控制协议
HTTP协议:HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
如下图所示在因特网上访问“www.baidu.com” IP:通过DNS(地址解析协议) 端口号 port:80
若浏览器访问失败,则不会建立连接。
1、HTTP请求方法
请求方式 | 含义 |
GET | 申请获取资源,而不对服务器产生任何其他影响 |
HEAD | 和GET方法类似,不过要求服务器返回头部信息,而不要求传输任何实际内容 |
POST | 客户端向服务器端提交数据的方法。这种方法会影响服务器,服务器可能根据收到的数据动态创建新的资源,也可能更新原有的资源 |
PUT | 上传某个资源 |
DELETE | 删除某个资源 |
TRACE | 要求目标服务器返回原始HTTP请求的内容,它可用来查看中间服务器(比如代理服务器)对HTTP请求的影响 |
OPTIONS | 查看服务器对某个特定URL都支持哪些请求方法。也可以把URL设置为*,从而获得服务器支持的所有请求方法。 |
CONNECT | 用于某些代理服务器,它们能把请求的连接转化为一个安全隧道 |
PATCH | 对某个资源做部分修改 |
在这些方法中head、get、options、和 trace被视为安全的方法,因为它们只是从服务器获得资源和信息,而不对服务器进行任何修改。
2、HTTP应答
HTTP状态码和状态信息及其含义
状态类型 | 状态码和状态信息 | 含义 |
1xx信息 | 100 Continue | 服务器收到了客户端的请求和头部信息,告诉客户端继续发送数据部分。客户端通常要先发送Expect:100-continue头文部字段告诉服务器自己还有数据要发送 |
2xx成功 | 200 OK | 请求成功 |
3xx重定向 | 301 Moved Permanently | 资源被转移了,请求将被重定向 |
302 Found | 通知客户端资源能在其他地方找到,但需要使用GET方法来获得它 | |
304 Not Modified | 表示申请的资源没有更新,和之前获得的相同 | |
307 Temporay Redirect | 通知客户端资源能在其他地方找到。与302不同的是,客户端可以使用原始请求相同的请求方法来访问目标资源 | |
4xx客户端错误 | 400 Bad Request | 通用客户端请求错误 |
401 Unauthorized | 请求需要认证信息 | |
403 Forbidden | 访问被服务器禁止,通常是由于客户端没有权限访问该资源 | |
404 Not Found | 资源没被找到 | |
407 Proxy Authentication Required | 客户端需要先获得代理服务器的认证 | |
5xx服务器错误 | 500 Internal Server Error | 通用服务器错误 |
503 Service Unavailable | 暂时无法访问服务器 |
HTTP和HTTPS都是应用层协议。
HTTP:超文本传输协议;HTTPS:安全的超文本传输协议,在HTTP协议的基础上加入了SSL协议保证安全传输。
这两个协议主要应用于Web浏览器和网站服务器之间传递数据,HTTP协议以明文的形式发送内容,不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。而HTTPS为了数据安全,在HTTP协议的基础上加入SSL协议,SSL协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
关于HTTP和HTTPS的区别:
1)HTTPS协议需要申请CA证书,一般需要交费;
2)HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议;
3)HTTP和HTTPS使用的是完全不同的连接方式,用的端口号也不一样(HTTP:80 HTTPS:443);