linux网络基础

一、TCP FLAG 解析

序列号:表示本报文段所发送数据的第一个字节的编号。在TCP 连接中所传送的字节流的每一个字节都会按顺序编号。

由于序列号由32位表示,所以每2^32 个字节。就会出现序列号回绕,再次从0开始。

确认号:表示接收方期望收到发送方下次报文段的第一个字节数剧的编号,也就是告诉发送方:我希望你

(指发送方)下次发送的数据的第一个字节数据的编号为此确认号

数据偏移:表示TCP 报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段

到底有多长,它指出TCP 报文段的数据起始处距离TCP 报文段的起始处有多远。该字段的单位是32位

(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移就是TCP 首部最大60字节。

URG:表示本报文段中的发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)

只有当UEG=1 时才有效

ACK:表示是否前面确认号字段是否有效。只有当ACk=1 时,前面的确认号字段才有效。TCP规定,

连接建立后,ACK必须为1,带ACK 标志的TCP报文段称为确认报文段

PSH:提示接收端应用程序应该立即从TCP 接收缓冲区中读走数据,为接收后续数据腾出空间,如果为1,

则表示对方应当立即把数据提交给上层应用,而不是缓存起来,主机拒绝响应,带RST 标志的TCP 报文段称为复位报文段。

SYN:在建立连接时使用,用来同步序号,当SYN=1 ,ACK =0 时,表示这是一个请求建立连接报文段;

当SYN=1 ,ACK=1 时,表示对方同意建立连接,SYN=1 ,说明这是一个请求建立连接或同意建立连接的报文。

SYN标识(报文段称为同步报文段)

窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文的确认号开始允许对方发送的数据量,达到此值,

需要ACK确认后才能再继续传送后面数据,由window size value * window size scaling factor (此值在三次握手阶段TCP 选项window scale 协商得到)

得出此值

二、三次握手

客户端状态机: CLOSED、SYN-SENT 、 ESTAB-LISHED

服务器状态机:CLOSED、LISTN、SYN-REVD、ESTAB-LISTHED

三、 四次握手

挥手不一定有。如果服务器崩了之后,或者客户端崩了。

下图为正常客户关闭连接的情况。

客户端ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、TIME-WAIT 【在这个状态机会存在 2MSL 2倍的最大段生存时间、为了保证服务器端还有数据传输】、CLOSED

服务器ESTABLISHED、CLOSE-WAIT、LAST-ACK、CLOSED

四、怎么查看端口有没有被占用

lsof -i :22

ss -tnlp | grep :22 // p 显示是什么进程在占用该端口

判断端口是否正在打开

< /dev/tcp/127.0.0.1/80

echo $?

五、网卡配置文件

通用linux配置文件

/etc/sysconfig/network-scripts/ifcfg-网卡名称

DEVICE=eth0

TYPE=Ethernet

NAME=eth0

BOOTPROTO=none / static / dhcp

IPADDR=10.0.0.6

PREFIX=24

GATEWAY=10.0.0.1

DNS1=114.114.114.114

DNS2=8.8.8.8

ONBOOT=on

arp -n 查看下arp 地址

arp -s 1.1.1.1 00:00:02:11:22:33

ip addr add 10.1.1.1/24 dev eth0 label 1

修改主机名永久生效

[root@ntp ~]# cat /etc/sysconfig/network

hostname ntp

[root@ntp ~]#

hostname ntp 只是临时生效

当默认去ping的时候 如果没有完整的域名 会自动补充后缀

后缀在 /etc/resolv.conf

search xxxx 补充

可以在配置文件中修改 或者在网卡中添加DOMAIN=xxx

六、怎么查看路由

route

ifconfig

都来自于net-tools 包

现在 逐渐被 iproute 包替代

怎么查看一个指令来自哪个包

which route

/usr/sbin/route

rpm -qf /usr/sbin/route

net-tools-2.0-0.17.20131004git.el7.x86_64

[root@ntp ~]# rpm -qf which route

net-tools-2.0-0.17.20131004git.el7.x86_64

[root@ntp ~]#

七、VMware 复制虚机的问题

vmware 复制后 会自动更新网卡的mac,并且在centos 6系统有些奇怪的现象,会修改网卡名称。

因此需要进入到配置文件

/etc/udev/rule.d/70-persistent-rule.d

注册修改

并且需要重启修复。

如果不需要重新修复。

那么需要重新挂载网卡的驱动

怎么挂载网卡的需求?

查看驱动

dmesg | grep -A 10 -B 10 eth 或者 ethtool -i eth1

查看到驱动后重新挂载

先卸载再加载

modprode -r 驱动名称

modprode 驱动名称

八、配置路由协议

静态路由协议

动态路由协议

通过守护进程获取动态路由

安装quagga包,通过命令vtysh 配置

支持多种路由协议:RIP、OSPF 和 BGP

quagga 可以将linux 实现为软路由

Linux下使用Quagga搭建软路由-OSPFv2学习_支持ospf的软路由-CSDN博客

九、常用的指令

centos6 之前常用network 服务,centos 7 、8 之后network 服务将被遗弃,剩下NetworkManager 服务

网卡命名

centos6网卡命名,网络接口使用连续命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化

centos7 以上使用基于硬件、设备类型命名。systemd 对网络设备的命名方式

如果firmware 或 BIOS 为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,如:eno1

如果firmware 或 BIOS 为主板上PCI-E扩展槽所提供的索引信息可用,且可预测则根据此索引进行命名,如:ens1

如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0

如果用户显式启动,也可根据mac 地址进行命名,如enx2387a1dc56

上述均不可用时,则使用传统命名机制

基于BIOS 支持启用biosdevname 的软件

内置网卡识别为 em1、em2

pci卡识别为 pYpX Y:slot X:port

