【一起来烧脑】底层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 ...
随机推荐
- Nginx惊群问题
Nginx惊群问题 "惊群"概念 所谓惊群,可以用一个简单的比喻来说明: 一群等待食物的鸽子,当饲养员扔下一粒谷物时,所有鸽子都会去争抢,但只有少数的鸽子能够抢到食物, 大部分鸽子 ...
- Java 并发框架Disruptor(七)
Disruptor VS BlockingQueue的压测对比: import java.util.concurrent.ArrayBlockingQueue; public class ArrayB ...
- docker查看容器日志
原文:docker查看容器日志 前言 $ sudo docker logs -f -t --tail 行数 容器名 1 2 1.命令查看 root@c68d4b5dd583c4f4ea30da2989 ...
- VisualStudio 连接 MySql 实现增删查改
首先创建数据库,建立一个用户登录表 2.visualStudio默认是不支持MySql的,要想通过Ado.Net 操作MySql 需要在管理NeGet包添加对MySql.Data 和 MySql.D ...
- Spring AOP创建Throwdvice实例
1.异常发生的时候,通知某个服务对象做处理 2.实现throwsAdvice接口 接口实现: public interface IHello { public void sayHello(String ...
- webapi session
webapi中使用session 修改global.cs里面的内容 using System; using System.Web; using System.Web.Routing; using Sy ...
- 心知天气数据API 产品的高并发实践
心知天气数据API 产品的高并发实践 心知天气作为国内领先的商业气象服务提供商,天气数据API 产品从公司创立以来就一直扮演着很重要的角色.2009 年API 产品初次上线,历经十年,我们不断用心迭代 ...
- go语言 goquery爬虫
goquery 类似ruby的gem nokogiri goquery的选择器功能很强大,很好用.地址:https://github.com/PuerkitoBio/goquery 这是一个糗百首 ...
- 1.1“Linux操作系统”部署
---恢复内容开始--- 1.2.1 版本说明 操作系统版本:CentOS6.5 64位 1.2.2 部署条件说明 无 1.2.3 部署步骤说明 centos6.5 操作系统安装 1.创建虚拟机 2. ...
- [MySQL] 行级锁SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE
一.译文 翻译来自官方文档:Locking Reads If you query data and then insert or update related data within the same ...