《计算机网络》✍万字详细笔记

Posted 白鳯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《计算机网络》✍万字详细笔记相关的知识,希望对你有一定的参考价值。

计算机网络知识总结

Get和Post

GET和POST是HTTP协议中两种发送请求的方法

HTTP是基于TCP/IP的关于数据如何在万维网中通信的协议

HTTP的底层是TCP/IP,所以get和post的底层也是TCP/IP,也就是说,get和post都是TCP连接,本质上并无差别。但是由于HTTP的规定和浏览器、服务器的限制,导致它们在应用过程中体现出一些不同。

POST和GET都是向服务器提交数据,并都会从服务器获取数据

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

区别

  • 传送方式:get通过地址栏传输,post通过报文传输

  • 传送长度:get参数有长度限制(受限于url长度,不同版本浏览器不同???),而post无限制

  • get和post重大区别,简单来说就是get产生一个TCP数据包,post产生两个TCP数据包

    详细来说:对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而相对于post,浏览器先发送header,服务器响应100continue,浏览器再发送data,服务器响应200OK(返回数据)。

    也就是说,get只需要汽车跑一趟就把货运到了,而post得跑两趟(打招呼+运货)

    因为post需要两步,时间上消耗的要多一点,看起来get比post更有效,但是

    • get与post都有自己的语义,不能随便混用
    • 据研究,在网络环境好的情况下,发一次包的时间和法两次包的时间差基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点
    • 并不是所有浏览器都会在post中发送两次包,Firefox就只发送一次

建议

  • get方式的安全性较post方式要差些,包含机密信息的话,建议用post数据提交方式
  • 在做数据查询时,建议用get方式;而在做数据添加,修改或者删除时,建议用post方式

拓展

  • get在浏览器回退时是无害的,而post会再次提交请求

  • get产生的url地址可以被bookmark,而post不可以

  • get请求会被浏览器主动cache,而post不会,除非手动设置

  • get请求只能进行url编码,而post支持多种编码方式

  • get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留

  • get请求在url中传送的参数是有长度限制的,而post没有

  • 对参数的数据类型,get只接受ASCII字符,而post没有限制

  • get比post更不安全,因为参数直接暴露在url上,所以不能用来传递敏感信息

  • get参数通过url传递,post放在request body中

参考链接


HTTP

HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议

HTTP是一个基于TCP/IP通信协议来传递数据(html文件,图片上传,查询结果等)

HTTP工作原理

HTTP协议工作于客户端-服务器架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务端发送所有请求。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,可更改为8080或者其他端口

三点注意事项

  • http是无连接的:无连接的含义是限制每次请求只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
  • http是媒体独立的:这意味着只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过http发送。客户端以及服务器指定使用适合的MIME-type内容类型
  • http是无状态的:http协议是无状态协议。无状态是指协议对于事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

在这里插入图片描述

**备注:**CGI(Common Gateway Interface) 是 HTTP 服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 绝大多数的 CGI 程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI 程序使网页具有交互功能

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code

状态码分类

分类分类描述
1**信息,服务器收到信息,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

常见状态码

状态代码状态描述说明
200OK客户端请求成功
400Bad Request由于客户端请求有语法错误,不能被服务器所理解
401Unauthorized请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
403Forbidden服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
404Not Found请求的资源不存在,例如,输入了错误的url
500Internal Server Error服务器发生不可预期的错误, 导致无法完成客户端的请求
503Service Unavailable服务器当前不能处理客户端的请求,在一段时间之后,服务器可能会恢复正常

菜鸟教程


流量指标

一般而言,大家说的网站流量(traffic)就是指网站的访问量,是用于叙述访问一个网站的用户数及其顾客所访问的网页数量等指标值。

网站流量相对于虚拟空间商而言就是指:顾客在访问网站环节中,造成的数据量大小,有的虚拟空间商限定了网站流量的大小,当超出网站流量这一量该网站就无法访问了。

流量数量指标

  1. PVPage View访问量,即页面浏览量或点击量,衡量网站用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计。

  2. UVUnique Vistor独立访客,统计1天内访问某站点的用户数(以cookie为依据);访问网站的一台电脑客户端为一个访客。可以理解成访问某网站的电脑的数量。网站判断来访问电脑的身份是通过来访问电脑的cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。如果用户不保存cookies访问、清除了cookies或者更换设备访问,计数会加1,00:00~24:00内相同的客户端多次访问只计为1个访客。

  3. IPInternet Protocol独立IP数,是指1天内多少个独立的IP浏览了页面,即统计不同的IP浏览用户数量。IP是基于用户广域网IP地址来区分不同的访问者的,所以,多个用户(多个局域网IP)在同一个路由器(同一个广域网IP)内上网,可能被记录为一个独立IP访问者。如果用户不断更换IP,则有可能被多次统计。

  4. VVVisit View),是指一天内的访问次数(或称访问频次、打开次数、会话数)。怎样为1次?业界一般定义30分钟,符合

    情况如何计算
    在30分钟内访问任意页面任意次算1次
    超过30分钟再次访问+1次
    未超过30分钟关闭浏览器,再次打开浏览器访问+1次

    实现:内存cookie+失效时间30分钟,查看浏览器是否存在cookie,不存在则分配会话ID(sid),并写入到cookie,在整个会话期间都携带sid,判断一天内不重复的sid数即可。

