网络栈总体架构
总体结构
网络栈指的是为了进行网络数据包的收发,由内核实现的一套函数集合。网络栈安装预先设置的一套规则对用户数据进行封装从而达到网络上主机之间数据交换的目的。
最初按照这种分层设计的思想,网络栈被分为了4层,从上到下依次为应用层、传输层、网络层、链路层,而且在每个层次都定义了数据的封装方式,随着网络协议的发展,四层分层架构满足不了新的需求,OSI七层网络栈出现,在原先的应用层进行了更细致的划分,将应用层划为:应用层、表示层、会话层。
以OSI七层模式为依据,学习Linux1.2内核网络栈实现中的文件对应关系:
应用层:
该层定义了一套用户调用接口函数,即socket套接字接口函数,如socket、bind、accept等,这套接口函数由Linux操作系统的glicbc库提供,网络栈实现不涉及这套函数。
表示层、会话层:
相应的功能实现对于BSD Socket或INET Socket层。
传输层:
如常见的TCP、UDP协议,对于传输层的实现集中在TCP协议和UDP协议上
该层涉及的文件主要有:tcp.c udp.c igmp.c snmp.h
网络层:
数据包路由功能实现在网络层,这一层也是IP协议所在的层次,RAW套接字也划分在这一层,用户必须自己创建IP首部和传输层协议首部。
该层涉及的文件主要有:ip.c route.c ip_fw.c raw.c packet.c
链路层:
链路层实现是作为网络栈与底层硬件驱动的一个接口层存在的。
该层涉及的文件主要有:dev.c p8022.c panap.c p8023.c eth.c arp.c
“驱动层”:
OSI七层模式没有这一层,将驱动层序所在层次定义为“驱动层”,该层与链路层进行交互,完成数据包的收发公工作。
该层涉及的文件定义在dricers子目录下的一些网络设备的驱动程序。
物理层:
网络栈实现不涉及物理层
Linux网络栈层次命名
网络栈分层如下:BSD socket层、INET层、传输层(L4)、网络层(L3)、链路层(L2)
全部0条评论
快来发表一下你的评论吧 !