CrashCourseComputerScience(3)-计算机网络及未来趋势


CrashCourseComputerScience(3)-计算机网络及未来趋势

28计算机网络Computer Networks

  1. 以下三节主要记录计算机网络的发展历史, 以及底层支撑技术及原理

  2. 1950s在公司和研究室开始出现计算机3网络-球鞋网络, 用于共享数据及储存空间

    计算机近距离组成的网络称为局域网Local Area Networks(LAN)

  3. 最有名的Lan技术为以太网Ethernet,至今仍在使用

    1. 以太网将局域网中的电脑用电缆连接,并分配唯一的媒体访问控制地址Mac Access Control address(MAC address)

    2. 当其中一台电脑需要发消息给另一台电脑时,会在数据包前加入Mac address作为头部,将数据广播到局域网所有电脑中

    3. 其他电脑监听以太网电缆,识别头部不为自己的mac地址则丢弃,为自己的mac地址则进行数据处理

      多台电脑共享一个传输媒介的过程称为载波侦听多路访问Carrier Sense Multiple Acess(CSMA).其中以太网的载体为铜线,而wifi的载体为空气

      载体传输的速度称为带宽

  4. 多台电脑同时发送信息,会造成冲突,为了解决这一问题,

    1. 在计算机检测搭配网络冲突后等待一个较短的随机时间,然后再次发起请求.如果再次请求仍然冲突,则使用指数退避Exponential Backoff
    2. 使用交换机switch减少同一载体设备的数据,即减小冲突域Collision Domain
  5. 因特网在远距离传输消息的时候,往往需要经过多个路由器

    1. 使用数据报文,每一个站点的路由器依靠路由表都知道下个目的地在哪里,如果一个路由线路不通,则会自动更换下一个路由线路

    消息沿着路由跳转的次数称为跳数hop count,用于分析出最快的路由线路.如果hop count超过了hot limit,则此条线路存在问题

    1. 为了避免大数据包阻塞线路,往往将大报文big transmission转化成数据包packet .这种办法叫做Packt Switch

    2. 为了平衡路由器之间的负载,路由器采用阻塞控制congestion control

29互联网The Internet

  1. 电脑先通过家庭路由器等设备到LAN,再通过LAN连接到广域网Wide Area Network(WAN), WAN的路由器通过Internet Service Provider提供

    WAN内部也分层级,可能先连接到苏州的WAN,再连接到长三角的WAN,等过多次跳转后最终到达互联网主干

    可以通过traceroute查看跳转详情

  2. 要在Internet传输数据,数据包需要符合Internet Protocol(IP)协议标准.IP协议会在Date Payload前加入IP Header,里面存放IP地址信息

  3. User Datagram Protocol(UDP),在IP协议之上,会在IP Header后,加入UDP Header,里面放置端口数据,从而将数据交给目标电脑 指定的程序处理;而Checksum数据,用于校验数据包内数据是否有丢失

    IP协议负责将数据包交给指定的电脑,UDP负责将数据包交给指定的程序

    在加入UDP Header时校验和Checksum将数据包所有的数据相加,然后转化为二进制,保留低位16位,高位的会被丢弃;接收方拿到数据后,将数据相加进行核对,确认数据是否丢失

  4. UDP无法保证数据到达的完整性,而Transmission Control Protocol(TCP)可以做到.

    1. TCP Header中同样有端口号和校验和数据
    2. 序号可以接受方对乱序到达的数据包进行排序,并对重复收到的包进行丢弃
    3. 接受方接受数据后会发送ACK码来保证发送方得知数据包完整到达;TCP可以通过ACK码的响应时间得知网络情况,以调整发包数量
  5. 域名系统Domian Name System(DNS): 将域名和IP地址对应起来

    1. 浏览区访问域名,会先请求Internet Service Provider的DNS服务器,得到目标ip地址
    2. 为了管理域名,将域名做成树状结构,顶级域名.com,.org, .space,二级域名 google.com,baidu.com一直往下延伸.
  6. 开放互联通信模型 Open System interconnection(OSI Model)

    1. 物理层Physical Layer : 如线路中的电信号,wifi的无线信号
    2. 数据链路层Data Linl Layer: 如MAC,碰撞检测,指数退避
    3. 网络层Network Layer: 负责报文交换和路由
    4. 传输层Tansport Layer: 负责点对点的传输,检测修复错误
    5. 会话层Session Layer: 使用UDP或者TCP创建链接,传递信息,拆除链接
    6. 表示层Presentation Layer:格式处理,如格式化、加解密、压缩/解压缩
    7. 应用程序层Application Layer: 业务逻辑实现

