【读书笔记】计算机网络1章:课程介绍、协议、分层
这是我在Coursera上的学习笔记。
课程名称为《Computer Networks》。出自University of Washington。
因为计算机网络才诞生不久。眼下正在以快速在发展。所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比較新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得很细致。学完这门课程之后对计算机网络会有比較深刻的了解。
本章讲述了这门课程的大致情况。讲述了协议、协议层等基本概念。
- 目标和动机
- 课程的主要目标就是介绍计算机网络中的通信过程
- 要点
- 互联网怎样工作
- 浏览网页的时候发生什么
- 什么是VPN HTTP TCP/IP DNS等
- 计算机网络基础
- 计算机网络必须解决的问题
- 哪种设计思路是最有价值的
- 互联网怎样工作
- 为什么要学习计算机网络
- 由于好奇
- 由于互联网改变世界
- 由于工作前景好
- 为什么要学习计算机网络基础
- 由于全部的网络工作原理是一样的
- 由于益智
- 比方解决可靠性问题,用编码检查错误、绕过错误的路由
- 可靠性 安全性 网络增长 资源分配
- change / reinvention
- 互联网一直在变
- 现在的互联网和曾经的互联网是不一样的
- CDN P2P VoIP IPv6 Mobile
- 下面不是本课程的目标
- 学习IT职业技能
- 配置路由器
- 学习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跳
- 主server到每一个用户须要经过3跳,那么4个用户就要12跳。
- 用于计算机之间通信
- 电子商务、预订
- 自己主动化处理信息
- 将计算机连接到显示世界
- webcam gps 门锁
- 这是即将发展的物联网
- 互联的价值
- Metcalfe定律 1980
- N个节点的网络,其价值为N的平方
- 网络越大,价值越高
- Metcalfe定律 1980
- 生活中的应用举例
- 网络组件
- 网络有哪些部分
- 应用 节点 连接
- 应用+节点=主机
- 连接+节点=路由器
- 应用 节点 连接
- 部件名称
- 应用、用户: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,大部分流量是视频,内容開始主导互联网
- 大概的互联网时间线
推荐教材:计算机网络第五版