其他分享
首页 > 其他分享> > 极客HTTP协议学习笔记破冰篇(1-7)

极客HTTP协议学习笔记破冰篇(1-7)

作者:互联网

极客HTTP协议学习笔记破冰篇(1-7)

前言

因在之前的学习中从未系统的学习过HTTP相关的理论,对于很多HTTP相关的概念都特别的模糊,网上查资料也总是一知半解,时间长了捡了这又忘了那,所以在此记录一下学习笔记和学习方法,结合一点点背书的技巧来协助理解和记忆,避免学完就忘。

各篇章笔记链接

极客HTTP协议学习笔记破冰篇(1-7)
极客HTTP协议学习笔记基础篇(8-14)
极客HTTP协议学习笔记进阶篇(15-22)
极客HTTP协议学习笔记安全篇(23-29)-更新中
极客HTTP协议学习笔记飞翔篇(30-33)-未开始
极客HTTP协议学习笔记探索篇(34-38)-未开始
极客HTTP协议学习笔记总结篇(39-40)-未开始

一、学习笔记

1、HTTP的前世今生

2、HTTP是什么

HTTP不是一个孤立的协议,通常跑在TCP/IP协议栈之上,依靠IP协议来实现寻址和路由,TCP来实现可靠传输,DNS协议实现域名查找,SSL/TLS 协议实现安全通信等,这些协议共同构造了协议网,而HTTP则处于中心地位。

3、与HTTP相关的各种概念(上)

互联网 互联网像是由数不清的大小岛屿组成的“千岛之国”
浏览器(Web Browser) 查看互联网上资源的应用程序。在HTTP协议里,浏览器的角色被称为“User Agent”,即用户代理,意思是作为访问者的“代理”来发起HTTP请求。也称为客户端。
Web服务器(Web Server) HTTP协议的应答方,有两个层面的含义:硬件和软件。硬件含义指物理形式或“云”形式的机器。软件含义指提供Web服务的应用程序,通常运行在硬件含义的服务器上,利用硬件性能相应客户端HTTP请求,或者把请求转发给Tomcat等业务应用返回动态信息。
CDN(Content Delivery NetWork) 内容分发网络,它应用HTTP协议里的缓存和代理技术,代替源站响应客户端的请求。除了基本的网络加速外还提供负载均衡,全防护,边缘计算,跨运营商网络等功能,可以成倍放大源服务器的服务能力
爬虫(Crawler) 是一种可以自动访问Web资源的应用程序,爬虫的基本技术:HTTP,HTML
Web Service 是一种W3C定义的应用服务开发规范,使用client-server主从架构,通过使用WSDL定义服务接口,使用HTTP协议传输XML或SOAP消息,是一个基于Web(HTTP)的服务架构技术
WAF 网络应用防火墙,是应用层面的防火墙,可以阻止SQL注入,跨站脚本攻击,可以完全集成进Apache或Nginx.

4、与HTTP相关的各种概念(下)

TCP/IP 一系列网络通信协议的统称,除了TCP,IP协议,还有UDP,ARP,ICMP等,共同构成一个复杂但有层次的协议栈。
IP(Internet Protocol) 主要目的是解决寻址和路由的问题,以及如何在两点之间传输数据包。
TCP(Transmission Control Protocol) 传输控制协议,它位于IP协议之上,基于IP协议提供可靠的,字节流形式的通信,是HTTP协议得以实现的基础。 可靠是指数据不丢失,字节流是指保证数据完整性。HTTP 可以更准确称为“ HTTP over TCP/IP”
DNS(Domain Name System) 域名系统,域名又称为主机名,使用".“分隔成多个单词,从左到右级别逐渐升高,最右边的称为顶级域名
域名解析 把域名解析为真实IP的过程
URI(Uniform Resource Identifier) 统一资源标识符,用于唯一标识互联网上的资源。由协议名,主机名,资源路径组成
URL(Uniform Resource Locator) 统一资源定位符,URI的一个子集,俗称“网址”
HTTPS 全称"HTTP over SSL/TLS”,也就是运行在SSL/TLS协议上的HTTP
SSL/TLS 一个负责加密通信的安全协议(在传输层加密)
SSL(Secure Socket Layer) 安全套接层协议,使用了许多密码学最先进的研究成果,综合了对称加密,非对称加密,摘要算法,数字签名等技术,能够在不安全的环境中为通信的双方创建一个秘密的,安全的传输通道。
TLS(Transport Layer Security) 安全传输层协议,SSL发展到3.0时被标准化,标准化的SSL就成为TLS。
代理 是HTTP协议中请求方和应答方中间的一个环节,可以转发客户端的请求也可以转发服务端的请求,分为匿名代理,透明代理,正向代理,反向代理,代理的作用:负载均衡、安全防护、内容缓存,数据处理

