HTTP_概述&&请求消息_请求行&请求头&请求体

## HTTP:
       ※概念:Hyper Text Transfer Protocol 超文本传输协议
          ※传输协议:定义了客户端和服务器端通信时,发送数据的格式
在这里插入图片描述          (比如说,客户端要去给服务器端发送数据,那么其实这个过程我们称为请求,客户端给服务器端说话,我们称为请求,那么服务器端收到客户端说的话后,那么服务器端又要给客户端做出应答,我们称为响应,这是两个不同的过程,请求会携带请求消息过去,响应也是一样,相当于服务器给客户端说话,说话呢,也会携带着响应的消息过来,那么我们说的这个传输协议规定是是什么呢,其实规定的就是请求消息和响应消息的一个组成格式,比如说,客户端给服务器端说话,发送了一些请求消息,服务器端得看的懂这些消息,那要看得懂的前提是你得知道这个消息的格式组成规则,那么同理,服务器给客户端发送相应,客户端要解析响应消息,也要知道响应消息的一个组成格式,才能够解析的动作,要不然,两个人交流肯定是不通畅的,这是我们说的传输协议)
          ※特点
             1.基于TCP/IP的高级协议议
          (TCP协议和UDP协议,这是两种比较低级基础的协议,TCP是可靠的,安全的,他在发送之前需要经过三次握手来确保双方都连接好了,那么也就是说,HTTP他基于TCP,那也就是说HTTP也是一种可靠安全的传输协议)
             2.默认端口:80
          (一访问后,www.itcast.cn这就是个资源,其实呢www.itcast.cn是个域名,他其实对应的是一个ip地址,那么我们应该去访问他对应的端口号,如果我把Tomcat的默认端口号也设置为80,那么这样写www.itcast.cn这样写www.itcast.cn:80都是一样的,因为http一些的端口号就是80,)

             3.基于请求/响应模型的:一次请求对应一次响应
          (我发一次请求得收到一次响应,再发一次再收到一次,不会出现我发一次出现多次响应的情况,响应和请求是一一对应的)

             4.无状态的:每次请求之间相互独立,不能交互数据
          (也就是说,我作为客户端,我和服务器端之间,不可能就一次请求响应的完事了,将来肯定有多次的请求和相应,那么每一次请求之间都是相互独立的,不能去通信数据,不能相互得去交互数据,)

          ※历史版本
             ※1.0:每一次请求响应都会建立新的连接
             ※1.1:复用连接

          (比如说打开访问一个百度的首页面,这个首页也算是一个资源,那么现在有个问题,就是现在请求的这个百度首页的资源,我作为客户端,我这个浏览器是客户端,我向百度的服务器端发送了几次请求啊,很多人可能会说一次啊,不就是访问了一次吗,但是不是的,他其实发送了多次请求,收到了多次响应,因为在一个页面中,所以的图片资源、css资源,js文件资源,这都是单独的请求,可以打开F12看看,点击Network,刷新一下,可以看到下面的一个列表,列表上面的每一项都是一次请求和响应,可以看到图片都是单独请求响应的,js资源,所以我们要知道,将来每一个页面里边每一张图片都是一次单独的请求,那么在1.0的协议模型下,就是我拿到了一个请求,我发送了一个请求,然后呢请求了这张图片,请求完毕了之后,图片收到了,响应也成功的结束了,然后呢服务器和客户端之间会把这次连接断开,因为他们要交互数据得建立个连接,把连接断开,在断开之后呢,在发送下一张图片的时候,又会去建立一次连接,建完之后,发送数据,发完之后,又断开,建立连接,发送数据,断开,建立连接,发送数据,断开,这样的话连接就会被多次建立,而且多次的丢弃掉,那么这样就会影响我们传输的一个速度,因为建立连接还是比较耗时的,而且消耗资源,如果让我们做,我们可以考虑一下,我建立了一次连接之后,我将这个连接进行复用,比如说刚开始的时候我请求一张图片,请求了这个图片之后,会面还有很多数据没有传,就是如果后面还有数据要发送,我就继续复用刚才那个连接,就不去建立新的了,这样就节约了连接的资源,也提升了传输的速度,所以这就是1.0和1.1的区别,就是第一次请求连接发送了第一个数据,就等一会,看看后面还有数据要发送吗?到了最后一个发送完了,也在等一会,,没有了就释放连接)
