CTFer成长记-计算机网络原理

前言

这一切的一切,都是因为“虚拟机如何走物理机代理”这件事捞起来的,初入计网,感觉一头雾水,交换机是啥?路由器是啥?nat又是什么鬼东西???,然后顺手百度了一下,就感觉还是不能彻底理解,最后只能用模拟器来模拟了,然后就各种模拟加虚拟机折腾了两天。最终,可算有个自我感觉良好的见解了哈哈。

网络协议

这些东西主要涉及在局域网,osi模型中处在第二层和第三层,也就是数据链路层和网络层

会遇见的网络设备

  1. 交换机——遇到次数最多的设备,连接局域网用的
  1. 路由器——第二层到第三层的桥梁,可以连接不同网段的设备,同时也会涉及到nat
  1. 网卡——计算机连接网络必备网络设备
  1. 猫(modem调制解调器)——信号转换的设备
  1. 网桥——交换机的缩小版
  1. 集线器(HUB)——顾名思义
  1. DHCP服务器——动态分配IP

IP地址、子网掩码、MAC地址

这些你去百度,都有,也都很详细

这里稍微说一下IP地址为什么不能取0和255:

其中0代表的时该子网的网段,255是广播地址

广播地址的作用就是向255发送的数据包会广播到这个子网网段中所有的设备

网卡

网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第1层和2层之间。它使得用户可以通过电缆或无线相互连接

网卡的主要功能包括:

1、数据的封装与解封,发送时将上一层传递的数据加上首部和尾部,成为以太网的帧;

2、链路管理,通过CSMA/CD协议来实现;3、数据编码与译码,即曼彻斯特编码与译码。

需要注意的是网卡没有路由的功能,也没有交换机的功能

交换机(Switch)

这里说的主要是第二层交换机

交换机的功能就是桥接能够桥接网络,这是第二层交换机的功能,第三层交换机还会有路由功能

交换机实现交换功能靠的不是ip(交换机本身也没有ip地址),而是mac地址

也就是说,他会根据设备所请求的mac地址进行转发,而不是根据ip地址转发,因为ip地址属于第三层的协议

下面以这个网络结构为例子

在这个网络里面只有三台电脑和一个交换机

其ip 和MAC分别为:

电脑1192.168.1.1MAC1

电脑2192.168.1.2MAC2

电脑3192.168.1.3MAC3

注意真MAC不长这样哦,这里是因为mac地址太长了,所以就简写了

假设这是一个刚整好的网络,他们设备之间还没有进行任何一次通讯,这时,电脑1想向电脑2发送ping,这时,他就会先发送一个arp(广播帧)请求,询问192.168.1.2的mac地址是多少就像这样

其数据包是长这样的

数据包中的会有源mac和和源ip,以及目标ip,但是没有目标mac,其实这个arp数据包会发送到这个网段内的所有设备上(交换机查看到目标mac全是ff时就会将这个arp包广播到所有设备上,拓展一个广播风暴,下面会说),当某个设备(电脑2)发现自己的ip刚好是那个目标ip,这时,这个设备会把这个源ip和源mac写道自己的arp表中,然后这个设备(电脑2)就会回复一条arp响应

就像这个对话,同时也会把自己的mac告诉电脑1

其他的设备发现目标ip不是自己时,就会丢弃数据包,不予以response(响应)。

当电脑1收到目标ip发过来的mac地址后,就会将这个ip和arp写到自己的arp表中,这个表长这样

这个时候电脑1就会发送ping数据包,ping数据包中就会写上目标ip和mac

然后交换机根据目标mac 并结合自己的mac-address表,选择目标mac所在的网口,把数据包传给电脑2,电脑2也会以同样的办法响应给电脑1

上面不是提到了arp表和mac表嘛?

arp表:

路由器和主机会有arp表,arp表中记录了ip和与之对应的mac,端口号

mac表:

mac表记录了mac地址和对应的端口号,端口号指的时交换机上的网口,因为一个网口对应一台主机,通过这个方法,交换机就可以准确无误的将数据包交给目标主机,此外,mac表是在不断变化的,就比如说电脑1发arp时,交换机就已经将电脑的1的mac和端口号记录到mac表上了

广播风暴

简单的讲,当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点就是广播;由于网络拓扑的设计和连接问题,或其他原因导致广播在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪,这就是广播风暴。(转自百度知道),广播风暴指数据帧形成环路,而帧头中无ttl的结构,所以帧始终有效,由于广播没有特定目标地址,所以hub/swtich会永远转发下去。

链接

四种IP广播地址

hub就是集线器,功能和交换机差不多,但是不能根据mac和端口号将数据包发送到指定的主机,只能全都发,是谁的谁要那种

第二层交换机性质:

  1. 交换机可以将多个网络设备连接起来组成一个网络
  1. 交换允许不同网段的ip接入,但不同网段之间需要有第三层设备加入才能进行数据通讯
  1. 交换机不会解析ip,只解析第二层的mac地址
  1. 交换机搭配DHCP服务器可以动态为设备分配IP

以上仅仅是自己总结的,看看就行了

路由器(router)

百度百科是这样解释的:

路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的 路由算法 把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。

通俗来讲就是路由器能把不同网段的设备连接起来,拥有nat功能的路由器还可以将内网ip映射到外网ip,而内网ip和外网ip是截然不同的两个ip

路由器有两个ip,一个是对应左边的网段(192.168.2.0),ip为192.168.2.1;

