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

一)OSI七层

7.应用层:各种应用程序协议,如HTTP、FTP、SMTP、POP3

6.表示层:信息的语法语意以及它们的联系,如加密解密、转换翻译、压缩解压缩。

5.会话层:不同机器上的用户之间建立及管理会话。

4.传输层:接收上一层的数据,在必要的时候把数据进行分割,并将这些数据交给网络层,且保证p这些数据段有效到达对端。

3.网络层:控制子网的运行,如逻辑编址、分组传输、路由选择。设备有:路由器

2.数据链路层:物理寻址,同时将原始比特流转变为l逻辑传输线路。设备有:网桥,交换机

1.物理层:机械、电子、定时接口通信信道上的原始比特流传输。设备有:网卡,网线,集线器,中继器,调制解调器

 

系统应用层的监控指标_系统应用层的监控指标

 

二)TCP/IP五层

应用层:各种应用程序协议,如HTTP、FTP、SMTP、POP3

传输层:四层交换机、也有工作在四层的路由器

网络层:路由器、三层交换机

数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)

物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层

 

系统应用层的监控指标_客户端_02

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

一)、基础概念

1)、什么是TCP?

TCP是面向连接、可靠的进程到进程通信的协议。TCP提供双全工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接受缓存,用来临时存储数据。

2)、TCP套接字

TCP协议规定,端口号拼接到IP地址即构成套接字——TCP连接的端点。

套接字(socket)=[IP地址:端口号】

TCP连接用式子表示为

TCP连接::={socket1,socket2}={(IP1:port1) ,(IP2:port2)}

3)、TCP中客户与服务器

在面向连接通信中,连接的建立和断开是非常频繁的过程。TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程成为客户,而被动等待连接的应用进程成为服务器。

4)、TCP报文协议

源端口号:数据发起者的端口号,16bit。

目的端口号:数据接收者的端口号,16bit。

序号:32bit的序列号,由发送方使用。

确认序号:32bit的确认号,是接收数据方期望收到发送方的下一个报文段的序号,因此确认序号应当是上次已成功收到数据字节序号加1。

首部长度:首部中32bit字的数目,可表示15*32bit=60字节的首部。一般首部长度为20字节

保留:6bit, 均为0

紧急URG:当URG=1时,表示报文段中有紧急数据,应尽快传送。

确认比特ACK:ACK = 1时代表这是一个确认的TCP包,取值0则不是确认包。

推送比特PSH:当发送端PSH=1时,接收端尽快的交付给应用进程。

复位比特(RST):当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。

同步比特SYN:在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。

终止比特FIN:FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。

窗口:用来控制对方发送的数据量,通知发放已确定的发送窗口上限。

检验和:该字段检验的范围包括首部和数据这两部分。由发端计算和存储,并由收端进行验证。

紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。

选项:长度可变,最长可达40字节。

 

5)、TCP报文的序列号Seq和确认号Ack

序列号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

 

二)、TCP连接建立三握手、连接断开四挥手理论步骤

1)、连接三握手

<1>由客户端向服务器发送一段TCP报文:

控制位为SYN,SYN置“1”,表示“请求建立新连接”;

序号为Seq=X(X一般为0);

随后客户端进入SYN-SENT阶段。

 

<2>服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并向客户端发送一段TCP报文:

控制位为SYN和ACK,SYN、ACK置“1”,表示“确认客户端的报文Seq序列号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了你的数据);

序列号为Seq=y(y一般为0);

确认号为Ack=x+1,表示收到客户端的序列号Seq并将其值加1作为自己确认号Ack的值;

随后服务器端进入SYN-RCVD阶段。 

 

<3>客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文:

控制位为ACK,ACK置“1”,表示“确认收到服务器端同意连接的信号”。

序列号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序列号值;

确认号为Ack=y+1,表示收到服务器端序列号Seq,并将其值加1作为自己的确认号Ack的值;

随后客户端进入ESTABLISHED阶段。

服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。此后客户端和服务器端进行正常的数据传输。这就是“三次握手”的过程。

 

相似的情景:

1) 客户端主机C说:“我可以给你发送数据吗?”

2) 服务器S说:“可以的,不过我可能也会给你发送数据。”

3)C:“好,那我开始互相发送数据吧。”

 

系统应用层的监控指标_系统应用层的监控指标_03

 

2、断开四挥手

<1>首先客户端想要断开连接,向服务器端发送一段TCP报文:

  • ●控制位为FIN,FIN置“1”,表示“请求释放连接“;
  • ●序列号为Seq=W;

