网络传输:网卡、IP、网关、子网掩码、MAC、ARP、路由器、NAT、交换机

news2024/11/20 2:26:56

目录

  • 网卡
  • IP
    • 网络地址
    • 主机地址
    • 子网
    • 子网掩码
    • 网关
    • 默认网关
  • MAC
  • ARP
    • ARP抓包分析
  • 路由器
    • NAT
    • NAPT
  • 交换机

网卡

网卡(Network Interface Card,简称NIC),也称网络适配器。
OSI模型:

1、网卡工作在OSI模型的最后两层,物理层和数据链路层。物理层的芯片称之为PHY,数据链路层的芯片称之为MAC控制器。
2、物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。
3、数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

网卡混杂模式:

混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。

连接方式:PCI总线接MAC总线,MAC通过MII接PHY,PHY通过变压装器接网线。
在这里插入图片描述

网卡接收数据流程:
网卡接收到一个数据包,根据目的MAC地址判断是不是发给自己的,如果不是则将丢弃该数据包。
网卡接收流程

IP

IP(Internet Protocol),位于OSI模型的网络层。IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

  • 1、IP地址 = 网络地址 + 主机地址(又称:网络号和主机号)
  • 2、我们把网络号相同的主机称之为本地网络中的主机,网络号不相同的主机称之为远程网络中的主机。
  • 3、本地网络中的主机可以直接相互通信,远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。

IP地址主要有A、B、C、D、E五类地址:

  • A类:由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”(网络地址全为0的地址被保留使用)。地址范围是1.0.0.0 到 127.255.255.255,主要分配给大量主机而局域网网络数量较少的大型网络;

  • B类:由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高两位必须是“10”。地址范围是128.0.0.0 到191.255.255.255,一般用于国际性大公司和政府机构;

  • C类:由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。地址范围是192.0.0.0 到223.255.255.255,用于一般小公司校园网研究机构等;

  • D类:第一个字节由“1110”开始。全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。地址范围是224.0.0.0 到 239.255.255.255,又称做广播地址,因此任何第一个字节大于223小于240的IP地址是多点播送地址。

  • E类:由“11110”开始,地址范围是240.0.0.0 到255.255.255.255,暂时保留。

网络地址

计算网络地址就是判断网络中的计算机在不在同一网络,在就能通,不在就不能通,需要借助本地网关的帮助。

将IP地址和子网掩码全部转换为二进制形式,然后二者逐位相与的结果就是网络地址。

IP十进制:192.168.1.1
IP二进制:11000000 10101000 00000001 00000001

子网掩码十进制:255.255.255.0
子网掩码二进制:11111111 11111111 11111111 00000000

网络地址 = IP & 子网掩码
网络地址二进制:11000000 10101000 00000001 00000000
网络地址十进制:192.168.1.0

主机地址

IP与子网掩码的非的结果相与就是主机地址。

IP十进制:192.168.1.1
IP二进制:11000000 10101000 00000001 00000001

子网掩码十进制:255.255.255.0
子网掩码二进制:11111111 11111111 11111111 00000000

主机地址 = IP & (~子网掩码)
主机地址二进制:00000000 00000000 00000000 00000001
主机地址十进制:0.0.0.1

子网

为了确定网络区域,分开主机和路由器的每个接口,从而产生了若干个分离的网络岛,这些独立的网络岛叫做子网(subnet)。

子网掩码

子网掩码的表示方法
(1)点分十进制表示法
二进制转换十进制,每8位用点号隔开。

例如:子网掩码二进制11111111.11111111.11111111.00000000,表示为255.255.255.0

(2)CIDR斜线记法
IP地址/n

  • 例1:192.168.1.100/24,其子网掩码表示为255.255.255.0,二进制表示为11111111.11111111.11111111.00000000

  • 例2:172.16.198.12/20,其子网掩码表示为255.255.240.0,二进制表示为11111111.11111111.11110000.00000000

不难发现,例1中共有24个1,例2中共有20个1,所以n是这么来的。运营商ISP常用这样的方法给客户分配IP地址。

注:n为1到32的数字,表示子网掩码中网络号的长度,通过n的个数确定子网的主机数=2(32-n)-2(-2的原因:主机位全为0时表示本网络的网络地址,主机位全为1时表示本网络的广播地址,这是两个特殊地址)。

