文章内容概述了解计算机网络及其分类什么是计算机网络?传输不同类型的数据,并能支持范围广泛且不断增长的应用计算机网络不仅仅是一个软件的概念,它还包括硬件设备(网卡、网线、路由器)还可以支持广泛的应用计算机网络的分类1.根据网络功能的范围,计算机网络可分为广域网(WAN)、城域网(MAN)和局域网(LAN)。2、根据网络功能的使用者,计算机网络可分为公用网络(只要愿意付费,愿意加入的都可以加入)专用网络(一些部门或一些人建立的网络,以满足特殊的业务需求。例如:军队、铁路局、银行、公司,他们都有自己的专用网络)单网ARPANET这个阶段主要是一些电脑通过交换机连接起来。这时候电脑都是通过交换机连接起来的,可以直接完成信息交换,连接的电脑也不多。第二阶段:互联网的三层结构。这个阶段主要是把美国的一些主要学校、研究所、实验室等地方与计算机连接起来。第三阶段:多级ISPInternetISP(InternetServiceProvider):互联网服务提供商(中国电信、中国联通、中国移动都是国内知名的互联网服务提供商)。最上面是骨干ISP,包括上面提到的三个。伟大的互联网服务提供商。中国骨干ISP可对接美国、澳大利亚、欧洲骨干ISP。在骨干ISP之下是区域ISP。例如,移动网络在中国称为ChinaMobile,在北京称为BeijingMobile,在上海称为ShanghaiMobile。这属于区域ISP。区域ISP主要负责提供区域内的网络服务。可以用这个网站看互联网专线:https://live.infrapedia.com中国互联网发展简史中国互联网的发展也可以分为三个阶段:随着中国互联网的发展,中国还建立了多个公用计算机网络,可以进行国际信息交换。其中,5个公共计算机网络规模最大:中国电信互联网(CHINANET)、中国联通互联网(UNINET)、中国移动互联网(CMNET)、中国教育科研计算机网(CERNET)、中国科技网(CSTNET))我们的海外流量主要是通过这五个网络进行国外信息访问。除了国家科研和技术的参与,民营企业也为互联网做出了巨大贡献,包括1996年的知名企业家、1997年张朝阳创立搜狐、1998年丁磊创立网易、1998年王志东创立新浪等。1998年,马化腾和张志东创立腾讯,1999年,2000年,马云创立阿里巴巴。2000年,李彦宏创立百度。这些事迹也促进了互联网在中国的发展。计算机网络层次结构设计的基本原则。需要使用层次结构的设计假设有两台计算机A和B,它们通过计算机网络相连。你可以想象计算机网络在这里主要解决什么问题,保证数据通路的畅通,识别目的计算机,目的计算机的状态数据是否有误。看一个我们在现代网络中使用的层次结构的例子。分层设计的基本原则是各层相互独立:某一层不需要知道它的上下层是如何实现的,它只需要知道本层是如何通过接口提供服务的。层与层之间的耦合度很低,每一层都有足够的灵活性:因为计算机网络在不断发展,所以在设计每一层的时候需要有足够的灵活性,让每一层在应对未来的一些变化时完全解耦layers:即某一层上下层的变化不影响当前层的稳定性(虽然这是计算机级设计的原则,但实际上如果我们设计一个比较大的系统,可以从这些原理中学习,这就是计算机底层的魅力)OSI七层模型计算机网络有一个七层模型,这个模型是国际标准在制定OSI七层模型时定义的,它就是成为全球计算机遵循的标准,然后推动全世界的计算机都遵循这个标准,方便互联互通,交换数据。事实上,OSI在市场化的过程中有很多困难,因为在OSI标准出来的时候,TCP/IP模型已经在全球范围内成功运行。因此,OSI七层模型目前只是在理论层面取得了研究成果,在市场化方面还没有成功推广。所以,最终OSI并没有成为被广泛使用的标准模型。由于多种原因,OSI尚未被市场接受。OSI专家缺乏实践经验(他们以理论为基础,缺乏实际生产环境的经验。知行合一,理论必须与实践相结合)OSI标准制定周期过长,按照OSI标准生产的设备不能及时进入市场。OSI模型设计不合理。一些功能在多层中重复。TCP/IP四层模型如下。OSI七层模型与TCP/IP四层模型的映射:说明:右边是TCP/IP四层模型,每一层使用的一些协议。TCP/IP四层模型的实际应用假设计算机A和B通过路由器相连,计算机A会通过TCP/IP的四层与路由器通信,计算机A的数据会通过路由器来到路由器网络接口层和网络层(在路由器中,只有网络层和网络层)。界面层)。路由器将数据通过路由转发,转发给电脑B,电脑B通过自下而上的四层接收数据。这是一个TCP/IP四层模型发送和接收数据的例子。此外,我们还可以采用分层的方法来了解现代互联网在不同层次上的网络拓扑结构。了解网络拓扑可以帮助我们在脑海中形成计算机的形象。互联网有助于我们进一步学习。现代互联网的网络拓扑主要分为两部分,边缘部分、核心部分和边缘部分,边缘部分主要是指普通用户可以直接接触到的部分。比如家里、公司、商场里用的网络,都属于电脑。网络边缘部分(家里的手机、电脑、智能家电通过有线或无线方式连接到路由器,路由器连接到本地网关,再由网关连接到区域ISP)。上半部分是家庭网络的网络拓扑结构,下半部分看企业网络拓扑结构的核心部分,核心部分主要由区域ISP、骨干IS和一些国际路由器组成。这些骨干ISP相互连接,并通过国际路由器连接到其他国家和地区的骨干ISP。互联网的核心部分。海缆、跨区光缆等通信设备很多。主要由中国联通和中国电信铺设。他们使用的部分设备来自中国的华为,因此华为在通信领域具有一定的地位。上半部分是网络拓扑核心部分和边缘部分的简单图示。如果核心部分和边缘部分相连,整个网络拓扑结构非常复杂。虽然在学习计算机网络时需要对网络拓扑结构有一定的了解,但是我们在平时使用网络的时候,并没有感知到这些网络拓扑结构的存在。我们不知道骨干ISP在哪里,区域ISP在哪里,甚至不知道网关在哪里。我们最多知道的是我们有更多的路由器。角度使用计算机网络。如果我们站在用户的角度来看互联网,还有更多的模式,比如客户端-服务器(C/S)模式。对于客户端-服务器(C/S)模式,在互联网中,有很多连接,但我们不需要去感知互联网的细节。如果我们要使用某项服务,我们直接从自己的PC端发起请求,那么请求就会路由到提供服务的地方,服务器端收到请求后响应,本地PC端接收响应。它是客户端-服务器(C/S)模型。客户在寻求服务时,服务器在提供服务时,无需感知网络的具体细节。计算机网络的性能指标了解网络的性能指标,有助于评价或判断网络的质量或速度。在理解之前,我们先简单了解一下常用的计量单位(速度)。为什么电信拉的100M光纤峰值速度只有12M每秒?首先,因为网络常用的单位是Mbps100M/s=100Mbps=100Mbit/s,比特到字节的转换是有一个基本体系的,8比特等于1字节,所以:100Mbit/s=(100/8)MB/s=12.5MB/sDelay可以细分为发送延迟、排队延迟、传播延迟、处理延迟、发送延迟。发送延时主要是机器在网络发送的时候,发送时间是机器停留的时候。Latency=datalength(bit)/transmissionrate(bit/s)数据长度:由用户决定,比如下载一个100M的视频,这个100M就是数据传输率的长度:由网卡决定(网卡性能越好,发送速率越快)传播延迟传播延迟=传输路径长度/传播速率(bit/s)传输路径长度:比如北京向上海发送数据时,这条路径比较短。如果北京向美国发送数据,数据必须通过海底电缆才能到达美国。这条传输路径很长。传播速率:这是受限于传输介质(如铜线、光纤)排队延迟数据包在网络设备中等待处理的时间如果一条数据从本机发送到某个路由器,则router并没有立即处理它,因为它可能正在处理很多其他的数据包,所以我们此时发送的数据包可能会在router中停留一段时间,等待处理的时间就是排队延迟所需要的时间处理延迟数据包到达设备或目的机进行处理。处理我们的数据包需要一段时间,所以评价计算机网络关于时间的指标,总时延就是总时延=发送时延+传播时延+排队时延+处理时延评价计算机网络时延的指标time,除了timeDelay,还有一个指标:往返时间??RRTRTT(Route-TripTime)是评价网络质量的重要指标。RTT表示端到端通信中数据包的往返时间。通常,使用ping命令查看RTTping看广州的一个IP(最右边一栏是往返时间),ping一个美国的IP(显然往返时间比较长)物理层概述物理层的作用如果是OSI的七层模型,物理层是最底层的位置。对于TCP/IP四层模型,它是最低的网络接口层。物理层的作用是连接不同的物理设备(比如路由器通过网线连接电脑)传输比特流(比特流是0和1等高低电平,或者数字信号)和传输介质用于连接不同的物理设备,包括有线媒体和无线媒体,其中有线媒体包括双绞线同轴电缆、光纤和无线媒体:红外(遥控)、无线和激光比特流。低电平的变化可以构成比特流通道的基本概念。信道是单向传递信息的媒介。通信电路通常包括接收通道和发送通道。因为发送信息和接收信息的方向不一样,这里都是两条通道一条通讯线,既是发送也是接收,万一冲突了怎么办?这个问题其实已经在物理层解决了。根据信道不同,通信电路可分为单工通信信道、半双工通信信道、全双工通信信道、只能单向通信的单工通信信道和相反方向无反馈的信道。工业通信通道(一方发送,另一方只能接收)半双工通信通道双方都可以发送和接收信息,双方不能同时发送和接收信息全双工通信通道双方都可以发送和接收同时消息是一种全双工通信信道解复用-复用技术。如前所述,如果两台计算机进行通信,它们之间就会有一条通信线路。在该通信电路中,可以使用发送通道和接收通道。考虑一种情况,如果有很多台电脑,它们都需要连接,此时发送通道和接收通道有很多,很多情况下,它们是不活跃的。这导致信道利用率低。因此,为了提高信道的利用率,提出了解复用-复用技术。解复用技术是如何提高信道利用率的?多台计算机连接到多路复用器,另一端的计算机连接到多路分解器。通过复用器和解复用器,两个设备可以共享一个发送通道和一个接收通道,可以大大提高通道的利用率。注意:如果有很多台计算机,频繁地通过信道发送和接收信息会导致信道拥塞概述数据链路层对于物理层来说,它主要是连接不同的设备和传输比特流。下面介绍数据链路层。首先,数据链路层位于OSI七层模型的倒数第二层,也就是物理层的上层。它位于TCP/IP四层模型的网络接口层数据链路。该层主要解决以下三个问题封装成帧透明传输错误检测封装成帧“帧”是数据链路层数据的基本单位(如比特是物理层数据的单位)发送端在一个网络层部分在数据前后加上特定的标记,组成一个“帧”,接收端根据前后的特定标记来识别这个“帧”,当数据链路层收到这个数据时,就认为它是数据帧的data,然后在数据前后加上特定的标记,表示这是数据帧的头和尾,从帧头到帧尾就是数据帧的长度,物理层的数据帧是由许多0和1组成的比特流。上面提到的帧头和帧尾是特定的控制字符(特定的比特流)。帧头处的比特流是:SOH:00000001(SOH是一个控制字符)。帧尾的比特流为:EOT:00000100。如果帧数据也恰好与帧头或帧尾具有相同的比特流。这就需要下面提到的透明传输。透明传输可以解决上述问题。在介绍透传之前,先了解一下什么是“透明”,“透明”是计算机领域一个非常重要的名词。比如我们平时在设计一个API的时候,经常会说,如果你的API设计的足够好,那么底层API的操作对于API的调用者来说是透明的。再比如,数据链路层和物理层。对于数据链路层,物理层所做的工作是透明的。物理层只需要提供一些API给数据链路层使用即可。说白了就是:一个实际存在,但看起来不存在的交易。将透明的概念应用到数据链路层,意味着控制字符在帧数据中,但应该被视为不存在。那么数据链路层是如何做到的呢?即使控制字符在帧数据中,它仍然可以伪装成不知道的人如何处理?假设此时帧数据中的帧末尾有一个控制字符,如果数据链路层不使用透明传输,那么接收端可能会将帧数据中的控制字符视为帧的结束数据帧,从而识别错误的帧。因此,数据链路层会对帧数据中的控制字符进行特殊处理,在控制字符前加一个转义字符,下面的ESC就是转义字符。这样,接收端接收到数据帧后,会先判断帧数据中控制字符前面是否有转义符,如果存在则不将控制字符视为控制字符.那么如果转义字符也出现在帧数据中呢?只需重新转义一次转义字符即可。其实在我们平时的编程中,“”一般被认为是一个转义字符。假设此时要输出“\”,在两个反斜杠前面加一个转义字符就可以了,说明这两个不是转义字符“\\”错误检测物理层只传输比特流并且无法控制是否有错误(如果比特流在物理层传输过程中有一些干扰,比如闪电,会影响比特流的传输,物理层是察觉不到的)数据链路数据链路层负责“检错”工作的数据链路层检错这部分主要介绍数据链路层需要解决的第三个问题:检错,主要包括两部分:奇偶校验码循环冗余校验码(CRC))paritycode奇偶校验码是一种非常简单的检测比特流中是否存在传输错误的方法。该方法通过在比特流末尾添加一个比特来检测比特流是否有错误。假设测试是传输“00110010”的8位比特流,首先在比特流末尾添加比特“1”。当接收端接收到比特流时,会根据添加的比特来检测比特流。有没有错误?这个1是把前面的8位比特流加起来得到3,因为3是奇数,所以在8位比特流的末尾加1,表示这是一个校验位。如果我们要传输比特流“00111010”的话,添加的比特应该是“0”,因为这8个比特相加的结果是4,是一个偶数。让我们看看如何通过这个奇偶校验码来检测错误。假设此时要传输比特流“00110010”,则需要在末尾添加比特“1”。假设在传输过程中发生错误,接收端收到“00010010”,此时接收端将使用奇偶校验码进行校验,接收端计算出的奇偶校验码为“0”,这不是等于“1”,表示比特流传输有错误。我相信你足够聪明,看到这里有一个限制。假设仍要传输“00110010”,则最后添加的位为“1”。假设此时接收端收到“00000010”,接收端进行计算后,发现后面的校验位应该是“1”,而此时最后一个校验位是“1”,它就会以为数据没问题,实际上数据有问题。所以当比特流中出现两位错误时,奇偶校验码无法检测出错误循环冗余校验码(CRC)循环冗余校验码是一种应用广泛的错误检测算法。它是一种基于传输或保存的数据生成固定位数校验码(固定位数,可以是一位或多位)的方法,可以检测数据传输或存储后可能出现的错误。它的过程和奇偶校验码有些相似,都是先计算生成一些数字,附加到数据中。接收端在接收到数据时,会根据数据后面附加的数字来判断接收到的数据是否有错误。在了解循环冗余校验码算法之前,我们先了解一下:模“2”除法模“2”除法是一种类似于算术除法的二进制除法,但除法并不借用,它实际上是一种“异或”运算。简单说一下异或:0xor0=0;0异或1=1;1xor0=1;1xor1=1表示两位不同,异或结果为1,否则为0。我们看一个模“2”相除的例子,理解模“2”相除后的模数,可以了解CRC的全过程。CRC主要有三个步骤,选择一个多项式G(x)进行校验,在数据末尾添加r个0将数据添加r个0,用模“2”除法将多项式的位串除以将余数填入原始数据的r0位,得到可验证的比特串。看文字描述很容易让人一头雾水。下面直接举例使用CRC计算“101001”的可验证位串是按照上面提到的计算CRC的三个步骤计算得到的(1)首先选择一个多项式G(x)进行验证,在最后添加r个0数据的什么是G(x)?G(x)可以是多项式位串,如下所示。提取多项式的常数项,得到位串1101。在数据末尾加r个0,实际上就是在末尾加最高位的0。因此,在“101001”后加上三个0,得到“101001000”。这个G(x)多项式不是随便找的。可以通过维基百科找到一些常用的G(x)加上r0s后的数据,用模“2”除法除以多项式的位串。经过上面的计算,余数为“001”,再进行第三步(3),将得到的余数填入原始数据中r个零的位置,得到验证后的位串,即填入原来的“101001000”"和"101001001",这是要发送的最终可验证位串。以上过程在发送端完成。检查比特串后,它可以将这个比特流发送给接收方。接收端收到比特流后,可以进行校验。验证过程是一样的。接收端将接收到的数据除以G(x)的比特串,根据余数判断是否有错误。如果没有错误,余数应该为0,如果不为0,说明数据正在传输中。以上就是循环冗余校验码算法(CRC)的整个过程。事实上,CRC的检错能力与位串的阶数r有关(位串中加的0越多,检错能力越强,比如阶数为1,则奇偶校验位为加在传输数据之后,退化为前面介绍的奇偶校验码)数据链路层只检测数据,不纠正(如果数据链路层发现错误数据,直接丢弃)最大传输数unitMTUMTU最大传输单元MTU(MaximumTransmissionUnit)数据链路层的数据帧不是无限的(所以MTU描述的是最大可传输的Dataframe)设置MTU的好处如果数据帧太大或太小,都会影响传输效率(常用以太网的MTU一般为1500字节)。发送延迟+传播延迟+排队延迟+处理延迟如果数据帧太大,总延迟会增加,导致发送端和接收端处理信息的时间过长。如果它太小,它将不起作用。假设每次发送1个字节,那么1500个字节需要发送1500次。虽然每次数据传输的总延迟减少了,但是重复了1500次,这也会影响通信的效率,所以数据帧太大或者太小都会影响数据传输效率。PathMTU假设计算机A向计算机B传输数据,需要经过多个小型网络。假设计算机A向计算机B传输数据,路径的MTU由谁决定?如下图,计算机与小网络之间、小网络与小网络之间的数字就是MTU,那么整条路径的MTU都会受到最小MTU的影响,这就是所谓的桶效应。所以整条路径的MTU就是1492以太网协议的详细解释。上面介绍了数据链路层的数据封装成帧、透明传输、错误检测和MTU。了解了这些之后,我们还不知道数据链路层是如何传输数据的。以太网协议是数据链路层中非常常用的协议。在学习特定层的协议时,我们希望屏蔽其他层的一些细节。比如我们在学习数据链路层的协议时,不需要关注物理层是如何传输比特流的。我们甚至可以认为比特流是直接从一台机器的数据链路层传输到另一台机器的数据链路层,这样可以简化理解。假设有如下图这样的网络拓扑结构,图中有A、B、C三台计算机,这三台计算机通过路由器相连。假设此时A需要向C发送数据,那么数据是如何到达C的呢?路由器如何知道将计算机A的数据发送给谁?这是这部分要理解的内容。这部分主要包括两个主要内容:MAC地址,以太网协议,MAC地址,MAC地址(物理地址,硬件地址)。每个设备都有一个唯一的MAC地址(可以理解为设备的身份证)MAC地址共有48位,通常用16进制表示。通过ifconfig-a可以查看本机所有硬件设备的地址(windows使用ipconfig/all)以太网协议以太网(Ethernet)是一种应用广泛的局域网技术以太网是一种应用于数据链路层的协议。使用以太网可以完成相邻设备的数据帧传输。以太网数据格式主要由五部分组成:目的地址、源地址:前两部分是上面提到的接收到的MAC地址,下面的6表示占用6个字节(48位)。协议请求或响应数据,其类型为0806;如果是RARP协议数据,则类型为8035帧数据:是具体发送的数据CRC:这是循环冗余校验码MAC地址表MAC地址表是具体将MAC地址映射到硬件接口的映射。知道了MAC地址表,就可以解决开头提到的问题了。当A要给C发消息时,在路由器E中有一个MAC地址表,记录了每个MAC地址映射到哪个接口。.所以A向C发送数据的整个过程是:A通过网卡向路由器发送数据帧,路由器取出前6字节(目的地址)。路由器匹配MAC地址表,找到对应的网络接口。路由器匹配目标地址。如果MAC地址表不知道C具体是哪个硬件接口,怎么办?这个问题的过程是:路由器E查看MAC地址表,发现没有MAC地址C的信息,E将A的数据包广播到A以外的接口,E收到B和C的响应,并记录MAC地址。对于更复杂的网络拓扑,跨设备的数据传输无法通过MAC地址表来解决,因为只能通过MAC地址表进行相邻物理节点之间的数据传输。因此,A要向C发送数据,靠MAC地址表是无法完成的(E只能知道A、D、F的地址)。要解决跨设备的数据传输,就需要深入了解网络层。在瞬息万变的技术中寻找相同点,是一个技术人的核心竞争力。知行合一,理论与实践相结合
