摘要

本文主要内容介绍什么是http协议

了解http协议之前我们先了解一下当我们输入一个url到页面渲染出来,这个过程发什么了什么呢~

网络开启线程开始解析url

DNS解析域名,查询IP

建立TCP/IP链接

然后发送请求

什么是HTTP协议:

HTTP即超文本传输协议,作为网络协议中的应用层的协议,它是一种文明的协议,传输过程中传输内容对外是可见的。

HTTP的特点:

HTTP协议是基于TCP/IP通信以协议来传递数据的,数据类型可以是JSON、表单、HTML、图片等等

HTTP默认端口号为80

HTTP是协议是无状态的,每一次的请求与响应彼此没有任何关系(这也是为什么产生Session、Cookie、Token的原因)

HTTP请求组成部分

请求行

请求行有请求方法、URL字段、HTTP协议版本号三部分组成

HTTP请求方式:POST GET PUT DELETE OPTIONS等等

在这里需要了解到,HTTP请求也分为简单请求跟复杂请求

那么一个HTTP请求如何满足是简单请求:

1HTTP请求类型为:HEAD、GET、POST

2HTTP头包含:Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type

       Content-Type仅能是application/x-www-form-urlencoded、multipart/form-data、text/plain之一

复杂请求:

如果不满足简单请求的条件便是复杂请求,一个复杂请求的通信,不仅包含通信内容的请求,而且还包含一个预请求。

简单请求与复杂请求对比:

简单请求

复杂请求

其中预请求的请求类型为OPTIONS

请求头

用来向客户端解释请求信息

请求报头常见属性(这里重点解释常用的):

Accept:可接受响应类型(application/json、text/plain等)

Accept-Charest:可接收的字符集(utf-8等)

Accept-Encoding:可接受的相应内容的编码方式(gzip、deflate等)

Accept-Language:可接受的响应内容语言列表(en-US、zh-CN等)

Authorization:http认证信息(oauth认证)

Cache-Control:缓存机制控制(on-cache、on-store、max-age、public、private)

Connection:客户端优先使用的链接类型(keep-alive、upgrade)

User-Agent:浏览器的身份标识字符串

Origin:发起一个针对跨域资源共享的请求

If-Modified-Since:上一次响应的Last-Modified的值回当做If-Modified-Since的值发送给服务器

If-None-Match:上一次响应的ETag的值会当做If-None-Match的值发送给服务器

Referer:表示跳转到当期那页面的之前页面

消息主题:前台向后台发送的数据

HTTP响应

我们用抓包工具抓取一个响应如图

响应行

响应行由HTTP协议版本号、状态码,以及状态描述三部分组成(例如途中:HTTP/1.1 200 OK)

响应头组成部分

Cache-Control:no-store no-cache max-age等等

Date:响应时间

Expires:新鲜度,通知浏览器过期前可以使用副本

Content-Length:响应内容大小

Content-Type:响应类型

ETag:校验值,校验从服务器端获取内容是否发生改变

响应正文:服务器发送给客户端的内容

http协议组成的更多相关文章

  1. HTTP协议系列(1)

    一.为什么学习Http协议       首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...

  2. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

  3. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  4. 协议森林16 小美的桌号(DHCP协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...

  5. 简约之美Jodd-http--深入源码理解http协议

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...

  6. 【JavaScript】javascript中伪协议(javascript:)使用探讨

    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...

  7. SNMP简单网络管理协议

    声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...

  8. 海鑫智圣:物联网漫谈之MQTT协议

    什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...

  9. linux-图形化远程管理协议

    远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...

  10. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

随机推荐

  1. Spring加载资源文件的方式

    UrlResource 封装了java.net.URL,它能够被用来访问任何通过URL可以获得的对象,例如:文件.HTTP对象.FTP对象等.所有的URL都有个标准的 String表示,这些标准前缀可 ...

  2. uwsgi 的启动、停止、重启

    ## 一.概念释义### WSGI WSGI 是一个Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范(协议).官方定义是,the Python Web Server Gatewa ...

  3. 【Luogu5294】[HNOI2019]序列

    题目链接 题意 给定一个序列,要求将它改造成一个非降序列,修改一个数的代价为其改变量的平方. 最小化总代价. 另有\(Q\) 次询问,每次修改一个位置上的数.(询问之间独立,互不影响) Sol 神仙 ...

  4. ESP8266-Station模式--我想连上谁

    Station模式又叫做站点工作模式,类似于无线终端 处于Station模式下的ESP8266,可以连接到AP.通过Station(简称为“STA”)模式,ESP8266作为客户端连接到路由的wifi ...

  5. select编程[回调+事件循环]

    感觉比java写起来还要忧伤..... """ select , poll,epoll 注意: epoll并不一定比select的性能好,这需要看场景 1. 在高并发场景 ...

  6. NOIP2018 D1T3赛道修建

    题目链接:Click here Solution: 最小值最大,考虑二分一个答案\(k\) 考虑在子树内先匹配,最后传递一个值给自己的父亲(因为每条边只能用一次,所以一颗子树最多传递一个值) 那么我们 ...

  7. luoguP1514 引水入城 x

    P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城 ...

  8. codevs 1079 回家x

    1079 回家  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver   题目描述 Description 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰 ...

  9. 今天跟outlook顶上牛了

    之前使用的是2007,然后之前弄东西的时候给升到2010了,之前就是把所有的邮件都保存到本地的文件中,我还想使用之前的文件,然后2010就是不好使,后来查了半天发现原来是需要手动创建账户,参考http ...

  10. 2019.9.23JAVA课堂测试

    1.题目 使用递归方式判断某个字串是否是回文( palindrome ) “回文”是指正着读.反着读都一样的句子.比如“我是谁是我”使用递归算法检测回文的算法描述如下:A single or zero ...