为什么要使用子网掩码?
子网掩码可以分离出IP地址中的网络地址和主机地址。如果两台主机要通信,首先要判断是否处于同一网段,即网络地址是否相同。如果相同,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。

可以这么简单的理解:A主机要与B主机通信,A和B各自的IP地址与A主机的子网掩码进行and运算,看得出的结果:

  • 结果如果相同,则说明这两台主机是处于同一个网段,这样A可以通过ARP广播发现B的MAC地址,B也可以发现A的MAC地址来实现正常通信。
  • 如果结果不同,ARP广播会在本地网关终结,这时候A会把发给B的数据包先发给本地网关,网关再根据B主机的IP地址来查询路由表,再将数据包继续传递转发,最终送达到目的地B。

子网掩码的分类
(1)缺省子网掩码
也叫默认子网掩码,即未划分子网,对应的网络号的位都置 1 ,主机号都置 0 。

未做子网划分的IP地址:网络号+主机号,则:

  • A类网络缺省子网掩码: 255.0.0.0,用CIDR表示为/8
  • B类网络缺省子网掩码: 255.255.0.0,用CIDR表示为/16
  • C类网络缺省子网掩码: 255.255.255.0,用CIDR表示为/24

(2)自定义子网掩码

将一个网络划分子网后,把原本的主机号位置的一部分给了子网号,余下的才是给了子网的主机号。其形式如下:
做子网划分后的IP地址:网络号+子网号+子网主机号,举个例子:

  • 192.168.1.100/25,其子网掩码表示:255.255.255.128,意思就是将192.168.1.0这个网段的主机位的最高1位划分为了子网。

网关

计算机的网关(Gateway)就是到其他网段的出口,也就是路由器接口IP地址。

  • 路由器接口使用的IP地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用的地址或最后一个可用的地址,这是为了尽可能避免和本网段中的主机地址冲突。

在如下拓扑图示例中,A与B,C与D,都可以直接相互通信(都是属于各自同一网段,不用经过路由器),但是A与C,A与D,B与C,B与D它们之间不属于同一网段,所以它们通信是要经过本地网关,然后路由器根据对方IP地址,在路由表中查找恰好有匹配到对方IP地址的直连路由,于是从另一边网关接口转发出去实现互连。
在这里插入图片描述

默认网关

默认网关地址是主机位除了最后一位全置1后得到的。

假设现有一个ip地址为193.6.7.0/24,根据网络前缀24可知前24位为网络位,后8位为主机位,因此该网络的默认网关地址就是IP地址193.6.7.11111110(加粗的部分为网络位),换算成十进制数即193.6.7.254/24。

一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的主机,从而无法与其他网络的主机通信。默认网关的设定有手动设置和自动设置两种方式。

(1)手动设置
手动设置适用于电脑数量比较少、TCP/IP 参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的 IP 地址,就会给网管带来很大的麻烦,所以不推荐使用。

需要特别注意的是:默认网关必须是电脑自己所在的网段中的 IP 地址,而不能填写其他网段中的 IP 地址。

(2)自动设置

自动设置就是利用 DHCP(Dynamic Host Configuration Protocol, 动态主机配置协议)服务器来自动给网络中的电脑分配 IP 地址、子网掩码和默认网关 。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了 DHCP 服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的 IP 地址。这种方法适用于网络规模较大、TCP/IP 参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和 DHCP 有相似之处。

MAC

MAC地址(Media Access Control Address),网卡硬件地址,用于在网络中唯一标示一个网卡,长度6字节,由IEEE协会分配,网络设备制造商生产时写在硬件内部。

MAC地址由48位二进制数(6个字节)组成,通常表示为6位十六进制数,格式为XX-XX-XX-XX-XX-XX。如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。

ARP

地址解析协议(Address Resolution Protocol,ARP),建立32位IPv4地址与以太网的48位MAC地址之间的映射,位于OSI模型的数据链路层

ARP映射表记录了IP地址和MAC地址的映射关系。每一台主机和路由器都设有ARP映射表,在实际传输中,通常已知下一跳的目的IP地址,通过查询ARP映射表即可知道对应的MAC地址。