一个是对应邮编网段(192.168.1.0),ip为192.168.1.254。

电脑4的ip为192.168.2.2,默认网关为192.168.2.1,右边所有的电脑默认路由器都是192.168.1.254

当右边的电脑想要访问192.168.2.2时,交换机会把数据包发送到路由器,路由器再根据自己的路由表,发现目标ip在左侧的网段中,然后又查找arp表,找到了目标ip对应的mac地址,然后将数据包的源ip和mac修改后发送到电脑4,至此通讯完成。

在这个交互中,路由器会将传到路由器的数据包的源mac地址修改为自己的mac地址,随后才会发到左侧网段中的交换机或者主机上面

还有一点需要注意,如果电脑1向ip为192.168.1.0网段中的设备发送请求,路由器检索这个ip发现这个ip和电脑1处在同一网段中,便不会进行然和动作,电脑1和其他同网段设备的交互全依靠交换机;另外路由器不会对arp广播帧进行传输,也就是说右侧网段(192.168.1.0)的广播不会发送到左侧网段(192.168.2.0),左侧网段(192.168.2.0)的广播也不会发送到右侧网段(192.168.1.0)。这是因为路由器属于第三层,通过多级路由,就可以很好的解决交换机的广播风暴问题

静态路由

路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层即网络层。

静态路由就是路由表由管理员手动输入的,是单向的,不灵活的;静态路由适用于网络规模不大,拓扑结构相对固定的网络中

下面以思科模拟器做静态路由演示:

路由器本身是能连接两个网段的,这两个网段叫做直连网段,直连网段一般不需要手动配置路由表,路由器自己就可以生成直连路由(对连接在同一个路由器上的网段执行数据交换的活动)所需要的路由表

而如果出现多个路由器, 比如说这样的就是非直连网段

192.168.3.0网段和192.168.1.0网段中间隔了一个192.168.2.0网段,此时,如果不设置动态路由,两个路由器将不会知道与他们不相连的网段,可以从电脑4ping电脑1看出:

电脑4根本无法将数据包发送到电脑1。

简单说一下这个过程:电脑1先发送数据包到路由器2(左边的路由器)路由器2会检索路由表,但在这之前我并没有在路由表里面写任何东西,那么路由器将不知道该把数据包发给哪个端口,接着就会将数据包丢弃。

编辑路由表

下面我将会将路由信息写入路由表中(手动写入路由信息的路由方式叫做静态路由)

因为静态路由是单向的,所以需要在两个路由器上都写入路由信息,而且还需要把所有的需要路由的网段都写进去(挺麻烦的)

next hop :下一个跳板,即当路由器收到目标ip网段在路由表中的数据包时,就会将数据包发送到下一个跳板(跳板是相邻的路由器)

下面看看路由表

路由表中都有了刚才编辑的路由信息

现在再ping个试试

看,ping的通了!!!

静态路由的特点:(1)静态路由固定了路径的转发,因此对路由器的 路由选择进行控制,节省了网络带宽,减少了额外开支;(2)静态路由是单向的,它只设定了从此路由设备转发到目标出去的路径;(3)静态路由是缺乏灵活性的,网络发送变化时需要人工进行配置修改。

动态路由

说完静态路由,该说一下动态路由了。

wiki中这样解释动态路由:

动态路由又称自适应路由,是指路由器能根据系统内通信电路的当前状况,通过不同的路由或指定的目的地转发数据的过程(如遇到有故障的节点直接绕过或选择其他正常的路径)

百度百科中这样解释的:

动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。

通过上面的解释,我们大概可以知道,动态路由就是比静态路由更智能点,可以自动去生成路由表,而不再需要手动填写,同时也可以自动修改修正路由表。如果在比较复杂的拓扑结构中,动态路由还能自动选择最短最高效的那条路,而且配置起来更加容易,更加适合复杂且大型的拓扑结构的网络中。

动态路由机制的运作依赖路由器的两个基本功能:

  1. 路由器之间适时地交换路由信息。
  1. 路由器根据某种路由算法(不同的动态路由协议算法不同)把收集到的路由信息加工成路由表,供路由器在转发IP报文时查阅。

下面就是一个稍稍复杂点的环形拓扑结构:

当前使用的是静态路由,而且所有的下一个跳板都是逆时针旋转的下一个,那么其中的数据传递就必须要逆时针旋转,即主机1发送请求pc5的数据包必须要转一大圈才能到pc5,pc5发送的响应包也要接着逆时针转到主机1才行,这样子就太低效,太繁琐

下面改为动态路由

使用rip协议的动态路由时,只需要写入路由器接入的网段即可,然后路由器便会向刚才写入的网段中发送自己的路由信息,让那个网段中的另一个路由器接收到自己的路由信息,并更新自己的路由表

这个时候主机1向pc5发送的请求传给离他最近的路由器的时候,路由器会根据距离的远近,选择最近的那条路,pc5向主机1发送响应的时候也会选择最近的那一条陆,这样子路由的距离比较近,所需要的时间也就会少,路由效率自然也就高了

NAT

评论

  1. kaka
    kaka
    Android
    4 年前
    2022-12-27 14:22:01

    好厉害!前途无量!ヾ(≧∇≦*)ゝ

  2. facker
    Android
    4 年前
    2022-12-27 15:10:38

    :ஐ٩(๑´ᵕ`)۶ஐ:

  3. FightnvrGP
    博主
    Windows
    4 年前
    2022-12-28 0:12:31

    ヾ(≧∇≦*)ゝ

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