一、HTTP定义

超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

HTTP是一个属于应用层的面向对象协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出。

HTTP协议是构建再TCP/IP协议之上的,是TCP/IP协议的一个子集。

二、TCP/IP协议

TCP/IP协议族是由一个四层协议组成的系统,这四层分别是:应用层、传输层、网络层、数据链路层

应用层:一般是我们编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。

如FTP、DNS、HTTP等。

传输层:通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。

传输层由两个性质不同的协议:TCP和UDP。TCP面向连接,UDP无连接。

网络层:用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。

网络层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传输给对方。

链路层:用来处理连接网络硬件部分,包括控制操作系统、硬件设备驱动、NIC网络适配器以及光纤等物理可见部分。硬件范畴均在链路层作用范围。

三、数据包封装过程

四、HTTP数据传输过程

发送端发送数据,数据会从上层传输到下层,且每经过一层都会被打上该层的头部信息。

接收端接受数据,数据会从下层传输到上层,传输前会把下层头部信息删除。

五、传输层TCP三次握手

使用TCP协议进行通信的双方必须先建立连接,然后才能开始传输数据。为了确保连接双方可靠性,在建立连接时,TCP协议采用了三次握手策略。

三次握手主要是为了判断客户端和服务端的收发能力都是正常。

第一次握手服务端能判断客户端发送能力正常

第二次握手客户端能判断服务端接收能力正常和自己发送能力正常

第三次握手服务端能判断服务端发送能力正常

TCP连接全过程:

六、HTTP协议特点

1、支持客户/服务器模式,必须是客户端发起的请求

2、简单快速,发送请求时只需传送请求方法和路径

3、灵活,允许传输任意类型的数据对象,正在传输的类型由Content-Type来标记

4、无连接,限制每次连接只处理一个请求

5、无状态,对于事务处理没有记忆能力

七、URI与URL

URI:一个紧凑的字符串用来标示抽象或物理资源

URI可以进一步被分为定位符、名字或两者都是

术语“Uniform Resource Locator”(URL)是URI的子集,除了确定一个资源,还提供一种定位该资源的主要访问机制(如网络“位置”)

URI可以分为URL,URN或同时具备locators和names特性的一个东西

URN作用就好像一个人的名字,URL就像一个人的地址

URN确定了东西的身份,URL提供了找到它的方式

八、HTTP报文结构

请求报文:

HTTP的报文头可分四类:

1、通用报文头

2、请求报文头

3、响应报文头

4、实体报文头

HTTP1.1中一共定义了47种报文头

响应报文:

九、HTTP请求方法

1、GET

2、POST

3、PUT,PUT和POST的区别,PUT是幂等,而POST是不幂等。

4、HEAD,类似于GET请求,只不过返回的响应中没有具体内容,用于获取报文头。

5、DELETE

6、OPTIONS,用来查询针对请求URI指定的资源支持的方法。

7、TRACE,回显服务器收到的请求,主要用于测试或诊断,容易引发XST的攻击。

8、CONNECT,开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道。一般代理服务会使用。

十、状态码

1XX:表示消息,代表请求已被接受。

2XX:表示成功。

2XX常见状态码:

3XX:表示重定向。

3XX常见状态码

4XX:表示请求错误,一般是客户端发生错误。

4XX常见状态码

5XX:表示服务端错误。

5XX常见状态码

十一、HTTP状态管理

Cookies 与 Session

Cookies工作原理

Session工作原理

Cookies与Session的不同

1、存放位置

2、安全性(隐私策略)

3、有效期

4、对服务器压力

十二、HTTP协议身份认证

1、BASIC认证(基本认证)

2、DIGEST认证(摘要认证)

3、SSL客户端认证

4、FormBase认证(基于表单认证)

十三、HTTP的长连接和短连接

长连接和短连接本质是TCP长连接和短连接。

十四、代理

代理作用:抓包、FQ、匿名访问、过滤器。

代理是相同协议的转发。

十五、网关

网关可以作为某种翻译器使用,它抽象了一种能够到达资源的方。网关是资源和应用程序之间的粘合剂。

网关是不同协议的转发。

十六、HTTP缓存

1、Cache-Control:请求/响应头,缓存控制字段

no-store:所有内容都不缓存

no-cache:缓存,但是浏览器使用缓存前,都会请求服务器判断缓存资源是否是最新

max-age=x(单位秒)请求缓存后的X秒不再发起请求

s-maxage=x(单位秒)代理服务器请求源站缓存后的X秒不再发起请求,只对CDN缓存有效

public:客户端和代理服务器(CDN)都可缓存

private:只有客户端可以缓存

2、Expires:响应头,代表资源过期时间,由服务器返回提供,是http1.0的属性,在与max-age共存的情况下,优先级要低

3、Last-Modified,响应头,资源最新修改时间,由服务器告诉浏览器。

if-Modified-Since,请求头,资源最新修改时间,由浏览器告诉服务器,和Last-Modified是一对,两个进行比对。

