首页 > 代码库 > 【读书笔记】计算机网络1章:课程介绍、协议、分层

【读书笔记】计算机网络1章:课程介绍、协议、分层

这是我在Coursera上的学习笔记。

课程名称为《Computer Networks》。出自University of Washington。

因为计算机网络才诞生不久。眼下正在以快速在发展。所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比較新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得很细致。学完这门课程之后对计算机网络会有比較深刻的了解。

本章讲述了这门课程的大致情况。讲述了协议、协议层等基本概念。


  • 目标和动机
    • 课程的主要目标就是介绍计算机网络中的通信过程
    • 要点
      • 互联网怎样工作
        • 浏览网页的时候发生什么
        • 什么是VPN HTTP TCP/IP DNS等
      • 计算机网络基础
        • 计算机网络必须解决的问题
        • 哪种设计思路是最有价值的
    • 为什么要学习计算机网络
      • 由于好奇
      • 由于互联网改变世界
      • 由于工作前景好
    • 为什么要学习计算机网络基础
      • 由于全部的网络工作原理是一样的
      • 由于益智
        • 比方解决可靠性问题,用编码检查错误、绕过错误的路由
        • 可靠性 安全性 网络增长 资源分配
      • change / reinvention
        • 互联网一直在变
        • 现在的互联网和曾经的互联网是不一样的
        • CDN P2P VoIP IPv6 Mobile
    • 下面不是本课程的目标
      • 学习IT职业技能
        • 配置路由器
  • 网络的应用
    • 生活中的应用举例
      • 工作、家庭、移动设备
      • 用户通信
        • 取代电话:VOIP、视频会议、即时通信、社交网络
        • 远程通信:实时交互
      • 资源共享
        • 大量用户使用同样的资源:3D打印 搜索机器 云端设备
        • 让每一个用户更加高效:statistical multiplexing
      • statictical multiplexing
        • 多个用户共享宽带
        • 由于不是每一个用户都同一时候占满宽带
        • 举例:1个100M的宽带分配给5M的用户。每一个用户使用网络的概率是50%,能分配多少用户?这个非常easy啊。100M/5M=20个用户。实际上20个用户并非每时每刻都在同一时候使用,所以实际上能分配的用户超过20个。最后依据二项分布原理,得出能分配30个用户
        • 名词:statistical multiplexing gain。上一题中,该值等于30/20 = 1.5X
    • 内容分发
      • 同样的内容要分发多次
      • 使用replica能够使网络更加高效
      • Replica(镜像server)
        • 主server到每一个用户须要经过3跳,那么4个用户就要12跳。

          假设有一个replica。距离主server2跳。距离每一个用户都是1跳。那么总共的跳数就是2+4*1=6跳。节约了6跳

    • 用于计算机之间通信
      • 电子商务、预订
      • 自己主动化处理信息
    • 将计算机连接到显示世界
      • webcam gps 门锁
      • 这是即将发展的物联网
    • 互联的价值
      • Metcalfe定律 1980
        • N个节点的网络,其价值为N的平方
        • 网络越大,价值越高
  • 网络组件
    • 网络有哪些部分
      • 应用 节点 连接
        • 应用+节点=主机
        • 连接+节点=路由器
    • 部件名称
      • 应用、用户:Skype iTunes Amazon
      • 主机、终端:笔记本 手机 PC
      • 路由器、交换机、HUB、中间系统:AP 电缆 DSL调制解调器
      • 连接、通道:有线、无线
    • 连接的种类
      • 全双工:双向同一时候通信
      • 半双工:双向非同一时候通信
      • 单工:单向通信
    • 无线通信
      • 全部的消息都是广播的,一端发送,全部端都能接收到
      • 无线的连接会相互干扰
    • 网络举例
      • Wifi(802.11)、企业网/以太网、ISP、电缆/DSL、移动/电话、蓝牙、电话、卫星
    • 按规模分类
      • 个人网PAN:蓝牙
      • 局域网LAN:WIfi、以太网
      • 城域网MAN:线缆、DSL
      • 广域网WAN:大的ISP
      • 互联网Internet
    • 互联网
      • 互联网就是将各种规模的网络链接成一个总体
    • 网络边界
      • 网络 = 主机 + 路由器 + 连接
      • ISP = 路由器 + 连接
    • 关键边界
      • Socket:应用和主机的边界
      • Traceroute:主机和主机的边界
  • Socket
    • 网络应用接口
      • 定义了应用怎样使用网络。让应用之间可以通过主机进行通信
    • 应用之间的通信过程
      • client
    • SocketAPI
      • 简化互联网通信
      • 支持两种网络服务
        • Stream流式
        • Datagram数据报
      • 同意应用附加到不同的port
    • 接口列表
      • SOCKET BIND LISTEN ACCEPT CONNECT SEND RECEIVE CLOSE
    • Socket编程通常的程序
      • client连接server
      • client向server发送请求
      • server返回数据
      • 断开链接
    • Socket程序接口调用情况
      • clientSOCKET。服务端SOCKET
      • 服务端BIND    LISTEN    ACCEPT*
      • clientCONNECT*    SEND
      • 服务端RECEIVE*    SEND
      • clientRECEIVE*    CLOSE
      • 服务端CLOSE
      • *星号表示堵塞操作
    • client程序演示样例
      • socket()
      • getaddrinfo()
      • connect()
      • ...
      • send()
      • recv()
      • ...
      • close()
    • 服务端程序演示样例
      • socket()
      • getaddrinfo()
      • bind()
      • listen()
      • loop{  accept()
      • ...
      • recv()
      • ...
      • send()   }
      • close()
  • Traceroute 路由跟踪
    • 网络服务API隐藏了网络传输的细节
    • Traceroute
      • 这是广泛使用的命令行工具。unix中是traceroute,windows是tracert
      • 它的作用是探測网络信息传播的路径
  • 协议和分层
    • 计算机网络须要模块化
      • 计算机网络实现了非常多功能,为了降低复杂度,引入了模块的概念
    • 协议和层
      • 协议和层是计算机网络中的主要结构。协议是水平的。而层是垂直的。仅仅有同类的协议才干进行通信,每种协议仅仅能使用下一层的协议进行通信。
      • 协议栈:1层~N层叠加是一个协议栈
        • 举例:用无线设备浏览网页。协议栈是HTTP TCP IP 802.11
    • 封装
      • 底层的协议将高层的协议进行封装,并加上自己的特殊信息
      • 就像写信一样,邮局无法看到邮件中的内容
      • 协议的封装就像洋葱。一层一层地封装
      • 封装的时候可能出现加密、压缩、分段、重组等
    • demultiplexing 拆封
      • 底层协议为什么知道高层协议是什么呢?由于底层协议中包括了高层协议的种类信息。比方ethertype value、IP protocol field、TCP port number
    • 分层的优点
    • 隐藏信息。使重用性更高
    • 隐藏信息,使得无线设备能和有线设备进行透明通信。HTTP - TCP - IP - 802.11 - IP - Ethernet - IP - TCP - HTTP
  • 分层的坏处
    • 封装过多使消息太长
    • 隐藏信息,有些应用可能须要知道是无线还是有线
  • 參考模型
    • 一点小建议
      • 每层协议须要实现哪些功能呢?这里有一些能够參考的协议模型。
    • OSI 7层协议模型
      • 应用层:提供用户所须要的功能
      • 表示层:转换不同的表示方法
      • 会话层:提供任务对话
      • 传输层:提供端对端的对话
      • 网络层:将信息封装成包
      • 数据链路层:将信息封装成帧
      • 物理层:发送比特信息
    • 互联网參考协议
    • 应用层:7层 HTTP DNS BGP RTP SMTP
    • 传输层:4层 TCP UDP
    • 网络层:3层 IP
    • 链路层:1 2 层 802.11 3G Ethernet Cable DSL
    • 层上表能够看出。IP协议是核心
  • 标准机构
    • ITU:G.992  H.264 MPEG4  ADSL
    • IEEE:802.3  802.11
    • IETF:RFC2616 HTTP/1.1 RFC1034/1035 DNS
    • W3C:HTML5 CSS
  • 基于协议层的名词
    • 传输单位
      • 应用层:消息
      • 传输层:分段
      • 网络层:包
      • 链路层:帧
      • 物理层:比特
    • 设备
      • 物理层:中继器。HUB
      • 交换机、网桥:链路层
      • 网络层:路由器
      • 应用层:代理、网关
      • 全部的设备看起来都几乎相同
  • 层的注意事项
    • 一个层中可能有多个协议一起工作
    • 有时候非常难说清某一层究竟是什么协议
  • 互联网历史
    • 大概的互联网时间线
      • ARPANET:1969 10^3
      • NSFNET:1982 10^6
      • 现代网络:2005 10^9
    • ARPANET 起点
      • 目的是分享资源
      • 第一个网络仅仅有4个节点
      • 第一个杀手级应用就是电子邮件
      • 影响
        • 分组交换(packet switching)
        • 去中心化的控制
    • NSFNET 成长
      • 支持教育网
      • 经典的互联网协议出现了:TCP/IP   DNS   BGP   SOCKET
    • 现代互联网 WEB诞生
      • ISP  IXP
      • Web大发展。CDN  ICANN,大部分流量是视频,内容開始主导互联网

推荐教材:计算机网络第五版

【读书笔记】计算机网络1章:课程介绍、协议、分层