ARP协议结构,总长度28字节。
在这里插入图片描述

  • 硬件类型(Hardware Type):表示网络类型,常见值为1,表示以太网,2字节。
  • 协议类型(Protocol Type):表示所使用的协议类型,IPv4的值为0x0800,2字节。
  • 硬件地址长度(Hardware Address Length):通常为6,表示MAC地址长度为6字节,1字节。
  • 协议地址长度(Protocol Address Length):通常为4,表示IPv4地址长度为4字节,1字节。
  • 操作码(Opcode):操作码为1表示ARP请求,操作码为2表示ARP应答,2字节。
  • 发送方硬件地址(Sender Hardware Address):发送方的MAC地址,6字节。
  • 发送方协议地址(Sender Protocol Address):发送方的IP地址,4字节。
  • 目标硬件地址(Target Hardware Address):目标主机的MAC地址,在ARP请求时为空,6字节。
  • 目标协议地址(Target Protocol Address):目标主机的IP地址,4字节。

ARP映射表建立:

1、初始映射表为空。
2、源主机已知下一跳目的IP地址,想知道下一跳的MAC地址。
3、源主机广播ARP请求,包含源IP、源MAC、目的IP,广播到本地网络所有主机(源主机和目的主机在同一网络)。
4、目的主机收到ARP请求后,检测目的IP地址是否和本机IP一致,不一致则丢弃。
5、如果一致,先把ARP请求中源IP源MAC保存在本机的ARP表;给源主机回复ARP响应,单播,告知源主机自己的MAC地址。
6、如果源主机和目的主机不在同一个网络,通过路由器查找路有表,把目的主机IP转换为下一跳IP,再通过ARP协议,将下一跳的IP转换为对应的MAC。

windows查询arp表

arp -a

linux查询arp表

arp -n

ARP抓包分析

使用Wireshark工具抓取ARP协议的数据包,输入arp过滤,下图截取两条arp包,第一个包是ARP请求包,第二个包是ARP响应包;请求和响应的协议结构一致,部分字段取值不同。
在这里插入图片描述
xiaodu设备发了ARP请求广播,询问192.168.3.135主机的MAC地址,135主机(也就是抓包的主机)回复ARP响应。

展开ARP请求包
在这里插入图片描述
看几个关键点:

  • arp请求包以太头的目的MAC地址,Destination: Broadcast (ff:ff:ff:ff:ff:ff),在局域网广播。
  • 以太头类型:ARP(0X0806)。
  • Opcode操作码是1,代表ARP请求。
  • Target MAC address,目的MAC为空,希望目标响应的MAC地址。

展开ARP响应包
在这里插入图片描述
关键点:

  • 以太头的目的MAC是ARP请求端xiaodu设备的MAC,不再是广播。
  • Opcode操作码是2,代表ARP响应。
  • 源MAC地址,也就是ARP请求想要获取的MAC地址。

路由器

路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,路由器工作在网络层,根据目的IP进行数据转发。

具有相同网络地址的IP地址计算机之间可以直接通信,如果想要与其他网段的计算机进行通信,则必须经过路由器转发出去。

当IP数据包到达路由器时,路由器先查看目的IP地址,然后决定是直接发送目的主机还是转发给下一个路由器。

  • WAN(Wide Area Network)接口,是路由器上用于连接到互联网或其他广域网的接口。
  • LAN(Local Area Network)接口,是路由器上用于连接内部网络设备的接口。通过LAN接口连接多个网络设备,形成一个局域网,局域网内设备可以相互通信。

NAT

NAT(Network Address Translation,网络地址转换),是路由器的重要功能,是解决IP地址不够用的主要手段。

  • 路由器LAN口连接主机,当对外网通信IP数据包到达路由器时,路由器把源IP替换成WAN口IP,如果有多级路由器则逐级替换,最终数据包中的源IP成为一个公网IP,这种技术称为NAT。
  • NAT映射表,当局域网第一次访问外网时,局域网IP和外网IP记录到映射表;当路由器收到外网数据时,根据映射表把数据包目标IP修改为局域网IP并转发到主机。
  • NAT缺点:NAT是一对一的IP转换,不能满足多个局域网IP同时使用一个公网IP访问外网的需求。
    在这里插入图片描述

NAPT

