计算机网络(四)网际层

物理层也有叫转发器的,网络层中继系统用路由器,由于历史观音,很多书将路由器称为网关,也就是说它能拆出IP,网络层以上的叫网关。

区分服务很高级,总长度是首部和数据长度,16位,最大65535字节,但平时没这么长的。

标识是分片用,标志(19-16=3字节)最低位为1表示还有分片,为0表示没有分片了,中间一个位DF=1表示不能分片,为0表示可以分片。片偏移,相对于用户数据字段的起点,以8个字节为偏移单位,就是最后要x8.

版本永远是6了,通信量类没用,流标号也太高级,有效载荷长度是内容长度下一个首部用于应用层。条数限制很好理解。

网络层就是IP。

ICMP被封装在IP数据报中,对于第一个分片后的数据报片,不发送ICMP差错报文了,对于广播报文,也不发送ICMP报文。

ICMP差错报告都是采用路由器到源主机的模式。

地址解析协议ARP

网际控制报文协议ICMP

网际组管理协议ICMP

IP地址编址方法分为3个阶段

分类的IP地址->子网的划分->构成超网

分类IP地址分为ABCDE五类,网络号ABC分别为1,2,3个字节长,但是类别位也占有相应的位。D类地址为多播,E类保留以后使用。

由于广泛使用无分类IP路由选择,ABC类地址已经成为历史。

IP地址全零表示本主机,A类地址虽然可以从0~127,但是网络地址0和网络地址127都是没用的,

网络号127仅代表回送地址,网络号为0根本就不是一个网络,通常用作路由器的默认选择。

这仅仅是网络号的情况,主机号也是有两个不能用的,全0代表本网络,全1代表该网络的所有主机。

b类网络第一个网络号是128.0 但是我们不指派 我们用它来表示b类网络本身(只是开始这么规定 但是实际上没什么鸟用 128.0已经被用了 可以去查查看)

同样,c类的192.0.0.0也是不能用的,从192.0.1.0开始。

应该对于多播而言,但是ABC类是单播的啊?

 

A类:1-126 B类:128.-191 C类:192-223

D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户[1]  。

E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。

网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。

B类地址也是有一个不可指派的,C类地址也是有一个不可指派的,那就是网络号最小,主机号为0

局域网是网络号相同的网

转发过程呢,就是ip数据报数据被装进以太帧,然后发送到局域网主干线上,被路由器接收,路由器经过拆包找到IP地址,查路由表,封进PPP帧的以太网帧发送到外面的路由上

因此必须有IP地址与MAC地址转换的过程,肯定是看见这个IP,找对应的MAC,如果说是直连的,那么发到那里就可以了,如果不是直连的呢?

ARP协议就是用IP找MAC的,ARP高速缓存里记载了这个的哈希表。

填高速缓存呢,是在本局域网广播一个ARP请求分组,想知道那个IP的MAC帧是多少。

如果不是这个IP的主机不管,是这个IP的主机响应,返回这个分组。ARP广播也是有特点的,它仍然是单播。

如果没有这个IP地址呢,这个ARP协议管不了,ARP只管局域网,就发送到默认路由,路由在因特网上的转发也是ARP协议,反正最后能转发到,让它发出去。这是很常见的,因为ARP高速缓存只有10分钟的时间。而且IP也是有生存时间TTL的,一旦到达那个TTL就不行了。TTL一般远小于1秒。

因为IP是由网络号+主机号构成,一般就能查找到对应网络的路由,这个概率大得多。

 

IP能将上面的数据进行分片。

IPv6单播地址的类型可有多种,包括全球单播地址、链路本地地址和站点本地地址等。
1. 全球单播地址等同于IPv4公网地址,提供给网络服务提供商。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
2. 链路本地地址用于邻居发现协议和无状态自动配置中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据报文不会被转发到其他链路上。就像自动分配的ip
3. 站点本地地址与IPv4中的私有地址类似。使用站点本地地址作为源或目的地址的数据报文不会被转发到本站点(相当于一个私有网络)外的其它站点。