30万维网THE World Wide Web(Web)

  1. The World Wide Web运行在Internet之上,使用web 浏览器浏览万维网

  2. Web的基本单位是页面,页面中去往其他页面的链接称为超链接hyberlinks或者超文本hybertext

    1946Bush就提出了关联式索引,将2个实物联系在一块,可以提高信息传输效率

  3. 每个页面拥有自己的独立地址,称为统一资源定位符Uniform Resource Locator(url) ,我们使用url进行页面访问

    1. 通过DNS服务解析域名获得服务器ip地址,通过ip地址链接到目标服务器

    2. 使用tcp协议找到指定的web服务器,

    3. 使用http协议,服务器对请求方法和请求url等信息进行处理,返回响应

      Http最早版本0.9创造于1991

  4. http协议中,信息以文本格式传输,为了标记超链接,出现了超文本标记语言Hybertext Markup Language(Html),创造与1990年

    1. Html是一个标签语言, 使用2个成对的尖括号标记文本格式

    目前最新的Html版本为Html5,拥有超过100多个标签

  5. Web Browser负责与Web Server沟通,获取文本和媒体并进行展示

    Tim Berners-Lee 1991年发布了第一个web browser和web server,并建立了url ,http和html等标准,万维网正式诞生

  6. 为了维护Web超链接地址,出现了搜索引擎

    1. 使用爬虫不断爬取新网页及新网页中超链接指向的网页,获得url

    2. 记录页面上的词

    3. 使用搜索算法,对相关网页进行展示

      谷歌的搜索算法,使用网页的被指向次数代表网页质量,使用网页质量进行排序

  7. 网络中立性Net Neutrality:网络需要对所有的数据包平等对待

    这是一个争议话题,Carrie Anne觉得这个问题很有讨论价值

31 计算机安全Cybersecurity

  1. 计算机安全可以看成保护系统和数据的保密性secrecy,完整性integrity,可用性avaliablity

    1. secrecy: 只给有权限的人读取计算机系统和数据

      比如黑客盗取了信用卡的密码

    2. integrity: 只有有权限的人可以使用和修改系统和数据

      比如黑客盗取了邮箱账号密码,并发送了邮件

    3. avaliablity: 有权限的人可以随时登录访问系统数据

      比如黑客锁住了台积电所有电脑

  2. 安全专家使用威胁模型threat model分析, 模型对攻击者进行描述,比如攻击能力,攻击目标以及攻击手段

  3. 网络安全主要解决2个问题, who are you and what should you have access to? 我们使用身份认证authentication,主要分为3中:

    1. what you kown? 一般使用账号和密码

      暴力攻击brute force attack: 试遍一切可能,对密码进行破解.为了抵挡这种攻击,网站一般要求密码长度及密码包含大小写字母和特殊符号,增大破解难度

    2. what you have? 对使用者拥有的物品进行判断,比如Jumpserver登录需要手机上的身份验证器

    3. what you are? 使用生物识别,对使用者指纹或者面容进行验证

  4. 身份验证之后就到了访问控制Access Control,

    1. 权限表控制,对访问这得读取编辑权限进行控制,可以通过Permission和Acess Control List(ACL)来实现
    2. 层级权限控制 ,比如文档系统,秘密等级可分为公开,机密,绝密.层级权限比较有名的是Bell-LaPadula模型,有以下2个原则:
      1. 不能读上: 如公开等级账户不能阅读机密文档
      2. 不能写下: 如机密等级账户不能编辑公开等级文档
  5. 我们无法保证安全软件没有漏洞,只能做到尽快找到漏洞并进行修复

  6. 系统使用安全内核Security Kernel保证系统安全

    1. 正确验证代码的安全性,最好的手段使用独立安全检查和质量验证Independent Verfication and Validation,让安全行业开发者来审计代码

      安全型代码一般都为开源,可以让不同行业的人检验代码

      拉斯维加斯一年一度的DEF CON 是全球最大的安全大会

  7. 隔离Isolation: 使用沙盒程序等,使计算机被攻破的情况下,减少损害程度

