CrashCourseComputerScience(3)-计算机网络及未来趋势
28计算机网络Computer Networks
以下三节主要记录计算机网络的发展历史, 以及底层支撑技术及原理
1950s在公司和研究室开始出现计算机3网络-球鞋网络, 用于共享数据及储存空间
计算机近距离组成的网络称为局域网Local Area Networks(LAN)
最有名的Lan技术为以太网Ethernet,至今仍在使用
以太网将局域网中的电脑用电缆连接,并分配唯一的媒体访问控制地址Mac Access Control address(MAC address)
当其中一台电脑需要发消息给另一台电脑时,会在数据包前加入Mac address作为头部,将数据广播到局域网所有电脑中
其他电脑监听以太网电缆,识别头部不为自己的mac地址则丢弃,为自己的mac地址则进行数据处理
多台电脑共享一个传输媒介的过程称为载波侦听多路访问Carrier Sense Multiple Acess(CSMA).其中以太网的载体为铜线,而wifi的载体为空气
载体传输的速度称为带宽
多台电脑同时发送信息,会造成冲突,为了解决这一问题,
- 在计算机检测搭配网络冲突后等待一个较短的随机时间,然后再次发起请求.如果再次请求仍然冲突,则使用指数退避Exponential Backoff
- 使用交换机switch减少同一载体设备的数据,即减小冲突域Collision Domain
因特网在远距离传输消息的时候,往往需要经过多个路由器
- 使用数据报文,每一个站点的路由器依靠路由表都知道下个目的地在哪里,如果一个路由线路不通,则会自动更换下一个路由线路
消息沿着路由跳转的次数称为跳数hop count,用于分析出最快的路由线路.如果hop count超过了hot limit,则此条线路存在问题
为了避免大数据包阻塞线路,往往将大报文big transmission转化成数据包packet .这种办法叫做Packt Switch
为了平衡路由器之间的负载,路由器采用阻塞控制congestion control
29互联网The Internet
电脑先通过家庭路由器等设备到LAN,再通过LAN连接到广域网Wide Area Network(WAN), WAN的路由器通过Internet Service Provider提供
WAN内部也分层级,可能先连接到苏州的WAN,再连接到长三角的WAN,等过多次跳转后最终到达互联网主干
可以通过traceroute查看跳转详情
要在Internet传输数据,数据包需要符合Internet Protocol(IP)协议标准.IP协议会在Date Payload前加入IP Header,里面存放IP地址信息
User Datagram Protocol(UDP),在IP协议之上,会在IP Header后,加入UDP Header,里面放置端口数据,从而将数据交给目标电脑 指定的程序处理;而Checksum数据,用于校验数据包内数据是否有丢失
IP协议负责将数据包交给指定的电脑,UDP负责将数据包交给指定的程序
在加入UDP Header时校验和Checksum将数据包所有的数据相加,然后转化为二进制,保留低位16位,高位的会被丢弃;接收方拿到数据后,将数据相加进行核对,确认数据是否丢失
UDP无法保证数据到达的完整性,而Transmission Control Protocol(TCP)可以做到.
- TCP Header中同样有端口号和校验和数据
- 序号可以接受方对乱序到达的数据包进行排序,并对重复收到的包进行丢弃
- 接受方接受数据后会发送ACK码来保证发送方得知数据包完整到达;TCP可以通过ACK码的响应时间得知网络情况,以调整发包数量
域名系统Domian Name System(DNS): 将域名和IP地址对应起来
- 浏览区访问域名,会先请求Internet Service Provider的DNS服务器,得到目标ip地址
- 为了管理域名,将域名做成树状结构,顶级域名.com,.org, .space,二级域名 google.com,baidu.com一直往下延伸.
开放互联通信模型 Open System interconnection(OSI Model)
- 物理层Physical Layer : 如线路中的电信号,wifi的无线信号
- 数据链路层Data Linl Layer: 如MAC,碰撞检测,指数退避
- 网络层Network Layer: 负责报文交换和路由
- 传输层Tansport Layer: 负责点对点的传输,检测修复错误
- 会话层Session Layer: 使用UDP或者TCP创建链接,传递信息,拆除链接
- 表示层Presentation Layer:格式处理,如格式化、加解密、压缩/解压缩
- 应用程序层Application Layer: 业务逻辑实现
30万维网THE World Wide Web(Web)
The World Wide Web运行在Internet之上,使用web 浏览器浏览万维网
Web的基本单位是页面,页面中去往其他页面的链接称为超链接hyberlinks或者超文本hybertext
1946Bush就提出了关联式索引,将2个实物联系在一块,可以提高信息传输效率
每个页面拥有自己的独立地址,称为统一资源定位符Uniform Resource Locator(url) ,我们使用url进行页面访问
通过DNS服务解析域名获得服务器ip地址,通过ip地址链接到目标服务器
使用tcp协议找到指定的web服务器,
使用http协议,服务器对请求方法和请求url等信息进行处理,返回响应
Http最早版本0.9创造于1991
http协议中,信息以文本格式传输,为了标记超链接,出现了超文本标记语言Hybertext Markup Language(Html),创造与1990年
- Html是一个标签语言, 使用2个成对的尖括号标记文本格式
目前最新的Html版本为Html5,拥有超过100多个标签
Web Browser负责与Web Server沟通,获取文本和媒体并进行展示
Tim Berners-Lee 1991年发布了第一个web browser和web server,并建立了url ,http和html等标准,万维网正式诞生
为了维护Web超链接地址,出现了搜索引擎
使用爬虫不断爬取新网页及新网页中超链接指向的网页,获得url
记录页面上的词
使用搜索算法,对相关网页进行展示
谷歌的搜索算法,使用网页的被指向次数代表网页质量,使用网页质量进行排序
网络中立性Net Neutrality:网络需要对所有的数据包平等对待
这是一个争议话题,Carrie Anne觉得这个问题很有讨论价值
31 计算机安全Cybersecurity
计算机安全可以看成保护系统和数据的保密性secrecy,完整性integrity,可用性avaliablity
secrecy: 只给有权限的人读取计算机系统和数据
比如黑客盗取了信用卡的密码
integrity: 只有有权限的人可以使用和修改系统和数据
比如黑客盗取了邮箱账号密码,并发送了邮件
avaliablity: 有权限的人可以随时登录访问系统数据
比如黑客锁住了台积电所有电脑
安全专家使用威胁模型threat model分析, 模型对攻击者进行描述,比如攻击能力,攻击目标以及攻击手段
网络安全主要解决2个问题, who are you and what should you have access to? 我们使用身份认证authentication,主要分为3中:
what you kown? 一般使用账号和密码
暴力攻击brute force attack: 试遍一切可能,对密码进行破解.为了抵挡这种攻击,网站一般要求密码长度及密码包含大小写字母和特殊符号,增大破解难度
what you have? 对使用者拥有的物品进行判断,比如Jumpserver登录需要手机上的身份验证器
what you are? 使用生物识别,对使用者指纹或者面容进行验证
身份验证之后就到了访问控制Access Control,
- 权限表控制,对访问这得读取编辑权限进行控制,可以通过Permission和Acess Control List(ACL)来实现
- 层级权限控制 ,比如文档系统,秘密等级可分为公开,机密,绝密.层级权限比较有名的是Bell-LaPadula模型,有以下2个原则:
- 不能读上: 如公开等级账户不能阅读机密文档
- 不能写下: 如机密等级账户不能编辑公开等级文档
我们无法保证安全软件没有漏洞,只能做到尽快找到漏洞并进行修复
系统使用安全内核Security Kernel保证系统安全
正确验证代码的安全性,最好的手段使用独立安全检查和质量验证Independent Verfication and Validation,让安全行业开发者来审计代码
安全型代码一般都为开源,可以让不同行业的人检验代码
拉斯维加斯一年一度的DEF CON 是全球最大的安全大会
隔离Isolation: 使用沙盒程序等,使计算机被攻破的情况下,减少损害程度
32 黑客&攻击 Hackers&Cyber Attack
本文讲述一些攻击基础原理
攻击计算机安全系统的黑客称为黑帽Black Hats,帮助公司以及企业修复安全系统漏洞的黑客称为白帽White Hats
黑客入侵最常见的攻击方式,是通过社会工程学,欺骗别人泄露信息或者自己配置电脑让他更容易被攻击.比如:
- 钓鱼网站: 用户点击假网站,输入账号密码从而被黑客窃取
- 假托Pretexting: 攻击者假装IT部门给公司打电话,第一通电话让人转接,然后让别人把电脑配置的易于攻击或者询问账号或密码.
- 木马Trojan Horses:伪装成照片或者邮件,实际是有害软件,如勒索软件或者偷取数据
Nand镜像Nand Mirroring:破解设备密码时,可以通过物理连接内存硬件,复制内存备份, 尝试密码失败到达等待时间后就覆盖内存,继续尝试(Iphone5c可以这么做 )
通过互联网,利用系统漏洞进行攻击,这叫漏洞利用Exploit .常见漏洞
缓存区溢出Buffer Overflow:服务器系统使用Buffer缓存账号密码,使用超长字符,使缓存区溢出,覆盖周围得数据.黑客可以使用此漏洞修改内存,绕过身份验证.
程序自带边界检查bounds checking,随机储存和金丝雀防范这一问题
代码注入Code Injection: 数据库使用sql检查账号密码,攻击者使用sql语句对数据库进行攻击.
为了防范攻击,输入框往往不允许输入;等特殊字符
蠕虫Worm: 对大量电脑进行攻击,并组成僵尸网络发送垃圾邮件,挖矿等
33加密Cryptography
为了防范网络攻击,架构师使用多层防御Defence in depth,而密码学Cryptography是其中一种.将明文转化为密文称为加密,将密文转化为明文称为解密
替换加密Substitution Ciphers: 将每个字母替换成另一个字母
1990年,加密机器出现,最有名的是德国二战使用的英格玛
移位加密Permutation Ciphers: 将明文字母使用网格排序,使用特定顺序重新组合.知道密文和加密方法才能解密
数据加密标准Data Encryption Standard: IBM和NSA 1977提出的加密标准,使用56bit的密钥
高级加密标准Advanced Encryption Standard(AES): 使用更长的密钥128bit以上的密钥
- AES首先会将数据分成16-byte的小块
- 使用密钥进行替换加密,移位加密等其他加密算法,进行加密
- 每个小块加密10次以上
密钥交换Key exchange: 以 Diifie-Hellman Key Exchange为例:
模幂运算: 1个底数,1个指数,做幂运算,一个被除的数取余.如 X^n mod Y = Z
正向得到余数很简单,但是通过其他数字得到指数则非常困难
数据交换第一步, 公开2个值: 基数X和模数Y
发送方, 选定一个指数n,把模幂运算计算结果X^n mod Y给接受方
接收方,选定另一个指数m,计算计算结果X^m mod Y给发送方
发送方接收(X^m mod Y),并加上自己的指数再次做模幂运算,得到结果(X^m mod Y)^n mod Y=X^mn mod Y
接受方接收(X^n mod Y),并加上自己的指数再次做模幂运算,得到结果(X^n mod Y)^m mod Y=X^mn mod Y
最终发送接受双发拿到了相同的密钥,但是却没有泄露密钥
单向函数: 正向计算简单,逆向复杂
使用同样的密钥加密解密,称为对称加密
4,5步视频给的推算公式应该是错的, 我的文章这里采用了评论的公式,没深入探究
非对称加密Asymmetric Encryption: 存在公钥和私钥,一把加密的内容只能使用另一把解密.最流行的加密技术是RSA
互联网安全内容到这里结束了,后边讲的是未来计算机的发展方向
34机器学习&人工智能 Machine Learning&Artificial Intelligence
本节重点讲概念
计算机的数据库数据可能又几十亿条,除了数据的获取和展示,我们还想通过数据驱动成程序.而ML和AI应运而生
机器学习是实现人工智能的一个手段
分类器Classifier: 做分类的人工算法.经常使用特征作为分类的手段
很多AI算法使用统计学,分类器就是其中一种
准备训练数据,训练数据包含特征值和分类结果,这种数据叫做标记数据labeled data
视频举的例子,特征值是蛾子的翼展和种类,分类结果是蛾子的种类
使用散点图记录数据
找到决策边界,最大化区分不同的分类,并得到准确率
新的数据使用决策边界判断分类,这些数据叫未标记数据unlabeled data
根据不同的特征,使用决策边界判断,在代码中使用if语句实现,也可以画成决策树Decision Tree来表示
实际的AI分析,有很多特征和分类结果,算法也很复杂,也很难用散点图表示
支持向量机: 决策边界本来是直线,可以将边界做成曲线,分类更加准确
人工神经网络Artificial Neural Networks: 人工神经网络的灵感来自神经元,是一种不使用统计学的AI算法,人造神经元接受多个输入数据,整合发出一个数据
- 输入层Input layer:输入特征数据
- 隐藏层Hidden Layer: 对输入层的数据进行甲醛, 求和,偏置处理,计算出一个结果,最后通过激活函数发送给输出层
- 输出层Output Layer: 不同的人工神经元代表不同的分类结果,对隐藏层发来的数据进行相加,得分最高的种类即为分类结果
Artificial Neural Networks通常拥有多个隐藏层,因此得名深度学习Deep Learning
目前已经应用到人脸识别,自动驾驶等领域
只能做特定任务的AI称为弱AI Weak AI, 比如阿尔法狗,人脸识别.真正的AI,可以做到和人一样聪明,称为强AI Strong AI
强化学习Reinforcement Learning: 通过不断试错来进行学习,比如阿尔法狗
35计算机视觉Conputer Vision
图片和视频是获取信息最快的方式, 为了让计算机处理图像和视频信息,诞生了计算机视觉的研究
颜色追踪算法:
计算机使用RGB信息储存展示图像,低级的计算机视觉算法就可以使用检查RGB,来追踪固定物体.但由于环境变化,物体的颜色也会发生边户,这种算法识别正确率很低
边缘识别: 物体边缘的像素和背景的像素灰度往往存在差别,往往通过对比相邻像素的灰度差来判断
通过卷积用来计算当前像素与周围像素的差异,主要是通过一个n*n的核,根据不同的需求,对周围像素做运算
人脸识别算法
- Viola-jones Face Detection: 通过边缘识别眼睛,鼻子多个特征算法的组合,来识别人脸信息,是早期人脸识别最有名的算法
- 卷积神经网络:使用神经网络+卷积进行人脸识别
- 图像传递给第一层神经元,神经元可以根据边缘卷积算法,识别出物体边缘
- 第二层神经元, 可能通过另一个变卷卷积算法,识别出鼻子(鼻子一般中间灰度低,2遍灰度高,可以对此种设计卷积)
- 第三层神将元,可以用来识别眉毛
- 最终一层神经元,将以上获得的特征进行组合预算,判断是否是人脸
情感识别算法: 对人的眉毛或者嘴巴的面部标记点进行检测(比如嘴角),进而判断人的感情
摄像技术的不断提升和算法的优化,使得计算机视觉不断发展,未来会改变对人机交互上的方式
苏州某互联网+零售的公司,就用计算机视觉判断货架的货物进行管理;还有我身边的无人贩卖柜,会自动识别我拿取得商品然后扣款
36自然语言处理Natural Language Processing
自然语言有大量词汇和自己的语法,1个词可能有多种含义,人在说话写作的时候也会犯错.对人类的声音和文字进行设别,称为自然语言处理,是 CS和语言学交叉的学科
如何识别句子的含义
对句子进行识别,并转化为文字
集合词典和语法规则, 对每个词的词性进行判断,
对每个单词进行分析,从而识别句子含义
如何使用自然语言响应回答?
- google使用知识图谱Kownledge Graph,对7百亿个事实进行关联储存
- 在知识图谱及其他信息来源搜索最接近的内容并返回
视频这里将的很模糊,但是只要识别了自然语言的问题,在互联网找到资源并返回相比起来只是小问题
语音识别,目前最先进的算法是 深度学习
- 录音机得到语音波形信息,通过快速傅里叶转换将波形图转化为频率图
- 通过频率图中的共振峰识别原因,通过因素识别其他单词
- 结合语言模型,将语音转化为文字
语音合成: 将文字转化为语音,就是将语音识别的步骤反了过来.将语音转化为波形图,再交给喇叭播放
我接触的某软件产品包含了情感分析模块,使用的是阿里云的NPL能力,对大量评论等内容进行情感分析,从而对客户评价进行不同维度的分析.阿里云提供了自定义词语训练,或者使用阿里云已经训练好的词语库, 已训练词语库收费大概几分/条的级别
网上各种营销号短视频充斥了各种AI音,就是利用了语音合成技术,已经很接近真人,但让我生理不适
37机器人 Robot
机器人是有计算机控制,可以自动执行一系列动作的机器.名字来自于1920年捷克的歌剧
古代就存在自动执行的机器,比如定时敲钟的钟表,法国的吃饭鸭,中国的水车
1940s末期,出现了第一个机器人CNC机器,用来执行制造任务
1960年,第一个商业机器人Unimate被通用公司采购用于汽车制造
机器人如何判断自己到达指定位置?
- 负反馈回路: 使用sensor判断物理激励, 使用循环语句不断判断当前位置是否等于目标位置,使用controller处理误差
- 比例-积分-微分控制器(PID Controller): 以下以PID控制机器人的行走速度为例
- 收到环境影响, 机器人运行速度等参数会受到影响
- 通过sensor可以收集到真实速度,并画出速度曲线图
- PID计算一个长时间区间内实际值和设定值的差异,并对行走的功率进行调整
控制回路负责将计算机的属性调整为期望值
高级软件负责将复杂的动作转化会一个个小动作,交给控制电路去执行
机器人科学家使用AI增强机器人的学习能力,使用计算机视觉增加与外界的互动
Isaac Azimov在1942年的科幻小说里提出了Azimov机器人定律,讨论了机器人伦理
38计算机心理学psychology of computing
人的性格是复杂的,为了让所有人更愉悦的使用计算机,系统设计师会使用心理学制作软件
差的交互设计,会让软件易用性变差,从而降低使用体验
- 人的视觉可以对颜色深度进行排序,却很难对不同颜色排序. 视频讲述了地图颜色的例子,比如用颜色深浅可以用来表示数量差异,比如人口数量地区差异图,而不同的颜色更容易标识不同的事物,比如省份图
- 人的短期记忆只有5-8个, 使用数据分块,使得信息更容易传播,比如电话号码317-555-3897,菜单栏使用分块进行展示
直观功能Affordences: 使用人类更易理解的设计,比如平板用来推,按钮用来按,旋钮用来转,不需要标签或者帮助去使用
- 视觉纹理的一个例子是滚花kunrling,即页面右侧的滑动条,和现实中的需要滑动的工具相连,上面有粗糙的点用来产生摩擦力从而易于拖动.暗示使用者这个组件可以拖动
- icon是用来表示功能的图标,使用图像可以让使用者更容易知道这个软件的用途
专业知识Expertise: 在使用经验增长时,使用会选用更快捷的方式. 但为了考虑新手,需要保持的一个简单易懂的功能.所以在软件设计时,一个功能可以有多种实现方式,同时照顾新手和老手
比如复制,新手使用 右键->复制,老手直接Ctrl +c. 系统设计了2种复制方式,照顾了所有人的使用体验
反应Affect: 根据用户操作做出合理反应.比如B站通过你的观看习惯推送对应的视频
以计算机为媒介沟通computer-mediated communication(CMC):研究邮件,QQ,微信登软件沟通的方式,与面对面沟通的不同
人机交互Human-Ronot Interaction(HRI):研究机器人和人交互的领域.
- 恐怖谷效应: 接近人类相似度的机器人会让人感觉恐怖
39教育科技Educational Technology
本文讲述计算机科技如果辅助教育
作为IT从业者,我没有感到这堂课的重要性,感觉这是Crash Course作为教育类视频制作者比较关注的问题,从而制作了视频
通过观看教学视频,学习者可以调整合适的视频速度,控制视频节奏,这种自主学习往往效率更高
慕课Massive Open Online Courses(MOOC):2012年上线的大型教学视频网站.往往由有名的教授制作视频上传.但由于作业的修改等问题,热度慢慢下降
智能辅导系统Intelligent Tutoring System:
可以通过AI算法通过算法可以给学生匹配学习伙伴 ,个性化推送更有用的内容
对题目的错误结果进行分析,并制作判断规则,通过选择算法,给学生推荐错题反馈内容
判断规则+选择算法,成为与模型domian model
制作学生模型,记录学生的学习进度,对学生不懂的东西进行推送学习
对学生暂停,倍速,论坛评论内容数据进行分析,得到数据难题数据
40奇点,天网和未来The Singularity,Skynet and The Future
普适计算Ubiquitous Computing:计算机完全结合社会,对社会生活的方方面面产生影响,但却不会人所感知
目前计算机想让人花更长时间在上面,而普适计算则希望计算机像自来水一样,对社会带来积极作用却不吸引人的注意
奇点the Singularity: 智能科技的失控性发展.比如以后
- 超级AI的出现,对人类工作的影响
工作的描述维度,手工和思维性, 重复性和创造性.思维性+创造性的工作更难被自动化取代
- 奇点可能会产生改造人和数字永生,改变人的世界观
随着超级AI出现,可能机器人最终不会为人服务,目前已经产生了争论
还有很多话题这个系列没有谈到,比如加密货币,无线通讯,3D打印,量子计算等