流量质量指标

  1. 跳出率:只浏览了一个页面便离开了网站的访问次数占总的访问次数的百分比,即只浏览了一个页面的访问次数/全部的访问次数汇总
  2. 退出率:指用户从该页面退出的页面访问次数/进入该页的页面访问数的百分比
  3. 平均访问时长:平均每次访问在网站上的停留时长,即平均访问时长等于总访问时长与访问次数的比值
  4. 平均访问页面:平均每次访问浏览的页面数量,平均访问页面=浏览量/访问次数

流量转化指标

  1. 转化次数:访客到达转化目标页面,或完成网站运营者期望完成动作的次数
  2. 转化率:转化率=转化次数/访问次数

参考博客:

运营必备 - PV、UV、IP 分别是什么意思?

详解统计指标PV、IP、UV、VV

网站流量分析数据指标


网络体系结构

ISO/OSI参考模型

开放系统互连Open System InterconnectionOSI)基本参考模型是由国际标准化组织International Standard OrganizationISO)制定的标准化开放式计算机网络层次结构模型。“开放”这个词表示能使任何两个遵守参考模型和有关标准的系统可以进行互连。OSI的体系结构定义了一个七层模型,如下图所示,用以进行进程间的通信,并作为一个框架来协调各层标准的制定;OSI的服务定义描述了各层所提供的服务,以及层与层之间的抽象接口和交互用的服务原语;OSI各层的协议规范,精确地定义了应当发送何种控制信息及何种过程来解释该控制信息。在OSI参考模型中,对服务、接口和协议这三个容易混淆的概念给出了明确的区分。服务描述了某一层向上提供的功能,接口说明上层如何使用下层的服务,协议则描述该层功能的实现机制。

在这里插入图片描述

需要注意的是,OSI参考模型并非具体实现的描述,它只是一个为制定标准机制而提供的 概念性框架。

根据分而治之的原则,OSI模型共分为七个层次,其划分层次的原则如下:

  1. 网络中各个结点应具有相同层次,每层应当实现相同的功能。
  2. 层次的划分应从逻辑上将功能分组,每层应实现一个定义明确的功能。
  3. 每层功能的选择应该有助于制定网络协议的国际标准。
  4. 相邻层通过接口通信,各层之间边界的选择应尽量减少跨过接口的通信量。
  5. 层数划分要合适,既不能太多,也不能太少。太多,体系结构就会过于繁琐,协议开销过大;太少,不同的功能会混杂在同一层中,功能定位不明确。

各层的功能简述如下:

物理层(Physical Layer)

物理层最接近于物质传输介质,它的职责就是将信息放置到介质上。物理层传输介质可以是电缆、光缆和自由空间。在无线网络中,物理网络介质已经不是网络电缆,而是自由空间。物理层协议的任务就是将数字信号比特流通过通信介质,从发送结点传输到接收结点,提供为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性。

数据链路层(Data Link Layer)

数据链路层在物理层之上提供可靠数据传输。不同的数据链路层定义了不同的网络和协议特性,其中涉及物理编址、错误校验、数据帧序列、链路管理以及流量控制。

网络层(Network Layer)

网络层的主要用途是在网络中的源结点到目的结点之间传输数据报,通过互连的网络来交换网络层的协议数据单元。网络层为高层协议提供两种类型的网络服务,即面向连接的虚电路服务和无连接的数据报服务。网络层的主要功能包括网络寻址、路由选择、建立和拆除网络连接、数据报的分段和组装,有时,拥塞控制和服务质量的控制也是网络层涉及的问题。

传输层(Transport Layer)

传输层在网络层提供的服务基础上,实现向高层传输可靠的透明数据传输,使高层服务用户在相互通信时不必关心通信子网的实现细节。传输层的功能一般包括端口映射、 多路复用与分解、传输连接的建立与释放、分段与重组、流量控制和缓存以及差错控制。由于一个传输层实体可以为多个会话层实体服务,所以,一个网络地址可以和多个传输层地址相连接。传输连接的建立与释放是为两个会话实体建立传输层的虚拟连接。流量控制确保发送端的发送速度适合接收端处理,这主要通过可变滑动窗口协议实现。差错控制是对传输层的协议数据单元出现的丢失、重复、失序等错误进行错误检测和恢复。

会话层(Session Layer)

会话层利用传输层提供的可靠的端到端的通信服务,实施两个用户进程之间的会话,包括建立通信链路并保持会话过程通信连接的畅通,保持两个结点之间对话的同步,决定通信是否被中断以及通信中断时决定从何处重新发送,拆除会话等功能。因为会话层对通信的两个实体之间的数据交换和相互操作进行状态的记录和管理,因此有人形象地把会话层比喻为网络通信过程中的“交通警察”。

表示层(Presentation Layer)

表示层提供多种用于应用层数据的编码和转化功能,以确保从一个系统应用层发送的信息可以被另一系统的应用层识别。

应用层(Application Layer)

应用层是最接近终端用户的OSI层,这就意味着OSI应用层与用户之间是通过应用软件相互作用的。应用层的协议提供与用户应用有关的功能,如常用的网络浏览、电子邮件、不同类型文件系统的文件传输、虚拟终端软件、过程作业输人、目录查询和其他各种通用的和专用的网络服务,都有不同的应用层协议支持。

🎈

TCP/IP体系结构