在这里插入图片描述
          (HTTP这个协议是基于请求/响应模型的,那么意味着他发送的请求消息数据格式和相应消息数据格式有两部分)

          ※请求消息数据格式
            1.请求行
            请求方式 请求url 请求协议/版本GET /login.html HTTP/1.1
            ※请求方式:
              ※HTTP协议有7种请求方式,常用的有2种:
                ※GET:
                  1.请求参数在请求行中,在url后。
                  2.请求的url长度是有限制的
                  3.不太安全

                ※*POST:
                  1.请求参数在请求体中
                  2.请求的url长度是没有限制的
                  3.相对安全

            2.请求头:客户端浏览器告诉服务器一些信息
            请求名称:请求头值,多个可以用逗号隔开,键值对的形式
            (浏览器告诉服务器一些我们浏览器自身的一些信息,都是一些信息,这些信息包含了很多内容)
            ※常见的请求头
                  1.Host表示请求的主机是什么.
                  2.User-Agent;浏览器告诉服务器,我访问你使用的浏览器版本信息
                     ※可以在服务器端获取该头的信息,来解决浏览器的兼容性问题
                     (比如说,我现在有好多浏览器,那么好多浏览器访问同一个资源,访问这个同一个资源后,将来响应回来一些静态的页面,html页面,那么每个页面呢每个浏览器显示或者解析这个页面的时候他们拿到了之后,由于浏览器版本不一样,或者说类型也不一样,那么他们显示的样子,最终的样式不是那么太相似,太相同,因为浏览器的解析引擎是他们厂商自己写的,会存在一些间兼容的问题,那么这个时候我们可以在服务器这边判断,你是哪个,比如说你是火狐就给你响应火狐相应的代码,360浏览器就相应360相应的代码,还是QQ浏览器就给你响应相应的代码,就是说我们可以在服务器端获取头的信息,写不同的代码,将来给不一样的浏览器响应不一样的代码,需求一种用户通过不同的浏览器访问同一个资源看到相同的响应的布局和结果,这就是解决浏览器的兼容性问题)
                  3.Accept:告诉服务器,我作为浏览器,我可以接收你给我的什么样的响应信息格式,*/*表示什么都可以
                  4.Accept-Language:我可以支持的语言环境
                  5.Accept-Encoding:我可以接收的压缩格式
                  6.Referer:http//localhost/login.html
                     ※告诉服务器,我(当前请求)从哪里来?
                       ※作用
                         1.防盗链:
                         2.统计工作:
在这里插入图片描述
              (比如说现在你想去一个网站看电影,假如说优酷,那么优酷的首页上有很多电影资源的链接,战狼2,将来你作为一个用户,你肯定要定战狼2这个超链接,一点超链接就到了一个电影播放页面,就到了优酷的电影播放页面,里面就是播放战狼2 电影,那么现在呢,优酷要想放这个战狼2这么一个电影,他得去跟这个战狼2的制片厂商去买这个电影的版权信息,买了之后,优酷的流量就增加了很多,因为很多人都想看它,那么现在我这么一个程序员,我也想赚点钱,我现在也写了个页面,虽然是个穷屌丝,但是我也想做个电影网站啊,写完之后,我也想放一些电影,咋办呢,没钱,我买不了这些版权信息啊,买一个好几百万,没钱没关系,我可以用技术的方式去解决,我在里边搞个超链接战狼21082P超高清,将来用户上了我的电影网站一点,要放这个电影了,咋办呢,没钱啊,没钱很简单,没钱没资源,谁有啊,优酷有啊,我就把这个超链接指向优酷电影的播放界面,这样用户一点就跑到优酷去看了,那么我的电影网站流量就会增加,我通过一些广告的收益,就可以赚很多的钱,那么我们称这个过程,我的电影网站指向了优酷的播放界面就称为盗链,那么优酷作为一个大的视频播放网站,他需不要来解决别人盗取他链接的问题,肯定是要解决的,现在的解决方案很简单,我告诉你,你给我赔钱,在早期,国内的网络监管还不是很严格的时候,盗链的情况经常发生,小说网站,视屏网站,各种的网站都存在盗链的情况,那个时候没人在意版权的问题,包括这些大型的网站,都是盗链盗出来的,那么这个时候,优酷通过不了法律的武器来制裁你,那就通过技术的方案来制裁你,简单,我就在这个地方用Referer这个头来解决这个问题,我就判断Referer是否等于优酷的首页,Referer是在当前这个电影播放页面里边获取当前这个超链接或者这个请求从哪来,你要是从优酷的首页来,我就然你放电影,如果不是就证明当前这个请求链接是被盗取的,是盗链来的一个请求,那么这个地方我就要赶点事了,我就说想看吗来优酷吧,先盗优酷的首页。那么防完盗链后,我的网站就用不了,虽然我的网站现在用不了,现在我也通过盗链非法的手段积攒了很多的钱,现在我又有钱买电影资源了,但是现在我的网站流量不是很多啊,我想把这个网站做大做强,那就要推广,打广告,比如说我去花了三百万,投广告费,给了百度100万,让百度给我推广,然后我又给了100万,给了新浪,又给了搜狐,花了三百万来打这个广告,现在呢到了月底了,我想去统计下,你是从百度来的人多还是从新浪来的用户多,那就要在这个网站的首页写写字啊,代码啊判断,如果referer等于百度,我就百度++,同理++,将来就来判断百度的count、新浪的count、搜狐的count,哪个多,就可以知道哪个帮宣传得比较好,都给钱给他得了)
                  7.Connection:连接状况
                  8.Upgrade-Insecure:关于一个升级的信息

            3.请求空行
               空行,就是用于分割POST请求的请求头,好请求体的。

            4.请求体(正文):
               封装POST请求消息的请求体参数的
               (这部分GET类型没有)

               ※字符串格式;

               GET /login.html HTTP/1.1

               Host:localhost

                User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537. 36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

               Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
               Accept-Language:zh-CN,zh;q=0.9

               Accept-Encoding:gzip, deflate, br

               Connection:keep-alive

               Upgrade-Insecure-Requests:1

               如果是POST的
请求体是 username =zhangsan/font>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值