Windows 实现的 OSI 七层模型结构图

对网络编程感兴趣的朋友可能都听过 OSI 七层模型,下面一张便是在 Windows 下实现的整个协议的结构图。

                 Windows 下的 OSI 七层模型的实现结构

                  +-------------------------------+
                  |           Ws2_32.dll          |
                  +-------------------------------+
 UserMode                   |           |
                  +-------------------------------+
                  |           msafd.dll           |
                  +-------------------------------+
                          |   System Call  |
                          | File Operation |
----------------------------------------------------------------------
                          |                |
                  +-------------------------------+
                  |           afd.sys             |
                  |         \Device\Afd           |
                  +-------------------------------+
 Kernel Mode              | File Operation |
                          |      IRP       |
              +----------------------------------------+
              |                tcpip.sys               |       ( Tdi layer )                --- 传输层
              | \Device\Tcp \Device\Udp \Device\RawIp  |       ( Ndis Protocol )            --- 网络层
              +----------------------------------------+
                          |   Ndis lib     |
                          |                |
                  +-------------------------------+
                  |           k57xp32.sys         |            ( Miniport )                 --- 链路层
                  +-------------------------------+
                  |       Net Interface Card      |                                         --- 物理层
                  +-------------------------------+

简单来讲, Windows 对网络部分的实现分为两部分,用户态部分和内核态部分。用户态部分为标准的 socket 调用,一般情况下可以认为有 ws2_32.dll 和 msafd.dll 组成,msafd.dll 为一个服务提供者,主要完成 socket 用户层的代码实现, 在内核态 socket 的实现由 afd.sys 实现,它主要创建设备 \Device\Afd 来与 msafd.dll 进行交互,完成

socket 的创建等其它操作。

tcp/ip 协议的传输层和网络层实现是在 tcpip.sys 里完成的,它主要完成两部分工作,传输层实现和网络层实现,在传输层部分完成 TCP, UDP, RawIp 的绑定,连接等功能,主要服务于 afd.sys 发下来的 TDI 命令,然后进入到网络层,来完成路由以及 IP 包的构成,网络层部分相当于一个 Ndis 协议驱动,一般来讲它会绑定所有的网卡来监听和发送 IP 包。

链路层在笔者的电脑上是由 k57xp32.sys 驱动完成,不同的网卡此驱动可能不同,它相当于一个 Ndis Miniport 驱动,和 Ndis 协议驱动一样,都是运行在 Ndis 库营造的一个运行环境中,主要完成例如以内网数据包的构成,操作网卡发送数据包,以及注册中断接收数据包以及其它信息的工作。

物理层,当然由网卡硬件来实现。

有了上面清晰的结构之后,我们要开发一些业务就会非常明白的知道它工作在哪里,比如 TDI 防火墙,就可以直接附加到 tcpip.sys 创建的几个命名设备对象上面,就可以监听到 afd.sys 发下来的 TDI 命令,进而可以拦截,一些 socket 创建,绑定,发送和接收的命令,从而完成防火墙的功能。当然,如果别人直接注册一个协议驱动,然后直接进行发包,那么这个防火墙就不能对这样的操作对待监控,比如直接发 ARP 包到局域网中,就可以造成攻击。但是如果你的防火墙工作在链表层上面,即注册一个中间层驱动来完成防火墙的功能,那么就又可以拦截掉我刚才假设的那种操作,所以如果一个
Ndis 中间层驱动来完成防火墙功能,那么就可以有更大的监控范围。再比如,想实现一个虚拟网卡,那么就可以完成一个 Ndis 小端口驱动,来让其它协议对你进行绑定,一些应用程序就可以直接选择这张网卡进行数据处理,便可完成一些特殊工作了。

总之,有多灵活的思路,就可以完成多灵活的功能。

时间: 2024-08-01 03:50:20

Windows 实现的 OSI 七层模型结构图的相关文章

OSI七层模型超详细结构图

