[外链图片转存失败(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深入笔记的更多相关文章

  1. Spring的单例模式底层实现学习笔记

    单例模式也属于创建型模式,所谓单例,顾名思义,所指的就是单个实例,也就是说要保证一个类仅有一个实例.单例模式有以下的特点:①单例类只能有一个实例②单例类必须自己创建自己的唯一实例③单例类必须给所有其他 ...

  2. LinkedList底层代码解析笔记

    LinkedList是属于Sequence List,故遍历是用迭代器更快; LinkedList继承自AbstractSequenceList.实现了List及Deque接口.其实AbstractS ...

  3. ArrayList底层代码解析笔记

    通过底层代码可以学习到很多东西: public class ArrayList<E> extends AbstractList<E> implements List<E& ...

  4. iOS网络编程笔记——Socket底层实现笔记

    Socket简单底层实现笔记: 以Socket客户端编程为例: 1.导入头文件 #import <arpa/inet.h> #import <netinet/in.h> #im ...

  5. Java并发之底层实现原理学习笔记

    本篇博文将介绍java并发底层的实现原理,我们知道java实现的并发操作最后肯定是由我们的CPU完成的,中间经历了将java源码编译成.class文件,然后进行加载,然后虚拟机执行引擎进行执行,解释为 ...

  6. 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试

    <软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序  启动IE并连接到这个实例  如何判断待测web程序完全加载到浏览 ...

  7. Spring Cloud底层原理(转载 石杉的架构笔记)

    拜托!面试请不要再问我Spring Cloud底层原理 原创: 中华石杉 石杉的架构笔记   目录 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核 ...

  8. 《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构

    <PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共1 ...

  9. 【笔记】直接使用protocol buffers的底层库,对特定场景的PB编解码进行处理,编码性能提升2.4倍,解码性能提升4.8倍

    接上一篇文章:[笔记]golang中使用protocol buffers的底层库直接解码二进制数据 最近计划优化prometheus的remote write协议,因为业务需要,实现了一个remote ...

随机推荐

  1. Nginx惊群问题

    Nginx惊群问题 "惊群"概念 所谓惊群,可以用一个简单的比喻来说明: 一群等待食物的鸽子,当饲养员扔下一粒谷物时,所有鸽子都会去争抢,但只有少数的鸽子能够抢到食物, 大部分鸽子 ...

  2. Java 并发框架Disruptor(七)

    Disruptor VS BlockingQueue的压测对比: import java.util.concurrent.ArrayBlockingQueue; public class ArrayB ...

  3. docker查看容器日志

    原文:docker查看容器日志 前言 $ sudo docker logs -f -t --tail 行数 容器名 1 2 1.命令查看 root@c68d4b5dd583c4f4ea30da2989 ...

  4. VisualStudio 连接 MySql 实现增删查改

    首先创建数据库,建立一个用户登录表 2.visualStudio默认是不支持MySql的,要想通过Ado.Net 操作MySql 需要在管理NeGet包添加对MySql.Data  和 MySql.D ...

  5. Spring AOP创建Throwdvice实例

    1.异常发生的时候,通知某个服务对象做处理 2.实现throwsAdvice接口 接口实现: public interface IHello { public void sayHello(String ...

  6. webapi session

    webapi中使用session 修改global.cs里面的内容 using System; using System.Web; using System.Web.Routing; using Sy ...

  7. 心知天气数据API 产品的高并发实践

    心知天气数据API 产品的高并发实践 心知天气作为国内领先的商业气象服务提供商,天气数据API 产品从公司创立以来就一直扮演着很重要的角色.2009 年API 产品初次上线,历经十年,我们不断用心迭代 ...

  8. go语言 goquery爬虫

      goquery 类似ruby的gem nokogiri goquery的选择器功能很强大,很好用.地址:https://github.com/PuerkitoBio/goquery 这是一个糗百首 ...

  9. 1.1“Linux操作系统”部署

    ---恢复内容开始--- 1.2.1 版本说明 操作系统版本:CentOS6.5 64位 1.2.2 部署条件说明 无 1.2.3 部署步骤说明 centos6.5 操作系统安装 1.创建虚拟机 2. ...

  10. [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 ...