网络小知识

观书散遗帙,探古穷至妙。这篇文章主要讲述网络小知识相关的知识,希望能为你提供帮助。
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五层模型结构:

在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。
?
在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议。
?
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的实现【网络小知识】

[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
NAMEUUIDTYPEDEVICE
eth05fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03etherneteth0
eth19c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04etherneteth1
添加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
NAMEUUIDTYPEDEVICE
eth05fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03etherneteth0
eth19c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04etherneteth1
mybond0ef4745e3-7b03-4d1a-9394-086bf4a1ff1ebondbond0
[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
NAMEUUIDTYPEDEVICE
eth05fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03etherneteth0
eth19c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04etherneteth1
mybond0ef4745e3-7b03-4d1a-9394-086bf4a1ff1ebondbond0
bond-slave-eth0973bcdf5-17b0-4cb5-94f6-95245f26b418ethernet--
bond-slave-eth1a4390014-0a4a-43c5-a5aa-792f10b94006ethernet--
在启动绑定,则必须首先启动从属接口
[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
如果都关了的话就不通了


    推荐阅读