网络原理-家用路由器常识介绍

常见的家用路由器:如tp-link  以此举例

大白话:家用路由器 本质是   1个 三层路由器   +  1个 无线交换机。
三层路由器 一端连外网,另一端连 无线交换机。
无线交换机,一端连三层交换机,剩余端口 连 各种上网主机。

1、路由器的LAN口工作在第二层协议还是第三层协议上?

这个lan只是低端路由器,你说tp-link那种,简单说LAN是二次,WAN是三层,但一般说路由器,所有口都是三层的。

发送到网关的数据包转发出去是从LAN口出去的还是从WAN口出去的?
内部的数据就是LAN,上外网就是WAN,看情况的。

=======================================================

企业路由器通常有多个(两个以上)带有公网ip地址的端口 ,当路由器从内网收到一个数据包时, 他要做出决定 从哪个端口发送出去这个数据包到外网, 当他决定并且转发出去这个数据包时 他就完成了一次路由。
而对于家用路由器来说 ,它通常指带有一个公网ip【WAN口公网IP】(LAN口 是两层交换机 模式, 内网IP  互相 访问 是 mac 层的 交换,不算路由)。当内网数据从LAN口 进入路由器内部,从 WAN口 出去时,内网数据包进行了一次路由 到外网去。因为只有 一个 WAN口即一个公网IP,所以ip数据包 发送到外网是 一次没有选择的 路由选择。

2、家用路由器的路由协议

家用路由器是中低端路由器,采用的是静态路由协议。

3、家用路由器上面的wifi功能

wifi是 802.11 协议标准,包括 物理层和数据链路层,无线上网的wifi 信号最终会进入 路由器里面,这个时候,参考路由器的LAN端口。wifi 和LAN 是属于同一个网段 的,我这里推测  wifi 在 该子网内 互相访问时,只用到了路由器的 两层交换机功能。

当wifi 经WAN端口,访问外网时,才算经过了三层路由。【毕竟 子网 和 外网 是两个网段了,必须要在 三层上 修改IP地址,在外网看来,路由器的子网是透明的,只有一个路由器IP地址。】(所以难怪我在traceroute 内网 ip时,直连内网IP,中途没有经过路由,所以家用路由器的内网之间访问只需两层交换机就行)

网络原理-计算机网络详解-mac表、arp表、路由表

大白话:记住内网 也可能包括了多个子网,所以用同一网段表示更精确。

MAC地址表(FDB表,2层):MAC地址——》交换机接口地址;
【只存在于交换机,用于帮助交换机指明mac帧应从哪个接口发出去】

补充说明:现在的家用路由器 ,是三层的,也有二层的交换机功能。


ARP缓存表(2.5层):IP地址——》MAC地址;
【存在于主机和路由器中,用于帮助主机或路由器,查询对应IP的mac地址,以便组建mac帧发送出去】

同一网段内通信,原mac地址和目标mac地址 与 原ip地址和目标ip地址一一对应 。不同网段通信,mac地址与ip地址不关联,mac地址从本处地址指向下一个接力地址这样可以区分,信息是从网关发来的,还是从另一个网段发来的。

从这里可以看出,arp缓存表只缓存本机网段内的ip与mac地址的关系。

arp请求是广播,因为不知道目标的mac地址,所以只能进行广播。广播只能在同网段内进行。这里广播的意思是,交换机收到广播请求时,会对其他剩余交换机端口全部转发【至于以前的hub时代,每台主机收到的mac帧,会查看是不是和自己的mac帧相同,或者收到了arp广播帧,这样会继续拆开数据包,检查IP数据,否则直接丢弃mac帧】

=======================================================

理论上可以设置两个不同的网段,然后用交换机连接。两个网段都可以指定一个(虚假的)网关,两个网段内的ip都设置静态ip。【这个时候,按照操作系统的逻辑,查路由表若目标IP属于同一网段内(不同网段只会先发给网关,mac帧目标地址是网关地址,但是目标IP不是网关IP而是真正的目标主机ip地址),查询arp缓存表,没有就发送arp请求,这个时候arp请求会经过交换机,交换机看到广播 mac帧 会 进行广播,这个时候两个网段都有arp请求了。但是arp响应还是在同一个网段内出现的。两个网段后面的mac帧信息,看交换机的mac帧–端口表,进行分发了。如果把交换机换成路由器,路由器收到arp广播,查看ip地址是不是自己的 ,是就发个arp响应,不是就丢弃,不会转发arp广播,因为同网段内有交换机 连接着其他主机,负责将arp广播到其他主机。唯一的问题是路由器收到这个错网段arp请求,应该是直接丢弃吧,应该不会出现路由器报警神马的,毕竟多一事不如少一事,路由器开发人员估计也是这个心态】【家用路由器就是个 三层路由器+无线交换机】《如果我用代码单独发一个arp包,里面的目标IP是另一个网段的,那么另一网段的目标主机能收到,但是发现不同网段的,这时候,不清楚操作系统的arp协议怎么解决,如果正常返回,操作系统中的arp缓存表也不会记录,如果想要通信,操作系统认为不属于同一网段,只会先发包给虚假的网关》

总结:从网络设计上讲,arp 广播请求 只针对 同一个网段内的目标主机。

=======================================================

arp应答是单播,因为知道请求者的mac地址。所以可以直接采用点对点的单播方式回答对方。

为何要缓存arp?因为如果不缓存,那么每次通信都需要广播,不仅费时且减小了广播消息对同网段的影响。 当然arp缓存也存在一定的有效时长。


路由表(FIB表,3层)【存在于主机和路由器上 ,就是用来决策和转发 IP数据包的表】

=======================================================

上网时信息过程

1、本机 开机联网  用dhcp获得 IP 或者 自己设置静态IP,获得本机IP后,会发一个??? 广播,询问 局域网内 是否 和本机 有相同 IP。

2、dns访问网络,其实就是访问 IP。

3、对   待访问IP  进行判断,

如果属于同一个子网,查询ARP缓存表,如果用就租金组建 mac帧,若没有,就发送一个 arp广播,询问IP持有者的 mac地址。等对方arp应答,发回mac地址。然后再组件 mac帧。

mac帧组建好后,就用物理信号,直接发给内网中的目标主机。内网中一般就只有交换机,不会再路由了,因为路由是三层了,是用来跨网段的。【路由表就是根据不同网段,来进行路由的,所以路由器就是用来跨网段的,如果不跨网段的话(记住,内网也可以划分成好多网段不同的子网,不同子网间就需要路由器连接),用二层交换机就够了 】

********************************************************

如果不属于一个子网,就查询网关的mac地址,如果有就组建mac帧,发给网关。如果没有网关的mac地址,就发arp查询,获得网关mac地址,然后组建mac帧。发给网关。

发给网关的mac帧,经过网关检查,发现mac帧中的IP地址不是自己的,于是查询路由表,重新组建mac帧,发给下一个目标。重新组建的mac帧,源mac地址为本网关mac地址,目标mac地址为下一个目标的mac地址。ip数据包里面的内容不变。

就这样,在不同的网段内不断转发,mac帧终于抵达了目标主机。

=======================================================

一、路由表

1、路由表概述

在计算机网络中,路由表或称路由择域信息库(RIB)是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。

每个路由器中都有一个路由表和FIB(Forward Information Base)表:路由表用来决策路由,FIB用来转发分组。FIB强调的是作为转发的路由表,RIB是用来做路由管理的表。通常有了动态路由协议的参与才能理解这个问题。RIP、OSPF、BGP、ISIS都是动态路由协议,它们学习到的路由首先要通告给RIB表。RIB表把所有路由协议学习到的路由汇总到一起,经过优选,把优选结果的路由加入到FIB表,供转发使用。所以FIB是RIB的一个子集。

2、路由表中路由有三类:

直连路由:
(1)链路层协议发现的路由
非直连路由:
(1)静态路由
(2)动态路由协议发现的路由。

高档路由器可以运行动态路由选择协议,而中低档的不可以.只有运行了动态路由选择协议的路由器才可以自动生成和更新路由表.

一般的家用型路由器如tp-link都是运行的静态路由,静态路由是由管理员手工的逐条的输入的,不能自动适应网络的拓扑变化.静态路由里面有缺省路由条目,路由器收到的ip包,都会默认转发给上层路由器。

Pc电脑上的 路由表,是 静态路由。我做了一下测试:

(1)电脑上的网线网卡每换一个接入点,都会重新重新初始化PC路由表。

路由表上面的 0.0.0.0 网段,127网络, localhost网段 ,169.254网段【这个是电脑未联网时自己设置的所在网段】,224.0.0 组播网段,255.255.255.255【有限广播地址也称为本地广播地址】

广播地址分为两种:直接广播地址和有限广播地址  。TCP/IP协议规定32比特全为1的IP地址(255.255.255.255)用于本网广播。 在主机不知道本机所处的网络时(如主机的启动过程中),只能采用有限广播方式,通常由无盘工作站启动时使用,希望从网络IP地址服务器处获得一个IP地址。当广播地址包含一个有效的网络号和主机号,技术上就称为直接广播地址。

