1、简述osi七层模型和TCP/IP五层模型

OSI模型的七层结构:

网络小知识_数据

第1层 物理层:在局部局域网上传送数据帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等

第2层 数据链路层:负责网络寻址、错误侦测和改错

第3层 网络层:决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。

第4层 传输层:把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。

第5层 会话层:负责数据传输中设置和维护电脑网络中两台主机之间的通信连接。

第6层 表示层:把数据转换为能与接受者的系统格式兼容并适合传输的格式。

第7层 应用层:提供为应用软件而设置的接口,以设置与另一应用软件之间的通信。例如:HTTP、HTTPS、FTP、SSH、SMTP、POP3、MySQL等。

TCP/IP五层模型结构:

网络小知识_centos_02

在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。

网络小知识_centos_03

在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议。

网络小知识_数据_04

2、总结描述TCP三次握手四次挥手

三次握手:

1、客户端发送一个SYN段,并指明客户端的初始序列号。

2、服务端发送自己的SYN段作为应答,同样指明自己的初始序列号。为了确认客户端的SYN,将初始序列号+1作为ACK的值。

这样,每发送一个SYN,序列号就会加1. 如果有丢失的情况,则会重传。

3、为了确认服务器端的SYN,客户端将ISN(s)+1作为返回的ACK数值。

四次挥手:

1. 客户端发送一个FIN段,并包含一个希望接收者看到的自己当前的序列号K. 同时还包含一个ACK表示确认对方最近一次发过来的数据。

2. 服务端将K值加1作为ACK序号值,表明收到了上一个包。这时上层的应用程序会被告知另一端发起了关闭操作,通常这将引起应用程序发起自己的关闭操作。

3. 服务端发起自己的FIN段,ACK=K+1, Seq=L

4. 客户端确认。ACK=L+1

3、描述TCP和UDP区别
1)基于连接vs无连接

TCP是面向连接的协议,而UDP是无连接的协议。

2)可靠性 不同

TCP提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的。如果消息在传输过程中丢失,那么它将重发,这是由TCP协议本身控制的。另一方面,UDP是不可靠的,它不提供任何交付的保证。一个数据报包在运输途中可能会丢失。这就是为什么UDP是不适合保证交付的项目。

3)有序性

TCP保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。UDP不提供任何有序性或序列性的保证。数据包将以任何可能的顺序到达。这就是为什么TCP是适合需要顺序交付方式的应用,尽管有基于UDP的协议通过使用序列号和重传来提供有序和可靠性的应用

4)速度

TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,他需要做比UDP多的多的事。这就是为什么UDP更适用于对速度比较敏感的应用,例如:在线视频媒体,电视广播和多人在线游戏。

5)头大小

TCP具有比UDP更大的头。一个TCP数据包报头的大小是20字节,每行32位,5行。UDP数据报报头是8个字节,每行32位,2行。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。而UDP报头只包含长度,源端口号,目的端口,和校验和。

6)拥塞或流控制

TCP有流量控制。在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。另一方面,UDP不能进行流量控制。

4、网卡绑定bond0的实现

网络小知识_客户端_05

[root@Centos8 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:01:5b:86 brd ff:ff:ff:ff:ff:ff
inet 192.168.248.132/24 brd 192.168.248.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe01:5b86/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:01:5b:90 brd ff:ff:ff:ff:ff:ff
inet 192.168.248.135/24 brd 192.168.248.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe01:5b90/64 scope link
valid_lft forever preferred_lft forever
[root@Centos8 ~]#nmcli connection 
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1
添加bonding接口
[root@Centos8 ~]#nmcli connection add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.248.100/24
Connection 'mybond0' (ef4745e3-7b03-4d1a-9394-086bf4a1ff1e) successfully added.
[root@Centos8 ~]#nmcli connection
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1
mybond0 ef4745e3-7b03-4d1a-9394-086bf4a1ff1e bond bond0
[root@Centos8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-mybond0
BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.248.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=ef4745e3-7b03-4d1a-9394-086bf4a1ff1e
DEVICE=bond0
ONBOOT=yes
添加从属接口
[root@Centos8 ~]#nmcli con add type bond-slave ifname eth0 master bond0
Connection 'bond-slave-eth0' (973bcdf5-17b0-4cb5-94f6-95245f26b418) successfully added.
[root@Centos8 ~]#nmcli con add type bond-slave ifname eth1 master bond0
Connection 'bond-slave-eth1' (a4390014-0a4a-43c5-a5aa-792f10b94006) successfully added.
[root@Centos8 ~]#nmcli connection
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1
mybond0 ef4745e3-7b03-4d1a-9394-086bf4a1ff1e bond bond0
bond-slave-eth0 973bcdf5-17b0-4cb5-94f6-95245f26b418 ethernet --
bond-slave-eth1 a4390014-0a4a-43c5-a5aa-792f10b94006 ethernet --
在启动绑定,则必须首先启动从属接口
[root@Centos8 ~]#nmcli con up bond-slave-eth0
[root@Centos8 ~]#nmcli con up bond-slave-eth1
[root@Centos8 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether 00:0c:29:01:5b:86 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether 00:0c:29:01:5b:86 brd ff:ff:ff:ff:ff:ff permaddr 00:0c:29:01:5b:90
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:01:5b:86 brd ff:ff:ff:ff:ff:ff
inet 192.168.248.100/24 brd 192.168.248.255 scope global noprefixroute bond0
valid_lft forever preferred_lft forever
inet6 fe80::f22c:6acd:34d5:218e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
启动绑定
[root@Centos8 ~]#nmcli con up mybond0
使用其他机器ping一下这个主机
[root@ubuntu ~]#ping 192.168.248.100
PING 192.168.248.100 (192.168.248.100) 56(84) bytes of data.
64 bytes from 192.168.248.100: icmp_seq=1 ttl=64 time=0.847 ms
64 bytes from 192.168.248.100: icmp_seq=2 ttl=64 time=0.304 ms
64 bytes from 192.168.248.100: icmp_seq=3 ttl=64 time=0.162 ms
64 bytes from 192.168.248.100: icmp_seq=4 ttl=64 time=0.330 ms
64 bytes from 192.168.248.100: icmp_seq=5 ttl=64 time=1.78 ms
查看主从,现在是eth0是主
[root@Centos8 ~]#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
Peer Notification Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:5b:86
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:5b:90
Slave queue ID: 0
我现在关了eth0在看一下
[root@Centos8 ~]#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: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:0c:29:01:5b:86
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:5b:90
Slave queue ID: 0
还是可以ping通
[root@ubuntu ~]#ping -w1 192.168.248.100
PING 192.168.248.100 (192.168.248.100) 56(84) bytes of data.
64 bytes from 192.168.248.100: icmp_seq=1 ttl=64 time=0.504 ms

--- 192.168.248.100 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.504/0.504/0.504/0.000 ms
如果都关了的话就不通了