NAPT(Network Address Port Translation),即网络地址端口转换,克服了NAT的缺点,NAPT也被称为“多对一”的NAT。

  • NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。这使得多台局域网主机利用1个NAT公共IP就可以同时和公共网进行通信。
  • 当局域网主机访问外网的IP数据包到达路由器时,NAPT网关会把源IP替换为NAPT的公网IP,同时将源Port转换为NAT动态分配的1个Port,然后转发到公共网。
  • 当公网响应的IP包到达NAPT网关时,NAPT会将IP包的目的IP转换成局域网主机的IP,同时将目的Port转换为局域网主机的Port,然后把IP包转发到局域网。
  • 对于通信双方而言,这种转换是透明的,缺点在于其通信仅限于TCP或UDP。

在路由器将数据包转发到下一个网络时,它会更改源MAC地址为当前接口的MAC地址,并更新目标MAC地址为下一个接口的MAC地址,以确保数据包在不同网络之间正确地转发和传输‌。

也就是说,经过路由器的IP包,MAC、IP、PORT都有可能改变。
在这里插入图片描述

交换机

交换机工作与OSI第二层,数据链路层
在交换机维护端口与MAC地址映射表,记录了端口下包含主机的MAC地址。端口地址表是交换机上电后自动建立的,保存在RAM中,并且自动维护。

交换机功能:

  • 1、自学习,交换机通过广播等自动学习的方式获取每个端口对应的MAC地址,建立映射表。
  • 2、转发和过滤,当一个数据帧的目的MAC地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播/组播帧则转发至所有端口)。
  • 3、消除回路,当交换机包括一个冗余回路时,以太网交换机通过生成树协议(STP)避免回路的产生,同时允许存在后备路径。

自学习流程
在这里插入图片描述

  • 1、假设ABCD4个主机分别接入交换机1324端口上。
  • 2、A向B发送数据帧,从端口1进入交换机,交换机查询映射表,没有查到从哪个端口转发该帧;交换机会把A的MAC地址和端口1写入映射表,并在其他所有端口广播数据帧。
  • 3、C和D收到数据帧直接丢弃,因为目的MAC不匹配;B正确接收数据帧。
  • 4、如果此时B向A发送数据帧,交换机查询映射表发现有A的MAC地址,于是把数据帧从端口1转发给A,不再广播;此时交换机也建立了B的MAC与端口3的映射。

设备通过交换机直连,彼此之间一定要在同一网段,否则必须要用路由器进行转发。因此不同的网段之间才需要路由器转发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32完全学习——系统时钟设置

一、时钟框图的解读 首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟,由于内部HSI存在较大的误差,因此我们在系统完成上电初始化,之后需要将STM32的时钟切换到外部HSE作为系统时钟,那么我…

基于Java Springboot滁州市特产销售系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式,也能支持WebS…

Ubuntu22.04基于ROS2-Humble安装moveit2教程(亲测)

一、安装ROS2-Humble 1、参考:Ubuntu22.04安装ROS2-humble-CSDN博客 2、确保安装完成 source /opt/ros/humble/setup.bash 方法一:二进制安装 sudo apt install ros-humble-moveit* 方法二:安装源码编译 一、卸载二进制安装包 sudo a…

SpringBoot学习记录(三)之多表查询

SpringBoot学习记录(三)之多表查询 一、多表查询概述1、数据准备2、介绍3、分类 二、内连接三、外连接四、子查询1、标量子查询2、列子查询3、行子查询4、表子查询 三、案例1、准备环境2、需求实现3、(附)数据准备 一、多表查询概…

Ubuntu 的 ROS 操作系统 turtlebot3 SLAM仿真

引言 SLAM(同步定位与地图构建)在Gazebo仿真环境中的应用能够模拟真实机器人进行环境建图和导航。通过SLAM仿真,开发者可以在虚拟环境中测试算法,而不必依赖真实硬件,便于调试与优化。 Gazebo提供了多个虚拟环境&…

TCP连接秘籍:三次握手建立连接,四次挥手优雅告别

在数字通信的广阔天地中,TCP协议如同一座稳固的桥梁,连接着网络世界的每一个角落。它不仅确保了数据的可靠传输,还通过精细设计的连接建立与断开机制,展现了其无与伦比的优雅与智慧。TCP的三次握手,犹如初次相遇时的礼…

【惠州大亚湾】之维修戴尔服务器DELLR730XD

1:广东省惠州市大亚湾某游客服务中心来电报修1台DELL PowerEdge R730xd服务器无法正常开机的问题。听该负责描述这台服务器因为服务中心电力切换导致意外关机,来电后发现就无法正常开机了。所以找到我们希望配合维修。 2:该机器由于特别着急…

