Linux学习笔记(三)_网络
来源:互联网 发布:淘宝定金尾款是同价格 编辑:程序博客网 时间:2024/05/22 07:45
先简单说下网卡工作原理:
内核如何从网卡接收数据,传统的过程:
1.数据到达网卡;
2.网卡产生一个中断给内核;
3.内核使用I/O指令,从网卡I/O区域中去读取数据
这种方式在遇到大量的网络流量时,会产生大量的中断,资源浪费。就又出现另一种方式:轮询:内核屏蔽掉中断,然后定时周期的访问网卡看有没有数据。这种在流量很少时也会造成浪费。
结合上述优点出现了NAPI “中断”+”轮询”。既网卡收到数据包后,马上关闭产生的中断,直到接受到一定数目或者接受完后才继续发送中断。
上面的方式都有CPU参与,cpu 从网卡读取的数据会放在内存里,又出现了DMA这一种技术,让网卡和内存直接交换数据。
1.首先,内核在主内存中为收发数据建立一个环形的缓冲队列(通常叫DMA环形缓冲区)。
2.内核将这个缓冲区通过DMA映射,把这个队列交给网卡;
3.网卡收到数据,就直接放进这个环形缓冲区了——也就是直接放进主内存了;然后,向系统产生一个中断;
4.内核收到这个中断,就取消DMA映射,这样,内核就直接从主内存中读取数据
发现网卡
[root@localhost ~]# dmesg | grep -in eth
1798:[ 13.365619] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:72:ee:d8
1799:[ 13.365625] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
1806:[ 13.720485] e1000 0000:02:02.0 eth1: (PCI:66MHz:32-bit) 00:0c:29:72:ee:e2
1807:[ 13.720489] e1000 0000:02:02.0 eth1: Intel(R) PRO/1000 Network Connection
1808:[ 13.738101] systemd-udevd[513]: renamed network interface eth0 to eno16777736
1809:[ 13.744009] systemd-udevd[514]: renamed network interface eth1 to eno33554960
1901:[ 26.285420] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
- 从上面可以看到网卡型号,还可以看到网卡装置代号被systemd-udev这个东西给改变了。所以我们“ifconfig”看到的就是这个。
- 一般来说,(red hat相关)系统会在/etc/sysconfig/network-scripts/下创建相同名字的网卡配置文件。ubuntu 则直接是/etc/network/interfaces
- 网卡配置文件:
- radhat:
TYPE=Ethernet
- *PROXY_METHOD=none
- BROWSER_ONLY=no
- BOOTPROTO=dhcp #启动DHCP;不启动用none就好
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_FAILURE_FATAL=no
- IPV6_ADDR_GEN_MODE=stable-privacy
- NAME=ens33 #和本文件名一致
- UUID=2c5c0983-627f-4ca0-8e50-158ef55e2519
- DEVICE=ens33 #填写网卡装置代号
- ONBOOT=yes #是否启动
子接口设定
- vim /etc/sysconfig/network-script/ifcfg-eth0:0
- DEVICE=eth0:0
- IPADDR=10.1.1.1
- PREFIX=24
- BOOTPROTO=none
- ONPARENT=yes
- ONBOOT=yes*
- 关于配置文件和网卡的关系是:多个文件可以对应同一个网卡,但同时只能启用一个配置。
ifconfig ens33 down/up 只能够开启关闭网卡,如果网卡配置名和配置文件命一致则按照配置文件开启,否则就只是开启。ifconfig eth0 192.168.100.100 \
netmask 255.255.255.128 mtu 8000 #临时改变参数,重启后不生效 ifup/ifdown 后面接配置文件中的NAME参数,按照配置文件启动或关闭,(也可以直接写装置代号)。
ubuntu
auto lo
iface lo inet loopbackauto ens33
iface ens33 inet static #若是动态就是 dhcp就行,下面的参数忽略
address 192.168.1.12
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.1
子接口:
auto ens3:0
iface ens3:0 inet static
address 10.1.1.1
netmask 255.255.255.0
DNS都在下面的文件里配置
sudo vi /etc/resolv.conf
nameserver 202.96.128.68
nameserver 61.144.56.101
nameserver 192.168.8.220
有两个很好用的network-manage工具:”nmcli “;”nmtui”
我比较喜欢nmcli ,他有自动补全功能,用的就像是在配置路由器交换机一样。
路由指令:route
route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
添加路由
[root@www ~]# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
删除路由
接下来看看ip这个强大的指令
首先在 ip link 网络层以下
ip link show
ip link show ens33
ip link set ens33 name first mtu 8000 #这个改变了网卡装置名
ip link set ens33 up/down #开启,关闭跟ifconfig 一样
然后是 ip address/route 网络层
ip addrss show #显示所有接口参数
ip address add 192.168.4.4/24 broadcast 192.168.4.255 dev ens33 label ens33:one
这个添加子接口很方便
ip address help #查看更多选项 都很简单。
增加路由,主要是本机直接可沟通的网域
ip route add 192.168.5.0/24 dev eth0
:增加可以通往外部的路由,需透过 router
ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
传输层往上就是用到 netstat
netstat -rn #与route -n 一样
netstat -tunpl #查看已启动的网络服务 -p 列出PID,-l 服务正在监听
文件/etc/sevices记录了服务与端口的关系。
- Linux学习笔记(三)_网络
- linux内核网络子模块学习笔记_百度文库
- Linux 学习笔记_Linux网络管理_详解
- Linux笔记_网络编程
- Linux网络基础知识_笔记
- linux学习笔记_常用命令
- Linux学习笔记三
- Linux学习笔记三
- Linux学习笔记三
- linux学习笔记三
- Linux 学习笔记三
- Linux笔记_网络_TCP/IP
- Linux笔记(4)_网络设置
- 黑马程序员_网络编程学习笔记
- Android学习笔记 day04 _ 网络编程
- 黑马程序员_网络编程学习笔记
- Linux命令学习(一)_网络
- 黑马程序员_学习笔记_Java基础_网络编程
- 【学习总结】Machine Learning Foundations(待补充。。。)
- 根据身份证计算年龄
- Java语言规范
- 通讯录包含保存文本数据和读取文本数据功能
- ASM red_hat4地址
- Linux学习笔记(三)_网络
- linux0.11内核完全剖析- fork.c
- JAVA关键字this和super作用与案例
- vue项目,引入elementUI没有样式,报错如下图,是好像是少了什么支持文件
- OnSharedPreferenceChangeListener调用失败之坑 强引用 软引用 弱引用 虚引用之分
- 多线程之间实现
- Android studio默认安装路径?
- leetcode 401. Binary Watch 一个十分经典的DFS深度优先遍历的做法
- QT控件大全五QProgressIndicator