应用层🌟

2020-10-11  本文已影响0人  幺姨母

传输层及以下的层提供了完整的通信服务

DNS协议

DNS域名系统
不区分大小写

顶级域:国家(cn、us)、通用(com、org)

查询过程🌟

DHCP协议

HTTP协议

HTTP超文本传输协议

http(s)://<主机>:<端口>/<路径>

可靠的数据传输协议(它的传输层是通过TCP实现的)

服务器步骤
接受客户端连接:ip+端口(默认80)
接收请求报文
处理请求
访问web资源
构造应答
发送应答

请求方法🌟

  1. OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法
  2. HEAD
    向服务器索与GET请求相一致的响应,只不过响应体将不会被返回
  3. GET
    向特定的资源发出请求
  4. POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
    数据被包含在请求体中
    POST请求可能会导致新的资源的建立和/或已有资源的修改
  5. PUT
    向指定资源位置上传其最新内容
  6. DELETE
    请求服务器删除资源
  7. TRACE
    回显服务器收到的请求,主要用于测试或诊断
  8. CONNECT
    将服务器作为代理,让服务器代替用户访问其他网页

注意:

  1. 方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)
  2. HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法

指定的资源(GET和POST区别)🌟

  1. 在地址中指定
    https://coding.imooc.com/class/355.html
    https://coding.imooc.com/?sort=0&unlearn=0&page=2
  2. 在请求内容中指定
POST https://coding.imooc.com HTTP/1.1
Accept-Encoding: gzip
Accept-Language: zh-CN
{
    "sort": 0,
    "unlearn": 0,
    "page": 2
}
  1. GET提交的数据会直接填充在请求报文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ” “?”问号划分域名和get提交的参数,A=B中的A是参数名,B是参数值,多个参数之间用&进行分割;POST的数据在请求报文的请求正文中
  2. URL的长度有限,所以GET方法提交的数据有限;请求正文没有长度限制,所以POST方法提交的数据无限
  3. GET方法的参数直接在URL中,POST方法在请求正文中,可以使用HTTPS进行加密,因此POST方法更加安全隐秘

报文结构🌟

  1. 请求结构
    请求行、请求头部、空行、请求正文
    请求方法、URL、协议版本、头部字段名和值、请求正文(只在POST用到)
  2. 响应结构
    响应行、响应头部、空行、响应正文
    协议版本、状态码、状态码描述、头部字段名和值、响应正文


POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>

状态码🌟
200-299:成功状态码
300-399:重定向状态码。访问的资源可能在另外的服务器,告知另外的服务器地址,让用户继续访问另外的服务器
400-499:客户端错误状态码。404访问的资源不存在
500-599:服务端错误状态码。服务端bug、没有处理的异常

200 OK 当您的操作将在响应正文中返回数据时,出现此结果
204 No Content 当您的操作成功,但不在响应正文中返回数据时,出现此结果
304 Not Modified(重定向) 当测试实体自上次检索以来是否被修改时,出现此结果
403 Forbidden 客户端错误
401 Unauthorized 客户端错误
413 Payload Too Large(客户端错误) 当请求长度过长时,出现此结果
400 BadRequest(客户端错误) 当参数无效时,出现此结果
404 Not Found(客户端错误) 当资源不存在时,出现此结果
405 Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误
412 Precondition Failed 客户端错误
501 Not Implemented(服务器错误) 当未实施某个请求的操作时,出现此结果
503 Service Unavailable(服务器错误) 当 Web API 服务不可用时,出现此结果

输入一个url的过程🌟

HTTP版本🌟

  1. 支持的请求方法有区别:HTTP1.0支持GET、POST、HEAD;HTTP1.1还支持另外五种请求方法
  2. HTTP1.1支持长连接,即服务器返回响应报文后,TCP连接还会继续维持一段时间再释放,这段时间内,客户端还能发起新的请求,并且不需要重新建立TCP连接;HTTP1.0在服务器返回响应报文后就立即释放连接,如果客户端有新的请求,需要重新建立TCP连接
  3. HTTP1.1可以请求资源的某一个部分,HTTP1.0不能,只能请求整个资源,比较浪费带宽
  4. HTTP1.1增加了一些相应码,比如410Gone表示资源被永久删除

HTTPS协议

HTTP是明文传输的

加密模型🌟

  1. 对称加密
  1. 非对称加密:A和B是有一定数学关系的一组密钥
    私钥:自己使用,不对外公开
    公钥:给大家使用,对外公开

数字证书:可信任组织颁发给特定对象(人、服务器、组织)的认证,相当于国家和人民与身份证的关系

对象名称:域名

安全套接层SSL🌟
位于传输层和应用层之间,提供数据安全(数据不会被泄漏)与数据完整(数据传输过程中不会被篡改)的服务,以及对数据进行加密后传输

HTTPS过程

SSL套接层握手🌟

根据随机数123和相同的算法生成对称密钥,然后双方可以使用对称密钥进行加密通信

综合使用对称加密、非对称加密
双方分别生成密钥,密钥没有经过传输,较少密钥泄漏的可能性

上一篇 下一篇

猜你喜欢

热点阅读