上面这些都是网络连接成功时,自动生成的路由表。其中 0.0.0.0是缺省路由,如果你是动态获取的IP地址,就是从DHCP服务器学来的;如果是手工静态分配的IP地址,则是静态分配来的;

(2)当别的内网计算机ping或访问本机时,本机路由表就会 添加 该内网计算机的路由。当本机访问别的内网主机或ping内网主机【即使ping的不存在】,本机也会将该内网主机添加到路由表中。当然,这些添加的路由只是暂时性的 ,重启或者切换网络都会路由记录都会被删除。本机自动添加的路由,只限于内网的计算机,外网的计算机路由,都不会添加到本机中。

下面 mac主机的路由表中:192.168.1.133 是另一台 内网主机。该内网的网段是192.168.1.128/25,网关是 192.168.1.129/32,本机IP是  192.168.1.131/32

3、路由表查看

Windows linux 通用: netstat -r  
Windows 上面 还可以用:route print

xp下的 路由表:

===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...08 00 27 d7 b7 a9 ...... Intel(R) PRO/1000 T Server Adapter - 数据包计划程序微型端口
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0         10.0.2.2       10.0.2.15	  10
         10.0.2.0    255.255.255.0        10.0.2.15       10.0.2.15	  10
        10.0.2.15  255.255.255.255        127.0.0.1       127.0.0.1	  10
   10.255.255.255  255.255.255.255        10.0.2.15       10.0.2.15	  10
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1	  1
        224.0.0.0        240.0.0.0        10.0.2.15       10.0.2.15	  10
  255.255.255.255  255.255.255.255        10.0.2.15       10.0.2.15	  1
Default Gateway:          10.0.2.2
===========================================================================
Persistent Routes:
  None

Route Table

mac下面的路由表:

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.129      UGSc          512        0     en1
127                localhost          UCS             1        0     lo0
localhost          localhost          UH              2  1425190     lo0
169.254            link#5             UCS             1        0     en1
192.168.1.128/25   link#5             UCS             3        0     en1
192.168.1.129/32   link#5             UCS             2        0     en1
192.168.1.129      20:dc:e6:c1:ee:24  UHLWIir       513       25     en1    973
192.168.1.131/32   link#5             UCS             1        0     en1
192.168.1.133      5c:c3:7:4f:62:91   UHLWIi          1        9     en1    726
192.168.1.255      link#5             UHLWbI          1       12     en1
224.0.0            link#5             UmCS            2        0     en1
224.0.0.251        1:0:5e:0:0:fb      UHmLWI          1        0     en1
255.255.255.255/32 link#5             UCS             2        0     en1
broadcasthost      link#5             UHLWbI          1      139     en1

Internet6:
Destination        Gateway            Flags         Netif Expire
localhost          localhost          UHL             lo0
fe80::%lo0         fe80::1%lo0        UcI             lo0
fe80::1%lo0        link#1             UHLI            lo0
fe80::%en1         link#5             UCI             en1
cooldemacbook-pro. 38:c9:86:e7:7c:e   UHLI            lo0
fe80::%awdl0       link#9             UCI           awdl0
cooldemacbook-pro. 46:28:cb:55:19:75  UHLI            lo0
ff01::%lo0         localhost          UmCI            lo0
ff01::%en1         link#5             UmCI            en1
ff01::%awdl0       link#9             UmCI          awdl0
ff02::%lo0         localhost          UmCI            lo0
ff02::%en1         link#5             UmCI            en1
ff02::%awdl0       link#9             UmCI          awdl0

先百度了一下:mac 网络接口(Netif),的各种名字

lo0 = loopback
gif0 = Software Network Interface
stf0 = 6to4 tunnel interface
en0 = Ethernet 0
fw0 = Firewire
en1 = Ethernet 1
vmnet1 = Virtual Interface

补充:在运行ifconfig时,会看到en0 en1 en2 en3 en4 怎么这么多???

运行一下:networksetup -listallhardwareports

Hardware Port: Ethernet
Device: en0
Ethernet Address: xx:xx:xx:xx:xx:xx

Hardware Port: FireWire
Device: fw0
Ethernet Address: xx:xx:xx:xx:xx:xx:xx:xx

Hardware Port: Wi-Fi
Device: en1
Ethernet Address: xx:xx:xx:xx:xx:xx

Hardware Port: Bluetooth PAN
Device: en3
Ethernet Address: xx:xx:xx:xx:xx:xx

Hardware Port: Thunderbolt 1
Device: en2
Ethernet Address: xx:xx:xx:xx:xx:xx

Hardware Port: Thunderbolt Bridge
Device: bridge0
Ethernet Address: xx:xx:xx:xx:xx:xx

VLAN Configurations
===================

原来是Wi-Fi,蓝牙,thunderbolt

4、路由表讲解

举例:

(1)、通俗点说就是:接口指硬件网卡上的网线口,一个接口可以设置N个IP。

市面上有不止一个接口的网卡,2口、4口都有。

接口是你拥有的IP,因为允许一个网卡设置多个IP,所以接口的IP是数据包出去时的IP,网关是数据包从接口出去后,第一个访问的地址,不一定是路由器的…有可能是电信的服务器、有可能是公司的代理服务器,主要是看这个网关地址是哪里才能初步判断是什么东西。

(2)、网关是指数据从你接口出去先走哪里。比如就是你要出门,先要走你家大门一样,有些家庭不止一个大门的,所以要指定。

(3)、“在链路上”即指你电脑访问网络的链路中存在多个网关,VISTA以上的系统支持配置多个网关的多重网络。

(4)、mac上面的路由表:目标 指的是网段号;xp上面的路由表 ,目标指的是,网络地址,后面还跟着子网掩码,这样就可以计算出 网段号。

(5)、权值英语:Metrics),又称路由度量(routing metric),是电脑网络上,路由的参数之一,这个参数被用来决定某个特定路径是否应该被选择。权值主要在动态选径时使用。权值包含了被路由算法使用来决定哪一条路径较另一条路径好的所有数值。度量可能包括许多资讯,例如带宽、延迟、经过节点数、路径成本、负载、最大传输单元(MTU)、可靠性及传输成本等。路由表只储存最佳的可能路径,但连线状态或拓扑数据库可能储存其他相关的资讯。【来自维基百科】

路由会选择最低权值的闸道器路径(预设路径,default gateway)前进。如果权值为0,代表该路径的目的地,与本地端界面是连接在同一个网络上。如果权值大于零,该路径的目的地会被认为外部位址,必须透过外部闸道器才能抵达目的地。

5、路由表实例

如下图:详细介绍路由器的工作原理

1)HostA在网络层将来自上层的报文封装成IP数据包,其中源IP地址为自己,目标IP地址是HostB,HostA会用本机配置的24位子网掩码与目标地址进行“与”运算,得出目标地址与本机不是同一网段,因此发送HostB的数据包需要经过网关路由A的转发。

2)HostA通过ARP请求获取网关路由A的E0口的MAC地址,并在链路层将路由器E0接口的MAC地址封装成目标MAC地址,源MAC地址是自己。

3)路由器A从E0可接收到数据帧,把数据链路层的封装去掉,并检查路由表中是否有目标IP地址网段(即192.168.2.2的网段)相匹配的的项,根据路由表中记录到192.168.2.0网段的数据请发送给下一跳地址10.1.1.2,因此数据在路由器A的E1口重新封装,此时,源MAC地址是路由器A的E1接口的MAC地址,封装的目标MAC地址则是路由器2的E1接口的MAC地址。

4)路由B从E1口接收到数据帧,同样会把数据链路层的封装去掉,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E0口的直连网段,路由器B通过ARP广播,获知HostB的MAC地址,此时数据包在路由器B的E0接口再次封装,源MAC地址是路由器B的E0接口的MAC地址,目标MAC地址是HostB的MAC地址。封装完成后直接从路由器的E0接口发送给HostB。

5)此时HostB才会收到来自HostA发送的数据。

总结:路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的。


二、mac地址表

说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。

交换机的工作原理

交换机在接收到数据帧以后,首先、会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着、会检查自己的MAC表中是否有数据帧中目标MAC地址的信息,如果有则会根据MAC表中记录的对应接口将数据帧发送出去(也就是单播),如果没有,则会将该数据帧从非接受接口发送出去(也就是广播)。

如下图:详细讲解交换机传输数据帧的过程

 

1)主机A会将一个源MAC地址为自己,目标MAC地址为主机B的数据帧发送给交换机。

2)交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的接口(接口为f 0/1) 记录到MAC地址表中。

3)然后交换机会检查自己的MAC地址表中是否有数据帧中的目标MAC地址的信息,如果有,则从MAC地址表中记录的接口发送出去,如果没有,则会将此数据帧从非接收接口的所有接口发送出去(也就是除了f 0/1接口)。

4)这时,局域网的所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包括主机B的MAC地址。

5)当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是主机B的MAC地址),这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。

