linux随笔5
1、简述osi七层模型和TCP/IP四层模型
(1) 物理层:OSI的物理层规定了通信端点之间的机械特性、电气特性、功能特性以及过程特性,该层为上层协议提供了一个传输数据的物理媒体。该层数据的单位称为比特(bit)。
(2) 数据链路层:定义了在单个链路上如何传输数据,其主要作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。该层数据的单位称为帧(frame)。
(3) 网络层:定义了端到端的包传输,定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习路由的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。主要负责寻找地址和路由选择,网络层还可以实现拥塞控制、网际互连等功能。该层数据的单位称为数据包(packet)。
(4) 传输层:主要功能:
1) 为端到端连接提供传输服务;
2) 这种传输服务分为可靠和不可靠的,其中TCP是典型的可靠传输,而UDP则是不可靠传输;
3) 为端到端连接提供流量控制,差错控制,重新排序,服务质量等管理服务。
4) 该层数据的单位称为数据段(segment)。
(5) 会话层:他定义了如何开始、控制和结束一个会话,即负责建立和断开通信连接(数据流动的逻辑通路)。
(6) 表示层:定义数据格式及加密。主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取。
(7) 应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的,为应用程序提供服务并规定应用程序中通信相关的细节。
(一)应用层:应用程序间沟通的层
(二)传输层:提供了节点间的数据传送服务,给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
(三)网络层:负责提供基本的数据封包传送功能,让每一个数据包都能够到达目的主机(但不检查是否被正确接收)。
(四)网络访问层:又称作主机到网络层(host-to-network),IP地址与物理地址硬件的映射及IP封装成帧,基于不同硬件类型的网络接口,网络访问层定义了与物理介质的连接。
2、总结描述TCP三次握手四次挥手
TCP三次握手
TCP协议还有一个特点就是面向字节流,它会把数据都分成一个个字节,然后进行分段传输,在分段传输的时候,每一段是由不同的字节序号组成的。
先介绍一下图中的一些字段:
SYN:同步序列号,是用来建立连接的握手信号。
ack:确认序号,当ACK为1时,ack有效,当ACK为0时,ack无效。
seq:序号。
ACK:确认序号有效。
FIN: 结束标志,用来表示断开连接。
最开始的时候,客户端和服务端都是Closed(关闭)状态,准备发送连接请求前,Server会进入LISTEN(监听)状态。
第一次握手: 客户端(Client)会给服务端(Server)发送请求报文段,并指定同步序列号SYN = 1,ACK = 0, 初始序号为seq = x,(seq里面就是字节的序号),同时TCP的客户端进程进入SYN-SENT(同步已发送)状态。
第二次握手: 服务端收到客户端发送的请求报文SYN后,会向客户端发送一个SYN报文作为应答,表示同意建立连接,同时指定了自己的SYN = 1, ACK = 1,还会向客户端发送seq = y,来表示自己的一个初始序号,同时也会告诉客户端下一次应该从哪开始发送的确认序号,由于客户端发送过来的初始序号seq = x, 所以确认序号ack = x + 1,这时,TCP的服务端进入SYN-RCVD(同步收到)状态。
第三次握手: 客户端收到服务端的确认报文之后,会再次向服务端发送确认信息,表示已经收到。所以ACK = 1, seq = x + 1, ack = y + 1。TCP建立连接,客户端和服务器进入ESTAB-LISTEND(已建立连接状态)状态。
TCP四次挥手
第一次挥手: 客户端主动断开连接,向服务端发送FIN报文段,即连接释放报文段(FIN=1,序号seq=u),并且状态变为FIN-WAIT-1(终止等待1)。
第二次挥手: 服务端收到客户端的FIN报文段,响应请求,也向客户端发送一个ACK = 1,seq = y, ack = u + 1(三次握手阶段已经解释过seq和ack,没看懂的可以重新看一遍) 的报文段,来表示自己已经收到了客户端的断开连接的请求报文,同时将自己的状态变为CLOSE-WAIT(关闭等待)。
客户端收到第二次的挥手报文之后,也会将自身的状态变为FIN-WAIT-2(关闭等待),此时客户端已经断开了对服务端的连接,也就是说,客户端不能再向服务端发送数据了,但是服务端并没有断开连接,它仍然要向客户端发送未发送完的数据,即TCP处于半关闭状态,这也是为什么要四次挥手的原因。
第三次挥手: 等待一段时间,当服务端将剩余数据发送完后,也会向客户端发送一个FIN = 1 的报文段,其中seq = w, ack = u + 1, ACK = 1,同时,自身进入LAST-ACK(最后确认)状态,来等待客户端的ACK。
第四次挥手: 客户端收到服务端的断开释放报文段FIN,同样对它进行响应,向服务段发送ACK = 1 ,seq = u + 1, ack = w + 1的报文段,并且自身进入TIME-WAIT状态,一段时间过后,服务端收到客户端的响应报文,将自身状态变为Closed,客户端等待TIME-WAIT时间过后,也将变为Closed状态。四次挥手完毕,客户端和服务端断开连接。
3、描述TCP和UDP区别
TCP:
优点:可靠、稳定
TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。
缺点:慢,效率低,占用系统资源高,易被攻击。
在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。然而,每个链接都会占用系统的CPU、内存等硬件资源。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击。
UDP:
优点:快,比TCP稍安全
UDP没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击。
缺点:不可靠,不稳定
因为没有TCP的那些机制,UDP在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失
4、网卡绑定bond0的实现
cd /etc/sysconfig/network-scripts/
cat ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.56.100
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
cat ifcfg-eth0
NAME=eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
cat ifcfg-eth1
NAME=eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
systemctl restart network
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
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:33:75:7f
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:33:75:89
Slave queue ID: 0
浙公网安备 33010602011771号