5、常说的“四层”,“七层”网络分层怎么理解

  1. 链路层(MAC层):负责在以太网,WiFi这样的底层网络上发送原始数据包,工作在网卡层次。
  2. 网际层(网络互联层):IP协议所在层,用IP地址取代MAC地址,把局域网,广域网连接成一个巨大的虚拟网络,在网络里找设备需要把IP地址“翻译成”MAC地址
  3. 传输层:这层协议职责是保证数据再IP地址两点之间“可靠”的传输,是TCP和UDP所在的层次(TCP是有状态的协议,需要先建立连接才能发送数,保证数据不重复不丢失,UDP是无状态的,不用事先建立连接,不保证数据一定发送到对方,TPC是连续的“字节流”,先后有序,UDP是分散的小数据包,顺序发,乱序收)
  4. 应用层:有应用各种应用的协议,如Telnet,SSH,FTP,SMTP,HTTP
  1. 第一层:物理层,网络的物理形式
  2. 第二层:数据链路层,基本相当于TCP/IP的链路层
  3. 第三层:网络层,相当于TCP/IP的网际层
  4. 第四层:传输层,相当于TCP/IP的传输层
  5. 第五层:会话层,维持网络中的连接状态,保持会话与同步
  6. 第六层:表示层,把数据转换为合适可理解的语法和语义
  7. 第七层:应用层,面向具体的应用传输数据

TCP/IP协议栈的工作方式
HTTP传输的过程就是通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包再发送出去;接收数据则是,从下往上穿过协议层,层层拆包,每层去掉专有头,上层就会拿到自己的数据。HTTP下层的协议对于HTTP来说是不可见的。

6、域名里的门道

  1. 根域名服务器:管理顶级域名
  2. 顶级域名服务器:管理各自域下的权威域名服务器
  3. 权威域名服务器:管理自己域名下主机的IP地址

操作系统做域名解析,首先在缓存里找,其次再hosts文件里找,找不到再去访问DNS,如果是在浏览器中访问网址,域名解析会在去操作系统缓存查找之前,先去浏览器缓存中查找

域名可以解决的问题:
1、“重定向”,因为域名代替了ip地址,所以如果需要更换特定域名的ip机器,可以修改DNS记录,让域名指向其他机器
2、可以做基于域名的负载均衡,域名解析可以返回多个ip地址,一个域名可以对应多台主机

可能产生的问题
1、域名屏蔽:直接不解析导致拿不到ip地址
2、域名劫持,解析成错误的ip地址

7、搭建HTTP实验环境

二、灵魂拷问,你记住知识点了吗?

1、HTTP的前世今生

1、请描述一下HTTP发展的几个主要节点(什么时间?谁干了什么事?/发生了什么事?)
答:1989年HTTP诞生;90年代初的版本定为HTTP/0.9版;1996年推出HTTP/1.0,但这个只是参考不是标准;1999年HTTP/1.1发布,这一版是现在广泛应用的一版,是一个正式的标准;2014年Google基于SPDY协议推出HTTP/2.0,性能提升但未普及;2018年Google基于的QUIC协议进入标准制定阶段
2、怎么理解HTTP
答:超文本传输协议,是互联网上基于传输超文本互相沟通的一个协议。

2、HTTP是什么

