Tags
a.物理层(Physical Layer)
物理层关心的典型问题就是用什么方式来发送1和0,一位的持续时间,是否可同时双向进行,连接如何建立和如何终止等。(处理信号通过介质的传输)
工作在物理层的设备有:
放大器 放大器来增强信号中的能量,但同时也会使噪声分量增强,以致引起信号失真
中继器(repeater): 双绞线(RJ-45接口网线)的理论最大传输距离是100M,超过100M信号会衰减,这时候就要用到中继器,它能起到放大信号延长传输距离的作用。中继器接收衰减的数字信号,把数字信号恢复成0和1的标准电平,这样有效地克服了信号的衰减,减少了失真。
中继器放大数字信号,放大器放大模拟信号
💡
补充知识点∶信号在传输介质上传输,经过一段距离后,信号会衰减。为了实现远距离的传输,模拟信号传输系统采用放大器来增强信号中的能量,但同时也会使噪声分量增强,以致引起信号失真。对于数字信号传输系统,可采用中继器来扩大传输距离。中继器接收衰减的数字信号,把数字信号恢复成0和1的标准电平,这样有效地克服了信号的衰减,减少了失真。所以得出一个结论∶数字传输比模拟传输能获得更高的信号质量。
集线器(hub):集线器相当于一个多端口的中继器,也能起到放大信号的作用,并且集线器是属于半双工模式的(简单的理解成在同一时刻只有一个方向的数据可以传输,收的时候不能发,发的时候不能收),而在集线器连接的网络中,不管有多少个集线器,都只有一个广播域和一个冲突域。集线器工作原理如下图:
  1. 为了使模拟信号传输得更远,可以采用的设备是(A)。B
    1. 中继器和放大器都可以放大信号,但是两者的区别在于中继器放大数字信号,放大器放大模拟信号。
