计算机网络学习笔记
计算机网络 笔记
朝花夕拾,简要回顾一下计算机网络课程。
概论
文章收藏
产生和发展
美国国防部 -> ARPANET -> MILNET(军事), ARPANET -> NSFNET
-
远程联机系统 50s -> 60s
前端处理机FEP,调制解调器M,终端控制器TC,主机,终端T
-
计算机-计算机 网络 60s ->70s
通信子网(路由器和线路),资源子网(服务器和主机) 缺点:无法任意互联,拓展性差
-
开放式标准化网络 80s -> now
统一的网络体系结构:OSI,CCITT,TCP/IP
计算机网络定义
参考定义:将若干台具有独立功能的计算机 系统,用某种或多种通信介质连接起来,通过完善的网络协议, 在数据交换的基础上,实现网络资源共享的系统称为计算机网络。
分类
- 地理:局域网(LAN),城域网(MAN),广域网(WAN)
- 拓扑结构:星型,环型,总线,不规则型
- 数据交换方式:电路交换(建立,传输,拆除,独占信道资源),分组交换(化整为零,存储转发)
网络协议和网络体系结构
网络协议
一整套通信规程,包括规定要交换的数据格式、 控制信息的格式和控制功能、通信过程中事件执行的次序等。可能涉及到:
- 物理传输介质
- 数据编码
- 收/发端同步
- 数据传输单元格式
- 控制通信方向
- 路由选择
- 差错控制
- 流量控制
- 数据加密,如何加密
网络体系结构
-
真正的物理通信总是发生在除物理层。除物理层外,其余各对等层实体间都是进行虚拟通信。
-
通信必须在对等层进行,不允许交差通信。
-
虚拟通信是一种逻辑通信,其意义在于:
- 设计本层协议时,不受其他层协议的内部实现影响。
- 通过层间接口调用低层提供的服务,只要获得低层足够支 持,虚拟通信就能得以实现。
-
n-1层为n层提供服务。n层直接使用n-1层提供的服务,间接 使用n-2, n-3, …… 层提供的服务。
OSI参考模型
OSI参考模型各层功能
- 物理层 完成原始数据位流在物理介质上传输,而不管位流的信息含义。
- 数据链路层 完成数据帧在相邻的结点间无差错传输。
- 网络层 完成报文分组在源/目的结点之间传输。
- 传输层 完成报文段在源/目的主机进程之间的透明传输。
网络通信↑ 数据处理↓
- 会话层 进行会话管理,包括通信方向控制(单工,半双工,全双工)
- 表示层 数据格式转化、数据加密/解密、数据压缩/解压。
- 应用层 为用户提供各种网络服务,包括文件,电子邮件, 数据库,WWW,DNS等。
Internet参考模型
两个核心协议:TCP和IP,故此模型也称为TCP/IP协议。
(Internet和OSI的参考模型比较)
-
应用层对应OSI的应用层,表示层和会话层。主要包括:FTP, SMTP, TELNET, DNS, HTTP 等
-
传输层:TCP(传输控制协议Transmission control protocol)
, UDP(用户数据报协议User Datagram protocol ) -
互联网层大体对应OSI的网络层,为IP协议。将IP分组以数据报方式从源主机发送到目的主机。
-
子网层对应物理层和数据链路层:802.3, PPP, 802.5, 千兆百兆以太网等
物理层 (中继器、集线器)
数据通信基础
- 通信系统模型
-
模拟通信与数字通信
-
信道, 两个重要参数:带宽(Hz),误码率(bps)
-
带宽与数据率的关系
1.奈奎斯特(无噪声信道)C = 2Hlog2L
2.香农定理(有噪声信道,L不受限)C =Hlog2(1+S/N)
(C:数据率,H:带宽,L:数字信号的离散取值数,S/N:信噪比) -
波特率:每秒传输的码元的数目 C=Blog2L (B为波特率)
-
误码率:P = Ne/N
-
信道通信方向:单工,半双工,双工
-
数字信号的编码 e.g. 非归零,曼切斯特,差分曼切斯特
调制(调幅,调频,调相),解调(采样,量化,编码)。 -
数据同步方式:字符同步和位同步
-
多路复用:频分复用,时分复用
物理层协议
物理层协议实质上是通信接口标准
涉及内容:机械,功能,规格,电气特性
数据链路层 (交换机)
数据帧是传送单位
作用:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
差错控制
- 传输差错的特征
- 原因:热噪声(持续性,小幅度),冲击噪声(大幅度,突发性)
- 差错控制方法:通过特殊的编码使接收端能够发现甚至纠错
- 检错码,纠错码
- 编码效率、检错和纠错
- 码字:信息位,校验位(冗余)
- 码距:两个码字的不同位数个数
- 海明距离:两个码字之间的最小距离
- 编码效率:R=m/n=m/(m+r)
- 检测d位错,海明距离d+1;纠正d位错,海明2d+1
- 海明码
- 循环冗余码CRC
- 其他编码:奇偶校验码
流量控制
-
停-等协议:发一帧后等应答
-
滑动窗口协议:连续发送若干后再等待应答
-
顺序接受管道协议(回退N):接受窗口尺寸为1的滑动窗口协议,某帧丢失后其后全部丢弃并返回否认。
-
选择接收管道协议
上述协议都可看作滑动窗口协议,差别在于窗口尺寸的不同
窗口尺寸的限制:
Wt>=Wr, Wt+Wr<=2^m (帧序号的位数为m)
网络层 (路由器)
实现两个主机系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等
电路交换和分组交换
- 电路交换(起源 电话)
建立电路,传输数据,拆除电路 - 分组交换
报文,分组(分组序列 源地址 目的地址 分组类型 控制信息 长度 数据)化整为零 存储转发 复用链路
虚电路和数据报
虚电路
通信前发送方和接收方之间必须建立连接(虚电 路),所以虚电路是面向连接的网络服务。
虚电路只是一种逻辑电路,而不是真正的物理电 路。报文分组在虚电路上传输不像再物理线路上 那样中畅通无阻。而是要中间节点的存储转发。
一条链路上允许建立多个虚电路。
一旦虚电路建立完毕,本地通信的所有分组必须 经过该虚电路进行。因此,虚电路能够保证分组 的顺序接收。
仅当建立虚电路时需要源/目的结点地址,数据分 组需分配一个虚电路号而无须源/目的结点地址。
数据报
数据报无需建立连接,每个报文分组携带完整的源/目的地址,独立的选择路径,通过 同的路径到达目的主机
- 无需建立连接就可传输报文分组,因此数据报称为无连接网络服务。
- 不同的报文分组可以通过不同的路由到达目的主机,先发出的分组未必先,因此数 据报服务不能保证报文分组顺序接收。
- 每个报文分组携带完整的源/目的地址,独 立的选择路径
数据报子网 | 虚电路子网 | |
---|---|---|
延时 | 分组传输延时 | 电路建立,分组传输延时 |
路由选择 | 每个分组单独选择路由 | 建立虚电路时选择路由,以后 所有分组都使用该路由 |
状态信息 | 子网无需保存状态信息 | 每个结点要保存一张虚电路表 |
地址 | 每个分组包括源和目的的完 整地址 | 每个分组含有一个短的虚电路 号 |
结点失败 的影响 | 除了在崩溃时正在该结点处 理的分组都丢失外,无其他 影响 | 所有经过失效结点的虚电路都 要被终止 |
拥塞控制 | 难 | 如果有足够的缓冲区分配给已 经建立的虚电路,则容易控制 |
路由选择
路由选择:根据某种策略(静态、动态),选择一条最佳的路径到达目的主机,对路由器而言, 路由选择实质上是选择最佳 输出端口。
虚电路:一次路由选择
数据报:每个分组要进行路由选择
-
扩散法(洪泛法)
当结点收到一个分组后,把该分组向除进来的链 路外的所有其他链路转发,结果至少有一个分组 以最快的速度到达目的结点。
问题:产生大量重复分组 解决:设置下一跳字段每次减少 -
固定式路由选择
每个结点保存一张固定的路由表,当某一分组到达时, 根据分组的目的结点,在路由表中找到其对应的输出 链路,然后来分组从该链路转发出去。 -
最佳路由选择算法
- 一般采用最短路径算法。
- "费用”的含义非常广泛,可以是距离、平 均通信量、延迟、下跳数等。
- 将网络看成连通图,每条链路以其“费用” 为权值,通过Dijkstra最短路径算法求出任 意两个结点之间的最短距离。
动态策略:根据当前拓扑结构和流量的变化来动 态改变路由,又称为自适应路由
-
孤立路由算法
- 热土豆算法(与固定路由算法混合使用)
- 逆向自学习(好消息灵敏,坏消息可以设置时间删除未刷新记录)
-
集中路由算法
-
分布路由算法
- 距离向量(D-V算法):每个结点都保存一张路由表,路由表包 括三个主要字段,即目的地址,最短距离、最佳输 出链路。与固定路由选择不同的是:相邻结点之间 定期交换路由信息(如每隔十秒),并根据最新路 由信息,刷新路由表。
- 链路状态路由选择(L-S算法):定期广播路由信息并根据最新信息刷新路由表。 发现邻居节点,测量链路开销,产生链路状态分组。对网络反应迅速
D-V | L-S | |
---|---|---|
交换路由信息 | 定期 | 网络拓扑结构发生 改变(或定期) |
路由更新 | 缓慢 | 迅速 |
适用范围 | 小规模,变化缓慢 的网络 | 大规模,变化较激 烈的网络 |
IP协议
IP协议是Internet体系结构的核心协议,已成 为连接异构网络的工业标准。
IP提供无连接的数据报服务,每个IP分组长 度≤64K字节,不能保证分组可靠的,按序到 达,这些留给高层协议解决。
IP协议需要路由协议ICMP,ARP,RARP等 协议支持
ARP: 根据IP地址获取物理地址
地址
- host-id为零的IP地址表示该网络本身
- 回送地址:127.0.0.0-127.255.255.254为回送地址。
- 0.0.0.0:代表的是本主机地址,任何一台主机都可以其表示 自己,仅在系统启动时会使用,启动完成后不再使用。
- 255.255.255.255:受限广播地址,广播范围为主机所在的网 络。所有网关都不会向外广播。
- 保留地址:10.0.0.0 172.16~172.31 192.168.0.0~192.158.255.0
子网的规模与借用主机字段的位数有关。借用位数越多,子网规模越大。
采用子网掩码来分离网络号和主机号
ip寻址:每个路由器中都保存一张路由表(无论是静态还是动态)。路由表 的主要项目有两个:网络号、下一跳地址(最佳输出链路)。
其他协议
网际控制报文协议 ICMP
差错报告,询问报文 ping TTL
地址解析协议ARP
是将IP地址转化成MAC,有存则发送,没有则发送ARP请求找相应的MAC地址。
RARP与ARP相反,知道MAC不知道IP。
传输层 (网关)
在计算机网络中,传输层处于非常重要的位置。传输 层,也称为运输层,无论在OIS还是在TCP/IP模型中 ,传输层都处于面向应用部分的最低层和面向通信部分的最高层。(承上启下)进程间通信
网络边缘:主机、存储、服务器、数据库
网络核心:路由器、链路
主要功能:为运行在网络边缘的不 同主机上的各应用程序之间提供通信服务;在应用层和网络层之间充当复用器的作用。各种各样的网络应用,通过传输层的端口被提交统一的网络层,并由IP协议用统一的方式将它们发送到网络中。
提供的服务
- 面向连接的服务(TCP)FTP,Telnet 可靠 开销大
- 面向无连接的服务(UDP)SNMP,DNS 不提供可靠交付
端口与地址
进程标识符X,利用协议端口(软件端口)。
熟知端口:0~1023
登记端口号:1024~49151
客户端口号,短暂端口号:49152~65535
传输服务访问点:当两个不同主机的两个进程需要通信时 ,必须指明对方是哪一个进程,这个标记称为传输层地 址,也称为传输服务访问点(TSAP)
传输层地址(TSAP) = 主机IP地址+端口号
e.g. 192.168.10.1:80
套接字:为了使应用程序能够方便地使用 协议栈软件进行通信的一种方法。{协议,本地地址,本地端口,远程地址,远程端口}
上联应用,下联网络协议栈。
流式套接字(stream socket):提供面向连接、可靠的数据传输服务,数据无差错、无重复 的发送,且按发送顺序接收。内设流量控制,避免数据流超 限;数据被看作是字节流,无长度限制。
数据报式套接字(Datagram socket):提供无连接服务。数据包以独立包形式发送,不提供无差错 保证,数据可能丢失或重复,并且接收顺序混乱。
原始套接字(Raw Socket):字允许对较低层次的协议,如IP、ICMP直接访 问,用于检验新的协议的实现。
用户数据报协议(UDP)
UDP 只在 IP 的数据报服务之上增加了很少一点的功能 ,即端口的功能和差错检测的功能。
- UDP是无连接协议,在发送数据之前不需要建立连接。 不保证可靠交付,同时也不使用拥塞控制。
- UDP是面向报文,没有拥塞控制,很适合多媒体通信 的要求。
- UDP支持一对一、一对多、多对一和多对多的交互通信。
- UDP 的首部开销小,只有 8 个字节。
- 发送方 UDP 对应用程序交下来的报文,在添加首部后 就向下交付 IP 层。
- UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
- 应用层交给 UDP 多长的报文,UDP 就照样发送,即一 次发送一个报文。
- 接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去 除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
- 应用程序必须选择合适大小的报文。
传输控制协议(TCP)
是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- TCP 是面向连接的传输层协议。
- 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
- TCP 提供可靠交付的服务。
- TCP 提供全双工通信。
- 面向字节流。
TCP的连接
- TCP把连接作为最基本的抽象。
- 每一条TCP 连接有两个端点。
- TCP连接的端点叫做套接字(socket)或插口。
- 端口号拼接到(contatenated with) IP 地址即构成了 套接字
{(IP1: port1), (IP2: port2)}
连接的三个阶段:连接建立、数据传送、连接释放
为何要进行三次握手和三次挥手
连接需要三次握手
- 客户端→服务器。客户端向服务器提出连接建立请求,即发出同步请求报文。
- 客户端←服务器。服务器收到客户端的连接请求后,向客户端发出同意建立连接的同步确认报文。
- 客户端→服务器。客户端在收到服务器的同步确认报文后,向服务器发出确认报文。
目的:同步双方的序列号和确认号并交换TCP窗口大小; 让双方都证实对方能收到
连接的释放 四次挥手
- 客户端→服务器。客户端向服务器发出一个连接释放报文。
- 客户端←服务器。服务器收到客户端的释放连接请求后,向客户端发出确认报文。
此时客户端不再发送数据(仅响应报文)给服务器,仅接收报文。 (半关闭状态) - 客户端←服务器。服务器在发送完最后的数据后,向客户端发出连接释放确认报文。
- 客户端→服务器。客户端在收到服务器连接释放报文后,向服务器发出确认报文。
- 发送后客户端再等 2*MSL (如果服务器没收到最后的ACK 服务器会再请求一次 等待2MSL确保服务器收到了) 1MSL时间留给最后的ACK确认报文段到达服务器端,1MSL时间留给服务器端再次发送的FIN。
- 收到后服务器CLOSED
客户端要等待2MSL(最大报文生命)后才可以释放
- 保证 客户端 的最后一个ACK可以到达服务器
- 防止失效的连接请求报文出现在本连接中
TCP计时器:至少应该有四种计时器:重传计时器、持久计时器、保活计时器和时间等待计时器
拥塞控制:慢开始 和 拥塞避免
应用层
在TCP/IP中,应用层对应OSI/RM中的会话层、表示层 和应用层,是应用程序与网络传输的接口,是面向应用 需求的通信协议中的最高端。
应用层协议不是应用程序,也不解决用户的具体应用需 求,而是为应用程序进程的网络通信提供服务的第一层 协议,是为用户的应用需求提供通信服务。
规定了运行在不同端系统上的应用程序进程相互传递报文的规范:
- 交换的报文类型,如请求报文和响应报文
- 语法,如报文中的各个字段及这些字段的描述规范
- 语义,即报文各字段的可能取值及其含义
- 进程何时、如何发送报文及对报文进行响应。
体系架构
- 客户-服务器模式
- P2P模式 通信各方地位平等,互为客户端服务器,对中心服务器依赖最小
- 混合模式 混合了C/S和P2P的通信模式
TCP/IP中的应用层协议:域名,超文本传输,电子邮件,会话发起,文件传输,远程访问
域名解析
主机向本地域名服务器的查询一般都是采用递归查询。 如果主机所询问的本地域名服务器不知道被查询域名 的IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
** 解析过程**
- 首先从主机本地Hosts文件查找。没找到就向本地 DNS发出请求
- 若本地DNS也找不到,则将请求发给负责该域的根 域名字服务器,根服务器会返回一个相应的顶级域 名服务器地址
- 本地域名服务器向顶级域名服务器提出请求。顶级 域名服务器会返回一个权限域名服务器地址
- 本地域名服务器向权限域名服务器提出请求,权限域名服务器将返回目标域名的IP地址。
- 本地域名服务器向查询主机返回目标域名的IP地址。
电子邮件协议
发送:SMTP
读取:POP3 IMAP(不需要全部下载 交互式)
MIME 邮件中传输数据