OSI七层模型 相关协议 缩写应用层 HTTP 超文本传输协议 FTP 文件传输协议 SMTP 简单邮件传输协议 TELNET TCP/IP终端仿真协议 POP3 邮局协议第三版 Finger 用户信息协议 NNTP 网络新闻传输协议 IMAP4 因特网信息访问协议第四版 LPR UNIX 远程打印协议 Rwho UNIX 远程 Who协议 Rexec UNIX远程执行协议 Login UNIX 远程登陆协议 RSH UNIX 远程Shell协议 NTF HP网络文件传输协议 RDA HP 远程

OSI七层模型详解 TCP/IP协议

总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转换,数据加密 没有协议 会话层 解除或建立与别的接点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP 网络层 为数据包选择路由 IP,ICMP,OSPF,EIGRP,IGMP 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU 物理层 以二进制数据形式在物理媒体上

osi 七层模型与tcp/ip 四层参考

一.七层?四层? OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名"开放式系统互联通信参考模型",是一个试图使各种计算机在全世界范围内互联为网络的标准框架.1983年,国际标准组织(ISO)发布了著名的ISO/IEC 7498标准,它定义了网络互联的7层框架,也就是开放式系统互联参考模型 1.为什么需要协议? 什么是协议(protocol)?通俗的来讲,协议是一种双方都明白或者必须遵守的事先约定,比如说长城上放狼烟

OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程

当我们通过自己电脑的浏览器访问京东的时候, 览器上输入了一个网址,但是我们都知道,互联网连接的电脑互相通信的是电信号,我们的电脑是怎么将我们输入的网址变成了电信号然后发送出去了呢,并且我们发送出去的消息是不是应该让京东的服务器能够知道,我们是在请求它的网站呢,也就是说京东是不是应该知道我发送的消息是什么意思呢.是不是发送的消息应该有一些固定的格式呢?让所有电脑都能识别的消息格式,他就像英语成为世界上所有人通信的统一标准一样,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的intern

TCP/IP四层模型和OSI七层模型的概念

转:http://blog.csdn.net/superjunjin/article/details/7841099/ TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层).   TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传

网络基础-网络OSI七层模型概述

一.为什么学习 网络与我们的生活息息相关,能上网的地方都离不开网络的支持,整体听小伙伴们谈论网络相关的知识,自己却无从插口... 工作中发邮件.聊扣扣生活中玩网游等,我们通过网络所做的事情都与网络低层有关.终归到底,自己还是一个做编程的,这些都不懂,学习中处处遇障碍,所以要学习这块. 二.分层的概念 分层在生活中随处可见,公司分老板.总监.经理.小团队,传销团伙也是金字塔形的,只要是个组织,都会有分层的概念.一般来说:低层是为高层服务的,每一层都可以使用下层提供的服务,并向高层提供服务. 三.O

网络基础笔记——OSI七层模型

OSI七层模型 由于整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等.如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只程序都需要改写.所以我们将整个网络分成数层,每层都有自己独立的功能,而且每层的代码都可以独立撰写,因为相互之间不会干扰.如此一来,当某个小环节出现问题时,只要将该层的代码改写即可.并且这样可以让整个网络层次更加的清晰. 在网络上传输信息就像是一个发包裹的过程,从己方的应用程序开始往第七层的包裹里塞数据,再依次塞到第一层的包

OSI七层模型详解

OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息.网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备. 具体说: 物理层:网卡,网线,集线器,中继器,调制解调器 数据链路层:网桥,交换机 网络层:路由器 网关工作在第四层传输层及其以

网络管理之OSI七层模型篇 Linux详解

哈,终于到了网络知识篇了.一直不知道该怎么来写这一篇博客,因为知识点实在是太多,内容也实在是不好写啊!但是,毕竟作为一个IT人员,不学好网络知识怎么好意思出门呢?那么,言归正传,在讲解之前,我先来科普一个概念,什么是OSI七层模型? 所谓的七层模型实际上是不存在的,是一种假想的网络模型.什么意思呢? 请看下面这张图: 这张图应该显示的很清楚了吧! 解释一下每一层对应的单位: ① 物理层:比特:机器语言都是0101,其中每一个0或者1代表一个比特位,这也是计算机中最小单位 ② 数据链路层:帧:数据