32 黑客&攻击 Hackers&Cyber Attack

本文讲述一些攻击基础原理

  1. 攻击计算机安全系统的黑客称为黑帽Black Hats,帮助公司以及企业修复安全系统漏洞的黑客称为白帽White Hats

  2. 黑客入侵最常见的攻击方式,是通过社会工程学,欺骗别人泄露信息或者自己配置电脑让他更容易被攻击.比如:

    1. 钓鱼网站: 用户点击假网站,输入账号密码从而被黑客窃取
    2. 假托Pretexting: 攻击者假装IT部门给公司打电话,第一通电话让人转接,然后让别人把电脑配置的易于攻击或者询问账号或密码.
    3. 木马Trojan Horses:伪装成照片或者邮件,实际是有害软件,如勒索软件或者偷取数据
  3. Nand镜像Nand Mirroring:破解设备密码时,可以通过物理连接内存硬件,复制内存备份, 尝试密码失败到达等待时间后就覆盖内存,继续尝试(Iphone5c可以这么做 )

  4. 通过互联网,利用系统漏洞进行攻击,这叫漏洞利用Exploit .常见漏洞

    1. 缓存区溢出Buffer Overflow:服务器系统使用Buffer缓存账号密码,使用超长字符,使缓存区溢出,覆盖周围得数据.黑客可以使用此漏洞修改内存,绕过身份验证.

      程序自带边界检查bounds checking,随机储存和金丝雀防范这一问题

    2. 代码注入Code Injection: 数据库使用sql检查账号密码,攻击者使用sql语句对数据库进行攻击.

      为了防范攻击,输入框往往不允许输入;等特殊字符

    3. 蠕虫Worm: 对大量电脑进行攻击,并组成僵尸网络发送垃圾邮件,挖矿等

33加密Cryptography

  1. 为了防范网络攻击,架构师使用多层防御Defence in depth,而密码学Cryptography是其中一种.将明文转化为密文称为加密,将密文转化为明文称为解密

  2. 替换加密Substitution Ciphers: 将每个字母替换成另一个字母

    1990年,加密机器出现,最有名的是德国二战使用的英格玛

  3. 移位加密Permutation Ciphers: 将明文字母使用网格排序,使用特定顺序重新组合.知道密文和加密方法才能解密

  4. 数据加密标准Data Encryption Standard: IBM和NSA 1977提出的加密标准,使用56bit的密钥

  5. 高级加密标准Advanced Encryption Standard(AES): 使用更长的密钥128bit以上的密钥

    1. AES首先会将数据分成16-byte的小块
    2. 使用密钥进行替换加密,移位加密等其他加密算法,进行加密
    3. 每个小块加密10次以上
  6. 密钥交换Key exchange: 以 Diifie-Hellman Key Exchange为例:

    1. 模幂运算: 1个底数,1个指数,做幂运算,一个被除的数取余.如 X^n mod Y = Z

      正向得到余数很简单,但是通过其他数字得到指数则非常困难

    2. 数据交换第一步, 公开2个值: 基数X和模数Y

    3. 发送方, 选定一个指数n,把模幂运算计算结果X^n mod Y给接受方

    4. 接收方,选定另一个指数m,计算计算结果X^m mod Y给发送方

    5. 发送方接收(X^m mod Y),并加上自己的指数再次做模幂运算,得到结果(X^m mod Y)^n mod Y=X^mn mod Y

    6. 接受方接收(X^n mod Y),并加上自己的指数再次做模幂运算,得到结果(X^n mod Y)^m mod Y=X^mn mod Y

    7. 最终发送接受双发拿到了相同的密钥,但是却没有泄露密钥

    单向函数: 正向计算简单,逆向复杂

    使用同样的密钥加密解密,称为对称加密

    4,5步视频给的推算公式应该是错的, 我的文章这里采用了评论的公式,没深入探究

  7. 非对称加密Asymmetric Encryption: 存在公钥和私钥,一把加密的内容只能使用另一把解密.最流行的加密技术是RSA

