Linux里面tcp协议属于四层服务吗?

Linux里面tcp协议属于四层服务吗?,第1张

TCP/IP 的分层管理

TCP/IP 协议按照层次分为 4 层:应用层、传输层、网络层、数据链路层。 对于分层这个概念,大家一定不陌生,比如我们的分布式架构体系中会分为业务层、服务层、基础支撑层。比如docker,也是基于分层来实现。所以我们会发现,复杂的程序都需要分层,这个是软件设计的要求,每一层专注于当前领域的事情。如果某些地方需要修改,我们只需要把变动的层替换掉就行,一方面改动影响较少,另一方面整个架构的灵活性也更高。 最后,在分层之后,整个架构的设计也变得相对简单了。

分层负载

了解了分层的概念以后,我们再去理解所谓的二层负载、三层负载、四层负载、七层负载就容易多了。

一次 http 请求过来,一定会从应用层到传输层,完成整个交互。只要是在网络上跑的数据包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。

二层负载

二层负载是针对 MAC,负载均衡服务器对外依然提供一个 VIP(虚 IP),集群中不同的机器采用相同 IP 地址,但是机器的 MAC 地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标 MAC 地址的方式将请求转发到目标机器实现负载均衡

二层负载均衡会通过一个虚拟 MAC 地址接收请求,然后再分配到真实的 MAC 地址

三层负载均衡

三层负载是针对 IP,和二层负载均衡类似,负载均衡服务器对外依然提供一个 VIP(虚 IP),但是集群中不同的机器采用不同的 IP 地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过 IP 将请求转发至不同的真实服务器

三层负载均衡会通过一个虚拟 IP 地址接收请求,然后再分配到真实的 IP 地址

四层负载均衡

四层负载均衡工作在 OSI 模型的传输层,由于在传输层,只有 TCP/UDP 协议,这两种协议中除了包含源 IP、目标 IP 以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。

四层通过虚拟 IP + 端口接收请求,然后再分配到真实的服务器

七层负载均衡

七层负载均衡工作在 OSI 模型的应用层,应用层协议较多,常用 http、radius、dns 等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web 服务器的负载均衡,除了根据 IP 加端口进行负载外,还可根据七层的 URL、浏览器类别来决定是否要进行负载均衡

比如:在nginx层做7层均衡,让一个uid的请求尽量落到同一个机器上

LLDP 可以让你准确的知道服务器所连接的交换机端口号。

LLDP是一种工业标准协议,用于取代EDP或CDP等专用链路层协议。LLDP的目标是提供一个inter-vendor兼容机制,向相邻网络设备发送链路层通知。

lldpd是一个LLDP协议的一种实现,给各种Unixes使用。除此之外,它还支持一些专有协议。

实现交换机端口的抓取,目前我知道的有两种工具,一种是lldpad,另一种是lldpd。

这两个工具做了一下对比,最终选择了lldpd。原因如下:

lldpad: https://github.com/jrfastab/lldpad

lldpd: https://github.com/vincentbernat/lldpd

通过对比可以看到lldpad最近一次更新,已经是5年前了。而lldpd的最近一次更新在本月。

lldpd可以将输出的信息转化为json格式,非常方便使用。

需要先配置好配置好epel-release源,然后直接yum安装即可。

安装好之后,你可以修改/etc/sysconfig/lldpd文件,来配置一些参数。

lldpd有两个模块。一个是lldpd的后台程序,用于接收和发送LLDP报文;一个是lldpcli用来查询和配置后台程序的工具。

将上述命令,加上 -f json 可以转变输出结果。这个功能非常有用,有利于自动化处理这些数据。

使用x722 LOM,当lldpad启动时,lldptool -L adminStatus = rxtx -i <interface name>然后lldptool -tni <interface name>运行时,NIC端口连接到启用了LLDP的交换机,不会返回LLDP信息。 (其中LLDP =链路层发现协议)

运行commnand " echo lldp stop >/ sys / kernel / debug / i40e / <PCIe路径>/ command" .由于LOM没有FCoE功能,没有DCBx要求,所以没有真正的功能影响。 (FCoE =以太网光纤通道)

根据Intel设计,x722适配器默认处理所有LLDP流量,LLDP流量将不会转到主机CPU,除非使用在x722中停止LLDP功能的命令。

数据链路层分为媒体访问控制mac子层和逻辑链路控制llc子层。mac子层与物理层相关联,而llc子层则完全独立出来,为高层提供服务,这样就实现了物理层和数据链路层的完全独立。

数据链路层的主要协议有:

1、点对点协议(Point-to-Point Protocol)。

2、以太网(Ethernet)。

3、高级数据链路协议(High-Level Data Link Protocol)。

4、帧中继(Frame Relay)。

5、异步传输模式(Asynchronous Transfer Mode)。

数据链路层协议的特点

链路是从一个结点到相邻节点的一段物理链路,数据链路则在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。

数据链路层使用的主要是点对点信道和广播信道两种,数据链路层传输的协议数据单元是帧。数据链路层的三个基本问题是:封装成帧,透明传输和差错检测,循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7199011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存