计算机网络基本知识!超详细!

本文章为沐一Gin的笔记&总结,转载请标明出处。
本文有下一章,如果看完后觉得有帮助就留个言呗,我会继续加油的!

OSI七层网络模型

物理层(Physical Layer)

该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。
物理层以信号的形式传输二进制数字,每一个二进制数字(0或者1)叫做比特(bit),即Binary Digit的缩写。在物理层上传输的信息是像0101001110011…这样连续的比特流,并不能区分哪一段比特是代表具体什么意义,这是上一层(数据链路层)的工作。

二进制信息传输

  1. 模拟信号(Analog Signal)是指波形为连续变化的信号。比如电模拟信号展现出连续变化的电压。正弦波就是模拟信号。

  2. 数字信号(Digital Signal)是指波形不连续而是离散地变化的信号。比如电数字信号展现出不连续的,突然变化的电压,如方形波。

  3. 将原始二进制数据转化为模拟/数字信号的设备就是调制解调器(MODEM),戏称为‘’猫”。调制解调器包括两个主要组件,调制器(MOdulator)和解调器(DEModulator)。在计算机A发送信息给计算机B的过程中,A首先将二进制数字通过调制器转化为信号,然后信号(比如电流)在介质上传输(比如导体),到达B后通过解调器转换回二进制数字,完成传输过程。

  4. FM调频;AM调幅;PM调相
    在这里插入图片描述

传输介质和信道

传输介质是信号得以传输的媒介,广义上说可以是真空,空气,水,金属等等。信号发射端与接收端之间的介质形成的信号通道称为信道

有线网络的典型介质以前是电话线,现在更多的是同轴电缆和光纤。无线网络则可以使用不同频率/波长的电磁波,如下图所示:
在这里插入图片描述电磁波的频率与波长成反向变化的关系,频率 X 波长=光速。电磁波的能量决定了它能在介质中传输多远,在空气中传输的电磁波能量的衰减正比于传输距离的平方,是衰减很快的。频率越高的电磁波波长越短,更倾向于沿直线传播,更难进行衍射和反射,就像一头红了眼的公牛只知道朝着红布方向冲过去,不管中间有什么障碍物都直接撞。不同材料的障碍物会对电磁波造成不同程度的能量损耗,比如光能轻易地穿透玻璃而无法穿透墙壁。所以频率高的电磁波适合视距范围内点到点的直接传输,发射端与接收端之间不能有障碍物。由于地球曲率的原因,高频电磁波无法直接进行超视距传输,需要设置中继站。相反,频率低的电磁波很容易通过衍射或者反射绕过障碍物,更适合在复杂地形传播

最常见的IEEE 802 (也就是WIFI)使用2.4GHz 和 5GHz两种频率。频谱上是在10的9次方,即广播电视频段和微波频段的交界处。很多偏僻的岛屿会使用微波与大陆通信

网络工程师需要根据实际情况和需求,以及各种介质的性质来决定网络的物理传输介质。

带宽

单位时间内信道可以传输的信息量。数字信号的带宽单位一般用千/兆/吉比特每秒(Kbps/Mbps/Gbps)。频率越高的电磁波单位时间内波形变化越多,所以可以携带的信息越多,带宽也就越大。目前常见的以太网局域网(LAN)带宽是100Mbps。

单工,半双工(Half Duplex),与全双工(Full Duplex)通信

单工是指信号在介质上只能以一个方向流动,即A电脑只能发送信号给B电脑而无法收取信号。

半双工是指信号在介质上可以双向流动,但同一时刻只能单向流动。

全双工是指信号在同一时刻可以在介质上双向流动,介质利用率更高。

集线器(Hub)

