CDN
浏览器和服务器是 HTTP 协议的两个端点,那么,在这两者之间还有别的什么东西吗?当然有了。浏览器通常不会直接连到服务器,中间会经过“重重关卡”,其中的一个重要角色就叫做 CDN。CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求
CDN 有什么好处呢?简单来说,它可以缓存源站的数据,让浏览器的请求不用“千里迢迢”地到达源站服务器,直接在“半路”就可以获取响应。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间
小结03
互联网上绝大部分资源都使用 HTTP 协议传输;
浏览器是 HTTP 协议里的请求方,即 User Agent;
服务器是 HTTP 协议里的应答方,常用的有 Apache 和 Nginx;CDN 位于浏览器和服务器之间,主要起到缓存加速的作用;
爬虫是另一类 User Agent,是自动访问网络资源的程序。
DNS
在 TCP/IP 协议中使用 IP 地址来标识计算机,数字形式的地址对于计算机来说是方便了,但对于人类来说却既难以记忆又难以输入。于是“域名系统”(Domain Name System)出现了,用有意义的名字来作为 IP 地址的等价替代。设想一下,你是愿意记“95.211.80.227”这样枯燥的数字,还是“nginx.org”这样的词组呢?
小结04
TCP/IP 是网络世界最常用的协议,HTTP 通常运行在 TCP/IP 提供的可靠传输基础上;
DNS 域名是 IP 地址的等价替代,需要用域名解析实现到 IP 地址的映射;
URI 是用来标记互联网上资源的一个名字,由“协议名 + 主机名 + 路径”构成,俗称 URL;
HTTPS 相当于“HTTP+SSL/TLS+TCP/IP”,为 HTTP 套了一个安全的外壳;
代理是 HTTP 传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能。
小结05
1、TCP/IP协议是一个“有层次的协议栈”
TCP/IP
2、TCP/IP协议总共有四层,顺序从下往上 链接层->网际层->传输层->应用层
3、链接层 link layer ,负责在底层网络上发送原始数据包,使用MAC地址来标记网络上的设备,所以也叫MAC层
4、网际层 internet layer,IP协议所在层,在链接层的基础上,用IP地址取代MAC地址,把许多局域/广域网连接成虚拟的巨大网络,在这个网络里找设备时只要把IP地址再翻译成MAC地址就可以
5、传输层 transport layer,TCP、UDP协议所在层,这个层次协议的职责是保证数据在IP地址标记的两点之间可靠地传输。
6、TCP和UDP区别:
TCP 有状态 需要先建立连接才能发送数据 保证数据不丢失不重复 数据是连续的字节流,有先后顺序
UDP 无状态 不需要先建立连接也可以发送数据 不保证数据一定会发送到对方 数据是分散的小数据包,顺序发、乱序收
7、应用层 application layer,Telnet、SSH、FTP、SMTP、HTTP
8、MAC层的传输单位是帧(frame),IP层的传输单位是包(packet),TCP层的传输单位 是段(segment),HTTP的传输单位是消息或报文(message)。统称为数据包
9、OSI网络分层模型
1.第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;
2.第二层:数据链路层,它基本相当于TCP/IP的链接层;
3.第三层:网络层,相当于TCP/IP里的网际层;
4.第四层:传输层,相当于TCP/IP里的传输层;
5.第五层:会话层,维护网络中的连接状态,即保持会话和同步;
6.第六层:表示层,把数据转换为合适、可理解的语法和语义;
7.第七层:应用层,面向具体的应用传输数据。
10、TCP/IP四层模型和OSI七层网络模型的映射关系
1.第一层:物理层,TCP/IP里无对应;
2.第二层:数据链路层,对应TCP/IP的链接层;
3.第三层:网络层,对应TCP/IP的网际层;
4.第四层:传输层,对应TCP/IP的传输层;
5.第五、六、七层:统一对应到TCP/IP的应用层。
11、*四层负载均衡:工作在传输层上,基于TCP/IP协议的特性,例如Ip地址,端口号等实现对后端服务器的负载均衡
12、*七层负载均衡:工作在应用层上,看到的是HTTP协议,解析HTTP报文里的URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器
小结06
域名使用字符串来代替 IP 地址,方便用户记忆,本质上一个名字空间系统;
DNS 就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一个“超级大管家”;
DNS 是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存;
使用 DNS 可以实现基于域名的负载均衡,既可以在内网,也可以在外网。
小结09
小结今天我们学习了 HTTP 的报文结构,下面做一个简单小结。
1、HTTP 报文结构就像是“大头儿子”,由“起始行 + 头部 + 空行 + 实体”组成,简单地说就是“header+body”;
2、HTTP 报文可以没有 body,但必须要有 header,而且 header 后也必须要有空行,形象地说就是“大头”必须要带着“脖子”;
3、请求头由“请求行 + 头部字段”构成,响应头由“状态行 + 头部字段”构成;
4、请求行有三部分:请求方法,请求目标和版本号;
5、状态行也有三部分:版本号,状态码和原因字符串;
6、头部字段是 key-value 的形式,用“:”分隔,不区分大小写,顺序任意,除了规定的标准头,也可以任意添加自定义字段,实现功能扩展;
7、HTTP/1.1 里唯一要求必须提供的头字段是 Host,它必须出现在请求头里,标记虚拟主机名。