今天学习了计算机网络这门课程,课程由祝老师进行讲解。老师先是介绍了计算机网络学习要达到的目标,比如需要对计算机网络有整体认知,对计算机网络中的各种概念由初步理解。保证在实际工作中能解决网络问题这些。并通过自底向上、自顶向下的方法介绍计算机网络课程。 一、 老师通过蟹堡王订餐这一案例介绍了蟹堡王帝国外卖计划逐步扩张的过程。先是战略第一步解决电话一对一占用时间的问题,介绍了电路交换(一对一占用时间资源)和分组交换(传真传送订单表格,节省时间)通过网络协议对客户端和服务端之间进行通信,很好的解决了占用时间过久的问题;战略第二步解决开分店通信线路问题,总店与新分店通过转发表格(网络协议)进行通信,以及传真发送新分店详细地址,节省费用与时间分店与分店建立通信线路,为节省成本在小区和城市建立转发点(路由器)。
二、 蟹黄堡例子讲述完毕后,就接着讲述了计算机网络基础知识。包括网络组成部分有主机(客户端和服务端)、路由器、网络协议、网络结构(局域网、域域网、广域网)、网络分层(通信只关心传输目的和源地址)、标头和载荷(记录地址和内容,对于不同角色标头和载荷也有所不同)
三、 接下来讲述web中的网络。先讲述了http协议发送请求和接收请求的内容,再讲述了http连接模型,发送信息需要同步,存在先手顺序,即便后续改进允许发送多条信息,但仍造成了队头堵塞,使得HTTP1.1存在无法多路复用的情况。HTTP2使用帧记录载荷长度、类型、对应flags以及流,帧解决了多路复用和对头堵塞的问题,还调整了响应传输的优先级、头部压缩、server push(通过不同类型的帧实现)。
四、 HTTP2.0虽然性能已经不错了,还有什么不足吗? 建立连接时间长(本质上是TCP的问题) ,队头阻塞问题.要想从TCP上进行改造升级绝非易事,但是UDP虽然没有TCP为了保证可靠连接而引发的问题,但是UDP本身不可靠,又不能直接用.于是决定在UDP基础上改造一个具备TCP协议优点的新协议 QUIC协议 QUIC提高了当前正在使用TCP的面向连接的Web应用程序的性能。它在两个端点之间使用用户数据报协议(UDP)建立多个复用连接来实现此目的。
QUIC的次要目标包括减少连接和传输延迟,在每个方向进行带宽估计以避免拥塞。它还将拥塞控制算法移动到用户空间,而不是内核空间,此外使用前向纠错(FEC)进行扩展,以在出现错误时进一步提高性能。QUIC首次连接RTT时保存密钥,二次连接可直接取用。
HTTP3已经减少了很多拥堵,但仍然存在着TCP协议无法解决的物理层面上的拥堵问题。包括物理距离过长,中转点延时问题。
1.什么是cdn
cdn全称是内容分发网络。其目的是让用户能够更快速的得到请求的数据。简单来讲,cdn就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据。举个例子,现在服务器在北京,深圳的用户想要获取服务器上的数据就需要跨越一个很远的距离,这显然就比北京的用户访问北京的服务器速度要慢。但是现在我们在深圳建立一个cdn服务器,上面缓存住一些数据,深圳用户访问时先访问这个cdn服务器,如果服务器上有用户请求的数据就可以直接返回,这样速度就大大的提升了。
2.dns服务 要了解cdn就先要了解一下dns。当我们在浏览器中输入一个域名时,首先需要将域名转换为ip地址,再将ip地址转换为mac地址,这样才能在网络上找到该服务器。我们先不看ip转换mac地址的过程,先来看看是怎么将一个域名转换为ip的。
当我们向dns服务器发起解析域名的请求时,dns服务器首先会查询自己的缓存中有没有该域名,如果缓存中存在该域名,则可以直接返回ip地址。如果缓存中没有,服务器则会以递归的方式层层访问。例如,我们要访问www.baidu.com,首先我们会先向全球13个根服务器发起请求,询问com域名的地址,然后再向负责com域名的名称服务器发送请求,找到baidu.com,这样层层递归,最终找到我们需要的ip地址。
3.dns与cdn的关系
刚才说到cdn实际上是一个就近访问,那么现在有一个问题是,我们怎么知道用户的所在位置从而给他分配最佳的cdn节点呢。这就需要dns服务来进行定位了。当我们通过使用dns服务的时候,可以根据他使用的LDNS服务器来进行一个定位,例如我们的调度服务器看到他是来自深圳电信的LDNS服务器,那么我们就认为该用户来自深圳电信,然后调度服务器可以让该用户去访问深圳电信的CDN服务器,这样就让用户访问到了最优的cdn节点。
通过dns服务我们可以很快的定位到用户的位置,然后给用户分配最佳cdn节点,但是这种调度方式存在一个问题,例如,当我 是北京联通的用户但是使用的却是深圳电信的ldns的话,调度服务器会给我分配到深圳电信的cdn服务器,这样就产生了错误的调度
CDN存在拉策略(冷门资源)和推策略(热门资源)
当用户请求一个文件时,cdn的工作过程如下:
1.dns请求当地local DNS
2.当地local DNS递归的查询服务器的gslb
3.服务器根据local DNS 分配最佳节点,返回ip
4.用户获得最佳接入ip,访问最佳节点。
5.如果该节点没有用户想要获取的内容,则通过内部路由访问上一节点,直到找到文件或到达源站为止。
6.cdn节点缓存该数据,下次请求该文件时可以直接返回。
4.http调度方式
针对上面的问题,我们还有另一种调度方式——http调度。
当用户访问我们的服务器时,服务器先分析用户的ip地址,然后服务器给用户返回一个302重定向,将离用户最近的服务器存在location中,用户再去请求这个cdn服务器就能得到最佳的cdn节点。
这种调度方式的优点是他的定位更加准确,不会因为错误的ldns造成访问偏差。但是他的缺点就是需要一次额外的http访问,这样首次访问的延时就会比较高。所以如果是对大文件的请求,显然采用http的调度方式比较合适,因为大文件的请求需要更多的时间,相比之下可以忽略这次http请求的时间,但是如果是一些小文件的请求,花费这个时间有时就有些得不偿失了。
当然我们也可以将这两种方式结合起来使用,先通过dns的方式来定位,然后通过http的方式来纠正偏差。
5.缓存的两种方式
cdn中缓存了服务器上的部分资源。那么服务器怎么去更新cdn节点的缓存呢?这里有两种方式,一种是服务器主动去更新缓存,cdn节点被动接受。另一种方式是当用户请求的资源不存在时,cdn服务器向上游服务器发起请求,更新缓存,然后将数据返回给用户,这种方式是cdn服务器主动,源站服务器被动。显然第一种方式存在很多问题,例如很容易产生404等,所以一般采用第二种缓存方式。
6.cdn工作方式
websocket能更好的节省服务器资源,建立在TCP上。一旦 WebSocket 连接建立后,后续数据都以帧序列的形式传输。在客户端断开 WebSocket 连接或 Server 端断掉连接前,不需要客户端和服务端重新发起连接请求。在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。 WebSocket详解:技术原理、代码演示和应用案例 - 简书 (jianshu.com)
五、 网络安全 有三要素:机密性(先有秘密信息)、完整性(函数对比哈希值判断有无被篡改)、身份验证非对称加密:私钥加密公钥解密,公钥加密私钥解密)(数字签名:用于公共内容)(PKI)。加密方法有两大类:对称加密和非对称加密(对称非对称相对于加密解密过程)(满足网络安全三要素)。密码散列函数(哈希函数)保证加密后的哈希值是唯一的
把 HTTP 的明文换成密文,再验证身份,即 HTTPS
HTTPS = HTTP + TLSTLS = 身份验证 + 加解密
身份验证靠 PKI
服务端身份验证靠 PKI,客户端身份验证霏 HTTP 协议。
个人体会
(1) 这是第一次系统性学习计算机网络的内容,老师采取蟹黄堡例子来引入计算机网络使得课程变得很有趣很好理解。后边展开计算机网络相关知识的时候,有些晦涩难懂,于是就自己查浏览器搜索相关知识。内容也都补充到文章里了。好在最后解决了很多疑问,所以收获还是很多的,这篇笔记我也会反复拿出来复习!
(2) 此后,我也会通过实践进一步巩固当前学习的理论知识的!