传输控制协议/网际协议( Transmission Control Protocol/ Internet Protocol, TCP/IP) 是于1977年~ 1979年形成的协议规范,是美国国防部高级研究计划局计算机网ARPANET及其后继的因特网所使用的传输层和网络层协议,也是ARPANET参考模型ARM的一部分。由于在ARPANET上运行的协议很多,因此,人们常常将这些相关协议统称为TCP/IP协议,或简称TCP/IP

TCP/IP协议之所以发展迅速,是因为它适应了世界范围内对数据通信的需要,具有很多利于自身发展的特点:开放的协议标准可以免费使用,并且独立于特定的计算机硬件与操作系统;独立于特定的网络硬件,可以运行在局域网、广域网,更适用于互联网中;统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址;标准化的高层协议可以提供多种可靠的用户服务。

TCP/IP体系共有四个层次:应用层Application Layer)、传输层Transport Layer)、网络互连层Internet Layer)和网络接口层Host-to-Network Layer)。其协议簇如下图所示

在这里插入图片描述

TCP/IP本身对网络接口层协议未进行定义。TCP/IP协议可以为各式各样的应用提供服务,也允许IP协议在各式各样的网络构成的互联网上运行。下面自底向上依次介绍各层。

(1) 网络接口层 (Host-to-Network Layer)

网络接口层主要负责将数据报发送到网络传输介质上以及从网络上接收TCP/IP数据报,相当于OSI参考模型中的物理层和数据链路层。在实际中,先后流行的以太网、令牌环网、ATM、帧中继等都可视为其底层协议。它将发送的信息组帧,并通过物理层向选定网络发送,或者从网络上接收物理帧,将去除数据控制信息的IP数据报交给网络互连层。

(2)网络互连层 (Internet Layer)

网络互连层的主要功能是寻址和对数据报的封装以及重要的路由选择功能。这些功能大部分都是由IP协议来完成的,再加上地址解析协议( Address Resolution Protocol, ARP)、 因特网控制报文协议( Intemet Control Message Protocol, ICMP) 等协议从旁协助,所以IP协议是本层众多实体中的核心。下面简单介绍这几个协议。

  • 网际协议(Intemnet Protocol, IP)。 该协议是一个无连接的协议,主要负责将数据报从源结点转发到目的结点。也就是说,IP协议通过对每个数据报中都有的源地址和目的地址进行分析,然后进行路由选择( 即选择一条到达目标的最佳路径),最后再转发到目的地。需要注意的是: IP 协议只是负责对数据进行转发,并不对数据进行检查。也就是说,它不负责数据的可靠性,这样设计的主要目的是提高IP协议传送和转发数据的效率。
  • 地址解析协议( Address Resolution Protocol, ARP)。该协议主要负责将TCP/IP网络中的IP地址解析和转换成计算机的物理地址,以便于物理设备(如网卡)按该地址来接收数据。
  • 反向地址解析协议( Reverse Address Resolution Protocol, RARP)。该协议的作用与ARP的作用相反,它主要负责将设备的物理地址解析和转换成IP地址。
  • 因特网控制报文协议( Intermet Control Message Protocol, ICMP)。 该协议主要负责发送和传递包含控制信息的数据报,这些控制信息包括哪台计算机出了什么错误、网络路由出现了什么错误等内容。

(3)传输层(Transport Layer)

传输层主要负责在应用进程之间的“端到端”通信,即从某个应用进程传输到另外一个应用进程。它与OSI参考模型的传输层功能类似,也对高层屏蔽了底层通信网络的实现细节。

传输层在某-时刻可能要同时为多个不同的应用进程服务,因此为了识别不同的应用进程,传输层在每一-个分组中必须增加用于识别信源和信宿的应用程序的标识,同时,每一个分组还要附带校验和,以保证接收端能校验分组的正确性,这样可以将数据报发送到合适的应用进程。这个增加的标识称为端口(port) 或者端口号(port ID)。

TCP/IP体系结构的传输层包含两个主要协议,即传输控制协议( Transport Control Protocol,TCP)和用户数据报协议(User Datagram Protocol, UDP)。 这两个协议分别应用于有不同要求的应用进程。TCP协议是一种可靠的、面向连接的协议,保证通信主机之间有可靠的字节流传输,完成流量控制功能,协调收发双方的发送与接收速度,达到正确传输的目的。UDP 是一种不可靠、 无连接的协议,其特点是协议简单、额外开销小、效率较高,但是不能保证传输是否正确。

(4)应用层(Application Layer)

应用层是TCP/IP的最高层,它包括了多种高层协议,并且总有新的协议加入。与OSI的应用层类似,它是直接为应用进程服务的一层。即当不同的应用进程数据通信或者数据交换时,就去调用应用层的不同协议实体,让这些实体去调用TCP或者UDP层服务来进行网络传输。

与OSI不同,TCP/IP 中包含了许多具体的应用层协议。

  • 简单邮件传输协议( Simple Mail Transportation Protocol, SMTP): 该协议主要用于在电子邮件服务器之间传输电子邮件。
  • 域名系统( Domain Name System, DNS):该协议用于域名与IP地址之间的转换。
  • 超文本传输协议( Hypertext Transportation Protocol, HTTP): 该协议是为因特网上传输和处理超文本或者www(WorldWideWeb)页面而服务的应用层协议。当用户浏览网页时,就需要用到HTTP协议。
  • 文件传输协议( File Transportation Protocol, FTP)。该协议是为网络中传输文件进程服务的。所谓传输文件,是指将文件从一台计算机通过网络复制到另- -台计算机中。
  • 远程终端协议( Telnet)。该协议是用于远程登录网络主机的一个应用层协议。
  • 简单网络管理协议( Simple Network Management Protocol, SNMP)。 该协议用于在控制台与网络设备(如路由器、交换机等)之间交换网络管理信息。