常见网络厂商设备默认用户名/密码大全

常见网络厂商的默认用户名/密码 01 思科 (Cisco) 设备类型:路由器、交换机、防火墙、无线控制器 默认用户名:cisco 默认密码:cisco 设备类型:网管型交换机 默认用户名:admin 默认密码:admin 02 华…

PH热榜 | 2024-11-18

DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 在线预览 1. Momen 标语:快速搭建你的最小可行产品,然后扩展它,无需任何编程经验。 介绍&#xff…

LoFTR: Detector-Free Local Feature Matching with Transformers—特征点匹配算法系列

LoFTR: Detector-Free Local Feature Matching with Transformers 受到:受到开创性作品 SuperGlue 的启发 摘要总结: 提出了一种局部图像特征匹配的新方法。更为突出说明的是室内场景下的特征点的匹配问题。 不是依次执行图像特征检测、描述和匹配&#…

Percona XtraBackup备份docker版本mysql 5.7

my.cnf配置文件 [client] default_character_setutf8[mysqld] # 数据存储目录(必须手动指定) datadir/var/lib/mysql/data# 字符集 collation_server utf8_general_ci character_set_server utf8 # 二进制日志 server-id1 log_bin/var/log/mysql/binl…

Windows安装vcpkg教程(VS2022)

内容摘要: 本文详细介绍如何在Windows系统上使用 Git 克隆 vcpkg 仓库来安装vcpkg工具,并链接Visual Studio 2022。 目录 一、关于vcpkg 二、开发环境 三、安装Git 四、使用 Git 克隆 vcpkg 仓库 一、关于vcpkg vcpkg 是一个开源的 C 包管理工具&am…

nodejs入门(1):nodejs的前后端分离

一、引言 我关注nodejs还是从前几年做了的一个电力大数据展示系统开始的,当然,我肯定是很多年的计算机基础的,万变不离其宗。 现在web网站都流行所谓的前后端结构,不知不觉我也开始受到这个影响,以前都是前端直接操作…

智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建

hello~这里是维小帮,如有项目需求和技术交流欢迎大家私聊我们!点击文章最下方获取智慧停车场方案~撒花! 随着城市化进程的加速,停车难问题日益凸显。智能停车系统作为缓解停车压力的有效手段,其核心技术与架构的构建至…

Django5 2024全栈开发指南(三):数据库模型与ORM操作

目录 一、模型的定义二、数据迁移三、数据表关系四、数据表操作4.1 Shell工具4.2 数据新增4.3 数据修改4.4 数据删除4.5 数据查询4.6 多表查询4.7 执行SQL语句4.8 数据库事务 Django 对各种数据库提供了很好的支持,包括 PostgreSQL、MySQL、SQLite 和 Oracle&#x…

中仕公考怎么样?事业编面试不去有影响吗?

事业编考试笔试已经通过,但是面试不去参加会有影响吗? 1. 自动放弃面试资格:未能按时出席事业单位的面试将被视为主动放弃该岗位的竞争机会。 2. 个人信誉问题:面试作为招聘流程的关键步骤,无故缺席可能被解释为诚信…

MySql结合element-plus pagination的分页查询

实现效果如下: 重点:使用mysql查询的limit和offset 原生SQL写法: select c.id as deptid,c.name as department,position,a.name staffname,2024-11 as shijian ,CASE WHEN b.shijian IS NULL THEN no ELSE yes END AS submit from fa_wecom…

学习笔记019——Ubuntu部署tomcat

1、下载Tomcat压缩包。本人下载的版本是:apache-tomcat-8.5.77.tar.gz 2、将压缩包上传到Ubuntu某个目录。 本人存放的目录是 /opt 目录下, 命令解压: ## 解压tomcat压缩包 tar -zxvf apache-tomcat-8.5.77.tar.gz 3、vim打开bin目录的setclasspath…

【JavaSE】(6)抽象类和接口

目录 一、抽象类 1、什么是抽象类 2、抽象类的特点 3、抽象类的作用 4、抽象类示例代码 二、接口 1、什么是接口 2、接口的书写建议 3、接口的特点 4、实现多个接口 5、接口能“忘记类型” 6、接口间的继承 7、接口的应用 7.1、引用类型的比较--Comparable 和 Co…