如下图:当局域网存在多个交换机互联的时候,交换机的MAC地址表是怎么记录的呢?

 

1)主机A将一个源MAC地址为自己,目标MAC地址主机C的数据帧发送给交换机

2)交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播出去,主机B和交换机2都会收到此数据帧。

3)交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。

4)主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机2都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。

5)这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f 0/1。

总结:从上面的两幅图可以看出,交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。

注意:交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。


三、ARP缓存表

上面我们讲解了交换机的工作原理,知道交换机是通过MAC地址通信的,但是我们是如何获得目标主机的MAC地址呢?这时我们就需要使用ARP协议了,在每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系。

ARP协议:ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。

如下图:详细讲解ARP的工作原理。

 

1)如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。

2)当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。

3)当主机B接受到此数据帧后,会校对IP地址是否是自己的,并将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。

4)主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了。

 


参考:

mac表 arp表 路由表 http://blog.51cto.com/dengqi/1223132

en0 en1 问题      https://blog.csdn.net/yangziluomu?t=1

traceroute  原理及实现  https://www.jianshu.com/p/75a5822d0eec

Traceroute原理解析  https://www.jianshu.com/p/9465fa3abe47

Metrics 问题  https://en.wikipedia.org/wiki/Metrics_(networking)

网络原理-一张网卡设置两个IP的作用

一块网卡,设置两个IP的 作用

1、一个网卡设置两个或者多个IP地址,作用就是可以连接多个网段(就是可以访问多个网段),但前提是这些网段物理层是连接在一起。
2、举个例子:有两个LAN(局域网)通过交换机连接在一起,LAN1为192.168.0.0/24 网段
LAN2 为192.168.1.0/24网段,在没有三层设备的情况下LAN1与LAN2下的主机是不可以相互访问的,因为LAN1与LAN2的网络号分别为192.168.0.0、192.168.1.0,网络号不同即不在同一网段。虽然两个LAN通过交换机连接在一起了,但在没有三层设备时是无法进行通信的。但若是LAN1下的一台主机PC1设置两个IP地址如 192.168.0.100/24、192.168.1.100/24(不可与LAN2下的主机IP冲突) 则PC1就可以访问LAN2下的主机,因为此时PC1使用IP 192.168.1.100/24进行LAN2的访问。


设置双IP流程

首先打开“本地连接 属性”页

 

第二步,选择“Internet 协议版本4”点属性或双击它。打开“Internet 协议版本4 属性”页

 

第三步,设置其中一个IP段的IP地址、网关、DNS服务器地址,点“高级”,打开“高级TCP/IP设置”页。

 

第四步,点“添加”,输入另一个网段分配的IP地址,以及网关,如下图

 

第五步,点“确定”完成设置。

网络原理-网络拓扑之两条宽带叠加上网问题

一、宽带叠加概述

一直觉得上网,就需要一条宽带就行了。
偶尔想到,如果电脑同时接有线和无线宽带会怎么样?

当电脑连接两条宽带时,且两条宽带的公网ip不同。这时电脑上网会采用,有线宽带的IP。下载也是有线宽带。因为有线宽带的优先级比无线宽带高,我们需要修改有线网卡和无线网卡的跃点数,修改成一样【需要进入网络连接属性 /高级 TCP/IP 属性 修改 跃点数】。这样有线和无线宽带的优先级就一样了。平时上网只会用一条,但是用迅雷等多进程下载时,可以用两条宽带下载。

或者买一个双WAN口的 路由器或者 买两个路由器 且 组合成一个局域网,当电脑连接上路由器时,相当于两条宽带上网了。平时上网只用一条,多进程下载时可以用两条宽带。


无线和有线 同时连接时,电脑的路由表 (命令行 netstat -r) 可以看到 本机 无线网卡的 网段 和 有线网卡的网段 不一样,但是 电脑 同时可以访问 两个网段。【我测试时,无线连的是手机热点,有线连的是 路由器的 宽带】


二、两条宽带连PC操作

第一,右击右下角的网络图标,打开网络和共享中心,在弹出来的对话框中选择更改网络配置。

第二,在弹出来的对话框中可以找到我们现在使用的网络,右击击其中的一个网络适配器,选择属性。

第三,在弹出来的对话框中双击Internet 协议版本4,此项是用来设置我们当前使用的网络。

第四,此时会弹出常规选项卡,点击高级,在弹出来的对话框中我们去掉自动跃点的勾选,自己任意设置成任意数字,20 40都行,点击确定,这样我们就完成了一个网络适配器的更改。

 

第五,我们需要进行第二个网络适配器的更改,和上面的步骤一样,接口跃点数一定要设置成和第一个适配器的跃点数一样的数字,否则就不会网络叠加的成功。

此时,完成是配置的设置之后,我们就可以进行网络速度的测试了,很多软件均集成了这个功能,如360安全卫士,以前我的网速最大下载速度是500k左右,进行网络的叠加使用后就变成了1M下载,很强悍吧!

为什么非要跃点数设置成一样的呢?传输过程中需要经过多个网络,每个被经过的网络设备点叫做一个跃点,地址就是它的ip,跃点数是经过了多少个跃点的累加器,为了防止无用的数据包在网上流散。将跃点数设置成一样的数值,系统会认定为这是同一个网络,所以两个网络会合并为一个网络供我们使用。

=========================================================

命令行模式,查看 修改 效果前后 图

然后进入命令模式,输入route print 回车查看IP的跃点数,这做是为了寻找两者的差值以达到平衡
最后进入网卡修改跃点数

最后再route print一次两者跃点数相同就可以了,叠加成功,测速,下载,在线电影均有效。

三、双WAN口路由器或两个路由器操作

这里讲个三网叠加的 :

  1. 设置路由器C拨号,lan IP与路由器A、B同一网段PC端设置网关:顺序为路由器C、A、B,

  2. 看看速度,牛X,迅雷下载稳定3.2M/S

    遗憾的是手机端设置不了多个网关,不过10M宽带也够用了

 


参考:

双路由器实现宽带叠加 https://jingyan.baidu.com/article/1974b289a238d6f4b1f7743c.html
有线+无线叠加教程 http://tieba.baidu.com/p/2589595477
win8.1有线+无线同时上叠加上网设置 http://tieba.baidu.com/p/3309314007

网络原理-计算机网络详解-上网内部流程分析

首先,先读 计算机网络-整体认知把握 作为基础入门。

一、网络模型中各层的命名规范

如数据链路层(二层),一般称为帧(Frame),比如以太帧。
而 ATM(Asynchronous Transport Mode)一般称为信元(Cell)。
ATM 是欧洲人发明的,IP 是美国人发明的,两者竞争网络层的老大,最后 IP 胜出,成为当仁不让的网络层霸主。ATM 只好委身于 IP 的「淫威」之下,充当数据链路层协议。

那么网络层(三层)则使用包(Packet)的概念,比如 IP 包。

传输层有 TCP、UDP,TCP 称为报文段或段(Segment),而 UDP 则称为用户数据报或者UDP报文(Datagram)

应用层(七层)则一律使用应用层数据(Data)。

但往往也没有那么严格,经常有人用 TCP 包、UDP 包,也不会引起混淆,但还是希望各位同学能够专业化、规范化使用名称,养成一个良好习惯。


二、本地网创建过程

弄个路由器,弄个光纤猫,超五类网线,拨号上网就行了。

网线接好后,物理层就配好了,以太网速率自协商也完成了。
数据链路层也就是以太网帧。

1、设置内网IP

(1)配置路由器

用一根网线连路由器和pc,登录浏览器访问路由器的设置页面。然后修改网关IP和子网掩码,然后设置PPPOE,自动拨号上网。
比如
网关IP:192.168.1.129
子网掩码:255.255.255.128
那么路由器的网络地址为:192.168.1.128 广播地址为192.168.1.255

参看 网络层之子网划分与超网

(2)配置主机IP

配置主机IP有两种方法:

方法一:登录主机,设置静态IP。

方法二:DHCP,动态获取IP,需要在路由器里面开启DHCP服务。

2、DHCP协议详解

动态主机配置协议,英文 DHCP,是英文 Dynamic Host Configuration Protocol 的缩写,属于应用层协议,使用UDP协议工作。

DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。

1.DHCP发现(DISCOVER)—— 请求IP租约

电脑的操作系统安装了 TCP/IP 协议栈,这个协议栈其中包含一个 DHCP 客户端进程,这个客户端进程会广播一个发现服务器的报文,格式为 UDP 封装,目的端口号为 68,源端口号为 67;

大白话:DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCPdiscover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

客户也可以申请它使用的最后一个IP地址(在下面的例子里为192.168.1.100)。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。

2.DHCP提供(OFFER)——提供IP租约

当DHCP服务器收到一个来自客户的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络单播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。并以单播方式发给客户端,目的端口号为 67,源端口号为 68 ;

服务器基于在CHADDR字段指定的客户硬件地址来检查配置。这里的服务器,192.168.1.1,将IP地址指定于YIADDR字段。,