互联网安全内容到这里结束了,后边讲的是未来计算机的发展方向

34机器学习&人工智能 Machine Learning&Artificial Intelligence

本节重点讲概念

  1. 计算机的数据库数据可能又几十亿条,除了数据的获取和展示,我们还想通过数据驱动成程序.而ML和AI应运而生

    机器学习是实现人工智能的一个手段

  2. 分类器Classifier: 做分类的人工算法.经常使用特征作为分类的手段

    很多AI算法使用统计学,分类器就是其中一种

    1. 准备训练数据,训练数据包含特征值和分类结果,这种数据叫做标记数据labeled data

      视频举的例子,特征值是蛾子的翼展和种类,分类结果是蛾子的种类

    2. 使用散点图记录数据

    3. 找到决策边界,最大化区分不同的分类,并得到准确率

    4. 新的数据使用决策边界判断分类,这些数据叫未标记数据unlabeled data

    根据不同的特征,使用决策边界判断,在代码中使用if语句实现,也可以画成决策树Decision Tree来表示

    实际的AI分析,有很多特征和分类结果,算法也很复杂,也很难用散点图表示

    支持向量机: 决策边界本来是直线,可以将边界做成曲线,分类更加准确

  3. 人工神经网络Artificial Neural Networks: 人工神经网络的灵感来自神经元,是一种不使用统计学的AI算法,人造神经元接受多个输入数据,整合发出一个数据

    1. 输入层Input layer:输入特征数据
    2. 隐藏层Hidden Layer: 对输入层的数据进行甲醛, 求和,偏置处理,计算出一个结果,最后通过激活函数发送给输出层
    3. 输出层Output Layer: 不同的人工神经元代表不同的分类结果,对隐藏层发来的数据进行相加,得分最高的种类即为分类结果

    Artificial Neural Networks通常拥有多个隐藏层,因此得名深度学习Deep Learning

    目前已经应用到人脸识别,自动驾驶等领域

  4. 只能做特定任务的AI称为弱AI Weak AI, 比如阿尔法狗,人脸识别.真正的AI,可以做到和人一样聪明,称为强AI Strong AI

  5. 强化学习Reinforcement Learning: 通过不断试错来进行学习,比如阿尔法狗

35计算机视觉Conputer Vision

  1. 图片和视频是获取信息最快的方式, 为了让计算机处理图像和视频信息,诞生了计算机视觉的研究

  2. 颜色追踪算法:

    1. 计算机使用RGB信息储存展示图像,低级的计算机视觉算法就可以使用检查RGB,来追踪固定物体.但由于环境变化,物体的颜色也会发生边户,这种算法识别正确率很低

    2. 边缘识别: 物体边缘的像素和背景的像素灰度往往存在差别,往往通过对比相邻像素的灰度差来判断

      通过卷积用来计算当前像素与周围像素的差异,主要是通过一个n*n的核,根据不同的需求,对周围像素做运算

  3. 人脸识别算法

    1. Viola-jones Face Detection: 通过边缘识别眼睛,鼻子多个特征算法的组合,来识别人脸信息,是早期人脸识别最有名的算法
    2. 卷积神经网络:使用神经网络+卷积进行人脸识别
      1. 图像传递给第一层神经元,神经元可以根据边缘卷积算法,识别出物体边缘
      2. 第二层神经元, 可能通过另一个变卷卷积算法,识别出鼻子(鼻子一般中间灰度低,2遍灰度高,可以对此种设计卷积)
      3. 第三层神将元,可以用来识别眉毛
      4. 最终一层神经元,将以上获得的特征进行组合预算,判断是否是人脸
  4. 情感识别算法: 对人的眉毛或者嘴巴的面部标记点进行检测(比如嘴角),进而判断人的感情

  5. 摄像技术的不断提升和算法的优化,使得计算机视觉不断发展,未来会改变对人机交互上的方式

