计算机网络笔记(4)2020-11-12

计算机网络笔记(4)

来自韩立刚老师的计算机网络

整理:程琪皓

  • 教材使用谢希仁老师计算机网络第5版
  • 平时课业繁重,计算机仅仅只是兴趣,并非主业,各种笔记更新可能不及时,见谅

Chapter4: 网络层

思科网络工程师分成四章来讲:IP地址子网划分静态/动态路由, 网络地址转换VPN技术

1. 网络层提供的两种服务

网络层关注的是如何将分组从源端沿着网络路径传送到目的地,在计算机网络领域,网络层应该向运输层提供怎样的服务层引起了长期的讨论。
争论的焦点:在计算机领域当中,可靠交付应当由谁来负责?网络还是端系统

  • 我们应该注意到,如果在数据链路层实现可靠传输的交付,那么其中的每一层都需要进行确认,这样的传输效率就会变低了,所以可靠传输应该由端系统进行实现。

服务1:虚电路

  • 虚电路表示这只是一条逻辑上的连接,并不是真正建立了一条物理连接。应该注意的是,电话交换的电话通信是建立了一条真正的连接,但是这里仅仅只是逻辑上的连接,分组连接与电路交换的连接方式类似,但是并不完全一样。
  • 可靠通信由网络保证
  • 连接的建立必须有
  • 仅仅在连接阶段使用,每一个分组使用短的虚电路信号
  • 属于同一虚电路的分组均按照同一路由进行转发,按照顺序到达
  • 端到端的差错处理和流量控制可以由网络和主机共同完成

服务2:数据报服务

  • 网络只告诉路由器们数据想要往哪里跑(目的地),路由器自己来决定让数据去到哪里。这样一种传输的方式更加的灵活。路由器不提供网络质量的服务,只是努力做到最大程度上的交付(我学计算机网络最喜欢的就是这个词——交付
  • 可靠通信由用户主机保证
  • 连接的建立必须有
  • 仅仅在连接阶段使用,每一个分组使用短的虚电路信号
  • 每个分组独立选择路由,先发的不一定先到,最后按照顺序进行组装
  • 由用户主机完成差错处理和流量控制

2. 网络协议IP

a) 虚拟互联网

网络互联的设备

  • 中间设备又称为中间系统或者中继系统(relay)
    • 物理层中继系统:转发器(repeater)
    • 数据链路层中继系统:网桥或者连接器(bridge)
    • 网络层中继系统:路由器
    • 网络层以上的中继系统:网关(gateway)
  • 网关就是路由器接口的地址(理论上来说网关可以是本网段中的任意地址)

互联在一起的网络要进行通讯,会遇到许许多多的问题需要解决,例如:

  • 不同的寻址方案
  • 不同的最大分组长度
  • 不同的网路接入机制
  • 不同的超时控制
  • 不同的差错恢复方法
  • 不同的状态报告方法
  • 不同的路由选择技术
  • 不同的用户接入控制
  • 不同的服务(面向连接服务和无连接服务)
  • 不同的管理与控制方式
    本章当中只考虑网络层的问题,不再考虑数据链路层以及物理层的有关内容

网络层的四个协议:

  • 地址解析协议ARP (Address Resolution Protocol)
    • 负责解析对面网卡的IP地址
    • 比较底层,IP协议基于它
  • 逆向地址解析协议RARP(Reverse Address Resolution Protocol)
  • 网际控制报文协议ICMP (Internet Control Message Protocol)
    • Ping一个地址的时候返回一些信息之类的
    • 基于IP地址协议
  • 网际组管理协议IGMP (Internet Group Management Protocol)

b) IP地址

  • IP地址的层次化结构:
    • IPV4:层次化的IP地址将32位的IP地址分为网络ID和主机的ID
    • 现在已经渐渐的变为IPV6
    • IP将地址分为网段部分主机部分可以使得路由器的转发更加简单方便
  • IP地址的分类:ABCDE五类地址
    相关的一篇不错的blog

下面的这张图已经非常明确了
IP地址中的网络号字段和主机号字段

类别IP地址范围私网IP地址范围子网掩码网络数网段最大主机数
A1.0.0.1 ~ 127.255.255.25410.0.0.0-10.255.255.255255.0.0.0 2 7 − 2 = 126 2^7-2 = 126 272=126 2 24 − 2 = 16777214 2^{24}-2=16777214 2242=16777214
B128.0.0.1 ~ 192.255.255.254172.16.0.0-172.31.255.255255.255.0.0 2 1 4 − 1 = 16383 2^14-1 = 16383 2141=16383 2 16 − 2 = 65534 2^{16}-2=65534 2162=65534
C192.0.0.1-223.255.255.254192.168.0.0-192.168.255.255255.255.255.0 2 7 − 2 = 126 2^7-2 = 126 272=126 2 8 − 2 = 254 2^{8}-2=254 282=254
  • A类地址第一位为0
    • 注意一下这里的127地址被称为环回地址,相当于人称代词“我”,以下是一些测试