3.DHCP请求(REQUEST)——选择IP租约

当客户PC收到一个IP租约提供时,它必须告诉所有其他的DHCP服务器它已经接受了一个租约提供。因此,该客户会发送一个DHCPREQUEST消息,其中包含提供租约的服务器的IP。当其他DHCP服务器收到了该消息后,它们会收回所有可能已提供给客户的租约。然后它们把曾经给客户保留的那个地址重新放回到可用地址池中,这样,它们就可以为其他计算机分配这个地址。任意数量的DHCP服务器都可以响应同一个IP租约请求,但是每一个客户网卡只能接受一个租约提供。

4.DHCP确认(Acknowledge,ACK)——确认IP租约

当DHCP服务器收到来自客户的REQUEST消息后,它就开始了配置过程的最后阶段。这个响应阶段以单播方式发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息。
客户端接收到服务器的确认,会尝试将获得的 IP 参数配置到 TCP/IP 协议栈,还会尝试 ARP 广播请求自己的 IP 所对应的 MAC 地址,如果没有收到任何回复,说明这个 IP 地址在广播域里是唯一的,不会引起 IP 地址冲突,可以完成配置工作。

以上 DHCP 能够正常工作,有一个前提条件,那就是客户端与服务器在一个广播域内,一个广播域意味着一个网段,换句话说,一个网段需要一个 DHCP 服务器,这个对于拥有成百上千网段的大型网络来说,则需要成百上千的 DHCP 服务器,这显然不现实。

⬇️⬇️⬇️   其他过程补充如下:⬇️⬇️⬇️

5.重新登录 (DHCPrequest)
    以后DHCP客户机每次重新登录网络时,就不需要再发送DHCPdiscover发现信息了,而是直接发送包含前一次所
分配的IP地址的DHCPrequest请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP
地址,并回答一个DHCPack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分
配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCPnack否认信息。当原来的DHCP客户机收到此
DHCPnack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。

6.更新租约
    DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如
果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会
自动向DHCP服务器发送更新其IP租约的信息。

7.获取配置参数(DHCPINFORM)
   如果客户通过别的手段获得了网络地址,它可以使用DHCPINFORM请求获得其它配置参数,服务器接收
到DHCPINFORM包,并建立一个DHCPACK消息,在其中包括一些合适客户的配置参数,只是不包括分配网络
地址,检查现有的绑定,在信息中不填充'yiaddr'字段或租用时间参数。服务器取得DHCPINFORM包内的
'ciaddr'地址,而返回DHCPACK包。

5、DHCP中继问题

以上 DHCP 能够正常工作,有一个前提条件,那就是客户端与服务器在一个广播域内【毕竟发的是255.255.255.255广播帧】,一个广播域意味着一个网段,换句话说,一个网段需要一个 DHCP 服务器,这个对于拥有成百上千网段的大型网络来说,则需要成百上千的 DHCP 服务器,这显然不现实。
有没有现实一点的解决方案呢?比如在一个企业网只需要一台 DHCP 服务器?
问题就来了,客户端与服务器不在一个网段,客户端如何通过广播发现服务器呢?要知道,广播报文无法跨越不同网段!
这个其实不难,只是需要一个角色来协助客户端与服务器发现彼此,这个角色名字叫 DHCP 中继代理。

* DHCP 中继代理(DHCP Relay Agent)

设想是这样的,每个网段都配置一个 DHCP 中继代理,DHCP 中继预先静态配置 DHCP 服务器的 IP 地址,DHCP 中继代理自然可以接收到本网段的客户端 DHCP 广播报文,然后将广播报文修改成单播报文,目的 IP 地址为 DHCP 服务器,源 IP 地址为代理自己的,然后单播发送给服务器,服务器的回复自然也是单播发给代理,代理再将服务器的回复以单播的方式发给客户端。
通俗地说,DHCP 中继代理就是让客户端与服务器相互发现彼此的中介结构。
下面我们举一个例子来说明。
小明打开电脑,运行于后台的 DHCP 客户端,帮助小明拿到了 10.1.1.2/24 这个地址,小美拿到了 10.1.1.3/24 这个地址,小丽却拿到了 10.1.2.2/24 这个地址。请问,小明、小美在一个网段,为何小丽却在另外一个网段,这是如何做到的?
谜底就是:小明、小美在一个广播域,在这个广播域里还有他们的网关,地址是 10.1.1.1/24,已经静态配置好了,网关充当 DHCP 中继代理的角色。除了以上介绍的将接收到的 DHCP 客户端,发现服务器的广播,转换成单播以外,还在 DHCP 报文内部填写了一个字段:「中继代理=10.1.1.1」,这样服务器就可以依据中继代理的地址,找到网段 10.1.1 地址池,然后找出空闲的地址就可以分配给小明、小美了。
同样的原理,小丽的 DHCP 广播被网关(10.1.2.1/24)接收,做了以下的工作:

* 广播修改成单播,源地址为网关的地址 10.1.2.1,目的地址为 DHCP 服务器地址 10.10.10.10
* 填写 DHCP 报文中继代理字段(Gateway),这里为 Gateway = 10.1.2.1
* 重新计算 UDP 校验和

然后发送出去,到达服务器,服务器依据中继代理字段,找到另外一个地址池 10.1.2,接着就可以从空闲地址里分一个 10.1.2.2 给小丽了,然后单播回复网关 10.1.2.1,剩下的步骤可以参考上面的标准流程的四个步骤  –>【请求IP租约、提供IP租约、选择IP租约和确认IP租约】
=====================================================

假设小明、小美、他们的网关、小丽、小丽的网关连在一个交换机上,也没有配置任何虚拟局域网(VLAN)来分隔广播域,以上五者工作在一个广播域,看看 DHCP 能否正常工作?
小明的电脑发一个 DHCP 广播,用于发现广播域里的服务器,广播域里没有 DHCP 服务器,以上五者都会接收小明的广播,小明的网关、小丽的网关自然也会接收到。
于是小明网关、小丽网关都会做中继代理,填上自己的 IP 地址,到达服务器,服务器会分配两个 IP 地址,一个是 10.1.1.x,另外一个是 10.1.2.x,那小明的电脑接受哪一个呢?当然谁先到用谁的!
小明的电脑使用哪个网段地址,完全取决于哪个网关反应快,动作麻利,这种不可预测性的解决方案,不能满足企业网的安全要求。
企业网对于一个员工使用哪一个网段有严格的要求,一个网段意味着不同的权限,所以一个员工要使用真正属于他的那个网段。

综上,企业网络管理,就会采用VLAN 用来隔离广播域,对自动获取IP进行 子网分段 和权限控制 。
=====================================================

6、DHCP与RARP的区别

RARP在功能上有点类似于DHCP协议,确切的说DHCP是BOOTP协议的升级,而BOOTP在某种意义上又是RARP协议的升级。BOOTP和RARP的区别在于RARP是在数据链路层实现的,而BOOTP实在应用层实现的,当然作为BOOTP的升级版DHCP也是在应用层实现的。
这种实现层面的差别也从RARP和BOOTP/DHCP的报文封装格式的差别上体现出来了,RARP直接封装在以太网帧中,协议类型置为0x0800以标识这个报文是ARP/RARP报文,BOOTP/DHCP报文是直接封装在UDP报文中,作为UDP的数据段出现的。
从功能上说,RARP只能实现简单的从MAC地址到IP地址的查询工作,RARP server上的MAC地址和IP地址是必须事先静态配置好的。但DHCP却可以实现除静态分配外的动态IP地址分配以及IP地址租期管理等等相对复杂的功能。

=========================================================

1)RARP可以满足主机IP地址配置的部分要求,但是不能完全满足
包括但不限于以下配置:
网络掩码,网关地址,静态路由,DNS服务器,以及私有的,公有的option功能。

2)RARP是二层协议,无法穿透子网,DHCP可以穿透子网。
好吧,那你会说有ARP代理,也可以辅助穿透子网,但是还是不好用。
因为:
ARP/RARP只能对地址进行识别,无法进行地址的统一规划和分配。
如果在一个子网内,需要对地址进行统一规划,分配和管理,以及租约,续租的管理。
必须要有一个服务器来集中管理。
因此有了bootp,有了DHCP。

我就知道还会有人说,为何不像DR,BDR路由器选举那样在用户计算机中产生一个集中管理的服务器,那是因为ARP/RARP是一个非常轻量级的协议,它设计的本意就不是这个。

另外,最重要的,用户计算机会当机,选举出来的服务器不稳定。

2.5)为何不修改ARP/RARP支持DHCP的特性?
DHCP的协议的工作本质,是动态主机配置协议,不仅仅包含IP地址配置。
TCP/IP网络的优点就是“分层”,协议各司其职。
ARP/RARP负责IP-MAC地址间的互相解析,DHCP负责管理IP层的配置。
因为,修改ARP/RARP支持DHCP,违反网络设计分层的理念。
应该去增强ARP/RARP,而不是去合并DHCP。
所以有了后来IPv6的ND。