IPv6地址被分为单播地址、组播地址和任播地址。

4. 内嵌IPv4地址的IPv6地址 如 :::ffff:192.168.10.1。当需要将IPv4单播地址与IPv6全球单播地址建立联系的时候一般使用这种地址,分为两种。一种是IPv4兼容IPv6地址,另一种是IPv4映射IPv6地址。

     IPv4兼容IPv6地址构成形式是96位0加上32位IPv4地址,如 ::192.168.1.1,这种地址最初用于IPv4和IPv6之间的过渡计划,但现在已经不再需要。

     IPv4映射IPv6地址构成形式是80位0加上16位1,再加上IPv4地址,如::ffff:192.168.1.1。
————————————————
就是0和1的差别

5. 本地链路地址,前缀固定fe80::/64,如 fe80::e0:f726:4e68。凡是源地址或目的地址包含由本地链路地址的报文,路由器不应当转发它。这样的报文只能在LAN中互通。

6. 本地站点地址,前缀fec0::/10,紧接着54位子网ID,作用相当于IPv4中的私网地址,如fec0::e0:f726:4e68。只能在本站内使用,不能在公网上使用。

7. 多播前16位都是1,也就是ffff

8. 任播地址从单播地址空间中进行分配,使用单播地址的任何格式。因而,从语法上,任播地址与单播地址没有区别。被分配具有任播地址的节点必须得到明确的配置,从而知道它是一个任播地址。目前,任播地址仅被用做目标地址,且仅分配给路由器。

一个合法的单播ip地址的后64位不能全为0,4个16位

因为IP利用率低,所以有子网的概念。

子网已经成为互联网正式标准。所有的网络都必须使用子网掩码。

子网掩码是包括网络号+子网号都是1,只有主机号是0,这样。

那子网掩码存在哪里呢?在路由表中也有子网掩码一栏。如果一个网络不划分子网,那么该网络的默认子网掩码是网络号的子网掩码。路由器在和相邻路由器的路由表交换信息的时候,必须将自己所在的网络的子网掩码告诉相邻路由器,子网掩码由路由器保管。

 

IP转发的顺序就是:直接主机->直接路由(目的地就是路由)->同网络路由->默认路由

 

无分类编址CIDR(超网)

2011年2月3日,IPv4耗尽了。

CIDR消除了分类地址和子网的概念。分为网络前缀和主机号,变成无分类的两级编址,两级地址的返璞归真。

CIDR使用斜线记法,在IP地址后面加上斜线,然后写上网络前缀的位数。但是它的实现方法仍然跟子网掩码一模一样。CIDR也会降低路由表中 地址的数量。

甭管哪一种方法,全0或者全1的主机号一般都不用。

CIDR一般匹配最长网络号的那个路由,但是这样查找就变得更复杂了。用二叉搜索会更快。

ICMP相对于IP就相当于LCP相对于PPP,是一个控制协议,用来差错报告和询问,例如终点不可达,时间超过,参数问题,回送请求和回答。它的一个应用就是ping,一般而言,就用来ping谷歌就好了,其他的主机一般也不让你ping。Ping的原理就是简单的ICMP。

第二个是tranceroute/tracert,也是第三层的东西,用来跟踪一个分组从源点到终点的路径。它的原理就是一开始只是TTL为1的包,依次增加,依次返回ICMP出错报文,这样就知道路径了。

 

路由选择协议,连接到目标的路由通道有好几种,选哪一种呢?当然是最短的,那算法是怎样的?这就是路由选择协议。

实际上,这种选择非常困难,分为静态路由选择(简单,适合小网络)和动态路由选择(复杂,开销大,适合大网络)。