C:\Users\10404> ping 127.0.0.1
正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
127.0.0.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms

上面这个代码拔了网线也能通,不然就重装吧…

  • B类地址前两位为10
  • C类地址前三位为110
  • D类地址前四位为1110

c) 划分子网和构造超网

通过子网掩码进行网络划分,受到与运算的限制,这里简单提一句,笔记略过

d) IP地址与硬件地址

  • MAC地址是转发过程当中采用的,告诉网络下一站要去到哪里

  • IP地址是发送信息的时候一直跟随着数据包的,告诉网络目的地是哪里

  • 一个简单例子
    第一站:数据段或者消息+源IP10.0.0.2+目标IP12.0.0.2+源MAC1+目标MAC2
    第二站:数据段或者消息+源IP10.0.0.2+目标IP12.0.0.2+源MAC3+目标MAC4
    第三站:数据段或者消息+源IP10.0.0.2+目标IP12.0.0.2+源MAC5+目标MAC6

  • 注意一下数据段或者消息+源IP10.0.0.2+目标IP12.0.0.2 这个东西才叫作数据包

因此注意一下,跨网段只能够用IP地址进行控制,并且这里讲了一个IP的代理服务器的软件,这里可以控制什么电脑能够访问什么网段,属于B站上第75个视频,这里只是简单记录一下,需要的时候再考古。

e) IP转发分组的流程

网络层管理有四个协议

注意这里其实不应该说IP协议,因为IP当中的Protocol已经包含了协议的意思

  • 下面聊一聊ARP协议

    • 某一个计算机为了需要寻找某一个IP地址,计算机先群发一个信息,利用ARP协议获得对方的MAC地址,然后再在下一次需要发送信息的时候直接向对面相应的MAC地址(利用子网掩码之类的)通过路由器发送有关的信息。(这里的笔记记的不太好)
    • ARP欺骗是个好东西
      • 利用ARP欺骗控制某人网络的带宽:计算机询问路由器的地址时,利用黑客软件把自己电脑的MAC地址告诉对面,然后对面的无论想要上什么网,都需要经过这个黑客的电脑,从而实现对对方流量的控制与欺骗。P2P终结者
      • 可以通过ARP欺骗控制对面的上网对象:杀毒软件都没用,可以通过ARP防火墙进行防范,具体来说,第一次解析路由器地址就直接记住,其他随便是谁告诉我乱七八糟的东西我都不信了,而且直接报错,告诉你存在ARP欺骗。网络执法官
      • 下面的内容写多了怕被封号,自取吧
      • 这个老师截获了他办公室一堆老师的密码,还有一些意外的收获233,可惜QQ不行…
  • 如何断定ARP欺骗:以下为个人的一些实操,一些个人的意想不到的数据如果不小心留到了网上,希望大佬们不要来黑我的电脑www(虽然用的是学校内部的私网)

  • 命令ipconfig返回:

    • (怕电脑被人黑,这里的所有地址都依照实际情况随机改了几位,下同)

无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 2201:da8:201:3040:4109:2750:2b9d:4849
临时 IPv6 地址. . . . . . . . . . : 2201:da8:201:3040:e8e0:f2aa:4d2e:1081
本地链接 IPv6 地址. . . . . . . . : fe80::4209:2723:2b1d:47549%25
IPv4 地址 . . . . . . . . . . . . : 10.0.242.65
子网掩码 . . . . . . . . . . . . : 255.255.224.0
默认网关. . . . . . . . . . . . . : fe80::72db:98ff:fe82:a000%25
10.0.192.1

在这里我们可以知道网关的地址为10.0.192.1,我们ping一下,发现能通

  • 命令ping 10.0.192.1返回:

正在 Ping 10.0.192.1 具有 32 字节的数据:
来自 10.0.192.1 的回复: 字节=32 时间=3ms TTL=255
来自 10.0.192.1 的回复: 字节=32 时间=1ms TTL=255
来自 10.0.192.1 的回复: 字节=32 时间=7ms TTL=255
来自 10.0.192.1 的回复: 字节=32 时间=5ms TTL=255
10.0.192.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 1ms,最长 = 7ms,平均 = 4ms

  • 命令arp -a返回

接口: 192.168.79.1 — 0xa
Internet 地址 物理地址 类型
192.168.79.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.11.20.1 01-00-5e-0b-14-01 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态

接口: 192.168.188.1 — 0x10
Internet 地址 物理地址 类型
192.168.188.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.11.20.1 01-00-5e-0b-14-01 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态

接口: 10.0.222.65 — 0x19
Internet 地址 物理地址 类型
10.0.192.1 70-db-98-82-a0-00 动态
10.0.223.255 ff-ff-ff-ff-ff-ff 静态
10.3.224.1 70-db-98-82-a0-00 动态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.11.20.1 01-00-5e-0b-14-01 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态