在因特网所使用的各种协议中,最重要的和最著名的就是TCPIP两个协议。现在人们经常提到的TCP/IP并不一定是指TCP和IP这两个具体的协议,而往往是表示因特网所使用的体系结构或是指整个的TCP/IP协议族( protocol suite) 。

🎈

OSI与TCP/IP的比较

OSI参考模型与TCP/IP体系结构都采用了层次结构,但是通过仔细研究,两者之间还是存在一些差异。下图给出了两者的简单对比。

在这里插入图片描述

OSI参考模型与TCP/IP体系结构之间有三个相似之处。第一,两者的出发点相同,都是为解决异构网络互连而提出来的,可以实现不同设备、不同厂商和不同网络协议之间的互连与通信。第二,两者都采用了分层思想和模块化思想,这样任何一层的改变都不会影响到其他层,从而保证了整个体系结构的稳定性。而且这种分层的思想也有利于整个网络体系结构的实现。第三,两者都对计算机网络进行了明显的功能划分,各层都在分界最明显的地方进行了分界,这样可以减少各层之间的相互影响。

OSI参考模型与TCP/IP体系结构的区别也体现在三个方面。第一,OSI 模型虽然只是一一个概念模型,但它概念清晰,层次划分、层与层之间的界限划分都非常科学,对计算机网络抽象的认识非常好,所以在计算机网络的研究和教育领域中都有很多应用。相比之下,TCP/IP 模型对层的划分、层与层之间的界限划分则不像OSI参考模型那样明显。第二,由于OSI参考模型的设计显得过于复杂,不利于实现,所以它一直没有成为事实上的国际标准。而TCP/IP模型中各层之间的划分虽然不如OSI明显,但它易于实现,其效率和健壮性也很好,所以它适用于各种网络。第三,TCP/IP对网络互连层及其上各层的协议都有明确的定义,而OSI只提供了一个分层的体系框架,并未对各层协议进行具体定义。因此OSI参考模型更具有理论指导价值,而TCP/IP则是一个事实上流行的协议体系。

🎈

五层协议的体系结构

OSI的七层协议体系结构相对复杂,又不实用,但其概念清晰,体系结构理论也比较完整。TCP/IP 协议应用性强,现在得到了广泛的使用,但它的参考模型的研究却比较薄弱。TCP/IP虽然是-一个四层的体系结构,但实际上只有应用层、传输层和网络互连层三层,最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采用Andrew S.Tanenbaum建议的一-种混合的参考模型。这是一种折中的方案,采用五层协议的体系结构,吸收了OSI和TCP/IP的优点,如下图所示。

在这里插入图片描述

物理层

物理层是五层体系结构中的底层。它的任务是利用传输介质为通信的网络结点之间建立、管理和释放物理连接,透明地传送比特流。“ 透明地传送比特流”表示上层协议只看到“0”、“1”比特流,而不用关心物理信号的传输,因而也就“看不见”物理层是如何实现比特流的传输的。物理层利用的一些物理媒体( 如双绞线、同轴电缆、光缆等)并不在物理层协议之内而是在物理层协议的下面。因此也有人把这些物理媒体认为是网络体系结构的第0层。

数据链路层

数据链路层在五层体系结构中位于物理层和网络层之间,相对于高层,数据链路层所用的服务和协议都比较成熟。在发送数据时,数据链路层的任务是将在网络层交下来的IP数据报组装成帧(franing), 在两个相邻结点间的链路上传送以( frame)为单位的数据。每一帧都是由数据和一些必要的控制信息,如同步信息、地址信息、差错控制以及流量控制信息等组成的。

网络层

网络层在五层体系结构中位于数据链路层和传输层之间,它的作用是为分组交换网上的不同主机提供通信。而传输层的作用是为运行在不同主机中的进程提供逻辑通信。注意它们之间的区别。在发送数据时,网络层会把传输层产生的报文段或用户数据报封装成分组进行传送。网络层还有一个任务就是路由的选择,使源主机传输层所传下来的分组能够交付到目的主机。
传输层

传输层在五层体系结构中位于网络层和应用层之间,其作用是为运行在不同主机中的进程提供逻辑通信。

应用层

应用层是五层体系结构中的最高层。它可以根据用户所产生的服务请求确定进程之间通信的性质是否满足用户的需要。应用层直接为用户的应用进程提供服务。


物理层

物理层负责完成网络结点之间的比特流传输。在物理层,经过编码的比特流被转换成相应的物理信号,在传输介质上进行传输。这里需要说明的是:物理层并不包括各类传输介质。物理层定义了与传输介质接口有关的特性。

🎈

通信系统模型

实现通信过程的全部设备和信道(传输介质)的总和称为通信系统。通信系统的功能是完成通信双方的信息传递或交换。在通信系统中,发送信息的一-方称为信源,而接收信息的一方称为信宿。信源和信宿之间利用通信线路进行通信。在通信系统中,也将通信线路称为信道。通信系统的一般模型如下图所示