因为集线器属于物理层设备,无法判断数据链路层的MAC地址以及网络层IP地址,所以在这个集线器相连的网络里,假设PC0封装数据发送给PC1,集线器接收到PC0发来的数据后,直接将它转发到除接收端口以外的所有端口,这时候PC1/3/4都能收到这个数据,只不过根据包头部的MAC地址信息,只有PC1会处理它,PC3/4将丢弃这个数据包,而如果PC3/4上面运行了数据包分析软件,就可以捕获并分析PC0发出的数据,这种网络拓扑设计将非常不安全。
物理层的相关协议:EIA-232C 、EIA/fIA RS-449 、CCITT 的X.21
b.数据链路层(Data Link Layer)
数据链路层的主要功能是在不可靠的物理层上进行数据的可靠传输,将用户数据封装成帧(Frame),进行CRC效验(循环冗余效验)以及防止高速发送方的数据将低速方淹没等。
工作在数据链路层的设备主要有:
网卡(NIC Network Interface Card):也叫网络适配器,在生产时将一个唯一的网络节点地址(MAC地址)烧录到了它的ROM中。MAC地址占用48位,前24位代表厂商,后24位为设备号。MAC地址可以通过一些软件设备来更改,但是更改的仅仅是显示,ROM中的MAC地址除非重新烧录否则无法更改。Windows系统在CMD中输入"ipconfig /all"来查看网卡的MAC地址;Linux系统可以在终端中输入"ifconfig"来查看;
网桥(Bridge):网桥可以将两个局域网(LAN)连接并按照MAC地址转发数据帧,就好像他们是一个LAN一样,现在网桥大多应用于软件。工作原理如下图:
图中A、C连接在集线器1(Hub1)上,B、D连接在Hub2上,Hub1的一个接口连接在网桥的接口1上,Hub2的一个接口连接在网桥的接口2上(它们之间的连线都是直通线,集线器,网桥,计算机,三者属于不同设备,使用直通线)
图中A、C连接在集线器1(Hub1)上,B、D连接在Hub2上,Hub1的一个接口连接在网桥的接口1上,Hub2的一个接口连接在网桥的接口2上(它们之间的连线都是直通线,集线器,网桥,计算机,三者属于不同设备,使用直通线)
其工作原理如下:
1)网桥如果刚刚加电启动,它的MAC地址缓存为空,此时假设A要发送数据给C,并且A已经知道C的MAC地址(这中间涉及到一个ARP获取MAC地址的操作,这里暂时不讨论),A将数据封装好发送给Hub1,Hub1是一个物理层设备,它简单的将信号放大从除接收端口以外的其他端口将数据发送出去(发送给C和网桥的接口1);
2)网桥从接口1接收到A发过来的数据后,首先添加这个数据帧的源MAC地址,既A的MAC(AAAAAAAAAAAA)和对应的端口1添加到自己的MAC地址表中,然后从自己的MAC地址表中去查找这个数据帧目的地C的MAC地址,但是此时找不到,所以网桥以广播形式将这个数据帧从接口2发送出去;
3)集线器2收到这个数据帧,它将这个数据帧从除接收端口以外的其他端口发送出去,D和B都接收到了这个数据帧,D和B对数据帧进行检查时发现目的MAC地址与自己的网卡MAC地址不相同,计算机D和B丢弃这个数据帧;
4)在第1步中C也同时收到了这个数据帧,C检查目的MAC地址的时候发现,与本机相同,C接收这个数据包,并回发数据包对A进行确认,C封装一个源地址为自己MAC地址,目的地址是A的MAC地址的数据帧发送给集线器1,集线器将这个数据帧发给网桥的接口1和A;
5)网桥接收到这个数据帧,它首先添加C的MAC和对应的接口1到自己的MAC地址表,然后查询地址表的时候发现A的MAC地址同样处在接口1,网桥不再将这个数据帧从接口2发出,也不会将这个数据帧再重新从接口1发回去;
6)A收到C发回的确认,通信成功;
7)通过这种形式,最后网桥会学习到这个简单局域网中所有的电脑的MAC地址以及所在接口。如下:
MAC Address
端口
AAAAAAAAAAAA
1
BBBBBBBBBBBB
2
CCCCCCCCCCCC
1
DDDDDDDDDDDD
2
一个网桥包含两个冲突域、一个广播域;冲突域是发送一个单播会影响的范围,广播域是发送一个广播会影响的范围。
注:网桥并不具备三层设备的特性,这就意味着如果通过网桥将两个不同网段的局域网连接起来,这两个局域网之间是无法通信的,除非在其中配置默认路由指向一台三层设备,这台三层设备需要具有去往这两个网段的路由,否则当计算机往其他网段发送数据时,由于本地路由表并没有这个网段的路由,也没有配置默认路由,数据会在发送端直接被丢弃。
交换机(Switch): 可以将交换机简单的看做多端口的网桥,因为它也根据收到的数据帧的源地址进行学习,也根据MAC地址表中的目的地址进行转发,但交换机有下面几个需要注意的地方,请看下图:
假如这个交换机学习到的MAC地址表如下:
MAC Address
端口
AAAAAAAAAAAA
1
BBBBBBBBBBBB
2
CCCCCCCCCCCC
3
其一:交换机对已知的单播帧,只发往对应的端口;比如A发给B,交换机中学习到了B的MAC,那么直接发往端口2;
其二:交换机对未知的单播帧,进行泛洪转发(即发往除接收端口以外的所有端口),比如C发送一个单播帧给D,这个数据帧到达交换机后,交换机MAC表中还没有学习到D的MAC,交换机将这个数据帧从1、2、4端口发出;
其三:交换机对所有广播和组播,进行泛洪转发(即发往除接收端口以外的所有端口);
交换机可以划分为下面三类:
传统交换机:属于链路层,一个广播域,每个接口是一个冲突域;
VLAN交换机:属于链路层,可网管型,可以划分多个VLAN,每个VLAN是一个广播域,每个接口是一个冲突域,并且可以配置IP地址;
三层交换机:比VLAN型交换机多了路由功能,可以理解成交换机+路由器,属于OSI模型网络层;
数据链路层协议有SDLC 、HDLC 、PPP 、STP 和帧中继等。
c.网络层(Network)
路由器和三层交换机都属于网络层设备,它们是应用于不同网段间的设备;路由器的每个端口属于一个单独的广播域,也是一个单独的冲突域。
网络层的协议有IP 、IPX 、ICMP 、IGMP 、ARP 、RARP 和OSPF 等。
d.传输层(Transport Layer)
传输层实现了用户进程间端到端的通信(End-to-End),传输层相关的协议有TCP、UDP等。我们会经常看到这两个协议名称出现在Windows CMD的"netstat -ano"这条命令的显示里,Linux下可以在终端中输入"netstat -nautp"来查看这些端口。
e.会话层(Session Layer)
会话层提供的主要服务是会话控制、同步、重传等。
f.表示层(Presentation Layer)
表示层提供的主要服务为数据的编码、压缩 加密解密等。
g.应用层(Application Layer)
提供用户和网络的接口
应用层包含了大量协议的应用,最常见的有: HTTP-TCP80、FTP-TCP21、SMTP-TCP25、POP3-TCP110、DNS-TCP/UDP53、TELNET-TCP23等。
0×1.TCP/IP参考模型和OSI参考模型的对应关系
TCP/IP参考模型分为四层,分别是:访问层(NetworkAccess)、网际层(Internet)、传输层(Transport)和应用层(Application)
ISO/OSI参考模型是在其协议被开发出来之前设计出来的,它并不基于某个特定的协议集而设计,所以具有通用性,但在协议实现方面存在不足。TCP/IP模型是先有协议,模型只是对现有协议的描述,因此和现有协议非常吻合,但它在描述非TCP/IP网络时的用处不大。
TCP/IP参考模型和ISO/OSI参考模型的对应关系如下图:
下面依次来介绍TCP/IP参考模型这四层的作用。
a.网络访问层(NetworkAccess)
网络访问层的功能包括IP地址和MAC地址的映射,将IP封装成帧,提供物理介质的连接,它接收从网际层传来的IP数据报,并将这个数据包通过底层物理接口发送出去。
b.网际层(Internet)
网际层的功能主要有三个:
第一:处理来自传输层的分组发送请求(本机向外发送),将分组装入IP数据报,填充报头,选择目的节点路径,然后将封装好的IP数据包发往对应的接口;
第二:处理从外部输入的数据报,检查合法性,进行路由选择,如果数据报的目的地是本机,则去掉报头,将IP数据报数据部分提交给上层传输层对应协议处理,如果数据报的目的不是本机,则根据路由表转发;
第三:处理ICMP(Internet Control Message Protocol 网际控制信息协议)报文,处理网络路由选择,流量控制等;
网际层上的几个重要协议:
IP协议 ——主要的功能是实现寻址和转发(根据目的IP地址转发)。这里不做详细介绍,有兴趣的朋友可以去参考一本书《TCP/IP详解卷一:协议》;实际应用中经常看到的比如TTL,我们ping某个IP或网址的时候会出现下图所示的TTL=XX:
TTL是IP协议中的一个字段,每经过一个路由,这个字段的值就减一,当这个字段是0时,路由就会丢弃这个数据报。64是系统设定的一个初始值,这个初始值根据不同系统构架不同,有的是128,有的是256。TTL小于64,就用64减;TLL大于64小于128,就用128减;TLL大于128小于256,就用256减。
IP报头各字段如下图,仅供参考:
ICMP协议——我们常用的ping命令就是使用了这个协议。还有Windows下的tracert命令也是基于这个协议的。IP报头中协议字段为1,就说明这是一个ICMP报文;下图就是ICMP报文的一个应用,Tracert可以用来显示从本地到目的地中间经过的路由(部分地区网络提供商屏蔽了tracert,看到的返回结果将全部是星号)。
ARP协议——这是局域网中应用的最多的协议之一,在局域网中,数据帧的传输是需要封装MAC地址的,而ARP协议的主要作用是在发送数据帧前,根据目的IP获得目的MAC。所以它叫做地址解析协议,ARP工作原理如下:
三台PC连接在一台二层交换机上,他们的IP地址和MAC地址如上图,下面是一次ARP查询的过程:
1)现在计算机A要发送数据包给计算机B,首先A要判断B是否与本机处在同一个子网(192.168.1.0/24,子网的概念在下一篇文章会详细介绍)中,如果处在同一个子网,计算机A先在本机的ARP缓存中搜索B的IP对应的MAC是否存在,如果找到B的MAC缓存,则直接用找到的MAC封装帧发送出去;
2)如果A没有找到B的MAC缓存,那么它将封装一个ARP查询包(ARP Request),查询包的源IP地址是A的IP地址,目的IP地址是B的IP地址,查询包的源MAC是A自己的MAC(AAAAAAAAAAAA),目的MAC是广播MAC地址(FFFFFFFFFFFF);
3)A封装完后将这个查询包以广播的形式发送出去,这个ARP广播包到达交换机接口1,根据交换机的工作原理(对广播包进行泛洪转发,发往除接收端口以外的所有端口,本例是2和3),这个时候计算机B和C都能收到这个ARP查询广播包;
4)C收到这个ARP查询广播包,它对这个数据包解封装,发现目的MAC不是本机MAC,是广播MAC(接收目的地是本机MAC或者广播MAC的数据帧),C解封装这个数据帧并传到网络层,网络层对目的IP进行检查发现目的IP是B的IP(192.168.1.2)和本机IP不同,C放弃对这个数据报的继续处理,同时在本地的ARP缓存中更新或添加A的IP地址对应的MAC条目,然后丢弃这个数据包;
5)B收到这个数据包,首先判断数据链路层的目的MAC是广播,所以它也解封装这个数据包传送到网络层,并且发现目的IP也和本机IP相同,这是针对本机(B)进行的ARP MAC地址查询,首先它将A的MAC和对应的IP记录在自己的MAC缓存中,然后封装一个ARP应答包(ARP Reply)发回。ARP应答包的源IP是B自己的IP,目的IP是A的IP,源MAC是B自己的MAC(BBBBBBBBBBBB)目的MAC是A的MAC,这个包封装好后被送达交换机接口2;
6)交换机接收到这个ARP应答包后,根据MAC目的地址判断,目的MAC(AAAAAAAAAAAA)处在自己的接口1上(还记得交换机的工作原理吧,在第3步中,交换机收到A的ARP查询的时候,就将A的MAC地址和对应的接口1记录在自己的MAC地址表中了),这时交换机直接将这个数据报从接口1发出;
7)A收到这个ARP应答包,这时它就知道了B的MAC,可以封装其他数据发送了;
如果大家对这一部分比较感兴趣,这里还有一个比较有趣的实例供大家参考[Linux环境下ARP攻击的实现与防范],ARP协议是横跨了网际层与物理层的一个协议,这就是为什么一些网络层的防火墙对底层的ARP攻击无能为力的原因。
Proxy-ARP协议(代理ARP)——因为ARP查询包是一个广播包,而路由器是隔离广播的,路由器的每个接口都是是一个独立的广播域,所以在上面的例子中,如果此时交换机的4端口上接着一个路由器,如下图所示,当ARP查询包通过交换机泛洪转发的时,路由器可以从自己的接口5接收到A发出的ARP查询包,在没有开启Proxy-ARP协议的情况下,路由器直接将这个包丢弃。如果路由的接口5开启了Proxy-ARP协议,那么这个广播包就可以转发到路由上其他的接口。所有Cisco路由的以太网接口默认都启动了这个协议。
:
RARP(Reverse Address Resolution Protocol,反向地址转换协议)—— 这个协议和ARP刚好相反,是根据本机MAC询问本机IP的一个协议,如今被DHCP协议所替代。
c.传输层(Transport)
在网际层中的IP协议,采用无连接的数据报机制,不做验证也不进行确认,而TCP/IP的可靠性体现在传输层,传输层的常见协议如下:
TCP(Transmission Control Protocol)——是一种面向连接的传输层协议,能提供可靠的数据传输,在传输数据前需要先建立连接,下面是TCP从"三次握手"建立连接到数据传输,再到"四次握手"断开连接的过程:
Loading...