最后来说一下(基本上)工作在物理层的设备,集线器。先上图
在这里插入图片描述
集线器是最简单,最底层的网络设备。它的基本功能是对信号的放大和转发,也就是相当于多口的中继器。电信号从任何端口流入,都会被放大并转发给其他所有端口,也就是数据广播。用集线器组成的网络成为共享式网络,因为网络中的所有电脑会收到所有的数据,并且共享带宽。共享式网络的优点是简单低成本,缺点是安全性差(一台电脑发送/接受的数据能被所有电脑收到,毫无隐私可言),性能差(很容易形成广播风暴导致带宽用尽)。另外集线器一般是半双工的工作方式所以通信效率较低。

攻击集线器或者共享式网络十分简单,连接到网络中后即可以发送大量数据造成广播风暴,耗尽带宽。

数据链路层(Data Link Layer)

最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层
也简称为链路层。这一层在物理层的基础上加入了逻辑控制的基本功能,来实现一小段数据(信息)从A到B的传输。

物理层以连续比特流的形式传输信息,此时我们还不能分辨那一段比特代表什么意义。链路层的最基本功能就是把连续的比特流切分为一段一段固定长度的0/1序列,叫做“帧”(Frame),并把每一个帧从发送者送达接收者。链路层关心的是每个帧的长度是多少,格式如何,包括什么内容,这些都是链路层协议要规定好的。它并不关心帧里面的数据是和含义。

在链路层中各个节点是以MAC地址为唯一标识的。MAC地址, 即Media Access Control Address, 共6个字节的二进制数,是所有网络设备出厂时设置的全球唯一的地址。其中前三个字节表示由IEEE分配给厂商的地址,将烧录在每一块网络接口卡的ROM中。而制造商通常为其每一网络接口卡分配后三个字节。所以得知一个MAC地址后,就可以在网上查找这块网卡的生产商了。如这个网站。黑客则可以进一步查询这家厂商生产网卡的已知BUG,然后利用BUG进行攻击。

借用邓义兵的博客上形象的比喻:帧就像信封,而链路层则像是社区里的邮差负责把信从A户送到B户。

常见的链路层协议包括IEEE802.3也就是俗称的以太网协议(Ethernet),以及IEEE 802.11也就是俗称的WIFI。以太网协议用于有线网络传输,WIFI用于无线。不太常见的协议则包括令牌环网和SNAP。

以太网协议的具体介绍见关于以太网。以下为总结。

以太网

以太网这个术语通常是指由DEC,Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。几年后,IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络;此三种帧的通用部分由802.2标准来定义。这里主要讨论802.3。

以太网V2和IEEE802.3两种以太网帧的格式如下图所示:
在这里插入图片描述

以太网帧

整个帧的大小根据其包含的数据大小而不定,主要分为以下部分:

前导信息(Premeable):在以太网V2中是8个字节,IEEE802.3中是7个字节。内容为交替出现的1和0,即10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101010 (注意我故意加入空格方便阅读,实际比特流不包含空格)

帧起始定界符(Start Frame Delimiter, SFD):仅在802.3中有效,1个字节,格式与前导信息基本相同,最后两位都是1,即10101011

目标地址(Destination MAC Address): 接收方MAC地址。以太网V2支持6个字节的MAC地址,802.3则支持6个字节与2个字节(主要用于早期局域网,现已少见)两种格式的MAC地址。

源地址(Source MAC Address): 发送方MAC地址。

类型字段(EtherType): 2个字节的类型字段仅用于Ethernet II帧 。该字段用于标识数据字段中包含的高层协议,也就是说,该字段告诉接收设备如何解释数据字段。在以太网中,多种协议可以在局域网中同时共存,例如:类型字段取值为十六进制0800的帧将被识别为IP协议帧,而类型字段取值为十六进制8137的帧将被识别为IPX和SPX传输协议帧。因此,在 Ethernet II的类型字段中设置相应的十六进制值提供了在局域网中支持多协议传输的机制。在IEEE802.3标准中类型字段被替换为长度字段,因而Ethernet II帧和IEEE802.3帧之间不能兼容。

