• HTTP协议


    客户端(通过发送请求获取服务器资源的Web浏览器等)通过指定的访问地址URL获取(或上传)服务器资源(文件等信息)---使用http协议进行通信(超文本传输协议)的协议作为规范。

    HTTP协议指服务器端和客户端进行通信时的协议。

    1.网络基础TCP/IP是互联网相关的各类协议族的总称(包括FDDI,TCP,IP,FTP,DNS,UDP等等),http是TCP/IP内部的一个子集

    2.TCP/IP的分层管理:分成应用层,传输层,网络层,数据链路层。(分层好处:某个地方改变设计时不需要改动全部)

                                 a.应用层(决定了向客户提供应用服务时的通信活动):FTP(文件传输协议),dns(域名系统),http

                                 b.传输层(提供处于网络连接中的两个计算机之间的数据传输)TCP(传输控制协议),UDP(用户数据报协议)

                                 c.网络层(把数据包通过最短的传输路径送到对方,在众多路线内选择一条传输路线)IP协议(作用:把各种数据包传送给对方)

                                 d.链路层(数据链路层,网络接口层)用来处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动,网卡,光纤等。

    HTTP客户端-->TCP-->IP-->网络  (客户端)

    HTTP服务器端<--TCP<--IP<--网络 (服务器端)

    举例:在发送端的客户端发送了一个想看某页面的http请求(HTTP协议),为了传输方便,在传输层(TCP协议)把应用层发来的消息的进行分割,贴上标记和端口号传输给网络层(ip协议),增加作为MAC地址后转发给链路层。

    发送端层与层传输时会被打上一个该层所属的首部信息。接收端则会一层层去掉首部信息。这种把数据信息包装起来的做法叫封装。

    3.为了确保数据能够到达对方那里,tcp协议采取了三次握手,1.发送端说“我要给你发数据你接一下”,2.接收端说“好的,你发过来吧”,3.发送端说“发了过去”;

    4.URI包括URL。

    5.HTTP协议是一种无状态的协议,即自身不对请求和响应之间的通信状态进行保存,比如购物网站用户登录后跳转其他页面也需要保持登录,所以就有了cookie技术(cookie会根据从服务器端发送的响应报文内的set-cookie来通知客户端保存cookie。第一次客户端发送请求,服务器生成cookie响应时告诉客户端生成cookie,第二次客户端发送请求时会带着cookie,服务器进行检查校验,返回响应)。

    6.GET方法和POST方法:GET获取资源(发送请求获取某个页面),POST传输实体主体(表单提交的用户名密码等),虽然get方法也可以传输实体主体,但是有安全性问题。

    7.PUT方法用来传输文件,像是ftp协议的文件上传一样,要求在请求报文的主体中包含文件内容,但是HTTP/1.1的put自身不带验证机制,所以任何人搜可以上传文件,不安全,想要使用需要配合WEB应用程序的验证机制。

    8.head方法用于确认URI的有效性,及资源更新的日期和时间,用于测试,并不返回报文主体内容。

    9.还有delecte删除文件,trace追踪路径,options询问支持的方法,connect要求用隧道协议连接代理(用于请求连接);

    10.编码提升传输效率:a.报文(HTTP通信的基本单位,由8位组字节流组成,通过HTTP通信)主体和实体(作为请求和响应的有效载荷数据被传输,由实体首部和实体主体组成)主体通常相等,只有当传输时进行编码操作时,实体主体内容发生变化导致差异。

                                  b.内容编码指明应用在实体内容上的编码格式,并保持信息原样压缩,由客户端接收并负责解码。

    11.MIME多部分对象集合,来容纳多份不同类型的数据,(传输的对象的类型,文本,视频,图片等等....),包含的对象如下:multipart/form-data,在web表单文件上传时使用。在报文中使用MIME时,需要在首部加上content-type

    12.获取部分内容范围的请求:GET /tip.jpg HTTP/1.1   HOST:www.xxxxx.jp Range:bytes = 5001-10000 (5001-是5001字节之后的内容)

    13.状态码:(从服务器返回的结果)

                    1xx:接收的请求正在处理;2xx:请求正常处理完毕;;3xx(重定向状态):需要进行附加操作以完成请求;4xx:客户端错误(输错URL等等);5xx:服务器本身错误(服务器挂掉等...)

                    204:请求处理成功但是没有资源可以返回206:客户端进行了范围请求,成功返回了范围。

                    301: 永久性重定向,表明请求的资源已经分配了新的URI,以后要使用现在所指的URI。302:临时性重定向,请求的资源已经分配了新的URI,和301区别是301需要保存新的书签,但是302不需要更新书签。

                    303:由于请求的资源存在着另一个URI,应使用GET方法定向获取请求的资源

                    (当响应状态码返回时,几乎所有浏览器都会把POST改成GET,并删除请求报文内的主体,虽然301,302禁止把post变成get,但仍是这么做的)

                    304:(带条件的请求)服务器同意请求访问资源,但是条件不满足

                    307:也是临时重定向,同302

                    400(语法错误)请求的报文存在语法错误

                    401(有认证信息的)浏览器初次接收到401响应,会弹出认证框,第二次返回认证结果。

                    403(权限问题,禁止访问)请求资源的访问被服务器拒绝了。

                    404(找不到页面)服务器上没有请求的资源

                    500(服务器内部故障):表明服务器执行请求时发生错误,也有可能是应用存在bug或临时故障

                    503(服务器很忙):服务器正在超负载或者进行停机维护

                    

                    

  • 相关阅读:
    React Native配置和使用
    使用ES6语法重构React代码
    git 起点
    Win32API程序中自建按钮
    C语言中数组与指针
    我的第一个博客
    Solr6.5配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer (二)
    Solr6.5在Centos6上的安装与配置 (一)
    PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制
    MariaDB+Keepalived双主高可用配置MySQL-HA
  • 原文地址:https://www.cnblogs.com/zhangxinxin111/p/4742163.html
Copyright © 2020-2023  润新知