根据以上特点,将路由选择策略分为局域网和互联网两种,局域网使用内部网关协议IGP,例如RIP和OSPF,(早期没有路由一说,所以这里是网关,你知道就好)互联网使用外部网关协议EGP,局域网与局域网之间的连接,用BGP-4.

内部电脑,是有限的,怎么着也好说,但是外部电脑,尤其距离相当远,根本没有直连,这怎么?

路由之间交换可达性,就是到达目的网络N可经过某局域网出头路由X。应该禁止走某一个局域网的出头路由。这是路径向量路由选择协议。

首先说,每个网络的出头路由叫做BGP发言人,可达性信息就是到达某一个局域网索要经过的一系列出头路由。看来这是一个链表。然后本路由整理这些链表,形成一个联通树。这个联通树就是整个互联网的规模,当然,这个出头路由应该是一个超级计算机了,是ISP运营商管理的。

再看RIP和OSPF协议

RIP协议是向量距离协议,就是换啊换,就没了。OSPF协议就是全图的了,链路状态协议了。

RIP协议仅和相邻路由交换信息,交换本路由器所知道的全部信息,即自己的路由表,按固定时间间格交换路由表,例如30秒,路由表中的信息是到某个网络的最短跳数和下一跳的路由地址,得益于RIP交换信息,这些信息还是很好获取的。

ICMP协议是用IP协议,但是RIP协议被塞进了UDP,UDP被塞进了IP中。

RIP好消息传播的快,坏消息传播的慢,为什么呢?例如一个网断了,跟它相邻的路由自然要填16,但是如果提前它的下一个路由发来距离为2,那么它就有可能认为这个下一个路由可能不经过它直通那个网,实际上是通过它的,这样一比较,这个路由就把16给抛弃了,这就是坏消息传播的慢。在目前规模较小的网络中,使用RIP仍占多数。

OSPF协议是为了克服RIP的问题开发的,用最短路径优先Dijkstra提出的最短路径算法SPF。

那么你说了,一个局域网是基于以太网总线呢?还是基于路由呢?按理说,同一个网络号的是同一个局域网,也就是说,在一条以太网总线上的主机能够直接知道MAC地址,但是对于IP则没有什么要求,毕竟这是第二层。一个局域网是一个网络号的,既然用到网络号就必然用到路由,这是一个矛盾,以后解决,现在的观点是每台主机跟别的机子交流都经过路由。用路由连接起来的叫自治系统。同一条以太网线上的网络号都是相同的,连着一个路由器,就是这样。不同路由器连接起来,叫做一个自治系统,连着一个出头路由,这就是三层结构了。

问题是,两个同网络号的主机交换信息,用IP获得MAC地址,直接发过去,就这样。

OSPF用洪范法向所有的路由器发送信息,就是路由器通过所有的端口向所有相邻的路由器发送信息,而每一个相邻路由器又在将此信息发往其所有相邻路由器。最后所有路由器都会保留一个这个信息的副本。发送的信息是本路由器相邻的所有路由器的链路状态,就是与其相连的代价,这个信息比跳数更丰富。只有当链路状态发生变化时,路由器才会向所有路由器用洪范法发送此信息。由于频繁地交换链路状态信息,所有的路由器最终都能建立一个链路状态数据库,也就是全网的拓扑结构,全网一致,这样用Dijkstra法就方便填路由表了。能够适用于规模很大的网络。

一个自治系统包含一个出头路由,若干普通路由,而一个局域网包含若干主机,一个路由(用以太网主干线连接起来),而一个区域则是由几个路由连接起来的。区域的目的在于减少洪范法增加的信息量。在区域边上的路由器叫区域边界路由器。在主干区域内的路由器叫主干路由器。还有自治边界路由器,虽然说,根据层数可将网络划分为两层(局域网和互联网),但是在路由器着一层面上,都TM的n层了。

OSPF直接用IP传送。使用可靠的洪范法(就是仅仅发回一次确认,那么它就有能力不发重复的),OSPF一般30分钟刷新一次数据库的链路状态。

 

