网络基础(二)—— 应用层

应用层

应用层协议就是一端构造的数据,在另一端能够正确的进行解析。协议就是一种约定,约定就必须遵守。

什么是HTTP协议

HTTP,中文名称是超文本传输协议,简单来说,就是一个定义了浏览器向服务器发送请求,并且服务器将响应发给浏览器的协议。
HTTP的主要特点是:简单快速,当客户端向服务器发送请求的时候,只需要发送请求的方法和路径,所以它通信速度很快。HTTP还有一个特点是灵活,它可以传输任意类型的数据对象,HTTP也是一个无状态、无连接的协议,无状态是指它对于事务没有记忆能力,也就是说,如果后续处理需要前面的信息,就必须重传,而无连接是限制每次连接只处理一个请求,服务器处理完客户请求并接收到客户的应答之后,就断开连接。同时,HTTP协议也支持B/S和C/S模式。

HTTP协议格式

HTTP请求:
HTTP请求包括四部分,请求行,请求报头,空行和正文。一行是一个属性。

  • 首行:[方法]+[URL]+[版本]
    请求行用空格将属性分为三部分:请求方法(Get/Post),请求资源在哪(一般以//开始),Http版本号
  • Header:请求的属性,冒号分割的键值对,每组属性用\n分隔,遇到空行表示Header部分结束。
    • Connection:keep-alive 表明该请求方式支持长链接
    • Content-Length: 代表正文部分有多少
    • Content-Type: 内容类型
    • User-Agent:浏览器,操作系统的信息
    • Accept:表示自己可以接收的信息
    • Referer:从某个地方发来的请求
    • Cookie:为了安全,存放session,用户信息保存在服务器,实现会话功能
  • Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度。

Post方法根据读空行将报头与有效载荷分离

补充:
1、HTTP请求如果有三部分,说明是Get方法,如果有四部分,说明是Post方法。
  POST方法传参在正文部分,GET方法传参在URL中(长度受限制,有风险)。
2、目前HTTP传送数据时采用两种方式:
   长链接:高效,Http 1.1
   短链接:简单,Http 1.0
3、Https的加密在传输层与应用层之间的某一层,称为加密层,对应的也有解密层。
4、只有发送方的应用层和接收方的应用层能真正看到消息的内容,在网络中信息都是加密的。
5、加密是给整个Http加密。

HTTP响应:
HTTP响应包括四部分:状态行,响应报头,空行和响应正文(有效载荷)。

  • 首行:[版本号]+[状态码]+[状态码解释]
  • Header:请求的属性,冒号分割的键值对,每组属性之间使用\n分隔,遇到空行表示Header部分结束
  • Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度。如果服务器返回了一个html页面,那么html页面内容就在body中。

HTTP方法

  • GET:获得资源
  • POST:上传文件到Web服务器
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • HEAD:获得报文首部(与GET类似,但是不要正文)
  • CONNECT:要求用隧道协议连接代理
  • PUT传输文件
  • TRACE:追踪路径
  • LINK:建立和资源之间的联系
  • UNLINK:断开连接关系

前六个方法比较重要,最常用的还是GET方法和POST方法。

HTTP状态码

  • 1XX:信息性状态码,表示接收的请求正在处理
    • 100:客户必须继续发出请求
    • 101:客户要求服务器根据请求转换HTTP协议版本
  • 2XX:成功状态码,表示请求正常处理完毕
    • 200:OK,请求已正常处理
    • 204:No Content,请求处理成功,但没有任何资源可以返回给客户端。一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。
    • 206:Partial Content,是对资源某一部分的请求,该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。
  • 3XX:重定向状态码,表示需要进行附加操作以完成请求
    • 301:Moved Permanently,资源的URL已更新,你也要更新你的书签引用。永久性重定向,请求的资源已经被分配了新的URL,以后应使用资源现在所指的URL。
    • 302:Found,资源的URL已临时定位到其他位置了,暂时算你已经知道了这个情况了。临时性重定向。和301相似,但302代表的资源不是永久性移动,只是临时性性质的。换句话说,已移动的资源对应的URL将来还有可能发生改变。
    • 303:See Other,资源的URL已更新,你是否能临时按新的URL访问。该状态码表示由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。303状态码和302状态码有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源。
      当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。
    • 304:Not Modified,资源已找到,但未符合条件请求。该状态码表示客户端发送附带条件的请求时(采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部)服务端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304.。
    • 307:Temporary Redirect,临时重定向。与302有相同的含义。
  • 4XX:客户端错误状态码,表示服务器无法处理请求
    • 400:Bad Request,服务器端无法理解客户端发送的请求,请求报文中可能存在语法错误。
    • 401:Unauthorized,该状态码表示发送的请求需要有通过HTTP认证(BASIC认证,DIGEST认证)的认证信息。
    • 403:Forbidden,不允许访问那个资源。该状态码表明对请求资源的访问被服务器拒绝了。(权限,未授权IP等)
    • 404:Not Found,服务器上没有请求的资源。路径错误等。
  • 5XX:服务器错误状态码,表示服务器处理器请求出错
    • 500:Internal Server Error,内部资源出故障。该状态码表明服务器端在执行请求时发生了错误。也有可能是web应用存在bug或某些临时故障。
    • 503:Service Unavailable,该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求。
    • 504:Gateway TimeOut,网关超时,一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务。
HTTP常见Header
  • Content-Type:数据类型(text/html等)
  • Content-Length:Body的长度
  • Host:客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
  • User-Agent:声明用户的操作系统和浏览器版本信息
  • refer:当前页面是从哪个页面跳转过来的
  • location:重定向,搭配3XX状态码使用,告诉客户端接下来要去哪里访问
  • Cookie:用于在客户端存储少量信息,通常用于实现会话功能。

补充:
重定向方式有两种:临时重定向和永久重定向。

HTTP与HTTPS的区别

1、HTTP没有加密机制,不安全,HTTPS对传输的数据进行加密,安全
2、HTTP在应用层,HTTPS在传输层
3、HTTP端口号80,HTTPS端口443
4、HTTP不需要证书,HTTPS需要CA机构的一个证书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值