3)既然如此为何IPv6会回归到ND(邻居发现协议),DHCPv6协同分配?
因为搞协议的人,逐渐发现,网络中有很多轻量级客户端,不需要进行统一管理,因此发明了ND,也就是增强版的ARP/RARP,它充分满足了没有DHCP服务器的情况下,在IPv6网络分配IP地址,路由前缀自动生成,快速上网的需求。


三、网络通信

大白话核心总结:

当生成完IP包,准备网络通信时,就需要判断目标主机和本机是否同网段。

如果本机和目标主机属于同一网段,

就查询本机的arp缓存表,如果存在目标主机mac地址,就直接读取,并生成两层的mac帧。如果本机的arp缓存表,没有目标主机的mac地址,那么就向本网段发送arp广播【arp请求广播只存在于本网段】,然后目标主机会发回arp单播应答给本机。这样目标主机就知道了,目标主机的mac地址了,并且将目标主机mac地址,放入本机arp缓存表。然后,本机三层ip包,封装成二层mac帧,发送给目标主机了。

如果本机和目标主机 是不同网段。

首先查找本机路由表,匹配和目标主机最接近的网段号。【依据本机路由表只记录本机网段的路由,所以匹配的结果是 发给默认网关】当决定IP数据包要发给默认网关时,此时检查本机arp缓存表,查询是否有网关的mac地址。如果有封装成mac帧,直接发给路由。如果没有记录网关mac地址,就发送arp广播请求,来获取网关mac地址。然后再将ip数据包组装成mac帧,发送给网关。

网关收到mac帧后,检查ip包和mac帧,发现mac地址与ip地址不匹配,不是真正发给自己的 ip包,于是查询路由表,找一个最长匹配的网络段的路由,重新组装mac帧发往下一个路由器(后面就是不断重复前面网关收到mac帧的操作发我下一个路由或目标主机)或者目标主机。【重新组装的mac帧,目标IP和源ip都不变,目标mac为下一跳的mac地址,源mac为当前网关】最终,经过几跳后,目标主机收到了mac帧。

1、访问相同网段

举例:ping 同一网段的主机。ping的协议介绍看这里

小明访问小美的电脑:比如 ping  10.1.1.3

(1)先判断 小美电脑 10.1.1.3  是否和 小明的电脑 10.1.1.2在同一个网段。

首先用小明的子网掩码  255.255.255.0 去 和 小明的IP 相与:计算出小明主机网络的网络号,即该网段的网络地址和广播地址【10.1.1.0   ,10.1.1.255】网络地址和广播地址直接的主机都属于同一网段。

然后对比目标地址:10.1.1.3  发现属于同网段。

(2)当生成三层IP包后,需要知道目标主机的mac 地址,来生成二层 mac帧。

首先查找本机的 arp缓存表,如果有,就直接读取,然后封装成mac帧,直接发给目标主机。

关于arp缓存表和路由表,查看这里

如果本机的arp缓存表,没有查到。就发送 arp广播请求【arp广播只存在于本网段】。

本机电脑用哪个网络接口发送arp广播请求呢?我们先了解一下本机路由表。

按照前面提到的子网划分博文,以上四条路由它们代表的网段号分别是:
127
10.1.1.2
10.1.1
0
用小美的网络号 10.1.1 与以上四条一一匹配,匹配到第三条,对应的接口为 Eth0。
于是,从接口 Eth0 发送 ARP 广播,ARP 广播在广播域里蔓延,小美的电脑也在同一个广播域可以接收到此 ARP 广播,广播请求 10.1.1.3 的硬件 MAC 地址,于是小美的电脑通过点对点单播 ARP 回复 10.1.1.2,自己的 MAC 是 MACxm,小明的电脑接收到此回复,将 10.1.1.3 / MACxm 保存在 ARP 缓存里,时间为 20—30 分钟不等,以备下次使用。

然后,本机三层ip包,封装成二层mac帧,发送给目标主机了。依照以上类似的步骤,Ping 的回包就到达本机的电脑,然后 Ping 程序软件显示,Ping 包被反弹回来,以及最大、最小、平均的来回延迟时间 RTT(Round Trip Time)。

2、访问不同网段

如果本机和目标主机 是不同网段。

首先查找本机路由表,匹配和目标主机最接近的网段号。【依据本机路由表只记录本机网段的路由,所以匹配的结果是 发给默认网关】当决定IP数据包要发给默认网关时,此时检查本机arp缓存表,查询是否有网关的mac地址。如果有封装成mac帧,直接发给路由。如果没有记录网关mac地址,就发送arp广播请求,来获取网关mac地址。然后再将ip数据包组装成mac帧,发送给网关。

网关收到mac帧后,检查ip包和mac帧,发现mac地址与ip地址不匹配,不是真正发给自己的 ip包,于是查询路由表,找一个最长匹配的网络段的路由,重新组装mac帧发往下一个路由器(后面就是不断重复前面网关收到mac帧的操作发我下一个路由或目标主机)或者目标主机。【重新组装的mac帧,目标IP和源ip都不变,目标mac为下一跳的mac地址,源mac为当前网关】最终,经过几跳后,目标主机收到了mac帧。

3、访问互联网

记录上网时,网络信息流处理过程

第一步:域名解析

互联网上网络层通信都是 IP数据包,所以小明的电脑与 百度服务器的通信也是 IP 包。既然是 IP 包,则需要 百度 服务器的 IP 地址,小明只告诉浏览器,自己想访问的服务器的域名是 HTTP://www.baidu.com,浏览器爽快地对小明说:没有关系,我会帮你解析出服务器的 IP 地址。

浏览器通知DNS程序(进程),解析www.baidu.com 的IP。