长度字段(Length): 用于IEEE802.3的两字节长度字段定义了数据字段包含的字节数。不论是在Ethernet II还是IEEE 802.3标准中,从前序到FCS字段的帧长度最小必须是64字节。最小帧长度保证有足够的传输时间用于以太网网络接口卡精确地检测冲突,这一最小时间是根据网络的最大电缆长度和帧沿电缆长度传播所要求的时间确定的。基于最小帧长为64字节和使用六字节地址字段的要求,意味着每个数据字段的最小长度为46字节。唯一的例外是吉比特以太网。在1000Mbit/s的工作速率下,原来的802.3标准不可能提供足够的帧持续时间使电缆长度达到100米。这是因为在1000Mbit/s的数据率下,一个工作站在发现网段另一端出现的任何冲突之前已经处在帧传输过程中的可能性很高。为解决这一问题,设计了将以太网最小帧长扩展为512字节的负载扩展方法。对除了吉比特以太网之外的所有以太网版本,如果传输数据少于46个字节,应将数据字段填充至46字节。不过,填充字符的个数不包括在长度字段值中。

同时支持以太网和IEEE802.3帧格式的网络接口卡通过这一字段的值区分这两种帧。也就是说,因为数据字段的最大长度为1500字节,所以超过十六进制数 05DC的值说明它不是长度字段(IEEE802.3).而是类型字段(Ethernet II)。

数据字段(Payload):46到1500字节不等。这是帧所包含的具体数据,一般是上一层(网络层)协议所封装的原始数据(比如IP数据包)。如前所述,数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段:如果填入该该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。

校验序列字段(Frame Check Sequence, FCS): 既可用于Ethernet II又可用于IEE802.3标准的帧校验序列字段提供了一种错误检测机制,用于确保接收到的数据与发送时的数据一样。当源节点发送数据时,它执行一种称为循环冗余校验( C R C,Cyclical Redundancy Check)的算法。C R C利用帧中前面所有域的值生成一个惟一的4字节长的数,即F C S。当目标节点接收数据帧时,它使用约定好的算法重新计算CRC值并与发送的CRC值进行比较。如果这种比较失败,则接收节点认为帧已经在发送过程中被破坏并要求源节点重发该数据。CRC类似Hash算法但也有不同。相似之处在于二者都是用来检验数据在传输过程中是否被改变的。不同之处在于CRC虽然更快速但无法像Hash算法那样保证不同数据的CRC码一定不同,也就是唯一性。理论上数据可能被改变的同时CRC保持不变。这是因为CRC不像HASH一样用来防范人为的恶意修改,而主要是为了检测物理信号传送过程中因受到干扰而造成的数据扰动或者丢失。这种自然形成的扰动和丢失恰好满足CRC相等的概率微乎其微。但同时这种设计也为黑客在链路层进行攻击提供了可能。

以太网帧在物理层进行传输时称为以太包(packet),包中包含所有字段,各包之间间隔12字节。当目标设备接受到一个包之后,首先会去掉前导信息和帧起始定界符,然后对剩下的部分进行处理。

虽然IEEE802.3标准必然要取代Ethernet II ,但由于二者的相似以及Ethernet II作为IEEE802.3的基础这一事实,我们将这两者均看作以太网

Wireshark

首先打开Wireshark, 选中一个正在工作的网卡开始抓包(Capture), 然后双击随便打开一个包,如下图所示:
在这里插入图片描述这是一个ARP协议的包。ARP协议是第三层网络层的协议,所以Wireshark显示了第三层以下所有层的协议包。

第一行说明了这是一个42字节的帧,在interface 0, 也就是刚刚选取的网卡上所捕获。

第二行说明这是一个以太网V2格式的帧,以及源地址和目的地址。这里是一个ARP广播,所以目的地址为ff:ff:ff:ff:ff:ff,意思是所有的MAC地址全部包括。

第三行说明这是一个ARP请求包。

下面的区域以16进制显示了这个包中所有的42个字节。这里没有显示前导信息,帧起始定界符和FCS (因为我用的Windows系统不支持,Mac和Linux应该都可以捕捉到),所以以6字节的目标地址开头,然后是6字节的源地址 68:a3:c4:a2:c1:e7, 接着是2字节的类型0x0806, 也就是ARP协议的类型值,最后是数据字段的28个字节。