接下来是IPv6

我国在2014-2015年逐步停止了向新用户和应用分配IPv4地址,同时全面开始商用部署IPv6,目前为止IPv6还只是草案标准阶段。

IPv4一共32位,4字节。

IPv6一共128位,16字节,首部与IPv4并不兼容,首部长度是固定的,基本首部40字节。

冒号十六进制记法,每16位用4位十六进制表示,最多有8个单元。

CIDR斜线法仍然有用。

IPv6的环回地址是0:0:0:0:0:0:0:1,可缩写为::1

IPv6过渡:

双协议栈,根据DNS来区分。

隧道技术,把IPv6数据报封装成IPv4数据报。

在ICMPv6中,ARP和IGMP都已经被合并到ICMPv6中。它是面向报文的协议。

 

IP多播

1988年实现,在多播数据报的目的地址写入的是多播组的标识符,然后设法让加入到这个多播组的主机的IP地址与多播组的标识符关联起来。

    其实多播组的标识符就是IP地址中的D类地址。D类IP地址的前四位是1110,因此D类地址范围是224.0.0.0到239.255.255.255。我们就用每一个D类地址标志一个多播组。

这样,D类地址共可标志2^28个多播组,也就是说,在同一时间可以允许有超过2.6亿的多播组在互联网上运行。多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。因此,多播数据报和一般的IP数据报的区别就是它使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用网际组管理协议IGMP。看来网际组管理协议只管理多播而已,上面没有吧。

此外,对多播数据报不产生ICMP差错报文,因此若在PING命令后面键入多播地址,将永远不会收到响应。

IP多播分为两种,一种只在本局域网上进行硬件多播,另一种则是在互联网范围内进行多播。前一种简单但重要,因为现在主机都是通过局域网接入互联网的。

以太网硬件地址字段种的第1字节的最低位为1时即为多播地址,这种多播地址数占IANA分配到的地址数的一半。它这里可能是IP地址与MAC地址有一一对应的关系。

哪个路由需要接收多播数据报呢?这就需要网际组管理协议IGMP。

IGMP不知道多播组包含的成员个数,也不知道这些成员都分布在哪些网络上,IGMP是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组员,这就需要用到多播路由选择协议。

 IGMP工作原理:

当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员,本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器。

本地多播路由器要周期性地探寻本地局域网上的主机(125秒一次),一边知道这些主机是否还继续是组的成员,只要有一台主机对某个组响应,那么多播路由器就认为这个组是活跃的。如果不活跃,那么就不再把这个组的成员关系转发给其他的多播路由器。

尽量用硬件多播,在支持硬件多播的网络上,没有参加IP多播的主机不会收到IGMP报文。

       多播数据报的发送者和接收者都不知道一个多播组的成员有多少,以及这些成员是哪些主机。

       多播路由选择协议尚未标准化。多播路由选择实际上就是要找出以源主机为根节点的多播转发树。每一个多播路由器向树的叶节点方向转发收到的多播数据报,

       小的多播组用洪泛与剪除,检查是否源点从最短路径上传送过来的。若是,就向所有其他方向转发刚才收到的多播数据报,否则就丢弃而不转发。

       如果多个路由都是最短路由,就取IP最小的。

隧道技术也用于多播,如果网络不支持多播呢?就对多播数据报进行再次封装,加上普通数据报首部成为单播数据报,然后通过隧道发送。这种使用隧道技术传送数据报又叫做IP中的IP(IP in IP)。还有基于核心的发现技术,适用于对于多播组的大小在较大范围内变化时都适合。目前还没有在整个互联网范围使用的多播路由选择协议。

 

虚拟专用网维屁嗯 可算到这里了