苏州某互联网+零售的公司,就用计算机视觉判断货架的货物进行管理;还有我身边的无人贩卖柜,会自动识别我拿取得商品然后扣款

36自然语言处理Natural Language Processing

  1. 自然语言有大量词汇和自己的语法,1个词可能有多种含义,人在说话写作的时候也会犯错.对人类的声音和文字进行设别,称为自然语言处理,是 CS和语言学交叉的学科

  2. 如何识别句子的含义

    1. 对句子进行识别,并转化为文字

    2. 集合词典和语法规则, 对每个词的词性进行判断,

    3. 对每个单词进行分析,从而识别句子含义

  3. 如何使用自然语言响应回答?

    1. google使用知识图谱Kownledge Graph,对7百亿个事实进行关联储存
    2. 在知识图谱及其他信息来源搜索最接近的内容并返回

    视频这里将的很模糊,但是只要识别了自然语言的问题,在互联网找到资源并返回相比起来只是小问题

  4. 语音识别,目前最先进的算法是 深度学习

    1. 录音机得到语音波形信息,通过快速傅里叶转换将波形图转化为频率图
    2. 通过频率图中的共振峰识别原因,通过因素识别其他单词
    3. 结合语言模型,将语音转化为文字
  5. 语音合成: 将文字转化为语音,就是将语音识别的步骤反了过来.将语音转化为波形图,再交给喇叭播放

我接触的某软件产品包含了情感分析模块,使用的是阿里云的NPL能力,对大量评论等内容进行情感分析,从而对客户评价进行不同维度的分析.阿里云提供了自定义词语训练,或者使用阿里云已经训练好的词语库, 已训练词语库收费大概几分/条的级别

网上各种营销号短视频充斥了各种AI音,就是利用了语音合成技术,已经很接近真人,但让我生理不适

37机器人 Robot

  1. 机器人是有计算机控制,可以自动执行一系列动作的机器.名字来自于1920年捷克的歌剧

  2. 古代就存在自动执行的机器,比如定时敲钟的钟表,法国的吃饭鸭,中国的水车

  3. 1940s末期,出现了第一个机器人CNC机器,用来执行制造任务

  4. 1960年,第一个商业机器人Unimate被通用公司采购用于汽车制造

  5. 机器人如何判断自己到达指定位置?

    1. 负反馈回路: 使用sensor判断物理激励, 使用循环语句不断判断当前位置是否等于目标位置,使用controller处理误差
    2. 比例-积分-微分控制器(PID Controller): 以下以PID控制机器人的行走速度为例
      1. 收到环境影响, 机器人运行速度等参数会受到影响
      2. 通过sensor可以收集到真实速度,并画出速度曲线图
      3. PID计算一个长时间区间内实际值和设定值的差异,并对行走的功率进行调整

    控制回路负责将计算机的属性调整为期望值

  6. 高级软件负责将复杂的动作转化会一个个小动作,交给控制电路去执行

  7. 机器人科学家使用AI增强机器人的学习能力,使用计算机视觉增加与外界的互动

  8. Isaac Azimov在1942年的科幻小说里提出了Azimov机器人定律,讨论了机器人伦理