在这里插入图片描述

🎈

数字基带传输

数字信号是用高、低电平表示比特“0”和比特“1”的矩形脉冲信号。这种矩形脉冲信号所固有的频带称为基本频带( 基带),因此数字信号也称为数字基带信号。数字基带信号没有经过调制,它所占据的频带一般是从直流或低频开始。如果直接在信道中进行数字信号的传输,则称为数字基带传输。一般来说,发送端在进行数字基带传输之前,要对信源发出的数字信号进行编码;在接收端,要对接收到的数字信号进行解码,以恢复原始数据。

数字基带传输实现简单、成本低,得到了广泛应用。

数字基带传输常见码型如下:

  • 不归零编码(Non-Return to ZeroNRZ
  • 曼彻斯特编码(Manchester
  • 差分曼彻斯特编码(Differential Manchester
  • mB/nB编码

🎈

多路复用技术

多路复用的目的是使得多路信号能够在同一线路上进行传输,以最大限度地利用信道资源。大容量的同轴电缆、光纤和卫星通信可以容纳的通信带宽很宽,可进行许多路信号的传送。多路复用技术主要有4种方式:频分多路复用(Frequency Division Muliplexing, FDM)、波分多路复用(Wave-length Division Mutiplexing, WDM)、 时分多路复用( Time Division Multiplexing, TDM)和码分多路复用(Code Division Multiplexing, CDM),下面分别进行介绍。

频分多路复用(FDM)

频分多路复用(FDM) 是将线路的可用频带划分成若干个在频率上互不重叠的频段,每路要传送的信号分别占用不同频段。例如,传统的有线电视系统和无线电广播都是采取这种方式。在传统有线电视系统中,尽管多个频道的电视节目都是通过同一条同轴电缆进行传送,但不同频在传统有线电视系统中,彼此之间不会出现相互干扰。

波分多路复用(WDM)

波分多路复用(WDM)被应用于光纤通信领域,其本质上也属于频分多路复用技术。通过使用不同波长的光载波,可以在一根光纤上传输多路光信号。由于光载波的频率很高,人们习惯上用波长而不是频率来表示不同频率的光载波,因此将光载波在光纤上的复用称为波分多路复用。

时分多路复用(TDM)

时分多路复用(TDM)是将传输时间分成若干个时隙( time slot), 每路信号占用一个时隙。在每路信号所占有的时隙内,其使用通信线路的全部带宽。时分多路复用可分为同步时分复用( Synchronous Time Division MultiplexingSTDM)和异步时分复用( Asynchronous Time DivisionMultiplexingATDM) 两种类型。

码分多路复用(CDM)

码分多路复用(CDM)技术又称为码分多址( Code Division Multi-ple AccessCDMA)技术。CDMA的特点是:采用了特殊的编码方法和扩频技术,多个用户可以使用同样的频带在相同的时间内进行通信。由于不同用户使用了不同的码型,因此相互之间不会造成干扰。CDMA信号的频谱类似于白噪声,具有很强的抗干扰能力。CDMA最初被应用于军事通信,现在已经被广泛应用于民用移动通信领域。

🎈

(电路交换、也称为线路交换)

分组交换

分组交换是计算机网络采用的数据交换方式。使用分组交换方式时,发送方需要将每个报文分割成若千个小的分组。每个分组的长度是可变的。另外,每种具体的分组交换技术都会定义分组的最大长度(如1500个字节)。采用分组交换方式进行数据传输时,通信子网中的结点负责分组的接收、差错校验、存储及转发。发送方的报文被分成若干个分组,每个分组可以通过不同的路径到达接收方。

分组交换方式的主要特点是:

  • 通信双方在进行数据传输时不需要事先建立好连接。这是分组交换方式与电路交换方式的明显不同之处。
  • 允许一个发送方与多个接收方进行通信,也允许一个接收方接收来自多个发送方的分组。数据通信可以随时发生,分组的间隔时间不确定。

分组交换技术在实际应用中,又可分为数据报( Datagram)和虚电路( Virtual Cireuit)两种方式。


数据链路层

数据链路层和物理层通常构成网络通信中必不可少的低层服务,在结点的网络接口( 如通常所称的网卡)中实现。

数据链路层的基本概念

通常把连接相邻结点之间的通信信道称为链路(ink), 网络中源结点发送的分组通常要经过多段链路传输才能到达目的结点。数据链路层协议就是解决每一段链路 上的数据传输问题的,相邻结点之间的链路以及该链路上采用的通信协议构成了数据链路(data link)的概念。

数据链路层传输的分组称为(frame)。 在早期的通信标准中,常把数据链路的控制协议称作链路通信规程。在链路两端设备的通信会话中,需要交换控制信息,根据控制信息的组织形式,数据链路层协议分为面向字符的协议面向比特的协议

🎈

面向字符的协议( character -oriented protocol),也称为面向字节的协议,使用完整的字节来做控制字符,通常使用某个字符集中定义的字符,如用ASCII字符集中的控制字符。

早期的一些协议,特别是大多数采用异步通信的调制解调器以及IBM的二进制同步通信( Binary Synchronous Communication, BSC 或称BISYNC)协议都是面向字符的协议。

面向比特的协议( bit oriented protocol), 用比特序列来定义控制码,而不使用控制字符。其优点是控制信息不受任何字符集的限制,具有编码和长度上的独立性,数据传输的透明性也优于面向字符的协议。一些同步通信中的协议如高级数据链路控制(High-LevelDataLinkControlHDLC)协议就是面向比特的协议。

因为面向比特的协议更灵活和高效,现在大多数计算机网络中的数据链路层协议都是面向比特的。

数据链路层协议的功能

数据链路层能够提供的功能归纳为7种。其中,前面4种是数据链路层的基本功能,也是一般数据链路层协议必须包含的功能;后面3种功能则是数据链路层的可选功能,根据适用的情况,有些数据链路层协议包含这些功能,有些则不包含。

1.封装成帧

物理层提供比特流传输服务,但在分组交换网络中,数据是以分组为单位传输的,以分组为单位进行寻址,以分组为单位进行差错控制,所以,数据链路层的首要任务就是构造分组。如前面所提到的,数据链路层传输的分组称为帧,所以,我们说数据链路层的第一个任 务就是把数据封装成帧。

封装成帧就好像把写好的信封装到信封中-样,在信封上写上邮政编码和收发信地址,邮局:才能进行投递。一个帧包含首部和数据部分,数据部分来自上层协议,通常包含要传递的信息数据,首部包含传递该帧需要的控制信息。帧的结构和首部各字段的含义由数据链路层协议规定,不同的协议所定义的帧结构也不同,所提供的链路层功能也有差别。

为了标记一帧的开始和结束,还必须有相应的帧定界方法,这也是封装成帧时要定义的,一般用特殊的控制字符或特定的比特组合进行帧定界。与帧定界有关的另一个问题是透明传输的问题。

2.透明传输

数据链路层协议必须保证数据的透明传输。所谓透明传输是指不限制数据部分包含的比特组合,即使数据部分恰巧出现和控制字符或帧定界字符相同的编码字节,接收方也不会错误理解。为此需要采取有效的区分机制,以便正确接收和处理帧数据。

解决透明传输问题通常采用两种方法:字符填充比特填充的方法。

  • 字符填充法:适用于面向字符的数据链路层协议,这类协议依赖于ASCII 等字符集中的控制字符传输控制信息和进行帧定界。
  • 比特填充法:适用于面向比特的数据链路层协议,这类协议不依赖于ASCII字符集中的控制字符进行帧定界,而是采用特定的比特组合作为帧的起始和结束标志。面向比特的协议在透明传输输方面要优于面向字符的协议,主要是针对帧定界符采取比特填充。

3.差错校验

物理层提供比特流传输服务,但并不提供比特差错校验的服务。在比特数据传输过程中,因为传输信道的原因可能会出现比特传输错误,一般用误码率衡量通信信道的传输质量。为了对传输过程中出现的差错进行控制,数据链路层一定要提供差错控制功能。

4.寻址

帧通常需要携带目的地址,标识帧的接收结点,用于数据链路层对站点进行寻址,有时还要携带源地址,标识发送结点。数据链路层地址通常又称为物理地址或硬件地址。

在点对点的连接中,由于接收结点固定,不需要进行寻址,这时地址字段可以填写固定值,不再具有寻址含义,如用于拨号接人的PPP协议中地址字段值为全1。

5.可靠交付

所谓可靠交付,是指当接收结点的数据链路层向上层交付收到的数据分组时,保证提供的是无差错的分组。可靠交付通常使用确认和重传机制,在对接收的帧检错后,如果接收无误,则向发送端发送确认信息(ACK);如果发现差错,则反馈回NACK信息,请求发送结点重发该帧。或者采用超时机制,接收端发现错误时,不发送反馈信息,发送端在给定的时间内没有收到ACK,就重发该帧,这种方法也兼顾了对帧丢失情况的处理。

可靠交付不是数据链路层必须提供的服务,对误码率比较低的链路,没有必要增加确认和重传开销,因此,并不是所有的数据链路层协议都提供确认机制。经典的HDLC协议提供这种功能,而常用的PPP协议、以太网MAC帧都不提供确认机制。在互联网中通常把确认机制放到更高的传输层实现

6.流量控制

由于网络中接收结点和发送结点在处理能力、缓存空间以及负载情况方面不可避免地存在差异,可能出现因为接收方来不及接收而造成的数据丢失,为了避免这种情况,需要对发送方的发送频度做适当的限制,这就是数据链路层的流量控制功能。流量控制实际上是通过某种机制,对发送的数据流量进行调控,使发送速率不致超过接收方的速率,接收方能及时地接收发送方发送的数据,而当接收方来不及接收时,及时限制发送方的帧发送速率,使帧收发的速率基本匹配。

流量控制是数据链路层的可选功能,并不是所有的数据链路层协议都要实现流量控制功能,常用的PPP协议、以太网MAC帧都不提供流量控制功能。在互联网中通常把流量控制机制放到更高的传输层实现。

数据链路层控制的是相邻两结点间数据链路上的流量,作用范围是一段点到点链路;而传输层控制的则是从源结点到目的结点之间的流量,作用范围覆盖端到端全程。

7. 链路接入和管理

链路接入又称为媒体访问控制( Medium Access Control, MAC)。当多个站点共享链路时,必须有媒体访问控制机制来协调多个结点的帧的传输。

对面向连接的数据链路层协议,链路管理功能包括数据链路的建立、维持和释放三个主要方面。当网络中的两个结点要进行通信时,数据的发送方必须确知接收方是否已处在准备接受的状态。为此通信双方必须先交换一些必要的信息, 以建立一条基本的数据链路。在传输数据时要维持数据链路,而在通信完毕时要释放数据链路。

🎈

差错校验的实现:

  • 纠错编码与检错编码
  • 循环冗余校验编码

🎈

可靠交付与确认机制

可靠交付服务是要求接收结点的数据链路层应确保向上层交付正确无误的数据帧,所以,一个提供可靠交付服务的数据链路层协议不仅要具有差错校验功能,还应该包括确认和请求重发的功能。

确认是指收到正确的帧后要向发送方反馈一个正确收到的确认信息(ACK)。请求重发是指发现有错误的帧后通告对方请求重发( 通常反馈一个NACK信息)。对丢失的帧则需要利用定时器来决定是否重发该帧,有些协议为了便于实现,完全利用定时器来控制重发操作。

1. 停止等待——最简单的确认机制

发送方每发送一-帧后 就要停下来等待接收方的确认信息,仅当确认接收方已经正确接收当前帧后,才继续发送下一帧,若在给定时间内没有收到确认信息,则发送方重发该帧。停止等待的确认机制也叫空闲重发请求,因为在等待期间,链路是空闲的。

最简单的停止等待机制的工作原理如下:

  1. 发送方每发一帧时,启动计时器。
  2. 发送方发送一帧后,在收到确认信息前,将该帧保留在缓冲区中。
  3. 接收方收到无差错信息帧后,向发送方反馈一个确认帧。
  4. 接收方检测到含有差错的信息帧时,便丢弃该帧。
  5. 若发送方在规定时间内收到确认信息,则将计时器清零,继而开始下一-帧的发送。
  6. 若发送方在规定时间内未收到确认信息( 即计时器超时),说明帧出错或丢失,则重发缓冲区中的待确认帧。

从以上工作过程可以看出,停止等待机制的优点是实现简单、节省缓存(仅需设置一帧的缓冲存储空间),缺点是链路利用效率低。

停止等待的工作原理见下图。实际中,发送端没有收到ACK的原因可能是接收端发现收到的帧有错误然后丢弃该帧,也可能是ACK丢失,当然,数据帧本身丢失导致的超时也是可能会发生的。

在这里插入图片描述

2.连续重传请求机制——提高链路利用率

为了提高链路利用率,连续重传请求机制允许发送方连续发送一系列帧,即在上一帧被确认前可发送下一帧。为了能对多个帧进行确认,就要对帧进行编号,还需要在发送方设置能存储多个待确认帧的缓冲区。

若在给定时间内没有收到某一帧的确认信息,则说明这一帧没有被接收端正确接收(出现差错或者丢失了),就需要重发该帧,那么,该帧后面已经发过的帧是否需要重发?这需要根据收发双方的约定和处理方式来决定,常用的处理方式有两种:一是Go-Back-N (退回N)的方式,另一种是选择重传的方式。

GO-Back-N的机制

若接收方由于某帧出错,不能按序号向上层交付数据帧,采取丟弃后续收到的帧的处理方法,就需要发送方重传包括出错帧和出错之后的所有帧。所以,Go-Back-N 的含义是指:当发送方在收到对某个帧的确认信息后连续发送了N个帧,若该N个帧的第一个帧在计时器超时后仍未返回其确认信息,则可以认为该帧出错或丢失,于是发送方就要重传包括出错帧及其后续帧在内的这N个帧。

选择重传的机制

由于接收方不保留出错后的帧,Go-Back-N 方法在出错时将已正确传输的帧再重传一遍,浪费了信道资源。若接收方改变策略,发现出错帧后,仍将后续收到的检验正确的帧缓存下来,但暂不递交给上层,待收到重新传来的帧后,再和其余帧一起按正确的顺序递交给上一层。这样就只需要发送方重传出错的那一帧,这种方法称为选择重传。

两种重传机制图解如下:

在这里插入图片描述

3.连续重传、滑动窗口与流量控制

在前面所讨论的连续重传方式中,没有涉及这样一个问题: 若接收方没有及时反馈确认信息,发送方是否仍然不停地发送帧呢?若不管接收端的缓存空间大小和处理能力,发送端只管连续发送帧,会不会导致接收端缓冲区溢出?要不要对发送的频度进行控制?这就是流量控制的问题。

流量控制实际上是通过某种机制,对发送的数据流量进行调控,以避免发送速率过快,接收端来不及接收,因为接收端的数据接收缓冲区大小是有限的,接收端收到数据后,还要对帧进行数据链路层的处理,然后再把数据交付给上层的协议软件。如果帧的到达速度远大于帧的处理速度,就会发生接收缓冲器溢出的情况。

在采用连续重传请求机制的协议中,都会结合考虑流量控制。

流量控制一般采用滑动窗口的机制进行。滑动窗口的实质是限制允许已发送但未被确认的帧的个数,流量控制通过在发送端和接收端设置发送窗口和接收窗口来实现。

发送窗口:用来控制发送流量。

发送窗口的大小是允许连续发送的帧的个数,窗口中的序号是被允许发送的帧的序号(无论是否被确认)。窗口外左边的序号是已经发送的帧的序号,窗口外右边的序号是不允许发送的帧的序号,每发送一个帧, 窗口的当前大小减1;每收到一个确认信息,窗口向右滑动一个帧的位置。

理想情况下,发送的速度和接收到的确认的速度相同,窗口当前大小不变,保持向右连续滑动。极端情况下,所有允许的帧都发送完了,没有收到任何确认信息,发送窗口的当前大小变为0,就不允许发送了。

接收窗口:用来控制接收端的处理。

接收窗口尺寸是允许连续接收的未处理的帧的个数,当帧的序号落在窗口中时允许接收,每发送一个确认应答,窗口向前滑动一个帧的位置。

🎈

数据链路层协议HDLC

高级数据链路控制规程( High Level Data Link Control, HDLC)是国际标准化组织提出的标准(最近的标准文档为ISO 13239),它源于IBM公司的同步数据链路控制规程(Synchronous Da-ta Link Control, SDLC)。SDLC 是IBM为自己的系统网络架构( Systerms Network Architecture ,SNA)提出的第二层协议,国际标准化组织将其修改和扩展后提出了HDLC。

HDLC是一种通用的数据链路控制协议,它具有这样一些特点:面向比特,不依赖于任何一种编码字符集,数据分组可透明传输;全双工通信;提供信息帧编号,可选择多种确认方式,提供可靠交付功能;支持连续发送帧,数据链路传输效率较高;采用CRC校验,同时支持多种帧,灵活性好。作为一个经典数据链路层协议, HDLC的功能比较完善,体现出较丰富的数据链路层功能。

作为一种早期的数据链路控制协议,HDLC 把数据链路所连接的结点称为,站又分为主站从站。在链路通信中,起控制作用的站称为主站,主站通常采用轮询技术,组织数据的传输,并且对链路上的差错进行控制,主站发出的帧称为命令帧;受主站控制的站称为从站,从站返回主站的帧称为响应帧。兼备主站和从站功能的站称为组合站。

HDLC中把具有主、从站分工的链路管理模式称为非平衡方式,把基于组合站的没有明确主、从站分工的链路管理模式称为平衡方式。

🎈

因特网中的点到点协议PPP

点到点协议( Point-to-Point Protocol, PPP)是为点到点的简单链路设计的。PPP为通过点到点链路传输多种协议的数据报提供了一种标准的解决方案。

PPP协议有广泛的用途,目前被普遍地应用在因特网中,提供个人用户到ISP的拨号连接、路由器和路由器之间通过专线的连接等。

PPP除了支持数据链路层的基本功能,如成帧、错误检验和透明传输外,还考虑了链路管理功能、与网络层的协商功能。PPP可以支持多种上层协议,用于因特网时,允许在连接建立时协商IP地址,进行身份认证等。

PPP的简洁性主要体现在以下几个方面:

  1. 明确定义为只支持点对点链路,不支持多点访问,因此,PPP不必考虑多路访问控制,一般也不进行链路层的寻址,这就大大简化了协议的实现。
  2. PPP不提供确认和重传机制,属于不可靠的链路层协议,发现有错误的帧就将其简单丢弃,这样既不用对帧进行编号,也不用实施复杂的确认重传机制,大大降低了协议开销。
  3. PPP不提供流量控制,更进一步地简化了协议的实现,提高了信道的利用率。
  4. 只进行检错编码,不进行纠错编码。
  5. PPP只支持全双工链路,不考虑半双工和单工链路。

🎈

局域网

局城网技术及标准是计算机网络体系的重要组成部分。局域网技术体制是独立于TCP/IP体系发展起来的,只是到了20世纪90年代网络互联的大潮中才和因特网技术体系相结合,为TCP/IP协议体系架构的网络接口层提供具体的支持。

信道分配与媒体访问控制

信道的静态分配方式

当多个站点在共享信道上进行通信时,需要决定多个站点如何分配信道,在传统的通信网络中,这个问题被称为信道复用技术,也就是我们在物理层介绍过的时分复用、频分复用、波分复用和码分复用,这些在时域、频域或编码空间固定划分信道的方法也称为信道的静态分配方式。

静态分配信道的方式适合业务量饱满和通信流量稳定的网络,常用于传统的电话、电视、广播业务或者大容量的通信干线的传输中,而计算机网络中的数据流量则呈现突发性,有统计表明计算机网络的峰值流量与平均流量之比能达到1000:1,这意味着:若采用静态的信道分配方式,信道带宽利用效率不高。

在局域网中,由于流量大多直接来自用户计算机,这些流量的突发特点更为显著,所以,在共享下层传输媒体的局域网通常不采用静态的信道划分方式。

动态的媒体访问控制方式

在共享下层传输媒体的局域网中,这个问题被称为媒体访问控制( Medium Access ControlMAC),又称为多路访问控制。局域网的媒

以上是关于《计算机网络》✍万字详细笔记的主要内容,如果未能解决你的问题,请参考以下文章

万字Spring框架学习总结(附核心代码详细注释)

万字Spring框架学习总结(附核心代码详细注释)

万字Spring框架学习总结(附核心代码详细注释)

第四章网络安全学习笔记(超详细)

TypeScript 学习笔记(十万字超详细知识点总结)

万字长文 Vue全家桶从入门到实战,超详细笔记整理 ( 三 ) (建议收藏)