物理寻址

那么两个网卡是如何通过MAC地址来找到对方的呢?毕竟电信号又没长眼睛。有线网里的电流只会随着导体往前流动不是吗?

首先看看极端情况,两个网卡(两台电脑)直接连接的情形。这需要一种特殊的网线叫做以太网交叉线(Ethernet crossover cable)来实现。插上两张网卡后,网卡中Auto MDI-X技术就会自动识别网线的类型,同时知道这是两张网卡直连的情形了。

更普遍的情形是3张及以上的网卡(电脑)连成网络,形成局域网(LAN)。这时就需要额外的网络设备了。工作在链路层的设备交换机(Switch)就出场了:
在这里插入图片描述交换机都有多个端口用以将多条网线连接起来。交换机内部的内存中有张MAC地址表,可以将多个MAC地址映射到其中一个端口上。所以交换机工作流程就是:

(1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的; 如果这个MAC没有在表中,则它会更新表格;

(2) 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;

(3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;

(4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。

用交换机可以组成局域网并在链路层工作。这个网络没有也不需要IP地址,因为MAC地址可以用来定位。计算机A在连入这个网络后,并不知道网络中还有哪些其他计算机,也不知道她们的MAC地址。这些需要人(网管)为地在网络应用程序里面设置好。当A知道MAC 12:34:56:78:9A:bc 地址是隔壁美女的电脑后,就可以对其发送信息了。

多台交换机可以互相联通形成更大的网络,假设交换机A收到消息后查询MAC地址表得知12:34:56:78:9A:bc对应着5号端口,于是将帧转发给5号端口,5号的网线连到另一台交换机B,她再查询MAC地址表继续转发,直到帧送达美女的计算机。

交换机各个端口之间是独立的,不共享带宽也不共享数据。相较于集线器,交换机更加高效,安全。

由交换机组成的网络叫做交换式网络

地址泛洪,也叫做广播风暴,是针对交换机工作机制的一种拒绝服务攻击手段。具体方法就是构造大量的帧,其中的源地址和目标地址都设置为不存在的MAC地址。这样交换机每次都无法在地址表中查询到条目,则会:

  1. 向整个网络不停地广播帧。
  2. 不停更新地址表中的源地址和端口对应关系,最终造成地址表空间全部用完。

网络层(Network Layer)

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。

在组建局域网时要先选定物理介质和链路层协议。但世界上那么多局域网,肯定会使用不同的介质和协议,比如有的是WIFI无线网而有的是有线以太网,有的有线网使用Ethernet V2协议而有的使用IEEE802.3等等。这些不同的网络就像是说不同语言的人群,互相如何通信呢?首先大家需要邮局来转发信件,其次大家要使用同一种语言。这里的邮局就是工作在网络层的设备路由器,而这同一种语言就是网络层协议(IP协议)。

假设WIFI网络里的A电脑想给另一个以太网里的B电脑发送信息,那么A首先要把信息发送给能够理解接收WIFI信号并理解WIFI协议的无线路由器,无线路由器再把消息转发给另一台懂得以太网协议的有线路由器,最后有线路由器把消息转发给B电脑。这个过程中,A电脑,两台路由器和B电脑都要使用IP协议中规定的格式来处理数据。

IP协议中的数据成为Datagram,中文译为数据报,真是个奇怪的名字。RFC791规定了IP协议的格式,如下图所示:在这里插入图片描述
传输层(Transport Layer): 第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。

1> 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
2> 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);
3> 重要设备:网关。

会话层

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

表示层

表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

应用层

为操作系统或网络应用程序提供访问网络服务的接口。
会话层、表示层和应用层重点:

1> 数据传输基本单位为报文;
2> 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

本文的笔记及摘要出自:
写的超级好的!大神!⬅他没有更新完,我会自己理解后并将其续完的!

猜你喜欢

转载自blog.csdn.net/weixin_45970042/article/details/106235365