4、Etag,响应头,资源标识,由服务器告诉浏览器。

if-None-Match,请求头,缓存资源标识,由浏览器告诉服务器(其实是上次服务器给的Etag),和Etag是一对,两个进行比对。

用户操作对缓存的影响:

十七、HTTP内容协商机制

指客户端和服务端就响应内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

内容协商方式:

1、客户端驱动,几乎不用,因为需要两次请求才能进行正式内容的发送

2、服务器驱动,服务器检查客户端的请求头部集决定提供哪个版本的页面

请求头部集:

  (1)Accept:告知服务器发送何种媒体类型

  (2)Accept-Language:告知服务器发送何种语言

  (3)Accept-Charset:告知服务器发送何种字符集

  (4)Accept-Encoding:告知服务器采用何种编码

响应头部集:

  (1)Content-Type

  (2)Content-Language

  (3)Content-Type

  (4)Content-Encoding

3、透明协商,中间设备协商,不常用可能是未来趋势

服务器驱动内容协商的近似匹配

如:Accept-Language:en;q=0.5,fr;q=0.0,nl;q=1.0,tr;q=0.0

q1.0的优先级最高

十八、HTTP断点续传和多线程下载

断点续传实现方式:

HTTP是通过在Header里两个参数实现,客户端发请求时对应的时Range,服务端响应时对应的是Content-Range。

  Range:用户请求头中,指定第一个字节位置和最后一个字节位置,

      一般格式:Range:(unit=first byte pos)-(last byte pos)

  Content-Range:用于响应头中,在发出带Range的请求后,服务器在Content-Range头部返回当前接受的范围和文件总大小,

          一般格式:Content-Range:bytes(unit first byte pos)-[last byte pos]/[entity length]

使用断点续传的状态码是206 Partial Content

多线程下载就是利用断点续传进行主动的拆包下载。

十九、HTTPS

内容加密:非对称密钥交换、对称内容加密

身份认证:数字证书

二十、HTTP协议的瓶颈

一条连接上只能发送一次请i去

请求只能从客户端开始。客户端不可以接受除响应以外的指令

请求\响应头部不经压缩就发送

每次相互发送相同的头部造成的浪费

非强制压缩发送

二十一、WebSocket

二十二、HTTP2.0

优势点:

1、性能增强核心:二进制分帧

2、首部压缩

3、多路复用

4、并行双向字节流的请求和响应,即可以无序传输

5、服务器推送

仍存问题

1、队头阻塞

2、建立连接的握手延迟大

二十三、HTTP3.0

基于谷歌提出的QUIC协议进行的改造。

优势:

1、0 RTT

2、没有队头阻塞的多路复用

3、前包纠错功能

深入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. c# Winform中如何把图片添加到resources中

    我们在Winform项目中中需要插入图片资源,但是新建的项目中找不到Resources文件夹,怎么才能出现呢? 1:双击项目下的Resources.resx,出现视图 2:单击"添加资源&q ...

  2. 关于UI自动化IOS元素定位方法说明

    1. 元素属性介绍 下图是通过weditor定位的微博的"我的钱包",各属性如下图: className:元素类型,如:XCUIElementTypeButton isEnable ...

  3. JZ-059-按之字形顺序打印二叉树

    按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目链接: 按之字形 ...

  4. SpringBoot连接Redis (Sentinel模式&Cluster模式)

    一.引入pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  5. Android 12(S) 图形显示系统 - 初识ANativeWindow/Surface/SurfaceControl(七)

    题外话 "行百里者半九十",是说步行一百里路,走过九十里,只能算是走了一半.因为步行越接近目的地,走起来越困难.借指凡事到了接近成功,往往是最吃力.最艰难的时段.劝人做事贵在坚持, ...

  6. LGP4609题解

    题意简单明确( 很容易知道最高的位置一定是左边能看到最高的和右边能看到最高的.于是我们考虑一个 dp: 设 \(dp[n][A][B]\) 表示长度为 \(n\) 的排列,左边有 \(A\) 个 ba ...

  7. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  8. Linux指令_入门基础

    一.基础指令语法 1.ls指令: 用法1:#ls 含义:列出当前工作目录下的所有文件/文件夹的名称. 用法2:#ls 路径 含义:列出指定路径下的所有文件/文件夹的名称 用法3:#ls 选项 路径 含 ...

  9. Linux内核升级修复系统漏洞-RHSA-2017:2930-Important: kernel security and bug fix update

    公司使用的阿里云服务器(Centos7.4 x86_64bit)内核版本为:3.10.0-693.21.1.el7.x86_64, 2019年3月4日 02:07:58通过云盾安骑士-->漏洞管 ...

  10. DDOS防御----CENTOS 内核TCP参数优化

    0x01 环境 attact作为攻击发起方,安装有hping server作为被攻击方,修改内核TCP参数.使用操作系统CENTOS7 0x02 步骤 一.发起攻击 修改TCP最大SYN连接数 使用a ...