Toggle navigation
Mr.Strawberry's House
文章
网址导航
更多
甜品站
杂物间
新版博客
关于 快刀切草莓君
友情链接
妙妙屋开发日志
注册
登录
搜索
文章列表
分类 标签
归档
# 计算机网络 笔记 朝花夕拾,简要回顾一下计算机网络课程。 [TOC] ## 概论 ### 文章收藏 [计算机网络基础知识](https://www.cnblogs.com/maybe2030/p/4781555.html) [计算机网络常见面试题](https://www.cnblogs.com/inception6-lxc/p/9152691.html) [为何要进行三次握手和四次挥手](https://blog.csdn.net/qzcsu/article/details/72861891) ### 产生和发展 美国国防部 -> ARPANET -> MILNET(军事), ARPANET -> NSFNET - **远程联机系统** 50s -> 60s 前端处理机FEP,调制解调器M,终端控制器TC,主机,终端T ![1](http://www.zrawberry.com/media/picture/37a40b0480a5477593309ac8c3334b78.png) - **计算机-计算机 网络** 60s ->70s 通信子网(路由器和线路),资源子网(服务器和主机) 缺点:无法任意互联,拓展性差 ![2](http://www.zrawberry.com/media/picture/24049d340e0648eda192ad081eb9640f.png) - **开放式标准化网络** 80s -> now 统一的网络体系结构:OSI,CCITT,TCP/IP ### 计算机网络定义 参考定义:将若干台具有**独立**功能的计算机 系统,用某种或多种通信介质连接起来,通过完善的**网络协议**, 在**数据交换**的基础上,实现网络**资源共享**的系统称为计算机网络。 ### 分类 - **地理**:局域网(LAN),城域网(MAN),广域网(WAN) - **拓扑结构**:星型,环型,总线,不规则型 - 数据**交换方式**:**电路交换**(建立,传输,拆除,独占信道资源),**分组交换**(化整为零,存储转发) ## 网络协议和网络体系结构 ### 网络协议 一整套通信规程,包括规定要交换的数据格式、 控制信息的格式和控制功能、通信过程中事件执行的次序等。可能涉及到: - 物理传输介质 - 数据编码 - 收/发端同步 - 数据传输单元格式 - 控制通信方向 - 路由选择 - 差错控制 - 流量控制 - 数据加密,如何加密 ### 网络体系结构 - 真正的**物理通信**总是发生在除物理层。除物理层外,其余各对等层实体间都是进行**虚拟通信**。 - 通信必须在**对等层**进行,不允许交差通信。 - 虚拟通信是一种逻辑通信,其意义在于: 1. 设计本层协议时,不受其他层协议的内部实现影响。 2. 通过层间接口**调用低层提供的服务**,只要获得低层足够支 持,虚拟通信就能得以实现。 - n-1层为n层提供服务。n层直接使用n-1层提供的服务,间接 使用n-2, n-3, …… 层提供的服务。 ### OSI参考模型 ![4](http://www.zrawberry.com/media/picture/84df2ec5db9e45ba90206e2157ceb46e.png) **OSI参考模型各层功能** - **物理层** 完成原始**数据位流**在物理介质上传输,而不管位流的信息含义。 - **数据链路层** 完成**数据帧**在相邻的结点间无差错传输。 - **网络层** 完成**报文分组**在源/目的结点之间传输。 - **传输层** 完成**报文段**在源/目的主机进程之间的透明传输。 网络通信↑ 数据处理↓ - **会话层** 进行会话管理,包括通信方向控制(单工,半双工,全双工) - **表示层** 数据格式转化、数据加密/解密、数据压缩/解压。 - **应用层** 为用户提供各种网络服务,包括文件,电子邮件, 数据库,WWW,DNS等。 ### Internet参考模型 两个**核心协议**:TCP和IP,故此模型也称为TCP/IP协议。 ![5](http://www.zrawberry.com/media/picture/8d16aae2274644bb8dddb8682b5baad0.png) (Internet和OSI的参考模型比较) - **应用层**对应OSI的应用层,表示层和会话层。主要包括:FTP, SMTP, TELNET, DNS, HTTP 等 - **传输层**:TCP(传输控制协议Transmission control protocol) , UDP(用户数据报协议User Datagram protocol ) - **互联网层**大体对应OSI的网络层,为IP协议。将IP分组以数据报方式从源主机发送到目的主机。 - **子网层**对应物理层和数据链路层:802.3, PPP, 802.5, 千兆百兆以太网等 ![6](http://www.zrawberry.com/media/picture/5bfbb26f5c8844deb39146fdc8e81150.png) ## 物理层 (中继器、集线器) ### 数据通信基础 - 通信系统模型 ```mermaid graph TD A[信源] -->B[变换器] B --> |发送端| C[信道] C --> |接收端| D[反变换器] D -->E[信宿] ``` - 模拟通信与数字通信 - 信道, 两个重要参数:带宽(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. 非归零,曼切斯特,差分曼切斯特 调制(调幅,调频,调相),解调(采样,量化,编码)。 - 数据同步方式:**字符同步**和**位同步** - 多路复用:频分复用,时分复用 ### 物理层协议 ![](http://zrawberry.com/media/picture/7b78c46e4e4a442080ac1dd5ff9028f1.png) 物理层协议实质上是通信接口标准 涉及内容:机械,功能,规格,电气特性 ## 数据链路层 (交换机) 数据帧是传送单位 **作用**:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 ### 差错控制 1. 传输差错的特征 - 原因:热噪声(持续性,小幅度),冲击噪声(大幅度,突发性) - 差错控制方法:通过特殊的编码使接收端能够发现甚至纠错 - 检错码,纠错码 2. 编码效率、检错和纠错 - 码字:信息位,校验位(冗余) - 码距:两个码字的不同位数个数 - 海明距离:两个码字之间的最小距离 - 编码效率:R=m/n=m/(m+r) - 检测d位错,海明距离d+1;纠正d位错,海明2d+1 3. 海明码 4. 循环冗余码CRC 5. 其他编码:奇偶校验码 ### 流量控制 1. **停-等协议**:发一帧后等应答 2. **滑动窗口协议**:连续发送若干后再等待应答![](http://zrawberry.com/media/picture/399a3f2e3ca046cfaa13875265c64793.png) 3. 顺序接受管道协议(**回退N**):接受窗口尺寸为1的滑动窗口协议,某帧丢失后其后全部丢弃并返回否认。![](http://zrawberry.com/media/picture/64e6ad9fe7c54746ab41bdd730fdcbd9.png) 4. 选择接收管道协议 上述协议都可看作滑动窗口协议,差别在于窗口尺寸的不同 ![](http://zrawberry.com/media/picture/4cd3c76af15c49f48221a88e737d2e38.png) 窗口尺寸的限制: 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地址获取物理地址 ![报文](http://zrawberry.com/media/picture/d2ccd64f4d714fc8b93899ed890e6110.png) **地址** ![地址](http://zrawberry.com/media/picture/1e79ec4fa83d43ec807b4424fa617e62.png) - 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地址。 ![ARP广播](http://zrawberry.com/media/picture/63db3585f24a4e76811091fb8a5d3b9e.png) RARP与ARP相反,知道MAC不知道IP。 ## 传输层 (网关) 在计算机网络中,传输层处于非常重要的位置。传输 层,也称为运输层,无论在OIS还是在TCP/IP模型中 ,传输层都处于面向**应用**部分的最低层和面向**通信**部分的最高层。(承上启下)**进程间通信** 网络边缘:主机、存储、服务器、数据库 网络核心:路由器、链路 **主要功能**:为运行在网络边缘的不 同主机上的各应用程序之间提供通信服务;在应用层和网络层之间充当复用器的作用。各种各样的网络应用,通过传输层的端口被提交统一的网络层,并由IP协议用统一的方式将它们发送到网络中。 ### 提供的服务 1. 面向连接的服务(TCP)FTP,Telnet 可靠 开销大 2. 面向无连接的服务(UDP)SNMP,DNS 不提供可靠交付 **端口与地址** 进程标识符X,利用协议端口(软件端口)。 熟知端口:0~1023 登记端口号:1024~49151 客户端口号,短暂端口号:49152~65535 **传输服务访问点**:当两个不同主机的两个进程需要通信时 ,必须指明对方是哪一个进程,这个标记称为传输层地 址,也称为传输服务访问点(TSAP) **传输层地址(TSAP) = 主机IP地址+端口号** e.g. `192.168.10.1:80` **套接字**:为了使应用程序能够方便地使用 协议栈软件进行通信的一种方法。`{协议,本地地址,本地端口,远程地址,远程端口}` 上联应用,下联网络协议栈。 ![套接字](http://zrawberry.com/media/picture/d6e1f565a8d249e3bea6af4361e65317.png) **流式套接字**(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](http://zrawberry.com/media/picture/b0e2d250efda41868b9072d6278f2585.png) TCP的连接 - TCP把连接作为最基本的抽象。 - 每一条TCP 连接有两个端点。 - TCP连接的端点叫做套接字(socket)或插口。 - 端口号拼接到(contatenated with) IP 地址即构成了 套接字 {(IP1: port1), (IP2: port2)} 连接的三个阶段:**连接建立、数据传送、连接释放** [为何要进行三次握手和三次挥手](https://blog.csdn.net/qzcsu/article/details/72861891) 连接需要**三次握手** 1. 客户端→服务器。客户端向服务器提出连接建立请求,即发出同步请求报文。 2. 客户端←服务器。服务器收到客户端的连接请求后,向客户端发出同意建立连接的同步确认报文。 3. 客户端→服务器。客户端在收到服务器的同步确认报文后,向服务器发出确认报文。 目的:同步双方的序列号和确认号并交换TCP窗口大小; 让双方都证实对方能收到 连接的释放 **四次挥手** 1. 客户端→服务器。客户端向服务器发出一个连接释放报文。 2. 客户端←服务器。服务器收到客户端的释放连接请求后,向客户端发出确认报文。 此时**客户端**不再发送数据(仅响应报文)给服务器,仅接收报文。 (半关闭状态) 3. 客户端←服务器。服务器在发送完最后的数据后,向客户端发出**连接释放确认**报文。 4. 客户端→服务器。客户端在收到服务器**连接释放报文**后,向服务器发出确认报文。 - 发送后**客户端**再等 2*MSL (如果服务器没收到最后的ACK 服务器会再请求一次 等待2MSL确保服务器收到了) 1MSL时间留给最后的ACK确认报文段到达服务器端,1MSL时间留给服务器端再次发送的FIN。 - 收到后**服务器**CLOSED 客户端要等待**2MSL**(最大报文生命)后才可以释放 1. 保证 客户端 的最后一个ACK可以到达服务器 2. 防止失效的连接请求报文出现在本连接中 TCP计时器:至少应该有四种计时器:**重传**计时器、**持久**计时器、**保活**计时器和**时间等待**计时器 拥塞控制:**慢开始** 和 **拥塞避免** ![拥塞控制](http://zrawberry.com/media/picture/e70aecaa7d1c4dd083de0e0fe9fdb756.png) ## 应用层 在TCP/IP中,应用层对应OSI/RM中的会话层、表示层 和应用层,是应用程序与网络传输的接口,是面向应用 需求的通信协议中的最高端。 应用层协议不是应用程序,也不解决用户的具体应用需 求,而是为应用程序进程的网络通信提供服务的第一层 协议,是为用户的应用需求提供通信服务。 规定了运行在不同端系统上的应用程序进程相互传递报文的规范: - 交换的报文类型,如请求报文和响应报文 - 语法,如报文中的各个字段及这些字段的描述规范 - 语义,即报文各字段的可能取值及其含义 - 进程何时、如何发送报文及对报文进行响应。 体系架构 1. 客户-服务器模式 2. P2P模式 通信各方地位平等,互为客户端服务器,对中心服务器依赖最小 3. 混合模式 混合了C/S和P2P的通信模式 TCP/IP中的应用层协议:域名,超文本传输,电子邮件,会话发起,文件传输,远程访问 ### 域名解析 主机向本地域名服务器的查询一般都是采用**递归查询**。 如果主机所询问的本地域名服务器不知道被查询域名 的IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。 ** 解析过程** - 首先从主机本地Hosts文件查找。没找到就向本地 DNS发出请求 - 若本地DNS也找不到,则将请求发给负责该域的根 域名字服务器,根服务器会返回一个相应的顶级域 名服务器地址 - **本地**域名服务器向**顶级域名服务器**提出请求。顶级 域名服务器会返回一个**权限域名服务器**地址 - 本地域名服务器向**权限域名服务器**提出请求,权限域名服务器将返回目标域名的IP地址。 - 本地域名服务器向查询主机返回目标域名的IP地址。 ### 电子邮件协议 发送:SMTP 读取:POP3 IMAP(不需要全部下载 交互式) MIME 邮件中传输数据 ![邮件](http://zrawberry.com/media/picture/42c041f50c17447d811a4e9eedf92239.jpg)
文章信息
标题:计算机网络
作者:快刀切草莓君
分类:计算机基础课程
发布时间:2020年3月3日
最近编辑:2020年5月12日
浏览量:1268
↑