Linux学习5 osi七层模型TCP/IP五层模型 TCP三次握手四次挥手

目录

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

OSI(Open System Interconnection)开放系统网络互联。

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

三次握手:

四次挥手:

3、描述TCP和UDP区别

TCP特性:

UDP特性:

4、网卡绑定bond0的实现


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

OSI(Open System Interconnection)开放系统网络互联。

分层名称 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代表电压高低 负责管理电脑设备的互通,包括针脚,电压,集线器,线缆规范,中继器,网卡,主机接口卡等。

Linux学习5 osi七层模型TCP/IP五层模型 TCP三次握手四次挥手_第1张图片


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

Linux学习5 osi七层模型TCP/IP五层模型 TCP三次握手四次挥手_第2张图片

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。

三次握手:

Linux学习5 osi七层模型TCP/IP五层模型 TCP三次握手四次挥手_第3张图片

第一次握手:客户端发起访问发送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连接都将一直被保持下去。

四次挥手:

Linux学习5 osi七层模型TCP/IP五层模型 TCP三次握手四次挥手_第4张图片

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手


3、描述TCP和UDP区别

TCP特性:

工作在传输层,

面向连接协议,

全双工协议,

半关闭,

错误检查,

将数据打包成段,排序,

确认机制,

数据恢复,重传,

流量控制,滑动窗口,

拥塞控制,慢启动和拥塞避免算法。

UDP特性:

工作在传输层,

提供不可靠的网络访问,

非面向连接协议,

有限的错误检查,

传输性能高,

无数据恢复特性。


4、网卡绑定bond0的实现

含义:将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一个ip地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址。

Bonding聚合链路工作模式,0-6mode,

mode=0,即balance-rr,round-robin policy 轮询,聚合口数据报文按包轮询从物理接口转发。

mode=1,即active-backup,active-backup policy 主备策略,只有active状态的物理接口才转发数据报文。

mod=2 ,即: (balance-xor) XOR policy (平衡策略)聚合口数据报文按源目 MAC 、源目 IP 、源目
端口进行异或 HASH 运算得到一个值,根据该值查找接口转发数据报文
mod=3 ,即: broadcast (广播策略)这种模式的特点是一个报文会复制两份往 bond 下的两个接
口分别发送出去,
mod=4 ,即: (802.3ad) IEEE 802.3ad Dynamic link aggregation IEEE 802.3ad 动态链接聚
合)
mod=5 ,即: (balance-tlb) Adaptive transmit load balancing (适配器传输负载均衡)
mod=6 ,即: (balance-alb) Adaptive load balancing (适配器适应性负载均衡)
常用的模式为0 1 3 6
mode 1 5 6 不需要交换机配置,mode 0 2 3 4 需要交换机配置。
给虚拟机centos7添加网卡一块,ip a 查看是否有 eth0,eth1,测试一下命令是否安装,nmcli
[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配置命令如下:

# 添加 bonding 接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup
ipv4.method manual ipv4.addresses 10 .0.0.100/24
# 添加从属接口
nmcli con add type bond-slave ifname eth0 master bond0
nmcli con add type bond-slave ifname eth1 master bond0
# 注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
# 要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
# 启动绑定
nmcli con up mybond0
[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

你可能感兴趣的:(Linux学习,linux,tcp/ip,网络)