1、简单讲解一下HTTP的概念
2、简单解释一下HTML
答:HTML是超文本标记语言,它是超文本的载体,可以使用各种标签来描述文字,图片,音频,视频,超链接等资源,可以迁入CSS,JS等技术来实现复杂的效果。

3、与HTTP相关的各种概念(上)

1、简要的解释一下以下概念:
互联网、浏览器、Web服务器、CDN、爬虫、Web Service、WAF

4、与HTTP相关的各种概念(下)

1、简要的解释一下以下概念:
TCP/IP、IP、TCP、DNS、域名解析、URI、URL、HTTPS、SSL/TLS
SSL、TLS
2、代理是什么?代理分哪几种?代理的基本作用

5、常说的“四层”,“七层”网络分层怎么理解

6、域名里的门道

7、搭建HTTP实验环境

8、浏览器键入网址再回车,发生了什么

1、简要叙述一下这次最简单的浏览器 HTTP 请求过程
答:首先浏览器用键入的网址做域名解析,解析出真实IP和端口(解析流程参照第六讲);
然后浏览器用TCP三次握手建立连接;浏览器向服务器发送拼接好的报文;服务器接收到报文后,同样拼好报文给到客户端;浏览器解析报文,渲染页面(因Http/1.1默认是长连接,所以如果继续发送请求未超时的前提下不会重新建立连接,如果使用Chrome来测试,会发现请求http://127.0.0.1时,会有两个端口去建立TCP连接,因为Chrome是最多允许对同一个域名Host建立6个TCP连接的,不同浏览器有差异,在wireshark捕获的14个请求里,可以发现其实是有两次三次握手的过程的,但观察连接的端口可以发现其实只用到了一个,一个是访问网址栏里的url,一个是访问网站的默认图标,并发建立两个TCP连接,其中一个连接上之后,后一个会基于已经建连的TCP进行传输,也就是后面说的17讲里面讲到的长连接)
2、你能试着解释一下在浏览器里点击页面链接后发生了哪些事情吗?
答:如果域名相同,且连接没有超时,则不会重新建立连接,直接发送请求,如果超时,则需要重新经过 DNS解析拿到真实IP和端口,TCP三次握手建立连接,浏览器发送请求,服务器接收请求进行相应,浏览器接收服务器响应渲染页面。
3、这一节课里讲的都是正常的请求处理流程,如果是一个不存在的域名,那么浏览器的工作流程会是怎么样的呢?
答:首先还是进行DNS域名解析,依次从浏览器缓存,操作系统缓存,操作系统hosts文件,本地DNS,根DNS,顶级DNS,权威DNS,CDN,如果还没有查到,浏览器会显示“找不到XXXXX的服务器 IP 地址”,而终止请求。

11、正确的网址

1、简单解释一下什么是URI
答:
2、URI的基本组成部分

12、正确使用相应状态码

1、给出状态码的范围,状态码分成哪五大类
2、简单解释一下以下状态码
101,200,204,206,301,302,304,400,403,404,500,501,502,503

13、HTTP有哪些特点

14、HTTP的优缺点

20、HTTP的缓存控制

  1. 比较Cache和Cookie的异同
  2. 即使有“Last-modified”和“ETag”,强制刷新(Ctrl+F5)也能够从服务器获取最新数据(返回 200 而不是 304),请你在实验环境里试一下,观察请求头和响应头,解释原因
    1、cookie主要用于保存会话状态,会作为字段发送给服务端,用于身份认证。而cache是整个资源,也就是整个报文,不作为字段,但是要使用缓存需要设置相应字段。
    2、强制刷新后:Cache-Control:no-cache,且没有If-None-Match和If-Modified-Since字段,这样就不能命中缓存了,所以会返回200;而普通刷新有这些字段,Cache-Control为max-age=0,存在If-None-Match或If-Modified-Since字段,根据情况使用强缓存协商缓存。

三、仍留有的疑问

标签:协议,极客,HTTP,IP,TCP,域名,破冰,浏览器
来源: https://blog.csdn.net/CSDNLYFc/article/details/118692100