[转载]Linux中的网络接口及LO回环接口

news/2024/7/6 1:48:19
转自:https://blog.csdn.net/weixin_39863747/article/details/80564358

Linux中的网络接口及LO回环接口

1、linux的网络接口之扫盲

  (1)网络接口的命名

  这里并不存在一定的命名规范,但网络接口名字的定义一般都是要有意义的。例如:

  eth0: ethernet的简写,一般用于以太网接口。

  wifi0:wifi是无线局域网,因此wifi0一般指无线网络接口。

  ath0: Atheros的简写,一般指Atheros芯片所包含的无线网络接口。

  lo: local的简写,一般指本地环回接口。

  (2)网络接口如何工作

  网络接口是用来发送和接受数据包的基本设备。

  系统中的所有网络接口组成一个链状结构,应用层程序使用时按名称调用。

  每个网络接口在linux系统中对应于一个struct net_device结构体,包含name,mac,mask,mtu…信息。

  每个硬件网卡(一个MAC)对应一个网络接口,其工作完全由相应的驱动程序控制。

  (3)虚拟网络接口

  虚拟网络接口的应用范围非常广泛。最着名的当属“lo”了,基本上每个linux系统都有这个接口。

  虚拟网络接口并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。

  虚拟网络接口和真实存在的网络接口在使用上是一致的。

  (4)网络接口的创建

  硬件网卡的网络接口由驱动程序创建。而虚拟的网络接口由系统创建或通过应用层程序创建。

  驱动中创建网络接口的函数是:register_netdev(struct net_device *)或者register_netdevice(struct net_device *)。

  这两个函数的区别是:register_netdev(…)会自动生成以”eth”作为打头名称的接口,而register_netdevice(…)需要提前指定接口名称.事实上,register_netdev(…)也是通过调用register_netdevice(…)实现的。

  2、LINUX中的lo(回环接口)

  1) 什么是LO接口?

  在LINUX系统中,除了网络接口eth0,还可以有别的接口,比如lo(本地环路接口)。

  2) LO接口的作用是什么?

  假如包是由一个本地进程为另一个本地进程产生的, 它们将通过外出链的’lo’接口,然后返回进入链的’lo’接口.具体参考包过滤器的相关内容。

  PART2 实验:

  本地一个进程发起连接,到一个本地的daemon监听的内网IP地址(eth1: 10.1.1.1)的端口(8085),此时在eth1上是抓不到包的,在 lo 上抓到,说明使用的是本地回环接口lo,而网络层的IP地址则是内网IP地址.

 

    3)lo接口定义:本地回环地址指的是以127开头的地址(127.0.0.1 – 127.255.255.254),通常用127.0.0.1来表示。

127.0.0.1,通常被称为本地回环地址(Loop back address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在windows操作系统中也有相似的定义,所以通常在不安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。

其主要作用有两个:

  • 一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题;
  • 另一个作用是某些SERVER/CLIENT的应用程序在运行时需调用服务器上的资源

转载于:https://www.cnblogs.com/workingdiary/p/10396171.html


http://www.niftyadmin.cn/n/1583403.html

相关文章

laravel 安装

一:laravel安装1:laravel最新版安装composer global require "laravel/installer" #使用Composer下载Laravel安装程序 laravel new XXX #创建一个laravel项目,XXX为项目名称2:laravel指定版本安装composer create-project laravel…

Java 11 究竟比 8 快了多少?

阅读本文大概需要 1.2 分钟。作者:h4cd来源:开源中国社区开源规划调度引擎 OptaPlanner 官网发布了一个 Java 11 GC 性能基准测试报告。当前使用量最大的 Java 版本是 8,所以测试者用 Java 8 与 Java 11 进行对比测试。GC 是影响 Java 性能的…

laravel在视图中使用php代码

在laravel框架中,在视图文件中使用PHP代码使用到了Blade 模板引擎,Blade 是 laravel 提供的一个简单强大的模板引擎。它不像其他流行的 PHP 模板引擎那样限制你在视图中使用原生的 PHP 代码,事实上它就是把 Blade 视图编译成原生的 PHP 代码并缓存起来。…

Docker入门(三)使用Docker Compose

Compose介绍 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就…

PYTHON2.day05

1.poll方法实现IO多路复用 p poll() p.register() p.unregister() p.poll() 2.epoll方法实现IO多路复用 * 效率更高 * 触发方式更多 * 可以监控的更多IO 3.struct模块 功能:python数据转换为bytes发送 Struct(fmt)生成数据格式对象…

ACM MM 论文 | 用于行人重识别的多层相似度感知CNN网络 ...

小叽导读: 行人重识别是指给定一个摄像头下某个行人的图片,在其他摄像头对应的图片中准确地找到同一个人。行人重识别技术有十分重要的科研和实际应用价值,近来广泛应用到交通、安防等领域,对于创建平安城市、智慧城市具有重要的意…

分享几款Unity脚本插件 解决跨平台输入控制难题 ...

随着科技进步和游戏硬件品质的不断提升,游戏玩家对游戏操作的便利性有了越来越高的要求。对于Unity游戏开发人员来说,要让游戏同时适配不同的游戏平台真的不是一件容易的事情。今天千锋讲师就分享几款Unity脚本插件,帮助大家解决全平台的输入…

laravel乐观锁和悲观锁

一:乐观锁在laravel中乐观锁大多是基于数据版本 ( Version )记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现…