注意一下这里的静态表示还是比较靠谱的地址,在第三个返回的部分我们找到网关的地址:
10.0.192.1 70-db-98-82-a0-00 动态
说明如果要从这里访问外网,对应的MAC地址就会变成70-db-98-82-a0-00

  • 接下来我们改一下网络的arp对应的MAC地址,演示到这里,我先保存一下我的blog…
  • 修改的时候需要提升一下操作啥的,具体看这篇博客
  • 注意一下这里需要管理员的身份,cmd打开的时候看一下是不是管理员身份

命令arp -s 10.0.192.1 70-db-98-82-a0-01返回nothing,但是修改了对应网关的MAC地址,对自己的电脑实现了arp欺骗。

f) IP数据报格式

数据包格式
首部+数据部分构成了IP数据包的全部

  • 下面我们来看首部的组成,上图已经比较明确了

  • 前32bit

    • 版本告诉我们这个数据包是ipv4还是ipv6, 由四个bit表示
    • 首部长度告诉网络这个首部的长度是多少
    • 区分服务说明这个数据包在传输过程中是否“着急
    • 总长度说明数据包一共有多大,也就是说首部+数据部分大概有多少
  • 32bit到64bit

    • 标识 用来标识数据包的标识,每产生一个数据包就加一
    • 标志 说明数据包是不是分片的,当数据包的数据部分大于沿途路由器最大传输单元时,需要对原来的数据包进行拆分,将大包拆分成小包
    • 片偏移 用来说明拆分之后的分片数据包分别在原来数据包的什么部分
      片偏移
    • 生存时间 TTL使得无法到达目的地的数据包从网络中自动消失,每被转发一次,TTL的数值减1
    • 协议:ICMP,IGMP之类的,用协议号代表,这里放一个ip协议号大全的链接
    • 首部校验:将该部分前面部分每16位进行求和,再取反码,存放在校验核处;接收方接收到信息之后对所有部分进行求和运算,如果结果为0,则保留该包,如果不为0,则直接丢弃,确保首部的正确;这里和数据链路层的知识就结合起来了。
  • 补充从TTL可以基本断定对面是什么操作系统,windows操作系统一般是128,linux有可能是64,我们来看一下下面一个测验

    正在 Ping 127.0.0.1 具有 32 字节的数据:
    来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
    来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
    来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
    来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

    • 这里ping自己一个服务器都不经过,所以TTL保持128,下面通过手动设置TTL的数值,使得我们可以统计到百度需要经过几个路由器,下面的测试给出沿途经过的路由器大概为100-49=51

      C:\WINDOWS\system32>ping www.baidu.com -i 100
      正在 Ping www.a.shifen.com [182.61.200.7] 具有 32 字节的数据:
      来自 182.61.200.7 的回复: 字节=32 时间=6ms TTL=51
      来自 182.61.200.7 的回复: 字节=32 时间=8ms TTL=51
      来自 182.61.200.7 的回复: 字节=32 时间=8ms TTL=51
      来自 182.61.200.7 的回复: 字节=32 时间=14ms TTL=51
      182.61.200.7 的 Ping 统计信息:
      数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
      往返行程的估计时间(以毫秒为单位):
      最短 = 6ms,最长 = 14ms,平均 = 9ms

  • 我们甚至可以通过这个方法看一看沿途都通过了哪几个路由器

    • 第一个路由器是10.3.224.1,因为:

      C:\WINDOWS\system32>ping www.baidu.com -i 1
      正在 Ping www.a.shifen.com [182.61.200.7] 具有 32 字节的数据:
      来自 10.3.224.1 的回复: TTL 传输中过期。
      来自 10.3.224.1 的回复: TTL 传输中过期。
      来自 10.3.224.1 的回复: TTL 传输中过期。
      来自 10.3.224.1 的回复: TTL 传输中过期。

    • 第二个路由器是10.0.253.61,因为:

      C:\WINDOWS\system32>ping www.baidu.com -i 1
      正在 Ping www.a.shifen.com [182.61.200.7] 具有 32 字节的数据:
      来自 10.0.253.61 的回复: TTL 传输中过期。
      来自 10.0.253.61 的回复: TTL 传输中过期。
      来自 10.0.253.61 的回复: TTL 传输中过期。
      来自 10.0.253.61 的回复: TTL 传输中过期。

    • 以此类推

这里可以使用抓包工具wireshark进行实战,具体可以在这里下载, 有点点小激动,搓手手

各位可以在计算机cmd上尝试一下代码
route print:看一看自己的路由表
route add 0.0.0.0 mask 0.0.0.0 10.0.192.1
10.0.192.1 10.0.222.65

3. 网际控制报文协议

4. 因特网的路由选择协议

5. IP多播

6. 虚拟专用网VPN和网络地址转换 NAT

未完待续。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值