【一起来烧脑】底层HTTP深入笔记
[外链图片转存失败(img-0GQ8QDNb-1563568792102)(https://upload-images.jianshu.io/upload_images/11158618-5bc7a2a4da359f48.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
了解Web和网络基础,了解HTTP协议,HTTP报文内的HTTP信息,返回结果的HTTP状态码,了解Web服务器,了解HTTP首部,了解安全的HTTPS,确认访问用户身份的认证,基于HTTP的功能追加协议,构建Web内容的技术,Web的攻击技术。
浏览器客户端发送请求,到服务器,服务器返回的状态码正常为2xx,不正常为状态码4xx,5xx
使用http协议访问web,浏览器客户端地址栏输入url,发送请求到服务器端,从服务器端获取回复,内容就会显示在web页面上,这些内容不是凭空出现的,是根据web浏览器地址栏中的Url,从服务器端获取的资源文件等信息,显示的。
通过发送请求想服务器获取资源的Web浏览器,都可以叫做客户端。
Set WshShell =
WScript.CreateObject
("WScript.Shell")
WshShell.AppActivate "女朋友"
for i = 1 to 23
WScript.Sleep 23
WshShell.SendKeys "^v"
WshShell.SendKeys i
WshShell.SendKeys "%s"
Next
vbs
web使用一种名为http的协议作为规范,超文本传输协议,完成从客户端到服务器端等一系列工作流程,协议是两者规则的约定,web的通信是建立在http协议上的。
背景让远离两地的朋友们能共享文件,基本理念:
借助多文档之间相互关联形成的超文本,连成可相互参阅的www,即万维网。
即刻出现作为网页,页面的文本标记语言,为HTML,超文本标记语言,文档之间传输的协议http,超文本传输协议,指定文档所在地址的URL为统一资源定位符。
[外链图片转存失败(img-t8PurJwN-1563568792105)(https://upload-images.jianshu.io/upload_images/11158618-bbe9ee68fa98da7f.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
世界上第一天web服务器和web浏览器在1990年11月诞生
HTTP/1.1
1997 年 1 月公布为目前主流的 HTTP 协议版本
HTTP协议是为了解决文本传输
网络基础 TCP/IP
TCP/IP 协议族
TCP/IP 协议族包含HTTP
TCP/IP 是互联网相关的各类协议族的总称
TCP/IP 的分层管理
TCP/IP 协议族按层次分别分 为以下 4 层:
应用层、传输层、网络层和数据链路层。
划分为各层的原因是如果有某部分做了变动,就可以只需要把变动的那层替换掉就行。
那么应用层是干嘛的呢,应用层决定了向用户提供应用服务时通信的活动。
HTTP 协议处于应用层
传输层
传输层提供了处于网络连接中的两台计算机之间的数据传输。
网络层
网络层用来处理在网络上流动的数据包。
数据包是网络传输的最小数 据单位。
链路层
用来处理连接网络的硬件部分。
TCP/IP 通信传输流
[外链图片转存失败(img-qsFz2vFR-1563568792107)(https://upload-images.jianshu.io/upload_images/11158618-742887886c4f1f89.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
TCP/IP 协议族进行网络通信时,会按照分层顺序进行通信,客户端(发送端)从应用层往下走,服务端(接收端)从下往上走。
[外链图片转存失败(img-0UdcZLSV-1563568792117)(https://upload-images.jianshu.io/upload_images/11158618-1c068f107db0bee1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部去掉。
与 HTTP 关系密切的协议 : IP、TCP 和 DNS
负责传输的 IP 协议
IP协议位于网络层
IP 协议的作用是把各种数据包传送给对方。
IP地址指明了节点被分配到地址,MAC地址是指网卡所属的固定地址。IP地址和MAC地址进行配对。
TCP 协议
TCP 位于传输层,提供可靠的字节流服务
TCP协议是为了更容易传送大量的数据才把数据进行分隔的,TCP协议能够确认数据最终是否送达到对方。
为了确保数据准确无误的送达,TCP协议的三次握手出现了,TCP协议把数据包送出去后,会进行确认,一定会想对方确认是否成功到达。
三次握手:
发送端,发送带有SYN的数据包,到接收端
接收端,接收到发送端发的数据包,并发送带有SYN/ACK的数据包,给发送端
发送端,接收到SYN/ACK的数据包后,发送带有ACK的数据包,到接收端
负责域名解析的 DNS 服务
DNS服务是和 HTTP 协议一样位于应用层的 协议。
提供域名到IP地址之间的解析服务
IP地址,主机名,域名
用户通过使用主机名或域名来访问其他的计算机。
不是通过IP地址访问。
DNS 服务
DNS 协议提供通过域名 查找 IP 地址,或逆向从 IP 地址反查域名的服务。
发送端,想要访问某个网页,发送端说:把它的IP地址告诉我吧,DNS,把对应的IP地址发送给客户端,然后发送端向IP地址发送给了服务器,进行请求。
各种协议与 HTTP 协议的关系
客户端,说我想要浏览这个页面,告诉我xxx的IP地址吧,跟DNS说,DNS接收到客户端发送的消息,返回IP地址给客户端,http的协议,就是生成针对目标we服务器的HTTP的请求报文,请给我这个页面的资源,TCP协议的作用就是为了方便通信,将HTTP请求报文分割成文段,一段一段的按序号分为多个把每个报文段可靠地传给对方。
IP协议就是搜索对方的地址,一边中转一边传送
tcp协议的
从对方那里接收到的报文段,重组到达的报文段,按序号以原来的顺序重组请求报文
http协议
对web服务器请求的内容,发送客户端想要的资源
通过服务器发送给客户端,请求的处理结果同样利用tcp/ip通信协议向用户进行回传。
URI 和 URL
URI
统一资源标识符
URL
统一资源定位符
ur:
协议方案名,登录信息,服务器地址,服务器端口号,带有层次的文件路径,查询字符串,片段标识符
了解HTTP协议
HTTP 协议用于客户端和服务器端之间 的通信
请求访问文本或图像等资源的一端称为客户端
提供资源响应的一 端称为服务器端
通过请求和响应的交换达成通信
请求必定由客户端发出,而服务器端回复响应
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段 和内容实体构成的
响应报文基本上由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主 体构成
HTTP 是不保存状态的协议
无状态协议
HTTP 协议自身不具备保存之前发送过的请求或响应的功能
Cookie 技术的出现是为了实现期望的保持状态功能
请求 URI 定位资源
HTTP 协议使用 URI 让客户端定位到资源
GET :获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文首部-和 GET 一样,但不返回报文主体
DELETE:删除文件
OPTIONS:询问支持的方法
TRACE:追踪路径
[外链图片转存失败(img-ukUiQyYb-1563568792118)(https://upload-images.jianshu.io/upload_images/11158618-3c4699dc08fdaa54.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
CONNECT:要求用隧道协议连接代理
[外链图片转存失败(img-kWbK0ql9-1563568792121)(https://upload-images.jianshu.io/upload_images/11158618-dde9488bf37c2d4c.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
持久连接节省通信量
HTTP 协议
每进行一次 HTTP 通信就要断开一次 TCP 连接
持久连接
只要任意一端没有明确提出断开连接,则保持 TCP 连接状态
管线化
是用于持久连接多数请求,它的出现,不用等待响应就可以直接发送下一个请求
管线化技术则比持久连接还要快
Cookie 的状态管理
不保存状态的情况下,可以减少服务器的cpu和内存资源的消耗
Cookie 技术通过在请求和响应报文中写入 Cookie 信 息来控制客户端的状态
没有Cookie 信息状态下的请求
[外链图片转存失败(img-WvoVNfUc-1563568792123)(https://upload-images.jianshu.io/upload_images/11158618-85ba0b58292e6b5b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
有cookie之后的请求
[外链图片转存失败(img-ecPlqYiC-1563568792126)(https://upload-images.jianshu.io/upload_images/11158618-2f6fe20cc14eb342.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-rOHH8KIg-1563568792129)(https://upload-images.jianshu.io/upload_images/11158618-33dbf05e4c3b787b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
编码提升传输速率
HTTP 报文的主体用于传输请求或响应的实体主体
通常,报文主体等于实体主体。
只有当传输过程中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异
压缩传输的内容编码
[外链图片转存失败(img-WT4qzADJ-1563568792132)(https://upload-images.jianshu.io/upload_images/11158618-3eeac29d55d9238f.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-1f8PsPbU-1563568792135)(https://upload-images.jianshu.io/upload_images/11158618-e23d75c15525fb52.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
把实体主体分块的功能称为分块传输编码
[外链图片转存失败(img-0DQlclT1-1563568792137)(https://upload-images.jianshu.io/upload_images/11158618-7c4ace0e979391a0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
发送多种数据的多部分对象集合
[外链图片转存失败(img-gbaR9Qux-1563568792139)(https://upload-images.jianshu.io/upload_images/11158618-8348daaf49121133.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
获取部分内容的范围请求
恢复是指能从之前下载中断处恢复下载
内容协商返回最合适的内容
[外链图片转存失败(img-TJ2Y866M-1563568792141)(https://upload-images.jianshu.io/upload_images/11158618-eb5f51d9a58fa491.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-9e0F1NzN-1563568792143)(https://upload-images.jianshu.io/upload_images/11158618-151fc8ab47bc9218.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
返回结果的 HTTP 状态 码
HTTP 状态码
客户端 HTTP 请求的返回结果、标记服务器端 的处理是否正常、通知出现的错误等工作
[外链图片转存失败(img-GGSlnNY4-1563568792144)(https://upload-images.jianshu.io/upload_images/11158618-957554eb15b38095.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-LEJ0cnyE-1563568792146)(https://upload-images.jianshu.io/upload_images/11158618-39089d887095928f.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
204 No Content
[外链图片转存失败(img-SZYQHTyy-1563568792147)(https://upload-images.jianshu.io/upload_images/11158618-95c59f659e751a4e.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
206 Partial Content
[外链图片转存失败(img-4DmzunG5-1563568792149)(https://upload-images.jianshu.io/upload_images/11158618-fcb03cdc8f9f45e1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
400 Bad Request
[外链图片转存失败(img-WfWy2Xjd-1563568792151)(https://upload-images.jianshu.io/upload_images/11158618-ed4e903366d4f0ca.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
Web 服 务器
HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点
通信数据转发程序 :代理、网关、隧 道
[外链图片转存失败(img-G9H8JKXB-1563568792152)(https://upload-images.jianshu.io/upload_images/11158618-08a612e8e697ebf5.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-GmZLcTMV-1563568792153)(https://upload-images.jianshu.io/upload_images/11158618-4cc1101084896ec6.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-Bt4KxTne-1563568792158)(https://upload-images.jianshu.io/upload_images/11158618-ba977e2650a28a14.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
[外链图片转存失败(img-EmWPQzO3-1563568792159)(https://upload-images.jianshu.io/upload_images/11158618-08ea5af26d7f9a87.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
保存资源的缓存
缓存是指代理服务器或客户端本地磁盘内保存的资源副本
利用缓存
可减少对源服务器的访问
节省了通信流量和通信时间
缓存的有效期限
客户端的缓存
HTTP 首部
HTTP 报文首部
HTTP 请求报文
HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等 部分构成
[外链图片转存失败(img-IyXxUcnt-1563568792160)(https://upload-images.jianshu.io/upload_images/11158618-69cf736058542318.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
HTTP 报文由 HTTP 版本、状态码、 HTTP 首部字段 3 部分构成
[外链图片转存失败(img-7MDkDMap-1563568792162)(https://upload-images.jianshu.io/upload_images/11158618-5a4c8685ca7c0527.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
HTTP 首部字段传递重要信息
[外链图片转存失败(img-RGIWxQF9-1563568792164)(https://upload-images.jianshu.io/upload_images/11158618-6b2a4edd4622fe13.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
Web 安全的 HTTPS
[外链图片转存失败(img-9yH9P3BV-1563568792166)(https://upload-images.jianshu.io/upload_images/11158618-7a262436851807c3.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
数据发布的格式及语言
可扩展标记语言
XML可扩展标记语言
是一种可按应 用目标进行扩展的通用标记语言
使互联网数 据共享变得更容易
请点赞!因为你们的赞同/鼓励是我写作的最大动力!
欢迎关注达叔小生的简书!
这是一个有质量,有态度的博客
[外链图片转存失败(img-jDMUEoE8-1563568792167)(https://upload-images.jianshu.io/upload_images/11158618-9ab0d3fef85d80ce?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
【一起来烧脑】底层HTTP深入笔记的更多相关文章
- Spring的单例模式底层实现学习笔记
单例模式也属于创建型模式,所谓单例,顾名思义,所指的就是单个实例,也就是说要保证一个类仅有一个实例.单例模式有以下的特点:①单例类只能有一个实例②单例类必须自己创建自己的唯一实例③单例类必须给所有其他 ...
- LinkedList底层代码解析笔记
LinkedList是属于Sequence List,故遍历是用迭代器更快; LinkedList继承自AbstractSequenceList.实现了List及Deque接口.其实AbstractS ...
- ArrayList底层代码解析笔记
通过底层代码可以学习到很多东西: public class ArrayList<E> extends AbstractList<E> implements List<E& ...
- iOS网络编程笔记——Socket底层实现笔记
Socket简单底层实现笔记: 以Socket客户端编程为例: 1.导入头文件 #import <arpa/inet.h> #import <netinet/in.h> #im ...
- Java并发之底层实现原理学习笔记
本篇博文将介绍java并发底层的实现原理,我们知道java实现的并发操作最后肯定是由我们的CPU完成的,中间经历了将java源码编译成.class文件,然后进行加载,然后虚拟机执行引擎进行执行,解释为 ...
- 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试
<软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序 启动IE并连接到这个实例 如何判断待测web程序完全加载到浏览 ...
- Spring Cloud底层原理(转载 石杉的架构笔记)
拜托!面试请不要再问我Spring Cloud底层原理 原创: 中华石杉 石杉的架构笔记 目录 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核 ...
- 《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构
<PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共1 ...
- 【笔记】直接使用protocol buffers的底层库,对特定场景的PB编解码进行处理,编码性能提升2.4倍,解码性能提升4.8倍
接上一篇文章:[笔记]golang中使用protocol buffers的底层库直接解码二进制数据 最近计划优化prometheus的remote write协议,因为业务需要,实现了一个remote ...
随机推荐
- JavaTCP粘包、拆包
import java.nio.ByteBuffer; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBu ...
- Webform中的前后端分离
Webform常用的开发方式 (1)运用服务器端控件的aspx页面 (2)一般处理程序+html静态页面+Ajax(所谓的前后端分离) (3)一般处理程序+html模板引擎 这里简单记录html+ ...
- C# vb .net实现透视反射效果
在.net中,如何简单快捷地实现Photoshop滤镜组中的透视反射效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- Java调用WebService方法总结(5)--Axis2调用WebService
Axis2是新一点Axis,基于新的体系结构进行了全新编写,有更强的灵活性并可扩展到新的体系结构.文中demo所使用到的软件版本:Java 1.8.0_191.Axis2 1.7.9. 1.准备 参考 ...
- 苹果手机浏览器的$(document).on(“click”,function(){}) 绑定的事件点击无效
需要给对应的元素加上 cursor: pointer 的css样式才可以生效点击事件:
- 【idea】scala&sbt+idea+spark使用过程中问题汇总(不定期更新)
本地模式问题系列: 问题一:会报如下很多NoClassDefFoundError的错误,原因缺少相关依赖包 Exception in thread "main" java.lang ...
- c# 比较字符串
- 解决pycharm新建项目后按钮灰色问题
解决pycharm新建项目后按钮灰色问题 出现过多次该问题了, 在此记录一下 同样适用于导入别人的新项目后无法运行问题 原因一: pycharm没有设置系统解析器 解决方法一: 打开pycharm-& ...
- jmeter多机联合负载
操作步骤如下: 1.在负载机上部署Jmeter,确保Jmeter的bin目录下存在ApacheJMeter.jar与jmeter-server.bat两个文件. 2.双击启动负载机的jmeter-se ...
- rest-framework认证、权限组件
认证组件: models class User(models.Model): username = models.CharField(max_length=32) password = models. ...