【回眸】牛客网刷刷刷!网络专项知识点大集合

news/2024/10/18 8:34:49/

前言

正文

网络设备

net_device包含的信息

DHCP作用

DHCP交互过程

DHCP饥饿攻击

注册网络设备

不具有路由功能的网络设备

Linux网络通信中sk_buff 

net_device结构体

查询路由表

虚拟网卡


前言

笔者是个物联网专业的应届生,有一天发现自己对网络相关的知识一无所知,于是决定在做题中探究一二。

正文

网络设备

网络设备及部件是连接到网络中的物理实体。

基本的网络设备有:计算机(无论其为个人电脑或服务器)、集线器、交换机、网桥、路由器、网关、网络接口卡(NIC)、无线接入点(WAP)、网络打印机和调制解调器、光纤收发器、光缆等。

net_device包含的信息

net_device 本身包含了设备很多硬件信息,包括是网络设备的名称。设备所使用的共享内存的起始和结束地址。网络设备I/O 基地址。设备使用的中断号。多端口设备使用哪一个端口和DMA通道等,设备传输需要使用的速度由mac层协商而来,而不是net_device 本身去指定。

DHCP作用

当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP。

DHCP交互过程

第一步是主机发送DHCP Discover包,主机(client)想通过这个数据包发现可以给它提供服务的DHCP服务器

第二步,当DHCP服务器收到一条DHCP Discover数据包时,用一个DHCP Offerr包给予客户端响应,此时仍采用广播的方式,因为因为此时请求分配IP的主机(Client)并没有自己ip

第三步,当主机(client)收到了DHCP Offer包以后,确认有可以和它交互的DHCP服务器存在,于是主机(client)发送Request数据包,请求分配IP

第四步,接下来服务器用DHCP ACK包对DHCP请求进行响应,该数据报文中携带了分配的IP

上述四个过程,通过wireshark抓取数据包,发现所有过程均是采用广播的方式。

DHCP饥饿攻击

当伪造合法的MAC地址,不断地向DHCP服务器发出DHCP Request包时,这种情况会耗尽服务器的可用IP,会导致原有的这台DHCP服务器便不能够给客户端分配IP了。

注册网络设备

register_netdev可以用来注册网络设备,其函数原型是int register_netdev(struct net_device *dev),该函数需要一个struct net_device的参数,该参数就代表一个网络设备,不管是真实设备还是虚拟设备,都会通过一个net_device来存储对用网络设备的所有信息。

alloc_netdev是用来分配及初始化结构体struct net_device

ether_setup是用来初始化以太网设备对应的net_device中的部分字段的。

不具有路由功能的网络设备

当一个网络设备不具有路由功能,则当它收到一个目的地址不是它本身的报文时,会丢弃这个报文。当其不具有路由功能时,其主机没有转发数据的功能,但因为数据包的目的地址不是该主机,因此不会对这个数据报文进行处理,而是丢弃该数据报文。

Linux网络通信中sk_buff 

在Linux网络通信中,sk_buff 有四个非常重要的指针,分别是head,data,tail和end,关于这四个指针,在linux的sk_buff中,head 和 end 指向缓冲区的头部和尾部,而 data 和 tail 指向实际数据的头部和尾部。每一层会在 head 和 data 之间填充协议头,或者在 tail 和 end 之间添加新的协议数据。

net_device结构体

net_device 结构体在内核中指代一个网络设备,网络设备驱动程序只需通过填充,net_device的具体成员并注册net_device即可实现硬件操作函数与内核的挂接。net_device 本身是一个巨型结构体,包含网络设备的属性描述和操作接口。IOCTl接口也是其中一个

查询路由表

route 和netstat都可以用来查询路由表

虚拟网卡

在Linux系统中,可以使用ifconfig命令创建一个虚拟网卡;

创建的虚拟网卡与真实的物理网卡MAC地址是一样;

重启系统或网络后,创建的虚拟网卡会消失;

在上层使用上,虚拟网卡和真实的物理网卡没有区别。


http://www.ppmy.cn/news/107255.html

相关文章

“开启科技之门,每日工作充满力量” —— 全国科技者工作日

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

PostgreSQL 16 beta 重磅发布,OpenPie 再次引领中国贡献关键力量

PostgreSQL 一直被誉为全球最先进的开源关系数据库之一,在 DB-engines 排行榜上长期稳居前五。5 月 25 日,PostgreSQL 全球开发团队官方宣布,PostgreSQL 16 Beta 1 版本正式发布。 本次 PostgreSQL 新版本功能亮点众多,涉及多个模…

什么是深度数据包检测 (DPI)

随着混合工作成为生活的正常部分,新技术每天都在使用,同时总是通过网络传输数据的山体滑坡。通过高正常运行时间、快速解决问题和富有洞察力的情报提供无缝的用户体验至关重要。为此,对网络进行端到端监控非常重要。 深度数据包检测是一种用…

Java有线程安全的set吗?

在Java中,有线程安全的Set实现。一个常用的线程安全的Set实现是ConcurrentSkipListSet。ConcurrentSkipListSet是一个有序的集合,基于跳表(SkipList)的数据结构实现。它提供了线程安全的操作,并且具有较好的性能。 接下来笔者用一段简单的Jav…

助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

文章目录 01:油站维度设计02:油站维度构建 01:油站维度设计 目标:掌握油站维度的需求与设计 路径 step1:需求step2:设计 实施 需求:构建油站维度表,得到油站id、油站名称、油站所属…

生产环境之负载均衡LVS+keepalived方案(3)_KeepAlived介绍

keepalived简介 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,加入了可以实现高可用的VRRP(Virtual Router RedundancyProtocol(虚拟路由器冗余协议))功能&#x…

Django实现接口自动化平台(二)认证授权【持续更新中】

上一章: Django实现接口自动化平台(一)日志功能【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章: 一、认证与授权配置 1、认证:获取权限的方式 2、授权:通过认证之后,可以获取哪些权限 …

论文解读 | ICRA2022:用深度贝叶斯算法来估计ICP的协方差

原创 | 文 BFT机器人 01 研究背景 在点云处理中,ICP算法是一种常用的点云配准方法,通过将两个或多个点云对齐,可以进行后续的建模、识别和跟踪等处理。 然而,在ICP算法中,协方差估计起着非常重要的作用,它…