-
2021-07-10 00:48:22
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。
网络层的设备有中继器、集线器、网桥、交换机、路由器、网关 、计算机网络体系中,这几样通信设备或者说网络名词出现的频率相当的高。
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。
计算机发明者约翰・冯・诺依曼。计算机是20世纪最先进的科学技术发明之一,对人类的生产活动和社会活动产生了极其重要的影响,并以强大的生命力飞速发展。它的应用领域从最初的军事科研应用扩展到社会的各个领域,已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变革,计算机已遍及一般学校、企事业单位,进入寻常百姓家,成为信息社会中必不可少的工具。
更多相关内容 -
常见应用层协议
2019-10-03 11:54:24常见应用层协议 1、超文本传输协议 用于传输浏览器使用的普通文本、超文本、音频和视频等数据。 详细情况请看: 2、邮件协议 在互联网中,电子邮件的传送是依靠这些协议完成的。 详细情况请看: 3、文件...常见应用层协议
1、超文本传输协议
用于传输浏览器使用的普通文本、超文本、音频和视频等数据。
详细情况请看:超文本传输协议HTTP/HTTPS
2、邮件协议
在互联网中,电子邮件的传送是依靠这些协议完成的。
详细情况请看:邮件协议SMTP/POP3/IMAP
3、文件传输协议
用来在客户机与服务器之间进行简单文件传输的协议。
详细情况请看:文件传输协议FTP/TFTP/SSH/SCP
4、域名解析协议
万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网。
详细情况请看:DNS协议详解及报文格式分析
5、SSH( Secure Shell)
SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
将来可能代替其它远程连接方式。
6、Telnet
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。
它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
7、DHCP(Dynamic Host Configuration Protocol)
DHCP 是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
DHCP有3个端口,其中UDP 67和UDP 68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;UDP 546号端口用于DHCPv6 Client,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
8、NTP(Network Time Protoco)
NTP 是用来使网络中的各个计算机时间同步的一种协议。
它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行时间同步,它可以提供高精准度的时间校正,而且可以使用加密确认的方式来防止病毒的协议攻击。
9、SNMP
SNMP,用于网络管理的协议。SNMP被设计为工作在TCP/IP协议族上,基于TCP/IP协议工作,对网络中支持SNMP协议的设备进行管理。
所有支持SNMP协议的设备都提供SNMP这个统一界面,使得管理员可以使用统一的操作进行管理,而不必理会设备是什么类型、是哪个厂家生产的。
-
内核层与应用层通信详解
2019-07-30 08:41:28做驱动开发的肯定会遇到应用层与内核层的通信的问题,首先说内核层与应用层的通信可以大概分为两个方面,第一是应用层向内核层主动传递消息,第二是内核层主动与应用层通信。下面我们将分开来谈两个方面。 我们先来...做驱动开发的肯定会遇到应用层与内核层的通信的问题,首先说内核层与应用层的通信可以大概分为两个方面,第一是应用层向内核层主动传递消息,第二是内核层主动与应用层通信。下面我们将分开来谈两个方面。
我们先来看应用层向内核层传递的方法:
BOOL DeviceIoControl ( HANDLE hDevice, // 设备句柄 DWORD dwIoControlCode, // IOCTL请求操作代码 LPVOID lpInBuffer, // 输入缓冲区地址 DWORD nInBufferSize, // 输入缓冲区大小 LPVOID lpOutBuffer, // 输出缓冲区地址 DWORD nOutBufferSize, // 输出缓冲区大小 LPDWORD lpBytesReturned, // 存放返回字节数的指针 LPOVERLAPPED lpOverlapped // 用于同步操作的Overlapped结构体指针 );
DeviceIoControl 这个函数是重点中的重点,几乎所有应用层与内核层的通信与此函数有关,发送控制代码直接到指定的设备驱动程序,使相应的移动设备以执行相应的操作。
驱动程序可以通过CTL_CODE宏来组合定义一个控制码,并在IRP_MJ_DEVICE_CONTROL的实现中进行控制码的操作。在驱动层irpStack->Parameters.DeviceIoControl.IoControlCode表示了这个控制码。
说到这里我们不得不提的一个东西就是IRP:
IRP(IO请求包)用于win32和驱动程序通讯,NT内核有一个组件叫做IO管理器。IO管理器负责IRP的分发,驱动程序里创建好设备并且创建好符号链接后,Win32就可以加载驱动了。而要让一个驱动可以处理IRP,必需给驱动添加IRP处理例程。
添加的方法就是再DriverEntry里面对驱动对象DriverObject操作。该参数是一个指针,指向驱动对象,驱动对象内部有一个MajorFunction数组,该数组的类型是
NTSTATUS (*PDRIVER_DISPATCH) (IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp) 。这是一个函数指针,指向每个IRP对于的处理例程。最后就是为所有需要处理的IRP实现对应的例程。应用层通过DeviceIoControl 下发指令到内核层,内核层又通过对消息头的判断取出缓冲区的数据进行一系列的操作。
总得来说来说,有DeviceIoControl的存在,应用层向内核层传递消息就是一件轻松加愉快的事情,我简单的贴一点应用层和内核层的代码,大家可以做参考:
应用层:
BOOL bOK = ::DeviceIoControl(hAdapter, IOCTL_PTUSERIO_OPEN_ADAPTER, pszAdapterName, nBufferLength, NULL, 0, &dwBytesReturn, NULL); // 检查结果 if(!bOK) { ::CloseHandle(hAdapter); return INVALID_HANDLE_VALUE; } return hAdapter;
驱动层:
NTSTATUS DevIoControl(PDEVICE_OBJECT pDeviceObject, PIRP pIrp) { // 假设失败 NTSTATUS status = STATUS_INVALID_DEVICE_REQUEST; // 取得此IRP(pIrp)的I/O堆栈指针 PIO_STACK_LOCATION pIrpStack = IoGetCurrentIrpStackLocation(pIrp); // 取得I/O控制代码 ULONG uIoControlCode = pIrpStack->Parameters.DeviceIoControl.IoControlCode; // 取得I/O缓冲区指针和它的长度 PVOID pIoBuffer = pIrp->AssociatedIrp.SystemBuffer; ULONG uInSize = pIrpStack->Parameters.DeviceIoControl.InputBufferLength; ULONG uOutSize = pIrpStack->Parameters.DeviceIoControl.OutputBufferLength; ULONG uTransLen = 0; DBGPRINT((" DevIoControl... \n")); switch(uIoControlCode) { case IOCTL_GET_SHARE_ADD:
case IOCTL_PTUSERIO_OPEN_ADAPTER: // 根据控制码响应 {
然后驱动就可以从设定好的缓冲区里取数据进行操作。
第二步咱们来聊聊驱动层如何主动向应用层发消息:
很多情况下,我们需要驱动主动将消息传递给应用层,例如我们写一个网卡驱动,里面过滤传递的数据包,当数据包经过的时候,我们就需要驱动层将消息主动传递给应用层,这时候简单的DeviceIoControl 已经不能实现,那我们可以用共享事件加共享内存的方式来实现。
原理:通过Ring3创建事件,并将该事件传递给Ring0,同时Ring3创建监控线程,等待Ring0发起事件,此为应用层驱动层共享事件。同时Ring0在内核分配非分页内存,通过DeviceIoControl 传递给Ring3,此为应用层驱动层共享内存。因在DeviceIoControl 中传送Buffer,涉及到内核数据拷贝,大数据量下使用效率很低,故用共享内存的方法。
应用层代码:
m_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); // 创建事件 // 发事件给ring 0 if (0 == DeviceIoControl(hFile, SET_EVENT, &m_hEvent, sizeof(HANDLE), NULL, 0, &uRetBytes,NULL)) { CloseHandle(hFile); CloseHandle(m_hEvent); printf("SET_EVENT failed\n"); return FALSE; } // 获得ring 0 的共享内存 PVOID add = NULL; if (0 == DeviceIoControl(hFile, IOCTL_GET_SHARE_ADD, NULL, 0, &add, sizeof (PVOID), &uRetBytes,NULL)) { CloseHandle(hFile); CloseHandle(m_hEvent); return FALSE; } m_pShareMem = (PVOID)add; return TRUE;
while (1) { WaitForSingleObject(m_hEvent, INFINITE); { <span style="white-space:pre"> </span>//等待事件发生 } }
内核层:g_pSysAdd = ExAllocatePool(NonPagedPool, 2048*3); g_pMdl = IoAllocateMdl(g_pSysAdd, 2048*3, FALSE, FALSE, NULL); MmBuildMdlForNonPagedPool(g_pMdl);//建立共享内存
UserAddr = MmMapLockedPagesSpecifyCache(g_pMdl, UserMode, NonPagedPool, NULL, FALSE, NormalPagePriority);
*((PVOID*)pIoBuffer) = UserAddr;//将驱动建立的内存地址传递给应用
memset(g_pSysAdd,0,2048*3); RtlCopyMemory(g_pSysAdd, test, (DataOffset - 54)*2);//将需要的数据写入内存 KeSetEvent((PKEVENT)g_pEvent, 0,FALSE);//通知应用层可以读了
接下来我们就可以在应用层读取里面的数据了,地址就是我们通过DeviceIocontrol得到的地址。
-
TCP/IP——应用层
2021-12-14 21:04:49TCP/IP——应用层 在OSI七层模型中,将应用层,会话层,表示层综合看成了TCP/IP模型中的应用层 一、应用和数据 应用: 1)应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频 2)伴随着应用会...TCP/IP——应用层
在OSI七层模型中,将应用层,会话层,表示层综合看成了TCP/IP模型中的应用层
一、应用和数据
应用:
1)应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频
2)伴随着应用会有信息的产生。比如文本,图片,时评等都是信息的不同呈现方式
数据:
1)数据的产生:在计算机领域,数据是各种信息的载体
2)数据的传输:大部分应用程序所产生的数据需要在不同设备之间传递
在TCP/IP协议中,每一层都定义了不同功能的协议,如下图:
二、理解应用层功能
应用层为应用软件提供接口,使应用程序能够使用网络服务,应用层协议会指定使用相应的传输层协议,以及传输层所
使用的端口等
应用层的PDU被称之为Data(数据)
了解常见的协议端口号:
三、了解常见的应用层协议
FTP
FTP(文本传输协议)是一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,它采用C/S(Client/Server)结构
FTP的运行过程如下图:
Telnet
Telnet是数据网络中提供远程登录服务的标准协议。Telnet为用户提供了在恩地计算机上完成远程设备工作的能力
具体工作流程如下:
HTTP
HTTP是互联网上应用最为广泛的一种网络协议,设计HTTP最初的目的是为了提供一种发布和接受HTML页面的方法 -
架构:高可用的网站架构——应用层、服务层、数据层。
2019-08-24 23:53:48通常企业级应用系统为提高系统可用性,会采用较昂贵的软硬件设备,如IBM的小型机及至中型机大型机及专有操作系统、Oracle数据库、EMC存储设备等。互联网公司更过的采用PC级服务器、开源的数据库和操作系统,这些廉价... -
Linux应用层与内核驱动层3种交互方式
2021-01-05 10:00:14本文主要是总结出应用层与内核驱动层的...应用层操作硬件设备也是通过内核层提供的API接口或文件设备提供的操作接口来实现调用驱动来操作硬件设备。 总结来是应用层与驱动层数据相互传递,或应用层通过驱动提供的方法 -
应用层协议——原理
2018-08-30 11:44:34因为网络核心设备(路由器、交换机等,不包括端系统设备)并不在应用层上起作用,只在网络层及下面层次起作用,所以不需要为网络核心设备写对应的应用程序,即开发应用程序的时候只需要考虑适配端系统,不需要考虑... -
OSI第七层:应用层功能及介绍
2019-01-16 18:59:55OSI应用层功能:应用层提供各种各样的应用层协议,这些协议嵌入在各种我们使用的应用程序中,为用户与网络之间提供一个打交道的接口。 OSI应用层的作用 当我们第一次学习网络,对网络的概念不会很直观,我们使用... -
应用层、传输层、网络层、数据链路层、物理层传输基本单位、设备、协议以及地址表达...
2019-10-07 02:40:00名称 传输基本单位 ... 设备 ...应用层 数据 应用程序 HTTP、SMTP、POP3、TELNET、SNMP、FTP、DHCP、TFTP、 域名地址 传输层 数据段 进程、端口 ... -
Android应用层读写设备节点
2019-07-13 15:20:33Android应用层如何读写设备节点 1、什么是设备节点(设备文件)? Linux中设备节点是通过“mknod”命令来创建的。一个设备节点其实就是一个文件,Linux中称为设备文件。有一点必要说明的是,在Linux中,所有的设备... -
网络编程-网路七层协议图(2)之每一层对应的设备及功能(物理层、数据链路层、网络层、传输层、应用层......
2017-08-05 15:53:41OSI七层协议在网络传输中扮演的角色及功能:7、应用层——–电脑的各种数据6、表示层 ——– 处理用户信息的表示问题,如编码、数据格式转换和加密解密5、会话层——–会话管理、会话流量控制、寻址、寻址4、传输层... -
TCP/IP协议之应用层
2020-11-11 22:49:24因为网络核心设备(路由器、交换机等,不包括端系统设备)并不在应用层上起作用,只在网络层及下面层次起作用,所以不需要为网络核心设备写对应的应用程序,即开发应用程序的时候只需要考虑适配端系统,不需要考虑... -
嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。
2020-01-17 14:10:031、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路... -
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
2019-06-18 17:03:06提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。 二、表示层 主要作用是为异种机通信提供异种公共... -
基于TCP或UDP的应用层协议有哪些?——Linux网络编程
2019-10-15 14:38:36一、基于TCP的应用层协议有:SMTP、TELNET、HTTP、FTP 基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、RIP(路由选择协议)、DHCP、BOOTP(是DHCP的前身)、IGMP(Internet组管理协议) ... -
应用层到驱动层
2016-12-04 21:51:29在应用层通过open打开一个设备文件时,在VFS层会建立inode结构体和file结构体,前者是静态的描述设备的一些信息(如:设备号,节点指针,设备类型以及cdev结构体),后者则会描述设备类型的一些动态信息(如:文件... -
Linux应用层与内核层交互的几种方式
2019-08-27 11:25:17Linux系统下,设备即文件,也因此大部分设备驱动程序都实现了标准的系统接口,如open(),read,write, ioctl(), mmap()等等。 (2)通过proc文件系统进行通信。很多内核程序细节,如中断等,都在proc/目录下有所体现。... -
AndroidQ 打通应用层到HAL层---(HAL模块实现)
2020-04-13 20:20:52从这篇文章开始准备研究应用层到HAL层的一整套流程,目标是写一个APP调用HAL的一个函数,在AOSP源码环境下进行开发,大概流程是: APP---->Framework service---->native----->HAL 什么是HAL HAL全称... -
TCP应用层主要协议
2015-09-27 21:51:05TCP/IP应用层对应了OSI参考模型的上三层(会话层、表示层和应用层),它包括了一些服务。 这些服务是与终端用户相关的认证、数据处理及压缩,应用层还要告诉传输层哪个数据流 是由哪个应用程序发出的。应用层主要... -
计算机网络:物理层、数据链路层、网络层、运输层、应用层的基本概念
2020-04-06 20:28:46现有的计算机网络中的硬件设备和传输媒体的种类非常繁多,而通信手段也有许多不同的方式。物理层的作用正是要尽可能地屏蔽掉这些传输媒体和通信手段地差异,使得物理层上面的数据链路层感觉不到这些差异。 运用于... -
Linux无需开发底层驱动,从应用层获取GPIO中断
2016-04-19 09:20:25应用层上控制GPIO网上有许多资料,但是获取中断,网上的大部分资料都是需要开发底层驱动,由底层驱动获取到GPIO的中断然后再通知应用层。 对于不想开发驱动的我来说,还有另外一种方法可以直接从应用层上获取到... -
常见应用层协议端口号及简介
2018-07-04 16:36:12常见应用层协议 我们都知道,在TCP/IP模型中,应用层是最高层,应用层包括所有的高层协议,并且不断有新的协议加入。 我们先看一下其常用协议的端口号: 常用服务 协议 端口号 POP3 TCP 110 IMAP ... -
应用层常见协议及端口号
2018-03-19 17:27:05在TCP/IP模型中,应用层是最高层。应用层包括所有的高层协议,并且不断有新的协议加入。 TCP/IP参考模型中应用层和下层协议之间的关系如下: 应用层的许多协议都是基于(C/S client /server)方式的。 下面为我们... -
应用层常见的协议及对应的端口号
2016-04-10 21:51:36在TCP/IP模型中,应用层是最高层。应用层包括所有的高层协议,并且不断有新的协议加入。TCP/IP参考模型中应用层和下层协议之间的关系如下:应用层的许多协议都是基于(C/S client /server)方式的。下面为我们就图片... -
Windows驱动学习(二)-- 驱动层&应用层通信
2018-09-18 15:57:181. 概述 驱动是没有界面的,那么我们的...为了能与应用层进行通信,我们需要创建一个虚拟的设备,然后创建一个符号与之关联,这些工作做完后,就可以将要与应用层交互的数据放置到设备的I/O堆栈中,供应用层进行... -
linux应用层到驱动层再到硬件图解(inline)
2018-05-10 17:10:371 系统整体工作原理 1.1 总体流程图 1.1.1 这里举一个函数例子,比如内核给我们应用层提供的open/read/write等函数指针,这些函数在内核的fs.h中用file_operation(用来操作文件的所有接口)结构体封装,他们只是... -
OSI七层模型基础知识及各层常见应用
2018-03-16 15:37:33OSI七层模型基础知识及各层常见应用 目录 二、 OSI基础知识 三、 OSI的七层结构 四、 OSI分层的优点 五、 OSI模型与TCP/IP模型的比较 六、OSI七层模式简单通俗理解 模型把网络通信的工作分为7层。1... -
Android的四个应用层
2015-11-12 19:01:56设备驱动程序层(Linux Kernel):该层主要包括:驱动、内存管理、进程管理、网络协议等组件。执行层c/c++函数库层(Libraries)及Android Runtime: Java不能直接访问硬件,要访问硬件,必须使用NDK。NDK是由c/... -
基于TCP/UDP的应用层协议
2018-05-21 19:10:48BOOTP(Boot Protocol,启动协议) ,应用于无盘设备 3,基于UDP和TCP的有: DNS(Domain Name Service,域名服务) ,用于完成地址查找,邮件转发等工作 ECHO(Echo Protocol, 回绕协议) ,用于查错及测量应答时间 -
计算机网络实验四:应用层和传输层协议分析(PacketTracer)
2019-05-05 23:24:13通过本实验,熟悉PacketTracer的使用,学习PacketTracer中仿真分析应用层和传输层协议,加深对协议工作过程的理解。 实验内容 从PC使用URL捕获Web请求,运行模拟并捕获通信,研究捕获的通信。 Wireshark 可以...