【读书笔记】计算机网络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%,能分配多少用户?这个很简单啊,100M/5M=20个用户。实际上20个用户并不是每时每刻都在同时使用,所以实际上能分配的用户超过20个。最后根据二项分布原理,得出能分配30个用户
        • 名词:statistical multiplexing gain。上一题中,该值等于30/20 = 1.5X
    • 内容分发
      • 相同的内容要分发多次
      • 使用replica可以使网络更加高效
      • Replica(镜像服务器)
        • 主服务器到每个用户需要经过3跳,那么4个用户就要12跳。如果有一个replica,距离主服务器2跳,距离每个用户都是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
    • 网络应用接口

      • 定义了应用如何使用网络,让应用之间能够通过主机进行通信
    • 应用之间的通信过程
      • 客户端
    • SocketAPI
      • 简化互联网通信
      • 支持两种网络服务
        • Stream流式
        • Datagram数据报
      • 允许应用附加到不同的端口
    • 接口列表
      • SOCKET BIND LISTEN ACCEPT CONNECT SEND RECEIVE CLOSE
    • Socket编程通常的程序
      • 客户端连接服务器
      • 客户端向服务器发送请求
      • 服务器返回数据
      • 断开链接
    • Socket程序接口调用情况
      • 客户端SOCKET,服务端SOCKET
      • 服务端BIND    LISTEN    ACCEPT*
      • 客户端CONNECT*    SEND
      • 服务端RECEIVE*    SEND
      • 客户端RECEIVE*    CLOSE
      • 服务端CLOSE
      • *星号表示阻塞操作
    • 客户端程序示例
      • 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章:课程介绍、协议、分层,布布扣,bubuko.com

时间: 2024-10-10 07:42:54

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

iOS开发中的那些的约定俗成(1)————《编写高质量iOS与OS X代码的52个有效方法》读书笔记(第一章)

iOS开发中的那些的约定俗成(1) ----<编写高质量iOS与OS X代码的52个有效方法>读书笔记(第一章) 前言 "我要成为一个高产的开发人员.""想要混的好,就得多努力." 写这些东西是因为毕竟看了书,但是看书看过去之后,也许印象不是很深刻,有些东西现在也理解不了,那我就把我理解的,现在就可以用到的东西,简单的写出来就好,让自己今后看到就能明白其中的意思. 还有就是锻炼一下表达,编辑能力,慢慢的提升自己,随时随地的都要有一个锻炼的心. 最后当然就

Android群英传神兵利器读书笔记——第三章:Android Studio奇技淫巧

Android群英传神兵利器读书笔记--第三章:Android Studio奇技淫巧 这篇文章篇幅较长,可以使用版权声明下面的目录,找到感兴趣的进行阅读 目录 3.1 Android Studio使用初探 Project面板 Stucture面板 Android Monitor Keymap Tip of the Day 快速查找 Search Action 演示模式 3.2 Android Studio使用进阶 操作与导航 快速重构 代码模板 内置模板 自定义代码注释模板 代码分析 在Andr

《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)

<Microsoft Sql server 2008 Internals>索引目录: <Microsoft Sql server 2008 Internals>读书笔记--目录索引 在第五章主要学习了table的内部存储结构,第七章<Special storage>中将继续深入学习存储机制,那将是本书最难理解的一章.第六章主要介绍index的基础知识,第八章是<query Optimizer>,下面我们先来看看第六章:Indexes:Internals an

SQL Server2012 T-SQL基础教程--读书笔记(5-7章)

SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5.1.2 使用参数 5.1.3 嵌套 5.1.4 多个引用 5.2 公用表表达式 5.2.1 分别列别名 5.2.2 使用参数 5.2.3 定义多个CTE 5.2.4 CTE的多次引用 5.2.5 递归CTE 5.3 视图 5.3.1 视图和ORDER BY 子句 5.3.2 视图选项 5.4 内嵌表

《Unix环境高级编程》读书笔记 第7章-进程环境

1. main函数 int main( int argc, char *argv[] ); argc是命令行参数的数目,包括程序名在内 argv是指向参数的各个指针所构成的数组,即指针数组 当内核执行C程序时(使用exec函数),在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址——这是由连接器设置的,而连接器则是由C编译器调用.启动例程从内核取得命令行参数和环境变量值,然后按上述方式调用main函数做好安排. 2. 进程终止 有8种方式使进程终止,其中5种

MySQL Cookbook读书笔记第三章

1,查询指定列/从指定列中查询 若需要指定每一列在查询结果中出现的先后顺序,可以在select语句中指定(dstuser在dsthost之后): 查询显示用户所关注的列: 2,指定查询行 使用where关键字可以查询符合条件限制的数据例如:查找srchost为venus或者srchost以s开头的行记录: 使用操作符like进行模式匹配,其中%表示通配符,代表一个差多为任意值的字符串. where使用操作符and可以查询多个条件: 条件并集: 3,格式化显示查询结果 当查询语句中没有重命名列名,

MySQL cookbook读书笔记第六章

1,修改MySQL中的日期的格式 在显示一个日期值时,如果没有特别指定,MySQL按照ISO格式显示日期即(CCYY-MM0DD).如果不希望按照MySQL的默认格式输出时间和日期值,可以使用date_format()或者time_format()函数按照用户期望的格式重写日期或者时间值 date_format(),time_format()和str_to_date()三个函数都接受格式化串作为参数: 2,设置客户端时区 如果客户端和服务器处在不同的时区,那么客户端在服务器上保存timestam

MySQL Cookbook读书笔记第5章

1,字符串属性 查看系统拥有那些字符集: 若需要来自多种语言存放到同一列中,会考虑Unicode字符集(utf8或ucs2),只有它能表示多语言的字符 有些字符集支持多字节,有些只包含单字节,判断是否支持多字节的方法是对比Length()h和char_length函数的返回值来判定字符串中是否有多字节.例如使用ucs2的字节长度为6,字符数目为3. 另外虽然Unicode字符集utf8包含多字节字符,但是一个具体的字符串有可能只包含单字节字 非二进制字符串另一特征是collation,决定字符集

《Linux内核设计与实现》读书笔记——第一二章

<Linux内核设计与实现>读书笔记——第一二章 第一章 Linux内核简介 1.1 Unix的历史 简洁:仅提供系统调用并有一个非常明确的设计目的. 抽象:Unix中绝大部分东西都被当做文件,这种抽象使对数据和对设备的操作是通过一套相同的系统调用接口来进行的(open().read().write().lseek().close()). 可移植:使用C语言编写,使其在各种硬件体系架构面前都具备令人惊异的移植能力. 进程创建迅速:有独特的fork()系统调用,一次执行保质保量地完成一个任务.简

《Unix环境高级编程》读书笔记 第3章-文件I/O

1. 引言 Unix系统的大多数文件I/O只需用到5个函数:open.read.write.lseek以及close 本章描述的函数经常被称为不带缓冲的I/O.术语不带缓冲指的是在用户的进程中对其不会自动缓冲,每个read和write都调用内核中的一个系统调用.但是,所有磁盘I/O都要经过内核的块缓存区(也称为内核的缓冲区高速缓存).唯一例外的是对原始磁盘设备的I/O. 2. 文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用.文件描述符是一个非负整数,其变化范围是0~OPEN_MAX