UNIXC002 网络基础

网络架构

在这里插入图片描述

网帧

  • 两台机器通信的单位叫网帧,相当于写文章时的句号,代表这句话的结束。
  • 常见的两种网帧: 以太网帧, 令牌环网帧

1. 以太网帧

在这里插入图片描述

  • 分为头部(目的地址,源地址,类型),数据,尾部(CRC)
    • 目的地址和源地址都各有6个字节。是网卡的MAC地址(常说的物理地址,IP地址是逻辑地址)
  • 三种类型对应三种数据:
    • IP数据报, 最多1500个字节,最少46个字节
    • ARP请求/应答,只有28个字节,不够的话可用填充位填充,再填充18个字节
    • RARP请求/应答,只有28个字节,不够的话可用填充位填充,再填充18个字节

1.1 分用过程

在这里插入图片描述

  • 1. 给以太网的驱动程序传一个以太网帧
    • 其中IP首部,TCP首部,应用数据都属于以太网帧的数据(46~1500字节)。
  • 2. 根据以太网首部中的帧类进行分用 --> 链路层
    • 以太网驱动程序根据以太网帧首部中的类型,把以太网驱动程序加工(以太网驱动程序会把以太网帧的首部和尾部去掉)以后的数据报传递给ARP,IP,ARAP其中的一个。图中是把加工以后的数据报( IP首部,TCP首部,应用数据)递给IP层(也是一个程序)。
  • 3. 根据IP首部中的协议值进行分用 -->网络层
    • 然后IP层会根据IP首部的协议值,把IP层加工(把IP报文头部去掉)后的数据 ICMP,IGMP,TCP,UDP中的其中一个。图中是把加工以后的数据(TCP首部,应用数据)传递给TCP层。
  • 4. 根据TCP或UDP首部中的端口号进行分用 -->运输层
    • TCP层会把TCP首部去掉,如果应用程序正在监听TCP首部中的目的端口号,那么TCP层就会把应用数据传递给这个应用程序
1.1.1 局域网上ftp服务的分用过程

在这里插入图片描述

  • 用户进程处理应用程序细节,内核处理通讯细节。 换句话说就是,用户用系统提供的系统调用来使用内核提供的操作网络的功能
1.1.2 app首部(应用层协议)

在这里插入图片描述

  • 一般在TCP层会把TCP首部去掉以后的应用数据中,还会有一个App首部,应用程序把App首部去掉以后才能拿到最后的用户数据。

1.2 IP报文

在这里插入图片描述

  • 首部长度:占用4位二进制位,此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的.

  • 接收端通过此域可以计算出报头在何处结束及从何处开始读数据。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。

  • 这里先写这么多,后面再细说

  • 详细了解ip报文参考:IP数据报格式详解

1.3 TCP包

在这里插入图片描述

  • 16位的端口号,所以取值范围是是0~65535(2^16)

  • 但是1024以下不建议使用,因为一些国际标准已经使用,比如80 http,20/21 ftp等

  • 因为tcp是基于连接的。需要发出序号和收到确认序号。如果发出序号但很久没有收到确认序号,可能就要重传了。

  • 窗口大小用来告诉对方自己有多少缓存,以保证传输数据时大小,传的太大可能会造成丢失。

  • 序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

  • 确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

  • 标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:

    • URG:紧急指针(urgent pointer)有效。
    • ACK:确认序号有效。
    • PSH:接收方应该尽快将这个报文交给应用层。
    • RST:重置连接。
    • SYN:发起一个新连接。
    • FIN:释放一个连接。
  • 需要注意的是:
    不要将确认序号Ack与标志位中的ACK搞混了。确认方Ack=发起方Seq+1,两端配对。

2. 令牌环网帧

在这里插入图片描述