DNS域名解析过程如下:
1)DNS 进程先检查自己的程序缓存(Cache),如果有「www.baidu.com」所对应的 IP,则直接告诉浏览器。如果缓存没有找到,进入下一步;
2)检查本地 Host 文件,看看有没有,有则告诉浏览器。如果 Host 没有找到,进入下一步;
3)检查本地的 DNS 服务器配置,得到 DNS Server = 10.10.10.10,发个消息给它,让 DNS 服务器帮助查找。
此消息为 UDP 格式,目的 IP=10.10.10.10,小明电脑发现和自己不在一个网段,于是使用前面提到的不同网段的通信,将 IP 包发给 DNS Server = 10.10.10.10;
4)DNS Server (10.10.10.10)在自己的缓存里也没有发现,于是向互联网的上级DNS Server (8.8.8.8)发送协查请求;
DNS Server (8.8.8.8)发现了匹配项:HTTP://www.baidu.com 61.135.169.125,于是将协查结果返回给小明公司 DNS 服务器(10.10.10.10),然后再返回到小明电脑(10.1.1.2)DNS 进程。
DNS 进程气喘吁吁对浏览器说:大哥,这是您要的东西(HTTP://www.baidu.com 61.135.169.125)。

第二步:浏览器 HTTP 格式打包
浏览器将小明访问服务器 HTTP://www.baidu.com 的请求打包成 HTTP 格式,然后将打包好的 HTTP 告诉 TCP 进程(程序),同时告诉 TCP 进程的还有 HTTP://www.baidu.com 的 IP(61.135.169.125)。
TCP 进程属于低调、稳健的老司机,心想,如果将浏览器发来的 IP 地址 + HTTP 直接发给 IP 进程,最后会产生一个 IP 包,但最终这个 IP 包是死是活,自己却无法知道。也许 IP 包遭遇了线路硬件故障被丢弃,或网络路径拥堵被丢弃,或者服务器压根就没有开机,最终这个 IP 包消失得无踪无影。老司机犯愁地自言自语:那可怎么办才好呢?不远处 IP 进程听到了:臣妾也不知道啊!
最终老司机想出了一个办法,先不发 HTTP,先要确保自己的 IP 包(没有任何用户数据)可以到达服务器,并且服务器的 IP 包也可以返回,这样做的好处是:
一方面,可以保证双向的路径(路由)是畅通的,没有防火墙或访问列表的阻挡;
另一方面,如果 IP 包可以返回,说明服务器是正常工作的。这样老司机的所有担忧就都一一化解了。
这个方法是如何工作的呢?

第三步:HTTP 触发 TCP 进程三次握手连接
小明 TCP 司机:老大,有空吗?想和您唠唠,听到请回答!
服务器 TCP 老司机:小明,听得到,你能听到我吗?
小明 TCP 司机:听得到!
既然双方都可以听到对方(发送 IP 包到对方,并从对方接收 IP 包),那么就可以将小明的 HTTP,使用这个三次握手建立的 TCP 连接发送出去。但是,莫急,TCP 三次握手本身也会使用 IP 进程(程序)来完成发送,由于小明电脑与服务器不在一个网段,所以是三次不同网段的通信,上文详细阐述过整个过程,不再赘述。
在 IP 进程的眼里看,三次握手就是三个 IP 包(暂不考虑超时重传)的交互,还没有传输浏览器的 HTTP 之前,已经花费了来回三个 IP 包的代价。
此时,TCP 老司机是如何传输真正的 HTTP 的呢?

第四步:TCP 传输 HTTP
这个不难,只要使用 TCP 头将 HTTP 打包起来,包的格式为 TCP + HTTP,发给 IP 进程就好了。那么,在 IP 进程眼里,只是一个 IP 包而已,IP 包的格式为 IP + TCP + HTTP。那怎么知道对方是否接收到这个 IP 包呢?
TCP 确认收货机制
对方发一个确认,喊一嗓子:IP 包已收到,那么小明 TCP 进程就放心了,喃喃自语道:收到就好……
这里还有一个问题,小明 TCP 进程如何知道是哪个 IP 包被对方确认收货?
大家都有网购经验,卖家发货时,会在外包装上打上一个序列号,当买家确认收货时(确认产品序列号),这样卖家就知道某件产品已经安全无误地到达买家手中。
TCP 将每个字节标记机制
同样的原理可以用在 IP 网络通信中。技术来源于生活,而高于生活。为了保证可靠传输,用序列号标记一下 IP 包,标记在什么地方呢?
TCP 头有一个 Sequence Number,它就是序列号,就是为了实现这个目的的,比如小明的 TCP 进程要传输 1000 字节数据,初始序列号从 1 开始,那么 Sequence Number 设置为 1,然后 TCP 把这 1000 个字节打包,然后层层地封装、传输,并最终到达服务器 TCP 进程。
TCP 确认收货方法
服务器如何确认呢?
TCP 有一个字段是专门干这个的,确认收货号 Acknowledge Number,那么这里这个 Acknowledge Number 应该是多少呢?是 1001,为什么是 1001,难道这个和一千零一夜有关?
No!
1001 是告诉对方,从初始序列号 1 开始的 1000 个字节已经成功接收,准备好接收序列号从 1001 开始的数据了,这个应该很好理解吧?
小明 TCP 进程接收到此确认收货,就安心等待服务器将 HTTP://www.baidu.com 的页面发送过来了。
这个过程一个数据、一个确认收货,一共两个 IP 包。

第五步:服务器将自己的网页回传
服务器将自己的主页封装成 HTTP 格式,为了方便表达,假定主页只需要一个 TCP 就可以传输,此过程和第四步相似,即服务器 TCP 进程发给小明电脑一个 IP 包(包含网页),小明电脑回复一个收货确认(没有任何数据,只有 IP + TCP),那么一共两个 IP 包。
简而言之,TCP 的可靠传输机制:己方数据发送,对方确认,就这么简单。
第六步:释放 TCP 连接
小明浏览器将接收到的网页输出到屏幕上,任务就基本完成了。为什么说基本完成,而不说完全完成?因为还需要将之前建立的 TCP 连接断开,有同学会疑惑,为何要释放 TCP 连接?
因为数据已经传输完毕,TCP 连接依然活得好好的,但 TCP 连接会占用资源,比如会占用 TCP 端口资源、内存资源,既然不用了,就释放出来给有需要的应用程序使用。

* 通俗解释 TCP 关闭连接

TCP 连接可以看成两个水管,一个进水管,一个出水管。
从小明 TCP 进程来看,自己发数据用的是出水管,而接收服务器的数据使用进水管,释放连接意味着将两个水管都关闭。
如果小明没有数据要发给服务器,那可以放心地关闭出水管,但不能关闭进水管,因为进水管也许还有水,或者对方还需要继续运水过来,小明贸然关闭进水管不妥,可能会造成数据丢失。
所以进水管还是让对方来关闭比较恰当,因为对方会真正知道到底还有没有水要运输!
关闭 TCP 连接的步骤:
1)小明 TCP 进程:老大,我没有水要运了,准备关闭我的出水管了,收到请确认!
2)服务器 TCP 进程:小明,你的出水管里的水已经接收完毕,可以放心关闭,确认完毕!一旦小明接收到确认,出水管就完成关闭,不能再用出水管运水了。
此时,假设服务器也没有水要运给小明了,所以决定关闭服务器的出水管。(小明的进水管)
3)服务器 TCP 进程:小明,我也没有水要运了,准备关闭我的出水管了,收到请确认!
4)小明 TCP 进程:老大,你的出水管里的水已经接收完毕,可以放心关闭,确认完毕!
一旦服务器接收到确认,出水管(小明的进水管)就完成关闭,不能再用出水管运水了,服务器 TCP 进程释放资源。
小明 TCP 进程发出去的确认,自己无从知道是否对方已经接收到,除非对方超时重传关闭出水管的消息,小明启动一个定时器等待,如果超时以内没有接收到任何重传的消息,说明对方接收到自己的确认,那就彻底关闭 TCP 连接,释放所有资源;而如果接收到对方超时重传,自己再确认,然后再等待,直到最终确认对方接收到自己的确认。
这里不考虑超时重传,为了关闭 TCP 连接,一共使用了四个 IP 包。那么整个通信过程一共使用多少个 IP 包呢?
小明举起了手:车教练,一共是十一个!
车教练循循善诱:十一个是怎么来的?
小明:建立连接是三个,双向通信是四个,释放连接是四个。
车教练:回答完全正确,小明,考试合格,可以开车上路了……


参考:
https://blog.csdn.net/u013485792/article/details/50731538
http://www.qingpingshan.com/m/view.php?aid=215832

网络原理-网络拓扑之NAT

一、NAT含义


大白话:NAT就是将内网地址 翻译成外网地址。可以是一对一(静态转换),多对多(动态转换),多对一(端口多路复用)
NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

二、NAT分类


NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。

1、静态转换Static Nat

静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

2、动态转换Dynamic Nat

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

3、端口多路复用(Port address Translation)

 端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

也被称为NAPT【(Network Address Port Translation),即网络端口地址转换】、“多对一”的NAT、地址超载(address overloading)。

三、ALG(Application Level Gateway)


即应用程序级网关技术:
在静态转换和动态转换中,内网中的一个ip都会被转换成外网的一个ip;所以数据流要改ip层和mac地址层。上面的网络层不需要修改。
在端口转换中,内网的一个应用请求,会被转换到外网的另一个端口作为请求。这样外网的一个ip地址,可以利用不同的端口完成来自不同的内网ip的请求。此时需要修改mac层,ip层和传输层。

但是一些应用层协议,在协议数据报文中包含了地址信息。为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG的技术,它能对这些应用程序在通信时所包含的地址信息也进行相应的NAT转换。例如:对于FTP协议的PORT/PASV命令、DNS协议的 “A” 和 “PTR” queries命令和部分ICMP消息类型等都需要相应的ALG来支持。
如果协议数据报文中不包含地址信息,则很容易利用传统的NAT技术来完成透明的地址转换功能,通常我们使用的如下应用就可以直接利用传统的NAT技术:HTTP、TELNET、FINGER、NTP、NFS、ARCHIE、RLOGIN、RSH、RCP等。

四、NAT超时介绍


因为 IP v4 的 IP 数量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯。
大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT 表中的对应项,造成链路中断。
长连接心跳间隔必须要小于NAT超时时间(aging-time),如果超过aging-time不做心跳,TCP长连接链路就会中断,Server就无法发送Push给手机,只能等到客户端下次心跳失败后,重建连接才能取到消息。


参考:
端口映射 和 nat 区别不是 太大
http://blog.sina.com.cn/s/blog_4988d99a0102wt97.html
NAT超时介绍
https://blog.csdn.net/hbjixieyuan/article/details/55048881
nat 教程 https://wenku.baidu.com/view/34b016673169a4517623a33e.html

网络原理-网络拓扑之两台电脑直连的问题

两台PC直连,设置不同网段的ip,能ping通吗?

首先:两台pc直连,设置相同网段IP 是可以ping通的。

如果不同网段:
pc1———-1.1.1.1/24
pc2———-2.2.2.2/24

两台电脑直连且不再同一网段默认是ping不通的,首先要理解ping的原理。

PC1在ping之前先检查目的IP与本机IP是否属于同一网段。

【大白话就是查询路由表(pc也有路由表),发现当前路由表中没有去往目的网段的路由,因为pc1只有1.1.1.0/24,没有2.2.2.0/24的路由】

如果属于,就在自己的ARP表里查询是否有目的IP的MAC地址,如果有,封装好以后把ping包发出去(我管你收不收得到,我发了在说),如果没有,就发ARP查询。查询到目的MAC以后再封装发送。如果不属于同一网段,就只能找网关帮忙了,啥?网关也没有?不好意思,直接把包丢弃了- -我压根懒得发。。。如果有网关,先查ARP表有没有网关MAC,如果有就封装好发走,如果没有就ARP查询,楼主的情况,因为PC2与PC1不在同一网段,PC2在收到PC1的ARP请求后,发现目的IP不但不是给我的,而且与我也根本不在同一网段(网关与本机IP需要指定为同一网段),我丢得比谁都快。。。,所以PC1连网关的MAC都得不到,ping包都还没准备呢就胎死腹中了。最后ping的结果request timed out。

