【一起来烧脑】底层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)]

原文地址:https://www.cnblogs.com/dashucoding/p/11932353.html