计算机网络|一篇文章带你了解计算机网络(上)

一篇文章带你了解计算机网络 (上) OSI模型: OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

  • 应用层: OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
  • 表示层:提供各种用于应用层的编码和转换功能,确保一个系统的应用层发送的数据能够被另一个系统的应用层识别。如果必要,该层可以提供一种标准形式,用于讲计算机内部 的多种数据格式转化为通信中采用的标准表示形式。数据压缩和数据加密也是表示层可提供的转换功能之一。
  • 会话层:负责建立,管理和终止表示层实体之间的通信会话。该层的通信由不同的设备中的应用程序之间的服务请求和响应组成。
  • **传输层:**传输层建立了主机端到端的链接,传输层的作用是为了为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层隐蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体之间的一条主机到主机、可由用户控制和设定的、可靠的数据通路。TCP UDP在这一层。端口号就是这里的”端“
  • 网络层: 本层通过ip寻址来建立两个节点之间连接,为源端运输层送来的分组选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的ip协议层。ip协议是Internet的基础。
  • 数据链路层: 讲将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。数据链路层又分为两个子层
    • 逻辑链路控制子层(LLC):定义了一些字段使得上层协议能共享数据链路层,在实际应用中LLC子层并非必须。
    • 媒体访问控制子层(MAC) :处理CSMA/CD算法、数据出错、成帧等
  • 物理层: 实际最终实现信号的传输是通过物理层实现的。通过物理介质传输比特流。(规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。
然而在市场化方面 OSI 却失败了:
  • OSI 的专家们在完成 OSI 标准时没有商业驱动力;
  • OSI 的协议实现起来过分复杂,且运行效率很低;
  • OSI 标准的制定周期太长,因而使得按 OSI 标准生产的设备无法及时进入市场;
  • OSI 的层次划分并也不太合理,有些功能在多个层次中重复出现。
法律上的(de jure)国际标准 OSI 并没有得到市场的认可 ,非国际标准 TCP/IP 现在获得了最广泛的应用 。因此TCP/IP 常被称为事实上的(de facto) 国际标准 。、
OSI与TCP/IP体系结构的比较:
OSI与TCP/IP模型有一一对应的关系。
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

五层协议的体系结构的诞生:
  • OSI七层体系结构,概念清楚、理论较完整,但既复杂又不实用。
  • TCP/IP 是四层的体系结构:应用层、运输层、网际层和网络接口层。
  • 但最下面的网络接口层并没有具体内容。
  • 因此往往采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构 。
TCP/IP五层模型: 计算机网络|一篇文章带你了解计算机网络(上)
文章图片

两主机通信时数据传输过程:
应用进程数据先传送到应用层 ,加上应用层首部,成为应用层 PDU 。
应用层 PDU 再传送到运输层 ,加上运输层首部,成为运输层报文
运输层报文再传送到网络层 ,加上网络层首部,成为 IP 数据报(或分组)
IP 数据报再传送到数据链路层 ,加上链路层首部和尾部,成为数据链路层帧
数据链路层帧再传送到物理层 ,最下面的物理层把比特流传送到物理媒体
电信号(或光信号)在物理媒体中传播,从发送端物理层传送到接收端物理层
物理层接收到比特流,上交给数据链路层 。
数据链路层剥去帧首部和帧尾部,取出数据部分,上交给网络层
网络层剥去首部,取出数据部分,上交给运输层
运输层剥去首部,取出数据部分,上交给应用层
应用层剥去首部,取出应用程序数据,上交给应用进程
主机收到数据
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

问题:描述五层协议的网络体系结构的要点,包括各层的主要功能。
解答 :
(1) 物理层:在物理媒体上传送比特流。具体包括:与物理媒体的接口、比特的表示与同步、数据率、线路配置、物理拓扑等。
(2) 数据链路层:在两个相邻结点间(主机和路由器或路由器和路由器之间)的链路上传送以帧为单位的数据。具体包括:组帧、差错控制、物理编址、接入控制、流量控制等。
(3) 网络层:负责将分组从源主机(按照合适的路由)通过中间若干路由器的转发传送到目的主机。核心功能是逻辑编址、路由选择和分组转发。
(4) 运输层:负责主机中两个进程之间的逻辑通信(端到端通信)。具体包括:复用与分用、可靠数据传输、流量控制、拥塞控制等。
(5) 应用层:通过应用进程间的交互来实现特定网络应用,直接为用户或应用进程提供特定的应用服务,如文件传输、电子邮件等。
二层技术(数据链路层): 接入层交换机主要功能:
  • 学习地址(MAC)
  • 识别帧并且转发
  • 环路控制
二层交换机工作原理:
  • 数据从源地址发出,首先在表中查询是否有目的地址,如果没有,进行泛洪,交换机每一台机器都会收到数据报,收到的机器若发现目的地址是自己,则接收并进行点对点的传输,否则丢弃。
VLAN: 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。
  • VLAN的目的: 当一个交换机上的所有端口中有至少一个端口属于不同网段的时候,当路由器的一个物理端口要连接2个或者以上的网段的时候,就是VLAN发挥作用的时候,这就是VLAN的目的。
  • **链路聚合:**是一个计算机网络术语,指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担,交换机根据用户配置的端口负荷分担策略决定网络封包从哪个成员端口发送到对端的交换机。当交换机检测到其中一个成员端口的链路发生故障时,就停止在此端口上发送封包,并根据负荷分担策略在剩下的链路中重新计算报文的发送端口,故障端口恢复后再次担任收发端口。链路聚合在增加链路带宽、实现链路传输弹性和工程冗余等方面是一项很重要的技术。
VLAN成员模式:
  • 静态VLAN:交换机端口手动方式分配VLAN
  • 动态VLAN:使用VMPS可以根据连接到的交换机的端口的设备的源MAC地址,动态地将端口分配给VLAN。
  • 语言VLAN:将端口配置到语言模式可以使端口支持连接到该端口的IP电话。
VLAN范围:
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

Trunk:
? 一条链路需要承载多VLAN信息的时候,需要使用trunk来实现。一般见于交换机和路由器之间。
STP: (生成树协议) 逻辑上断开环路,防止二层网络的广播风暴的产生。
参考:https://blog.csdn.net/weixin_42442713/article/details/80909292
  • 主要思想:当线路出现故障,断开的接口被激活,恢复通信,起备份线路的作用,保证网络的正常运行 。
  • 为了在网络中形成一个没有环路的拓扑,交换机要进行以下3个步骤:
    (1)选取根桥。
    • 每个交换机都具有一个唯一的桥ID(BID, Bridge ID),这个ID由两部分组成 (网桥优先级+MAC地址:2字节+6字节)BID最小 ,被选举为根网桥 。
    (2)每个非根桥交换机计算到达根桥的最短路径。
    • STP使用路径代价Cost值来决定到达根桥的最佳路径(Cost是累加的,带宽大的链路Cost低),最低Cost值的路径就是根路径,该端口就是根端口;如果Cost一样,就根据选举顺序选举根口。根口转发数据包。 链路带宽越大,开销越小。
    (3)选择活动端口以及端口的角色类型。
    • 当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口口。 交换机的端口要经过几种状态:禁用(Disable)——>阻塞(Blocking)——>监听状态(Listenning)——>学习状态(Learning)——>转发状态(Forwarding)。每种端口状态对数据的处理 如下图:
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

三层协议(网络层): ip编址: 计算机网络|一篇文章带你了解计算机网络(上)
文章图片

ARP(地址解析协议): 根据IP地址获取物理地址 计算机网络|一篇文章带你了解计算机网络(上)
文章图片

工作过程
1,同网段:
主机A的IP地址为IP_A,MAC地址为MAC_A;
主机B的IP地址为IP_B,MAC地址为MAC_B;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(IP_B)解析成主机B的MAC地址,以下为工作流程:
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是IP_B。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
(不同网段时,第一步:解析网关/下一跳的MAC地址。)
第2步:如果主机A在ARP缓存中没有找到映射,它将询问IP_B的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
ARP缓存:
  • 动态表项:通过ARP协议学习,能被更新缺省老化时间120s
  • 静态表项:不能被更新,无老化时间的限制
ARP代理工作过程:
代理路由器回应这种ARP请求的条件:1,本地有去往目的的IP的路由表 2,收到该ARP请求的接口与路由表下一跳不是同一接口
1,ARP请求真实目的站ARP请求
2,ARP路由器代理应答
3,路由器给真实目的站ARP请求
4,真实目的站应答路由器
RARP:把MAC地址解析为IP地址(用于无盘工作站)
ICMP (Internet控制报文协议 ): 它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
静态路由: 一种路由的方式,路由项(routing entry)由手动配置,而非动态决定。与动态路由不同,静态路由是固定的,不会改变,即使网络状况已经改变或是重新被组态。一般来说,静态路由是由网络管理员逐项加入路由表
命令:ip route 本机ip 掩码 目的ip
动态路由: 指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。
动态路由协议
  • 内部网关协议:
    • 距离矢量协议:RIP,IGRP(EIGRP)
    • 链路状态协议:OSPF(开放式最短路径优先),IS-IS
  • 外部网关协议:BGP
距离矢量协议: (RIP)
  • 距离管理(AD值):一台路由器,当它从不同的路由协议选择协议中学习去同一个目的地址的路由,比较AD值(取小),装入路由表。其他路径作为备用路径。当从同种路由协议,不同方向中选择路径时,比较metric度量值,选择优的,装入路由表。其他路径作为备用路径。若相等则负载均衡。
  • 环路避免:当网络中某机器down掉时,会出现“相互学习”的情况,最终导致资源耗尽,到达某ip 的距离变为无穷大。为了避免这种情况,可以采取以下措施:
    • 定义最大度量以防止计数至无穷大
    • 水平切割(我从你那里学的,我就不会再教你)
    • 路由中毒(C发现D机器down掉了,马上泛洪给其他机器,其他机器把down机从路由表擦去。
    • 毒性逆转:其他机器收到消息后向C发送D机器down了的消息,表示:我已经知道D down了)
    • 抑制计时器:其他机器收到D down的消息或收到次优的路由信息后仍然保持原路径一段时间,当计时器超时时,选择相信。否则表示D机恢复。
    • 触发更新:拓扑更新时,无需等待,直接发送跟新消息。
动态路由是与静态路由 相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。
OSPF OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3。
分组:
OSPF协议依靠五种不同类型的分组来建立邻接关系和交换路由信息,即问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组和链路状态确认分组。
1、问候(Hello)分组
OSPF使用Hello分组建立和维护邻接关系。在一个路由器能够给其他路由器分发它的邻居信息前,必须先问候它的邻居们。
2、数据库描述(Data base Description,DBD)分组DBD分组不包含完整的“链路状态数据库”信息,只包含数据库中每个条目的概要。当一个路由器首次连入网络,或者刚刚从故障中恢复时,它需要完整的“链路状态数据库”信息。此时,该路由器首先通过hello分组与邻居们建立双向通信关系,然后将会收到每个邻居反馈的DBD分组。新连入的这个路由器会检查所有概要,然后发送一个或多个链路状态请求分组,取回完整的条目信息。
3、链路状态请求(Link State Request,LSR)分组
LSR分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。当一个路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用LSR分组来取得邻居链路状态数据库中较新的部分。
4、链路状态更新(Link State Update,LSU)分组
LSU分组被用来应答链路状态请求分组,也可以在链路状态发生变化时实现洪泛(flooding)。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LSU,用洪泛法向全网更新链路状态。
5、链路状态确认(Link State Acknowledgment,LSAck)分组
LSAck分组被用来应答链路状态更新分组,对其进行确认,从而使得链路状态更新分组采用的洪泛法变得可靠。
ACL(访问控制列表): 两大功能: 1,流量控制 2,匹配感兴趣的流量(猜测和权限差不多)
ACL操作:
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

从上往下匹配,当匹配到之后跳出循环。若一个都没有匹配到则丢弃
通配符:
0-严格匹配
1-无所谓
类似通常位掩码的反码
实现:
计算机网络|一篇文章带你了解计算机网络(上)
文章图片

NAT(网络地址转换): 用途:当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
私有地址空间:
A: 10.0.0.0-10.255.255.255
B:172.16.0.0-172.31.255.255
C:192.168.0.0-192.168.255.255
术语:
内部本地:转换之前内部源地址的名字
外部本地:转化之前目标主机的地址
内部全局:转换之后内部主机的名字
外部全局:转化之后目标主机的地址
NAT类型:
  • 静态NAT:一对一静态地址绑定
  • 动态NAT:用户访问时通过地址池选一个闲置地址使用
  • 端口复用(PAT):理想情况下,一个IP可用端口为4000
密)时,可使用NAT方法。
私有地址空间:
A: 10.0.0.0-10.255.255.255
B:172.16.0.0-172.31.255.255
C:192.168.0.0-192.168.255.255
术语:
内部本地:转换之前内部源地址的名字
外部本地:转化之前目标主机的地址
内部全局:转换之后内部主机的名字
外部全局:转化之后目标主机的地址
【计算机网络|一篇文章带你了解计算机网络(上)】NAT类型:
  • 静态NAT:一对一静态地址绑定
  • 动态NAT:用户访问时通过地址池选一个闲置地址使用
  • 端口复用(PAT):理想情况下,一个IP可用端口为4000

    推荐阅读