下面的互指对方IP为网关是可行的,但仅限于真机能实现,CPT和GNS3都无法模拟。

不同网段主机也是可以让它们ping通的
pc1———-1.1.1.1/24
pc2———-2.2.2.2/24
解决办法是互指对方地址为网关

gw 2.2.2.2 gw 1.1.1.1
默认网关就是一条默认路由,有路由就能发包,一发包就需要源mac和目的mac的封装。这种方法只能在pc上做,这时候会发ARP,查询对端地址的mac,最后就通了,我拿真实pc做过。

 

 

参考:

http://tieba.baidu.com/p/1424368917?pid=31989408832&cid=0#31989408832

https://blog.csdn.net/dog250/article/details/68951615

 

网络原理-路由器AP、中继、桥接、Client等模式比较

现在的路由大多数已经开始支持多种网络连接模式,常见的有有AP(接入点)模式、Router(无线路由)模式、Repeater(中继)模式、Bridge(桥接)模式、 Client(客户端)模式;

 

AP(接入点)模式


大白话:就是一个带有无线功能的二层交换机【也有人说是带有无线功能的hub】但是我感觉,路由器的功能很强大,hub都淘汰了,AP应该属于待无线的二层交换机。

接入端用网线连接LAN口,输出端可以是LAN口,也可以是无线;WAN端口空闲。

所以,AP和上一层的网络 属于同一个网段内,路由器不需要开启DHCP,但需自行设置路由器IP。【可以不设置,路由器向该网段主路由器即DHCP服务器发送请求,然后自行设置,但为了便于管理AP路由器,自行设置该路由器IP,方便访问和管理】

所以路由器AP模式下,接入端的网线必须能上网才能使用。

 

 

Router(无线路由)模式


在Router(无线路由)模式下,路由器就相当于一台普通的无线宽带路由器;平时我们使用的都是这种模式。需要连接ADSL Modem(猫)或者光猫等设备来进行配置。

一般家里用的宽带拨号上网就是这个模式,路由器WAN端口连接猫,LAN端口和无线网络连接需要上网的设备。

这个模式下,路由器提供DHCP服务器功能【给本地局域网设备分配IP】,PPPOE拨号功能【提供拨号上网认证功能】

 

Bridge(桥接)模式


 

 

Bridge(桥接)模式,路由器会通过无线的方式与一台可以上网的无线路由器建立连接,用来放大可以上网的无线路由器上的无线信号;

注意:放大后的无线信号的名称和原来的无线路由器的无线信号名称不一样。

大白话:桥接模式下,路由器就像一台有无线功能的二层交换机,网络号和上层路由器一样属于同一个网络。【如上图中 123路由器 和 上层 abc 路由器 属于同一个网络段】   

AP模式和桥接模式本质上是一样的,主要区别就是接入端不同,一个用网线接入该路由器的LAN口,一个用无线接入该路由器。

桥接模式下的路由器不需要DHCP,【可以设置IP,方便自己登陆管理路由器】。不设置的话路由器会自动向上级路由器请求分配IP,因为IP地址你不知道,所以无法用浏览器   访问绑定了   路由器管理界面   的正确IP地址  。

 

Repeater(中继)模式


 

Repeater(中继)模式下,路由器会通过无线的方式与一台可以上网的无线路由器建立连接,用来放大可以上网的无线路由器上的无线信号

注意:放大后的无线信号的名称和原来的无线路由器的无线信号名称一致。

大白话:用无线接人中继模式下的路由器,输出端包括LAN端口和无线网。中继模式的路由器和上层的路由器属于两个不同的网段,中继模式的路由器有自己的DHCP和子网。

中继模式和路由模式差不多,区别就是没有PPPOE拨号,接入方式为无线,不是WAN端口。

 

Client(客户端)模式


客户端模式下的路由器相当于一块无线网卡,用来接收其它无线路由器上的无线信号;电脑只能够通过网线连接到 客户端模式下的路由器上使用。

大白话:就像笔记本电脑上的无线网卡那样工作,仅连接其它的无线网络,而不发射自己的无线网络信号。对于无线路由器来说,这种模式相当于启用了一个无线的WAN口,且下面的电脑只能通过有线方式接到此设备。
该模式下无线路由器仍然提供DHCP及NAT功能,内部四个LAN口组成的单独IP地址段局域网,通过无线路由器上自己的网关,连上外部主网络。

 

客户端桥接(Client Bridge)模式


和“客户端”模式一样,相当于启用了一个无线的WAN口,且下面的电脑只能通过有线方式接到此设备。不过,内部的LAN口组成的局域网和连接上的无线网段处于相同的IP地址段。内部的DHCP请求也会被转发到主无线网络上。

 

 

参考:
https://www.jianshu.com/p/b4091fb430ab
https://www.cnblogs.com/pengdonglin137/p/3485974.html
http://service.tp-link.com.cn/detail_article_458.html
 

网络原理-计算机网络详解-网络分类子网划分及超网

网络分类,子网划分,网络号与超网

网络分类:传统的 ABCDE网络分类,规定的是在同一个网络中,有几个主机号。其实每一个主机号都有公网IP,相当于不同网络中的主机可以用ip直接访问。本质上来讲,所有的主机都处于同一个网络中,只是人为的划分了ABCDE网络。

大白话:网络掩码只代表网络号的位长,需要主机ip相与才能确定网络号。

无论子网还是超网,都有一个网络地址和广播地址。

家里路由器 子网掩码 255.255.255.128  路由器ip 192.168.1.129  。网络位比基本网络位24多一位。 可以用 192.168.1.129/25 表示路由器IP。192.168.1.128/25 表示 网络地址。192.168.1.255/25 是广播地址。网络段号也叫网络段:就是从网络地址-广播地址(因为可以计算,就简单用网络地址表示网络段 即用192.168.1.128/25表示)

大白话:其实一个ip就代表一台主机的意思,至于 掩码 就是用来确定这台主机属于那个子网的。比如x.x.x.x./32 就是说 该主机 自己单独一个网。这样一来,掩码的实际用途就是对内网主机私有ip的网络划分。尽管内网的主机ip有好多个,但是采用NAT技术可以使用少量的公网IP,来对外网进行访问。

至于因特网,它上面的每一台主机地位都相等,每一谁是谁的内网一说。所以因特网上面的主机ip都应该是x.x.x.x/32 

当然内网可以采用 多条宽带叠加上网:

1、买多WAN口的路由器,内网分配给手机或电脑就一个ip。相当于内网可以有对个公网IP出入口。
2、电脑同时连接无线和有线,电脑同时具有无线IP和有线IP且两个不相同。还要设置跃点数相同。

平时上网的时候,只会用一个ip,下载的时候多进程 ,会用两个IP 下载。

1、网络分类与保留地址

在主机或路由器中存放的IP地址(IPv4)都是32位的二进制代码。它包含了网络号(net-id)和主机号(host-id)两个独立的信息段。网络号用了标识主机或路由器所连接到的网络,主机号用来标识该主机或路由器。

为了提高可读性,每8位二进制数用一个十进制数(0~255)表示,并以小数点分隔。这种标记IP地址的方法称为“点分十进制记法”,IP地址的网络号在左边,主机号在右边。

根据固定的网络号和主机号位数的不同,IP地址分成了五类:A类、B类、C类、D类和E类。其中最常用的是A类、B类和C类。

1. A类地址
⑴ A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。
⑵ A类地址范围:1.0.0.1到126.255.255.254。
⑶ A类地址中的私有地址和保留地址:
①10.0.0.0到10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
② 127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。

最大网络数127个(1~126是可用的,127作为本地软件环回测试本主机之用)
每一个A类网络中最大主机数是1 677 214(即224-2)个。减去2个的原因是去掉一个主机号全0的地址(网络地址)和主机号全1的地址(广播地址)

2. B类地址
⑴ B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。另外第1个字节的前两位固定为10。
⑵ B类地址范围:128.0.0.1到191.255.255.254。
⑶ B类地址的私有地址和保留地址
① 172.16.0.0到172.31.255.255是私有地址
  ②169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临得获得一个IP地址。【在mac 电脑中,用 netstat -r 查看路由表时,发现有 169.254 网段,现在明白了 】最大网络数16384个,每一个B类网络中最大的主机数是65534(216-2)个

3. C类地址
⑴C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。
⑵ C类地址范围:192.0.0.1到223.255.255.254。
⑶ C类地址中的私有地址:192.168.0.0到192.168.255.255是私有地址。
最大网络数2 097 152, 每一个C类网络中最大的主机数254(28-2)个

4.D 类地址的网络号为1110,用于多播(一对多通讯)。E 类地址的网络号为1111,保留以后使用。

广播地址分为两种:直接广播地址和有限广播地址 有限广播地址也称为本地广播地址,TCP/IP协议规定32比特全为1的IP地址(255.255.255.255)用于本网广播。 在主机不知道本机所处的网络时(如主机的启动过程中),只能采用有限广播方式,用于从网络IP地址服务器处获得一个IP地址。