2.1 路由器:

  • 同一个网络里,网帧必须相同,如果不同,那么两台机器无法通信。上图是两个网络,所以需要路由起来实现跨网段数据传输。

  • 路由器里至少有两块网卡。上图中一块网卡服务以太网驱动程序(和左边的FTP客户端在一个局域网),一块网卡服务于令牌环网驱动程序(和右边的FTP服务器在一个局域网 )。

  • 路由器针对不同网段,交换的是IP报文。交换机针对相同网段, 交换的是网帧。

2.2 FTP客户和FTP服务器在不同网段时的分用过程

  • 1. 路由器里的一块网卡接受到传过来的网帧数据后,会把以太网帧数据的头部和尾部去掉,得到IP数据报( IP首部,TCP首部,应用数据
  • 2. 路由器查看IP报文后发现里面的目的IP地址不是另个网段。就会把数据转发到和目的IP地址相同网段的网卡来处理。令牌环网驱动程序会来处理数据。
  • 3. 令牌环网驱动程序会把数据封装,加上令牌环网的头部和尾部。这样就形成了令牌环网的网帧。然后再通过令牌环网传递给令牌环网驱动程序。
  • 4. 驱动程序又会把令牌环网帧的头部尾部去掉,然后数据再经过IP层,TCP层到达FTP服务端。

IP分类

复制大神的:IP地址分类(A类 B类 C类 D类 E类)

从字节角度看,IP地址由四段组成,每个字段是一个字节,8位,最大值是255

从另一个角度看,IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。主机地址全为0为网络地址,主机地址全1为本网段的广播地址。

IP地址的四大类型标识的是网络中的某台主机。IPv4的地址长度为32位,共4个字节,但实际中我们用点分十进制记法。

在这里插入图片描述
IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。 全0和全1的都保留不用。全0代表网络号,全1代表局域网的广播号

A类:(1.0.0.0-127.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1(0000 0001)~127(0111 1111)之间。一般用于大型网络.

B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128.0(1000 0000)~191.255(1011 1111)之间。一般用于中等规模网络。

C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192.0.0(1100 0000 0000)~223.255.255(1101 1111 1111)之间。一般用于小型网络。

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

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

子网掩码

在这里插入图片描述

1. 子网掩码的组成

在这里插入图片描述

  • 借位?

2. 子网掩码的表示方法

在这里插入图片描述

  • 24代表高24位全1,后面的8位全0
  • 20代表高20位全1,后面的12位全0

3. 案例分析

在这里插入图片描述

  • 192.168.1.32/24

    • 掩码是高24位全1 ,后面8为全0(255,255,255,0)
    • 用子网掩码和IP地址做与运算,得到网络号: 192.168.1.0
    • 去掉网络号后得到,主机号是32
    • 全0代表网络号,全1代表局域网的广播号
      • 分配的IP数量取决于低8位,一共256种可能,去掉全0和全1后有254种可能
  • 192.168.1.130/25

    • 掩码是高25位全1,后7位全0(255,255,255,128)
    • 用子网掩码和IP地址做与运算,得到网络号: 192.168.1.128
    • 去掉网络号得到主机号 2
    • 分配的IP数量取决于低7位,一共128种可能,去掉全0和全1后有126种可能
  • 192.168.1.126/25

    • 掩码是高25位全1,后7位全0(255,255,255,128)
    • 用子网掩码和IP地址做与运算,得到网络号:
      • 125 -> 0111110, 128 -> 10000000
      • 与运算得到网络号: 192.168.1.0
    • 去掉网络号得到主机号: 125
    • 分配的IP数量取决于低7位,一共128种可能,去掉全0和全1后有126种可能
  • 只看到IP时,不要轻易的认为它们是同一网段的,子网掩码不同就有可能不是同一个网段的。

    • 192.168.1.130/25 和 192.168.1.126/25,看着只差4,但是子网掩码不同,他们是分属于两个网络的
    • 192.168.1.32/24 和 192.168.1.126/25,子网掩码不同但是是属于同一网段的。

局域网内数据的传输

1. 条件

  • 只要大家都在同一个网段(相同的网络地址)
  • 使用交换机传输的是同一种网帧
  • IP地址不重复

2. 传输过程

  • 数据从192.168.1.11/24 到 192.168.1.41/24
    在这里插入图片描述
  • 1. 192.168.1.11/24 这台机器先看192.168.1.41/24 机器和自己是不是同一个局域网(通过本机路由表)
  • 2. 如果是,192.168.1.11/24 这台机器就不会把数据报传给外网,会去查找arp表有没有目标IP地址
  • 3. 如果有就把目标IP对应的MAC地址添加到网帧头部的目的地址里。如果没有,就会用arp做一个广播,然后192.168.1.41/24机器就会做arp应答,把自己的MAC发送过来,然后 192.168.1.11/24 这台机器再把192.168.1.41/24 的 MAC地址和自己的MAC地址添加到网帧头部。
  • 4. 再把网帧数据送给交换机,传给192.168.1.41/24

路由表:

$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s31f6
link-local      *               255.255.0.0     U     1000   0        0 enp0s31f6

192.168.0.0     *               255.255.248.0   U     100    0        0 enp0s31f6

  • 从路由表中看到,如果是本机往 192.168.0.0 和 link-local(本机网段) 这两个网段的机器上传数据,说明不出这个局域网
  • 如果不是往以上两个网段内,那么就会把数据交给网关处理

arp表:

moonx@moonx:~ $ sudo arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.175            ether   22:5a:f7:c8:b0:3a   C                     enp0s31f6
192.168.3.176            ether   58:03:fb:ec:43:a2   C                     enp0s31f6
192.168.1.101            ether   d8:9e:f3:8a:a4:12   C                     enp0s31f6
192.168.1.1              ether   e8:ab:f3:b0:ef:54   C                     enp0s31f6
192.168.1.110            ether   88:d7:f6:ae:ed:d6   C                     enp0s31f6
192.168.1.222            ether   00:20:6b:84:5a:b6   C                     enp0s31f6
192.168.3.199            ether   98:3b:8f:77:7a:a9   C                     enp0s31f6

跨网段数据的传输

  • 数据从192.168.1.11/24 到 192.168.0.41/24
    在这里插入图片描述
  • 1. 192.168.1.11/24 发现 192.168.0.41/24 和自己不是同一个网段的,就会把数据直接交给路由器(以太网帧的首部中的源地址和目的地址分别是 192.168.1.11/24 机器和蓝色网卡 的MAC地址,IP报文的源IP和目的IP地址 分别是 192.168.1.11/24和192.168.0.41/24)。路由器中蓝色网卡(192.168.1.1/24)和左边构成了一个局域网,黄色网卡(192.168.0.1/24)和右边构成了一个局域网.
  • 2. 蓝色网卡收到数据以后,会把以太网帧数据的头部和尾部去掉,发现目标IP不是自己,就会去查看路由器里的路由表,找到和192.168.0.41/24 在相同网段的黄色网卡。然后把以太网帧头部中的 源地址和目标地址 分别换成 蓝色网卡和黄色网卡的MAC地址后,送给黄色网卡。
    • 这一步中,如果黄色网卡用的令牌环网帧,蓝色网卡会用令牌环网帧的头部和尾部来封装这个数据报,而不是以太网帧的首尾部。
  • 3. 黄色网卡看到IP报文中的目标地址不是自己,是 192.168.0.41/24 ,是相同网段的,然后把 自己的MAC地址和192.168.0.41/24的MAC地址(查看arp表得到,没有就arg广播)放到网帧首部当中,发给192.168.0.41/24这台机器。
  • 4. 192.168.0.41/24收到网帧,去掉网帧头部,尾部以后发现目标IP就是自己。
  • 整个过程中MAC地址在不断的切换,但是IP报文中的源IP和目标IP从没有变过。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值