随后客户端进入FIN-WAIT-1阶段,即半关闭阶段。并且停止在客户端到服务器端方向上发送数据,但是客户端仍然能接收从服务器端传输过来的数据。

 

<2>服务器端接收到从客户端发出的TCP报文之后,确认了客户端想要释放连接,随后服务器端结束ESTABLISHED阶段,进入CLOSE-WAIT阶段(半关闭状态)并返回一段TCP报文:

  • ●控制位为ACK,ACK置“1”,表示“接收到客户端发送的释放连接的请求”;
  • ●序列号为Seq=Z;
  • ●确认号为Ack=W+1,表示是在收到客户端报文的基础上,将其序号Seq值加1作为本段报文确认号Ack的值;

随后客户端结束FIN-WAIT-1阶段,进入FIN-WAIT-2阶段。

 

<3>服务器端自从发出ACK确认报文之后,再次向客户端发出一段TCP报文:

  • ●控制位为FIN、ACK,FIN、ACK置“1”,表示“已经准备好释放连接了”。注意:这里的ACK并不是确认收到服务器端报文的确认报文。
  • ●序列号为Seq=Z;
  • ●确认号为Ack=W+1;表示是在收到客户端报文的基础上,将其序号Seq值加1作为本段报文确认号Ack的值。

随后服务器端结束CLOSE-WAIT阶段,进入LAST-ACK阶段。

 

<4>客户端收到从服务器端发出的TCP报文,确认了服务器端已做好释放连接的准备,结束FIN-WAIT-2阶段,进入TIME-WAIT阶段,并向服务器端发送一段报文:

  • ●控制位为ACK,ACK置“1 ”,表示“接收到服务器准备好释放连接的信号”。
  • ●序列号为Seq=W+1;表示是在收到了服务器端报文的基础上,将其确认号Ack值作为本段报文序号的值。
  • ●确认号为Ack=Z+1;表示是在收到了服务器端报文的基础上,将其序号Seq值增加1作为本段报文确认号的值。

随后客户端结束TIME-WAIT阶段,进入CLOSED阶段,由此完成“四次挥手”。

 

四次挥手的情景大致是这样的: 

1)客户端主机C说:“我没有数据了,断开连接吧。 ”

2)服务器S说:“好,但是我还有数据(不断给C发送数据,此时C已经不能给S发送数据了,但是必须要就收S发来的数据)。”

3)(当S给C发完数据后)S说:“我发完了,断开连接吧。”

4)C说:“好,断开连接吧。

 

系统应用层的监控指标_客户端_04

 

3、 描述TCP和UDP区别

TCP:传输控制协议

这是一个面向连接的传输协议,在发送数据之前,要和对方建立可靠的连接。一个TCP连接必须经过三次握手才能建立,经过四次挥手才能断开。

SYN :(SYNchronization)同步

ACK :(ACKnowlegment)确认

FIN   :(FINish)终止

三次握手:

客户端向服务器发送syn请求建立连接;

服务器向客户端发送syn以及ack确定是否建立连接?

客户端向服务器发送ack确定建立连接。

四次握手:

客户端向服务器发送fin请求断开连接;

服务器向客户端发送数据包;

服务器向客户端fin以及ack确定是否断开连接;

客户端向服务器发送fin确定断开连接。

 

UDP:用户数据报协议

这是一个无连接的简单的面向数据报的传输层协议

UDP不提供可靠性,只是把应用程序传给ip层的数据包发送出来,但是不能保证他们到达目的地;由于UDP在传输数据包前不用在客户和服务器之间建立连接,并且没有超时重发机制,所以速度很快。

 

区别:

1.基于连接与无连接;

2.对系统资源的要求(TCP较多,UDP较少);

3.UDP程序结构较为简单;

4.TCP是流模式(SOCK_STREAM) UDP是数据报模式(SOCK_DGRAM);

5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证;

 

基于TCP的网络协议:

Tlenet:远程登录协议

FTP:文件传输协议

SMTP:简单邮件传输协议

SNMP:简单网络管理协议

HTTP:超文本传输协议

 

基于UDP的网络协议:

NTP:网络时间协议

TFTP:简单文件传输协议

 

4、 网卡绑定bond0的实现

一)配置物理网卡

 

系统应用层的监控指标_系统应用层的监控指标_05

二)加载bound0

 

系统应用层的监控指标_TCP_06