Linux教程

Linux_task6

本文主要是介绍Linux_task6,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux_task6

  • TCP三次握手/四次挥手
  • TCP/UDP区别
  • IP地址分类
  • IP配置方法
  • nmcli实现bonding

TCP三次握手/四次挥手

TCP:3/4
  • 三次握手内容不多,涉及到5种有限状态机(Finite State Machine),小写的seq,ack字段代表TCP首部报文中的序列号和确认号,大写的SYN,ACK是6个flags中的字段,ack确认号表示期待对方下次发过来的seq序列号,window size机制表示不再采取一来一去的收发形式,而是当收到size个数据包时再作回复
  • 四次挥手很少用到,重点讨论FIN-WAIT1和FIN-WAIT2之间的半关闭状态,涉及到5种新的有限状态机(还有一种特殊状态closing,例如当server收到client的FIN包时,直接回复一个FIN包,跳过了close-wait的状态),其中time-wait状态的时间是[2MSL][1](maximum segment length),意为TCP报文段最大生存时间的2倍,由于数据包的先发后至特性,因此client会在这段时间等待server端完成全部的数据传输,再进入closed状态。四次挥手中server/client都可以是主动发起方。在server回复第一次ACK包 到 第二次回复FIN包的过程中,如果server始终没有回复FIN包,那么称client在半关闭状态下进入孤儿连接,由内核来接管,内核中定义了表示孤儿连接最大连接数和生存时间的参数

TCP/UDP区别

TCPUDP
Connection-orientedConnectionless
sequencenone
FTP File-Sharing E-mailVoice Streaming Video Streaming

IP地址分类

  • A类:
    0 0000000 - 0 1111111.X.Y.Z : 0-127.X.Y.Z 网络ID位是最高8位,主机ID是24位低位 网络数:126=2^7(可变的网络ID位数)-2 每个网络中的主机数:2^24-2=16777214 默认子网掩码:255.0.0.0 私网地址:10.0.0.0 范例:114.114.114.114,8.8.8.8,1.1.1.1,58.87.87.99,119.29.29.29

127.0.0.1为回环地址,因此127.0.0.0网段被保留;其特殊性在于,只要是和loopback网卡在同一网段的ip地址,都能ping通,并且loopback网卡上新加的ip地址并不会生成路由记录,回环网卡因物理上比较稳定,在生产环境中时有用到

  • B类:
    10 000000 - 10 111111.X.Y.Z:128-191.X.Y.Z 网络ID位是最高16位,主机ID是16位低位 网络数:2^14=16384 每个网络中的主机数:2^16-2=65534 默认子网掩码:255.255.0.0 私网地址:172.16.0.0-172.31.0.0 范例:180.76.76.76,172.16.0.1
  • C类:
    110 0 0000 - 110 1 1111.X.Y.Z: 192-223.X.Y.Z 网络ID位是最高24位,主机ID是8位低位 网络数:2^21=2097152 每个网络中的主机数:2^8-2=254 默认子网掩码:255.255.255.0 私网地址:192.168.0.0-192.168.255.0 范例: 223.6.6.6
  • D类:组(多)播,1110 0000 - 1110 1111.X.Y.Z: 224-239.X.Y.Z
  • E类:保留未使用,240-255

IP配置方法

ifconfig IFACE IFADDR/MASK
ifconfig IFACE up/down
ifconfig IFACE:<Label> IP/MASK
#来源于古老的net-tools工具包,现在已很少使用
ip address [add][del][change] IFADDR/MASK dev IFACE [label IFACE:NUM][scope {host,link,global}]  [master] [type] 
nmcli connection reload
nmcli connection [up][down] IFACE
nmcli connection [add][modify][del] con-name xxx ifname xxx ipv4.method {auto,manual}\
> ipv4.{addresses,gateway} type {ethernet,bond,bridge,team}
# nmcli命令自动修改磁盘文件,永久保存
# nmcli的底层是NetworkManager守护进程

nmcli实现bonding

[root@linuxprobe ~]# nmcli connection add type bond con-name mybond ifname bond0 mode active-backup
Connection 'mybond' (8f0d9cce-ed6a-4d0e-a9a2-cba48490d1d2) successfully added.
[root@linuxprobe ~]# nmcli connection add type bond-slave master bond0 ifname ens37
Connection 'bond-slave-ens37' (c4f82c63-145d-4ec9-8432-f5ecbb7f3b3a) successfully added.
[root@linuxprobe ~]# nmcli connection add type bond-slave master bond0 ifname ens38
Connection 'bond-slave-ens38' (c5a3f017-3a99-428a-8b9d-4a00af4152da) successfully added.
[root@linuxprobe ~]# nmcli connection reload
[root@linuxprobe ~]# nmcli connection up bond-slave-ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@linuxprobe ~]# nmcli connection up bond-slave-ens38
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@linuxprobe ~]# nmcli connection up mybond
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
[root@linuxprobe /]# nmcli connection
NAME                UUID                                  TYPE      DEVICE
ens33               49da06d1-7851-3b3c-8025-39ac395471fc  ethernet  ens33
mybond              8f0d9cce-ed6a-4d0e-a9a2-cba48490d1d2  bond      bond0
bond-slave-ens37    c4f82c63-145d-4ec9-8432-f5ecbb7f3b3a  ethernet  ens37
bond-slave-ens38    c5a3f017-3a99-428a-8b9d-4a00af4152da  ethernet  ens38
Wired connection 1  4e5d315c-274b-32eb-88a3-ca5cd71c07ce  ethernet  --
Wired connection 2  da549472-f269-3db4-af9b-47e66e7a1810  ethernet  --

#此时查看网卡接口(ip addr)可以发现bond网卡的MAC地址统一
3: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:13:dd:40 brd ff:ff:ff:ff:ff:ff
    altname enp2s5
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:13:dd:40 brd ff:ff:ff:ff:ff:ff permaddr 00:0c:29:13:dd:4a
    altname enp2s6
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:13:dd:40 brd ff:ff:ff:ff:ff:ff
    inet 192.168.142.134/24 brd 192.168.142.255 scope global dynamic noprefixroute bond0
       valid_lft 1024sec preferred_lft 1024sec
    inet6 fe80::9647:c69d:cc99:d556/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
       
#查看一下bond网卡的真实MAC地址,可以看到这个MAC地址是属于ens37的
[root@linuxprobe /]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.11.11-300.fc34.x86_64

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens37
MII Status: up
Speed: 10 Mbps
Duplex: half
Link Failure Count: 0
Permanent HW addr: 00:0c:29:13:dd:40
Slave queue ID: 0

Slave Interface: ens38
MII Status: up
Speed: 10 Mbps
Duplex: half
Link Failure Count: 0
Permanent HW addr: 00:0c:29:13:dd:4a
Slave queue ID: 0
这篇关于Linux_task6的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!