目录
1、简述osi七层模型和TCP/IP五层模型
OSI(Open System Interconnection)开放系统网络互联。
2、描述TCP三次握手四次挥手
三次握手:
四次挥手:
3、描述TCP和UDP区别
TCP特性:
UDP特性:
4、网卡绑定bond0的实现
分层名称 | Name | 功能 | 描述 |
7.应用层 | Application | 针对特定应用的协议 | 提供为应用软件而设的接口,以设置与另一软件之间的通信,例如HTTP,FTP,SSH,POP3,MYSQL等 |
6.表示层 | Presentation | 设备固有的数据格式和网络标准数据格式的转换 | 把数据转换为能与接收者的系统格式兼容并适合传输的格式 |
5.会话层 | Session | 通信管理,负责建立和断开通信链接,管理传输层以下的分层。 | 负责在数据传输中设置和维护网络中的电脑设备之间的通信链接 |
4.传输层 | Transport | 管理两个节点之间的数据传输,确保数据在可靠地址传输到目标地址。 | 把传输表头加至数据以形成数据包,表头包含了所使用的协议等,例如传输控制协议TCP等。 |
3.网络层 | Network | 地址管理,路由选择,跨网络 | 决定数据的路径选择和转寄,将网络表头加至数据帧,形成报文。例如互联网协议IP等。 |
2.数据链路层 | Data Link | 互联设备之间传送和识别数据帧 | 负责网络寻址,错误侦测,改错,例如以太网,无线局域网,通用分组无线服务。分为两个子层:逻辑链路控制子层 介质访问控制子层。 |
1.物理层 | Physical | 以0 1代表电压高低 | 负责管理电脑设备的互通,包括针脚,电压,集线器,线缆规范,中继器,网卡,主机接口卡等。 |
TCP首部:ACK,SYN,FIN,
ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,建立连接后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段。
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前面两次握手中SYN才设置为1,带SYN标志的TCP报文段称为同步报文段。
FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段,finish。
第一次握手:客户端发起访问发送SYN包seq=x到服务器,并进入SYN-SENT状态,等待服务器确认。
第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发一个SYN包seq=y到客户端,即SYN+ACK包,此时服务器进入SYN-RCVD状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手。
握手过程中传送的包里不含数据,三次握手完毕后,客户端和服务器端才正式传输数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将一直被保持下去。
与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手
工作在传输层,
面向连接协议,
全双工协议,
半关闭,
错误检查,
将数据打包成段,排序,
确认机制,
数据恢复,重传,
流量控制,滑动窗口,
拥塞控制,慢启动和拥塞避免算法。
工作在传输层,
提供不可靠的网络访问,
非面向连接协议,
有限的错误检查,
传输性能高,
无数据恢复特性。
含义:将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一个ip地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址。
Bonding聚合链路工作模式,0-6mode,
mode=0,即balance-rr,round-robin policy 轮询,聚合口数据报文按包轮询从物理接口转发。
mode=1,即active-backup,active-backup policy 主备策略,只有active状态的物理接口才转发数据报文。
[23:30:51 root@Centos7 ~]#ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:23:fd:ae brd ff:ff:ff:ff:ff:ff
inet 10.0.0.7/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe23:fdae/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:1e:e4:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:1e:e4:00 brd ff:ff:ff:ff:ff:ff
6: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d6:d6:73 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.162/24 brd 10.0.0.255 scope global noprefixroute dynamic eth1
valid_lft 1796sec preferred_lft 1796sec
inet6 fe80::9279:3deb:ae00:fe6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[23:33:10 root@Centos7 ~]#nmcli
eth1: 已连接 to Wired connection 1
"Intel 82545EM"
ethernet (e1000), 00:0C:29:D6:D6:73, 硬件, mtu 1500
ip4 默认
inet4 10.0.0.162/24
route4 0.0.0.0/0
route4 10.0.0.0/24
inet6 fe80::9279:3deb:ae00:fe6/64
route6 fe80::/64
route6 ff00::/8
virbr0: 已连接 to virbr0
"virbr0"
bridge, 52:54:00:1E:E4:00, 软件, mtu 1500
inet4 192.168.122.1/24
route4 192.168.122.0/24
[23:39:59 root@Centos7 ~]#nmcli connection
NAME UUID TYPE DEVICE
Wired connection 1 664b226f-e716-3271-bfc3-9bf0b26a542f ethernet eth1
virbr0 54c7fb85-b5b3-4186-a911-02642ee8912b bridge virbr0
eth0 4503cc22-9a52-43fb-22f0-2f1c09aaab49 ethernet --
预计规划给虚拟网卡ip为:10.0.0.100,并另外在centos8机器ping此ip。表现为不可访问,因为现在还未配置bonding,等在centos7上配置完毕后,就自然会ping通。
[07:32:21 root@Centos8 ~]#ping 10.0.0.100
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
From 10.0.0.8 icmp_seq=1 Destination Host Unreachable
From 10.0.0.8 icmp_seq=2 Destination Host Unreachable
From 10.0.0.8 icmp_seq=3 Destination Host Unreachable
From 10.0.0.8 icmp_seq=4 Destination Host Unreachable
From 10.0.0.8 icmp_seq=5 Destination Host Unreachable
From 10.0.0.8 icmp_seq=6 Destination Host Unreachable
From 10.0.0.8 icmp_seq=7 Destination Host Unreachable
From 10.0.0.8 icmp_seq=8 Destination Host Unreachable
From 10.0.0.8 icmp_seq=9 Destination Host Unreachable
bonding 在centos7配置命令如下:
[23:40:09 root@Centos7 ~]#nmcli connection add con-name mybond0 ifname bond0 type bond mode active-backup ipv4.method manual ipv4.addresses 10.0.0.100/24
连接 "mybond0" (7146d83d-64d7-4024-be95-f613f728565f) 已成功添加。
[23:45:14 root@Centos7 ~]#nmcli connection
NAME UUID TYPE DEVICE
Wired connection 1 664b226f-e716-3271-bfc3-9bf0b26a542f ethernet eth1
mybond0 7146d83d-64d7-4024-be95-f613f728565f bond bond0
virbr0 54c7fb85-b5b3-4186-a911-02642ee8912b bridge virbr0
eth0 4503cc22-9a52-43fb-22f0-2f1c09aaab49 ethernet --
[23:46:55 root@Centos7 ~]#cd /etc/sysconfig/network-scripts/
[23:47:29 root@Centos7 network-scripts]#ls
ifcfg-eth0 ifdown-eth ifdown-post ifdown-TeamPort ifup-eth ifup-plip ifup-sit init.ipv6-global
ifcfg-lo ifdown-ib ifdown-ppp ifdown-tunnel ifup-ib ifup-plusb ifup-Team network-functions
ifcfg-mybond0 ifdown-ippp ifdown-routes ifup ifup-ippp ifup-post ifup-TeamPort network-functions-ipv6
ifdown ifdown-ipv6 ifdown-sit ifup-aliases ifup-ipv6 ifup-ppp ifup-tunnel
ifdown-bnep ifdown-isdn ifdown-Team ifup-bnep ifup-isdn ifup-routes ifup-wireless
[23:47:30 root@Centos7 network-scripts]#cat ifcfg-mybond0
BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.0.0.100
PREFIX=24
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=mybond0
UUID=7146d83d-64d7-4024-be95-f613f728565f
DEVICE=bond0
ONBOOT=yes
[23:51:46 root@Centos7 network-scripts]#nmcli connection add type bond-slave ifname eth1 master bond0
连接 "bond-slave-eth1" (980a75e5-04e2-4931-bb9f-fbc8db8ee846) 已成功添加。
[23:52:59 root@Centos7 network-scripts]#nmcli connection add type bond-slave ifname eth0 master bond0
连接 "bond-slave-eth0" (22fa4265-c664-4482-9559-b0a3dd55784f) 已成功添加。
[23:53:06 root@Centos7 network-scripts]#nmcli connection
NAME UUID TYPE DEVICE
Wired connection 1 664b226f-e716-3271-bfc3-9bf0b26a542f ethernet eth1
mybond0 7146d83d-64d7-4024-be95-f613f728565f bond bond0
virbr0 54c7fb85-b5b3-4186-a911-02642ee8912b bridge virbr0
bond-slave-eth0 22fa4265-c664-4482-9559-b0a3dd55784f ethernet --
bond-slave-eth1 980a75e5-04e2-4931-bb9f-fbc8db8ee846 ethernet --
eth0 4503cc22-9a52-43fb-22f0-2f1c09aaab49 ethernet --
[23:54:00 root@Centos7 network-scripts]#ls
ifcfg-bond-slave-eth0 ifdown-bnep ifdown-post ifdown-tunnel ifup-ippp ifup-ppp ifup-wireless
ifcfg-bond-slave-eth1 ifdown-eth ifdown-ppp ifup ifup-ipv6 ifup-routes init.ipv6-global
ifcfg-eth0 ifdown-ib ifdown-routes ifup-aliases ifup-isdn ifup-sit network-functions
ifcfg-lo ifdown-ippp ifdown-sit ifup-bnep ifup-plip ifup-Team network-functions-ipv6
ifcfg-mybond0 ifdown-ipv6 ifdown-Team ifup-eth ifup-plusb ifup-TeamPort
ifdown ifdown-isdn ifdown-TeamPort ifup-ib ifup-post ifup-tunnel
[23:57:07 root@Centos7 network-scripts]#nmcli connection up bond-slave-eth0
[23:57:07 root@Centos7 network-scripts]#nmcli connection up bond-slave-eth1
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[00:02:02 root@Centos7 network-scripts]#nmcli connection up mybond0
连接已成功激活(master waiting for slaves)(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)
From 10.0.0.8 icmp_seq=472 Destination Host Unreachable
From 10.0.0.8 icmp_seq=473 Destination Host Unreachable
From 10.0.0.8 icmp_seq=474 Destination Host Unreachable
From 10.0.0.8 icmp_seq=475 Destination Host Unreachable
64 bytes from 10.0.0.100: icmp_seq=476 ttl=64 time=0.558 ms
64 bytes from 10.0.0.100: icmp_seq=477 ttl=64 time=0.563 ms
64 bytes from 10.0.0.100: icmp_seq=478 ttl=64 time=0.220 ms
64 bytes from 10.0.0.100: icmp_seq=479 ttl=64 time=0.325 ms
64 bytes from 10.0.0.100: icmp_seq=480 ttl=64 time=0.339 ms
连接数多了一个mybond0,并进入网卡文件夹可以看到有个mybond0的虚拟仓网卡,并查看内容。添加网卡到bond0,并且额外生成了两个配置文件。再分别up启用两个从属网卡,先启动eth0时会端口ssh,需要重连ip选择10.0.0.100,再连接后再启用 eth1,再启用主网卡即可。
再查看bond状态,cat /proc/net/bonding/bond0
[00:21:24 root@Centos7 ~]#cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:d7:7e:da
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:d7:7e:e4
Slave queue ID: 0
删除bond0,依次执行后再重新连接ssh。
nmcli connection delete mybond0
nmcli connection delete bond-slave-eth0
nmcli connection delete bond-slave-eth1