在不连接互联网的情况下,没必要分配一个全球唯一IP,随便一个IP就行(现在叫专用地址,只能用于本地地址而不能用作全球地址,在互联网上所有路由器,对专用地址的数据报一律不进行转发),但是这种IP必然不能联网。采用这样的专用IP地址的互联网称为专用互联网或本地互联网,或者说标准的局域网。或者叫专用网。专用IP也叫可重用IP。

如果这个本地局域网太长了,以至于不得不用互联网线路,这样的专用网叫虚拟专用网。一般是都要求必须加密的。维屁嗯 用的是IP隧道技术。把专用IP数据报封装在全球唯一IP数据报里面。

维屁嗯 的原理是并不是所有国外的IP(服务器)都被封了,有的封了有的没封,这时候,我弄一个虚拟专用网,把被封IP数据报封装进没有被封的IP数据报里,与服务器形成一个局域网,啊,让服务器解析,获取数据传回来,这就是维屁嗯 。虽然维屁嗯 的加密内容是不知道的,但是维屁嗯 数据报的特征是非常明显的,因此维屁嗯 非常容易被拦截阻断。

然后有了ssr,ssr采用ssh通道,这是应用层通道,由于 ssh 本身就是基于 RSA 加密技术,所以 GFW 无法从数据传输的过程中的加密数据内容进行关键词分析,避免了被重置链接的问题,但由于创建隧道和数据传输的过程中,ssh 本身的特征是明显的,所以 GFW 一度通过分析连接的特征进行干扰,导致 ssh存在被定向进行干扰的问题。Shadowsocks 的原理就可以用一句简单的描述来理解了:它发出的 TCP 包,没有明显包特征,GFW 分析不出来,当作普通流量放过了。

shadowsocks 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,Client 和 Server 之间可以通过多种方式加密,并要求提供密码确保链路的安全性。

1、客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题,每一个网络请求都是有数据特征的,不同的协议具备不同的特征,比如 HTTP/HTTPS 这类请求,会很明确地告诉 GFW 它们要请求哪个域名;再比如 TCP 请求,它只会告诉 GFW 它们要请求哪个 IP。

2、ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密

3、ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回

维屁恩的主要功能:在公用网络上建立专用网络,进行加密通讯。
维屁恩的主要目的:是给企业内网直接传输加密数据,最重要的就是安全性

电脑使用维屁恩后,所有的网络通信都走代理。适合所有场景。维屁恩控制的是你电脑的整个网络

艾斯R是更注重流量混淆隐秘,
维屁恩则是更注重加密安全性。但并不代表它的特征不明显。

综上所述,维屁嗯 发送的是IP包,艾斯R,维2RAY发送的是TCP包。

 

如果本机已经有本地ip,但没有全球IP,它该如何访问互联网呢?这就是NAT网络地址转换的由来。

需要在路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。工作原理就是转换后发出去。

有多少全球IP时,有多少主机可以直连,剩下的主机都不能直连,一个全球IP只能和一个专用IP建立联系。

另外,通过NAT路由器的通信必须由专用网内的主机发起,这种专用网内部的主机不能充当服务器。

现在不一样了,现在用上了端口,这样一个全球IP可以送往多个专用网内主机了。也叫NAPT。

这么说来,NAPT是运输层的。

 

MPLS 多协议标记交换,这是个什么东西呢?它是优化网络用的,打上标记,就不走路由IP表了,直接走硬件。它并没有取代IP,而是作为一种IP增强技术。

现在的IP法则,每一个IP分组到达路由器,都必须查找路由表,并按照最长前缀匹配找到下一跳IP地址,MPLS则给IP数据报打上固定标记,直接走硬件,这叫标记交换。支持MPSL技术的路由器叫做标记交换路由器LSR。LSR使用专门的标记分配协议LDP交换报文,并找出和特定标记相对应的路径,各LSR根据这些路径构造出转发表。MPLS是面向连接,就像临时构建的一样。

在把IP数据报封装成一个以太网帧之前,先要插入一个MPLS首部。

完啦

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值