Linux网络体系结构概述

一、OSI的七层网络模型:

        应用层:文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,TELNENET

        表示层:数据格式化,代码转换,数据加密,没有协议

        会话层:解除或者建立与别的节点的联系 没有协议

        传输层:提供端到端的接口 TCP、UDP

        网络层:数据包选择路由,就是选择数据包转发的路径以及网络的检测和控制,IP,ICMP,RIP,OSPF,BGP,IGMP

        数据链路层:传输有地址的帧及错误检测功能 SLIP,CSLIP,PPP,ARP,PARP,MTU

        物理层:以二进制的形式在屋里媒体上传输ISO2110,IEEE802,IEEE802.2

二、TCP/IP五层网络模型:

        应用层:概念同上,一般在客户端的应用程序,例如访问web的HTTP协议,域名转换协议DNS等,类似于客户的数据   

        传输层:TCP提供面向连接的、有状态的数据流传输,UDP是数据报传输面向无连接无状态

        网络层:提供IP选路,在这一层往上的数据都叫做数据包

        数据链路层:这一层在路由器中数据广域网或二者局域网的接入方式,例如选择以太、帧中继或者ATM等。这一层的数据成为帧。

        物理层:中继器,集线器等,是具体数据传输的媒介,数据在这一层是以比特流的形式传输。

三、Linux中的网络结构

        不管是七层模型还是五层模型都具体详细的描述了网络设备在通信中各个网咯层的功能。而对于Linux系统来讲,在具体实现网络传输中,主要有Linux协议栈来完成。Linux协议栈主要实现了四层结构:

        应用层:HTTP

        传输层:TCP

        网络层:IP

        链路层:Ethernet driver

        应用层主要在用户空间,用户空间的各个APP模块实现了Linux设备的各种不同的功能。例如对于一台Linux路由器来讲,用户空间实现了路由协议、mpls协议、dhcp协议

等一些具体应用功能的模块。

        Linux的内核空间为应用层的各协议模块提供收发数据包的功能,上层协议统一都由Linux内核协议栈提供的系统调用接口。Linux协议栈只要完成的就是内核空间的各个网

络子系统的实现。

        物理设备,提供对网络的链接能力。例如网卡收发包交换芯片等。

        下面介绍内核空间的子模块的功能:

     1、系统调用接口:所谓系统调用就是内核提供给用户的调用Api接口。网络子系统调用接口为用户空间提供两种的调用接口给用户。一种是提供特有的调用进入系统内

核,然后进一步调用sys_socketcall结束该进程。sys_socketcall根据系统调用号调用具体功能。另一种是通过socket系统调用,通过普通的文件操作来访问子系统。常用的系统

调用socket、send、accept、connect、listen、read、write等。

     2、套接口层:套接口是一个与协议无关的接口,他提供了一组接口来支持各种协议。例如他支持典型的TCP和UDP,同时还支持RAW套接口、RAW以太网和其他协议。

     3、传输层的协议:传输层使用传输控制块存放套接口所需的信息,包括TCP传输块、UDP传输块、RAW传输控制块。例如传输层控制块包括两个方向的序列号、窗口大小、重传次数。传输层的控制块tcp_sock结构在inet_sock结构基础上构成的,而inet_sock在sock基础上创建。套接口的ops字段指向特定传输协议的操作集接口,proto_ops结构中定义的函数就是套接口调用到传输层调用接口,整个proto_ops是一张套接口系统调用跳转表。

      4、套接口的缓存:套接口缓存用来存储数据的缓冲区,该缓冲区可以处理可变长数据,通过在数据区添加和移除数据,避免数据的复制。该缓冲区传递网络驱动程序和应用程序之间的数据包。

     5、设备无关接口:网络协议栈的底部是一个与硬件无关的接口层,它提供了一组通用的函数供底层设备和上层协议栈进行调用,从而使得上层协议栈和底层驱动设备都不必关心对方的实现,屏蔽掉差异性。NAPI技术是一种中断和轮询机制的混合体,在网络负载严重时,减少由于收包产生的中断,对高频小数据包的处理很有效。

     6、设备驱动程序:网络设备可以动态的注册到系统中,提高了驱动设备的灵活性。register_netdevice和unregister_netdevice是驱动设备注册和解注册的函数。net_device结构中的hard_start_xmit在初始化时设置该接口,实现向网络设备输出数据包。     

四、几种VPN的区别比较

       目前在网络VPN实现中主要有SSL VPN、MPLS VPN、IPSec VPN。他们之间最大的差异就是在不同协议层实现数据的专线传输。

1、SSL VPN:是基于安全套接层的虚拟专用网,它处在应用层,SSL用公钥加密通过SSL连接传输的数据来工作。SSL协议指定了 在应用程序协议和TCP/IP 之间进行数据交换的安全机制,为TCP/IP连接提供数据加密、服务器认证以及可选择的客户机认证。它的优势就是任何一个浏览器都支持,不用为每台移动设备安装客户端。

2、IPSec VPN:网络层实现数据的加密,可以提供访问控制、数据源验证、无连接数据的完整性验证。IPSec加密后的数据包仍然是一般的ip包,所以它是工作在网络层的虚拟专用网。

3、MPLS VPN:MPLS技术提供了一种依靠标签进行数据转发的机制,省去了路由最长匹配带来的查询消耗。它介于二层和三层转发之间,为用户提供一条端到端的数据通道,同时可以保证低延时、大带宽的传输特性。但是它的缺点也较为明显,就是数据的传输没有经过加密,安全性较差。

五、应用LDP协议的实现

1、在分组网络传输中,MPLS VPN技术是目前发展的主流,随着网络的不断扩大,视频等需要实时性强的业务越来越需要类似于专线的网路进行保证传输质量,MPLS技术也是仿ATM技术发展起来的,通过依靠标签转发,提高了转发查询的效率。同时,这种弹性管道,对于网络系统的扩容、适应网络拓扑的变化具有非常大的优势,大大降低了运营和维护成本。在政企专线、大客户的组网需求中具有很重要的应用。

2、LDP协议是专门为MPLS技术进行动态标签分发的一种协议,专门用来建立MPLS 标签转发通道。首先,LDP建立MPLS 标签转发通道也是建立路由的基础之上,只有在路由可达的网络中,MPLS技术才能得以应用。其次,LDP目前支持MPLS 隧道层面的标签分配,同时也支持二层VPN层面的标签分发。LDP通过动态的预先建立一条可达的标签转发通道,使得用户的数据在进入MPLS网络后不必查询路由,按照标签对应的下一跳转发即可。

3、LDP协议依赖于传输层UDP和TCP两种协议。LDP会话的发现机制,与其他很多应用层协议一样,通过发送224.0.0.2广播包来协商建立LDP会话的参数。LDP的广播包依赖的是UDP协议进行传输,不保证连接状态以及可靠性。LDP会话是维持两台路由设备保持一直传输数据的一种状态。它的建立依赖于TCP协议,保证了面向连接的状态、可靠性等。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值