网卡组成格式:

en:Ethernet 有线局域网

wl:wlan 无线局域网

ww:wwan 无线广域网

o:集成设备的设备索引号

s:扩展槽的索引号

x:基于mac 地址命名

ps:enp2s1

传统命名方式:

(1)编辑/etc/default/grub配置文件

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

(2)为grub生成其配置文件

grub2-mkconfig -o etc/grub2.cfg

(3)重启系统

centos6 之前的主机名保存在 /etc/sysconfig/network

centos7之后的主机名保存在 /etc/hostname

路由配置文件存放在

/etc/sysconfig/network-scripts/route-IFACE

route-IFACE 文件需要手工添加

填写格式

TARGET via GW

172.168.1.1/24 via 10.1.1.1

接口IP 地址配置

注意每个地址的scope ,分为三种 host【仅本主机访问】,global【全局可以访问,即从本机各个网卡进来都可以访问】,link【从本链路过来的可以接收,仅链路级别生效,例如ipv6 fe80链路本地地址】

其中ping 127.0.0.2 、127.1.1.2 都认为是 127.0.0.1/8 中的回环地址范围

网卡别名

别名注意 别名的网卡的IP地址只能是静态配置,不能动态获取。

ip address add 1.1.1.1 dev lo label lo:1

ip address add 1.1.1.1/24 dev lo label lo:1

不过以上指令都为临时配置,可以使用配置文件保存

/etc/sysconfig/network-scripts/ifcfg-lo:1

DEVICE=lo:1

NAME=lo:1

BOOTPROTO=none

IPADDR=1.1.1.1

PREFIX=32

ONBOOT=yes

修改命令

ip link set eth0 name eno1111

同样的配置文件也需要修改

打印mac地址

ip link

查看mac地址学习情况

ip neigh

后续在centos7之后都使用nmcli 工具,需开启NetworkManager 服务

nmcli connection show

nmcli connection add con-name eth1-work ipv4.method manual ipv4.addresses 172.16.1.1/26 type ethernet ifname eth1

nmcli connection reload

nmcli connection up eth1-work

配置bond

由于bond 其中有多种模式,其中一两种模式需要上联交换机支持配置。因此vmware 只能做出一两种效果

bonding 工作模式:共7种模式:0-6 mode

mode 0( balance-rr) :轮询(round-robin)策略,从头到尾顺序的在每一个slave 接口上面发送数据包。

本模式提供负载均衡和容错能力

mode1(active-backup):活动-备份(主备)策略,只有一个slave 被激活,当且仅当活动的slave 接口失败

时才会激活其他slave,为了避免交换机发生混乱此时绑定的mac 地址只有一个外部端口上可见。

mode3(broadcast):广播策略,在所有slave 接口上传送所有的报文,提供容错能力

说明:active-backup ,balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置,其他绑定模式需要配置交换机以便整合链接。如:

cisco交换机需要在模式0、2和3 种使用etherchannel,但在模式4中需要LACp 和 etherchannel

[root@ntp network-scripts]# cat ifcfg-bond0

DEVICE=bond0

TYPE=bond

BOOTPROTO=none

IPADDR=192.168.24.100

PREFIX=24

BONDING_OPTS="mode=1 miimon=100" //miimon是各个网卡之间的交流信息 配置为100ms 用于判断是否需要切换

ONBOOT=yes

[root@ntp network-scripts]# more ifcfg-eno67109440

DEVICE=eno67109440

TYPE=ethernet

NAME=eno67109440

MASTER=bond0

SLAVE=yes

ONBOOT=yes

[root@ntp network-scripts]# more ifcfg-eno50332184

DEVICE=eno50332184

TYPE=ethernet

NAME=eno50332184

MASTER=bond0

SLAVE=yes

ONBOOT=yes

--------------------

centos 7 之后推荐使用nmcli 命令实现bond

添加bonding 接口

nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup

添加从接口

nmcli con add type bond-slave ifname ens7 master bond0

nmcli con add type bond-slave ifname ens3 master bond0

注:如无为从属接口提供连接名,则该名称是接口名称加类型构成

要启动绑定,则必须首先启动从属接口

nmcli con up bond-slave-eth0

nmcli con up bond-slave-eth1

启动绑定

nmcli con up mybond0

配置网络组team

网络组team 实际是基于内核的另外一种bond技术

网络组team 是将多个网卡聚合在一起方法,从而实现冗余和提高吞吐量

网络组由内核驱动和teamd 守护进程实现

centos 7往后都是网络组team

多种方式runner

broadcast

roundrobin

activebackup

loadbalance

lacp(implements the 802.3ad link aggregation control protocol)

网络组特点

启动网络组接口不会自动启动网络组中的port 接口

启动网络组接口中的port 接口总会自动启动网络组接口

禁用网络组接口会自动禁用网络组的port 接口

没有port 接口的网络组接口可以启动静态IP 连接

启用DHCP连接时,没有port 接口的网络组会等待port 接口的加入

配置参考 创建网络组接口 nmcli con add type team con-nanme CNAME ifname INAME [config JSON] CNAME 连接名 INAME 接口名 JSON 指定runner 方式,格式: '{"runner":{"name":"METHOD"}}' METHOD 可以是broadcast,roundrobin,activebackup,loadbalance,lacp 创建port 接口 nmcli con add type team-slave con-name CNAME ifname INAME master TEAM CNAME 连接名,连接名若不指定,默认为team-slave-IFACE INAME 网络接口名 TEAM 网络组接口名 断开和启动 nmcli dev dis INAME nmcli con up CNAME INAME 设备名 CNAME 网络组接口名或port 接口

网桥

brctl show

brctl addbr br0

brctl delbr br0

brctl addif br0 eno1

brctl showmacs br0

brctl showstp br0

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值