38计算机心理学psychology of computing

  1. 人的性格是复杂的,为了让所有人更愉悦的使用计算机,系统设计师会使用心理学制作软件

  2. 差的交互设计,会让软件易用性变差,从而降低使用体验

    1. 人的视觉可以对颜色深度进行排序,却很难对不同颜色排序. 视频讲述了地图颜色的例子,比如用颜色深浅可以用来表示数量差异,比如人口数量地区差异图,而不同的颜色更容易标识不同的事物,比如省份图
    2. 人的短期记忆只有5-8个, 使用数据分块,使得信息更容易传播,比如电话号码317-555-3897,菜单栏使用分块进行展示
  3. 直观功能Affordences: 使用人类更易理解的设计,比如平板用来推,按钮用来按,旋钮用来转,不需要标签或者帮助去使用

    1. 视觉纹理的一个例子是滚花kunrling,即页面右侧的滑动条,和现实中的需要滑动的工具相连,上面有粗糙的点用来产生摩擦力从而易于拖动.暗示使用者这个组件可以拖动
    2. icon是用来表示功能的图标,使用图像可以让使用者更容易知道这个软件的用途
  4. 专业知识Expertise: 在使用经验增长时,使用会选用更快捷的方式. 但为了考虑新手,需要保持的一个简单易懂的功能.所以在软件设计时,一个功能可以有多种实现方式,同时照顾新手和老手

    比如复制,新手使用 右键->复制,老手直接Ctrl +c. 系统设计了2种复制方式,照顾了所有人的使用体验

  5. 反应Affect: 根据用户操作做出合理反应.比如B站通过你的观看习惯推送对应的视频

  6. 以计算机为媒介沟通computer-mediated communication(CMC):研究邮件,QQ,微信登软件沟通的方式,与面对面沟通的不同

  7. 人机交互Human-Ronot Interaction(HRI):研究机器人和人交互的领域.

    1. 恐怖谷效应: 接近人类相似度的机器人会让人感觉恐怖

39教育科技Educational Technology

  1. 本文讲述计算机科技如果辅助教育

    作为IT从业者,我没有感到这堂课的重要性,感觉这是Crash Course作为教育类视频制作者比较关注的问题,从而制作了视频

  2. 通过观看教学视频,学习者可以调整合适的视频速度,控制视频节奏,这种自主学习往往效率更高

  3. 慕课Massive Open Online Courses(MOOC):2012年上线的大型教学视频网站.往往由有名的教授制作视频上传.但由于作业的修改等问题,热度慢慢下降

  4. 智能辅导系统Intelligent Tutoring System:

    1. 可以通过AI算法通过算法可以给学生匹配学习伙伴 ,个性化推送更有用的内容

    2. 对题目的错误结果进行分析,并制作判断规则,通过选择算法,给学生推荐错题反馈内容

      判断规则+选择算法,成为与模型domian model

    3. 制作学生模型,记录学生的学习进度,对学生不懂的东西进行推送学习

    4. 对学生暂停,倍速,论坛评论内容数据进行分析,得到数据难题数据

40奇点,天网和未来The Singularity,Skynet and The Future

  1. 普适计算Ubiquitous Computing:计算机完全结合社会,对社会生活的方方面面产生影响,但却不会人所感知

    目前计算机想让人花更长时间在上面,而普适计算则希望计算机像自来水一样,对社会带来积极作用却不吸引人的注意

  2. 奇点the Singularity: 智能科技的失控性发展.比如以后

    1. 超级AI的出现,对人类工作的影响

    工作的描述维度,手工和思维性, 重复性和创造性.思维性+创造性的工作更难被自动化取代

    1. 奇点可能会产生改造人和数字永生,改变人的世界观
  3. 随着超级AI出现,可能机器人最终不会为人服务,目前已经产生了争论

  4. 还有很多话题这个系列没有谈到,比如加密货币,无线通讯,3D打印,量子计算等


Author: Feny Lau
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Feny Lau !
  TOC