该地址用于主机配置过程中IP数据报的目的地址。此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。【需要进一步去了解上网信息流全过程】

当广播地址包含一个有效的网络号和主机号,技术上就称为直接广播地址。


2、子网划分

采用借位的方法,从主机最高位开始借位变为新的子网络,剩余部分仍然为主机位,使本来应当属于主机号的部分改变为网络号,这样就实现了划分子网的目的。借位使得IP地址的结构分为3部分:网络位、子网位和主机位。

网络位            +    主机位      ——>网络位+子网位     +    主机位

假设某公司有一个C类地址202.110.1.0,现将主机字段的前3位作为子网号,后5位作为主机号,这样该公司最多可划分8(23)个子网,每个子网有30(25-2)个主机地址可以分配。

子网数=2x个(X=借位数)

                 主机数=2y-2个(Y=主机位)

3、网络掩码

子网掩码(subnet mask)又叫网络掩码地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址主机地址两部分。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
网络掩码最长可以和IP地址一样长,32bit位或四个字节长。
比如DNS服务器8.8.8.8/32掩码就是32位,其网段号为10.10.10.10,主机号没有,那么这个网段就这一台主机,所以有没有主机号就无足轻重。
网络掩码最短是多少?
0位,比如路由表 中的 缺省路由 0.0.0.0/0 ,这条路由代表所有IP网段。
所以对应的网段号长短介于0-32位之间。路由器,按照最长匹配原则,主机会优先32位长的路由,来匹配IP包中的目的IP 地址。
大白话讲网络掩码:
网络掩码就是:  全是1的N位长,N位长就是用来表示 掩码的位数。后面用零补充到
32位。
根据网络掩码的位长,匹配 取出对应ip的位数,后面全补零,就是网络号了。其实就是将掩码与ip相与,获得网络号的意思。该网络号-左边最长的标准网络号(8位,16位,24位)剩余的部分=子网络号。
即:网络号=标准网络号+子网络号(有时后子网络号不存在)
一般掩码数8位,16位,24位,32位:这种是刚好 占据了1个,2个,3个,4个字节。
占了4个字节的网络掩码 没有主机号,只代表 一个主机 占了一个 IP 节点。
有主机号的ip节点,就代表一个ip出口,里面有内网,内网主机共享了一个对外ip节点。
其他那种,不是整个字节的:
就称为子网掩码好了,例如:
定义子网掩码的步骤为:
A、确定哪些组地址归我们使用。比如我们申请到的网络号为 “210.73.a.b”,该网络地址为c类IP地址,网络标识为“210.73.a”,主机标识为“b”。
B、根据我们所需的子网数以及将来可能扩充到的子网数,用宿主机的一些位来定义子网掩码。比如我们需要12个子网,将来可能需要16个。用第四个字节的前四位确定子网掩码。前四位都置为“1”,即第四个字节为“11110000”,这个数我们暂且称作新的二进制子网掩码。
C、把对应初始网络的各个位都置为“1”,即前三个字节都置为“1”,则子网掩码的间断二进制形式为:“11111111.11111111.11111111.11110000” 。
D、把这个数转化为间断十进制形式为:“255.255.255.240” 。
核心解释就是:子网掩码 计算时 x.x.x.x/y
y要掩盖住前面的(8,16,24其中的一个,看看和哪个比较接近就掩住,未掩住的剩下的几位,就是 子网号。子网号 每一位可以取0或1,就可以分割成 2^(未遮掩未数)个子网啦   )

四、超网

超网(supernetting),也称无类别域间路由选择(CIDR)。子网就是 将256个主机细划分成多个子网。超网就是将 多个 256个主机的子网,合并成一个大网。

1、首先 判断 是什么类型的网络(根据给定的IP地址),A类,B类,C类。这样做可以确定基本的网络位。

2、接下来判断 是子网还是 超网,根据掩码计算出的 网络位 和 基本网络位,进行比较。如果 网络位大于 基本位,那就是子网。超出的位数X,代表 2^x的子网数目。如果 网络位 小于基本位,那就代表是超网。超网只代表 一个大网络。缺少的位数+基本主机位 = 整个主机位 可以占用的位数 。

1.1.0.0/24  一个子网 可以容纳 256个主机

1.1.1.0/24  一个子网可以容纳256 个主机

将两个网络合并,可以用超网表示:

1.1.0.0/23 【这里应该是24-23,第三个字节是被合并的子网数,只有一位,可以表示0或1,刚好就是00000001.00000001.00000000.X 和00000001.00000001.00000001.X,第三个字节的最后一位表示合并子网数,上面的X就代表每个被合并的子网的主机有256个】

超网的合并需要 连续的子网。

========================================================

 在配置ACL时碰到这样一个地址范围:59.39.80.0-59.39.127.0,如何划分超网才使ACL条目最少呢?
 59.39.80.0转化为2进制为:
00111011.00100111.01010000.00000000
↑取全0之前位数为网络地址位,即59.39.80.0/20[59.39.80.0-59.39.95.255]得到一个超网
然后余下的地址以59.39.96.0开始,
59.39.96.0转化为2进制为:
00111011.00100111.01100000.00000000
↑取全0之前位数为网络地址位,即59.39.96.0/19[59.39.96.0-59.39.127.255],全部覆盖此地址池.
一共得到两条ACL,分别为:59.39.80.0/20、59.39.96.0/19

 

参考:
https://jingyan.baidu.com/article/ae97a646d936ddbbfd461d02.html
https://www.cnblogs.com/RzCong/p/5458962.html

网络原理-计算机网络详解-网络层概述

网络主要 分为:

1、IP网络(TCP/IP 网络协议)

2、NetWare网络( IPX/SPX网络协议)   目前已经停止维护了,废弃了。

3、X.25网络,网络层采用分组级协议(PacketlevelProtocol,PLP)

根据现实环境,本文只介绍IP网络的协议


一、上网信息流程分析

看这里的博文

二、IP协议

网络之间互连的协议(IP)是Internet Protocol的外语缩写, 中文缩写为“网协”.
网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,可以分为5类。另外,IP还有进入防护,知识产权,指针寄存器等含义。

大白话:我们常说的IP就是 IP地址。tcp/ip 网络模型 中的网络层用的就是IP数据包。

版本号(Version):长度4比特。标识目前采用的IP协议的版本号。一般的值为0100(IPv4),IPv6的值(0110)

首部长度(Header Length)占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。也就是说可选字段长度可以是4字节,8字节等。

区分类型(Type of Service):长度8比特。这个子段可以拆分成两个部分:Precedence和TOS。TOS目前不太使用。而Precedence则用于QOS应用。(TOS字段的详细描述RFC 1340 1349)

IP包总长(Total Length):长度16比特。IP包最大长度65535字节。包括首部长度和数据部分长度。【以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的. 这个1500字节被称为链路层的MTU(最大传输单元).
但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区。并不包括链路层的首部和尾部的18个字节。所以事实上,这个1500字节就是网络层IP数据报的长度限制】

生存时间(TTL):长度8比特。当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于故障而导致IP包在网络中不停被转发。

协议(Protocol):长度8比特。标识了上层所使用的协议。指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。

首部校验和(Header Checksum):长度16位,由于IP包头是变长的,所以提供一个头部校验来保证IP包头中信息的正确性。因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。

起源和目标地址(Source and Destination Addresses):这两个地段都是32比特。标识了这个IP包的起源和目标地址。

可选项(Options):该字段由起源设备根据需要改写。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。【经过抓包分析,如果ip包装载的是 udp 和 tcp ,那么ip头部不会添加可选项】

目前,这些可选项定义如下:
(1)安全和处理限制(用于军事领域)
(2)记录路径(Record route)(当IP包离开每个路由器的时候记录路由器的出站接口的IP地址)
(3)时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)
(4)宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)
(5)严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址) 这些选项很少被使用,并非所有主机和路由器都支持这些选项。

标识符(Identifier):长度16比特。在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。该字段和Flags和Fragment Offest字段联合使用,对大的上层数据报进行分段(fragment)操作。

标记(Flags):长度3比特。该字段第一位不使用。第二位是DF位,DF位设为1时表明路由器不能对该上层数据报分段。如果一个上层数据报无法在不分段的情况下进行转发,则路由器会丢弃该上层数据报并返回一个错误信息。第三位是MF位,当路由器对一个上层数据报分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。

片偏移(Fragment Offset):长度13比特,片偏移的单位为 8 字节。该字段对包含分段的上层数据的IP包赋予序号。由于IP包在网络上传送的时候不一定能按顺序到达,这个字段保证了目标路由器在接受到IP包之后能够还原分段的上层数据报。到某个包含分段的上层数据报的IP包在传送是丢失,则整个一系列包含分段的上层数据的IP包都会被要求重传。

三、与 IP 协议配套使用的还有三个协议:

  • 地址解析协议 ARP(Address Resolution Protocol)
  • 网际控制报文协议 ICMP(Internet Control Message Protocol)
  • 网际组管理协议 IGMP(Internet Group Management Protocol)