当前位置:首页 » 合同协议 » ulp协议

ulp协议

发布时间: 2021-02-05 13:35:11

㈠ ulp是什么意思

ULP
abbr. upper layer protocol, upper level protocol 高层协议; ultra-low pressure 超低压(力) user location protocol 用户定位协议; unileaflet prolapse 单小叶脱垂;
[网络] 上层协议;
[例句]Preparation and Properties of Polypropylene Grafted with ULP Containing Europium
含铕线性不饱和聚酯专接枝属聚丙烯及其性能研究

㈡ san英语 是什么意思

存储域网络(Storage Area Network)的支撑技术是Fibre Channel(FC)技术,这是ANSI为网络和通道I/O接口建立的一个标准集成。支持HIPPI,IPI,SCSI,IP,ATM等多种高级协议,它的最大特性是将网络和设备的通讯协议与传输物理介质隔离开.这样多种协议可在同一个物理连接上同时传送,高性能存储体和宽带网络使用单I/O接口使得系统的成本和复杂程度大大降低。如通过Switch扩充至交换仲裁复用结构则可将用户扩至很多。FC使用全双工串行通讯原理传输数据,传输速率高达1062.5Mbps,Fibre Channel的数据传输速度为100MB/S,双环可达200MB/S,使用同轴线传输距离为30米,使用单模光纤传输距离可达10公里以上。光纤通道支持多种拓扑结构,主要有:点到点(Links)、仲裁环(FC-AL)、交换式网络结构(FC-XS)。点对点方式的例子是一台主机与一台磁盘阵列透过光纤通道连接;其次为光纤通道仲裁环(FC-AL),在FC-AL的装置可为主机或存储装置。第三种FC-XS交换式架构在主机和存储装置之间透过智能型的光纤通道交换器连接,使用交换架构需使用存储网络的管理软件
FC技术具有以下优越性:
(1)既具有单通道的特点,又具有网络的特点,它是把设备连接到网络结构上的一种高速通道。而这种网络结构描述了连接两套设备的单条电缆以及连接许多设备的交换机产生网状结构。
(2)光纤通道最大优点是速度快,它可以给计算机设备提供接近于设备处理速度的吞吐量。
(3)协议无关性,它有很好的通用性,是一种通用传输机制。适用范围广,可提供多性价比的系统,从小系统到超大型系统,支持存在的多种指令集,如IP、SCSI、IPI。
光纤通道规范定义的速率最高可到4Gbps,目前T11工程组对10Gbps传输速度的FC规范也在紧锣密鼓的制定之中。
FC是一种分层结构,每个层次定义为一个功能级,但是所分的层不能直接映射到OSI模型的层上。FC通道的五层定义为:物理媒介和传输速率、编码方式、帧协议和流控制、公共服务以及上级协议(ULP)接口。
1) FC-0:
FC-0是物理层底层标准。FC-0层定义了连接的物理端口特性,包括介质和连接器(驱动器、接收机、发送机等)的物理特性、电气特性和光特性、传输速率以及其它的一些连接端口特性。物理介质有光纤、双绞线和同轴电缆。带有ECL的铜芯同轴电缆,用于高速、短距离传输。双绞线用于25MB/s数据传输,距离可达50米。带有激光和LED传导的光纤,用于长距离的传输,光纤通道的数据误码率低于10E-12,它具有严格的抖动容许规定和串行I/O电路能够进行正常管理的其他一些电气条件。
2) FC-1(传输协议)
FC-1根据ANSI X3 T11标准,规定了8B/10B的编码方式和传输协议,包括串行编码、解码规则、特殊字符和错误控制。传输编码必须是直流平衡以满足接收单元的电气要求。特殊字符确保在串行比特流中出现的是短字符长度和一定的跳变信号,以便时钟恢复。8B/10B码在现实中的应用是稳定和简单的。
3) FC-2(帧协议):
FC-2层定义了传输机制、包括帧定位、帧头内容、使用规则以及流量控制等。光纤通道数据帧长度可变,可扩展地址。用于传输数据的光纤通道数据帧长度最多达到2K,因此非常适合于大容量数据的传输。帧头内容包括控制信息、源地址、目的地址、传输序列标识和交换设备等。64字节可选帧头用于其它类型网络在光纤通道上传输时的协议映射。光纤通道依赖数据帧头的内容来引发操作,如把到达的数据发送到一个正确的缓冲区里。
4) FC-3(公共服务):
提供高级特性的公共服务,即端口间的结构协议和流动控制,它定义了三种服务:条带化(Striping)、搜索组(HuntGroup)和多播(Multicast)。条带化的目的是为了利用多个端口在多个连接上并行传输,这样I/O传输带宽能扩展到相应的倍数。搜索组用于多个端口去响应一个相同名字地址的情况,它通过降低到达"占线"的端口的概率来提高效率。多播用于将一个信息传递到多个目的地址。
5) FC-4(ULP映射):
它是光纤通道标准中定义的最高等级,固定了光纤通道的底层跟高层协议(ULP)之间的映射关系以及与现行标准的应用接口,这里的现行标准包括现有的所有通道标准和网络协议,如SCSI接口和IP、ATM、HIPPI等。

㈢ 蓝牙V2.1+EDR是什么意思和蓝牙4.0哪个好

蓝牙2.1+EDR与蓝牙4.0的区别,对用户来讲,最直接的影响是速度的改变。


如上图,2.0版本最高只能达到3M,而4.0可以达到24M。


其它具体的技术方面,2.0发展到3.0的时候,已经有一些改进,主要的新特性是AMP(Alternative MAC/PHY),它也是802.11新增的高速传输功能。高速并非该规格的强制特性,因此只有标注了"+HS"商标的设备才是真正通过802.11高速数据传输支持蓝牙。没有标注"+HS"后缀的蓝牙3.0设备仅支持核心规格3.0版本或之前的核心规范附录1。


而到了4.0,又有新改进:

蓝牙技术联盟于2010年6月30日正式推出蓝牙核心规格4.0 (称为Bluetooth Smart)。它包括经典蓝牙、高速蓝牙和蓝牙低功耗协议。高速蓝牙基于Wi-Fi,经典蓝牙则包括旧有蓝牙协议。

蓝牙低功耗,也就是早前的Wibree,是蓝牙4.0版本的一个子集,它有着全新的协议栈,可快速建立简单的链接。作为蓝牙1.0 – 3.0版本中蓝牙标准协议的替代方案,它主要面向对功耗需求极低、用纽扣电池供电的应用。芯片设计可有两种:双模、单模和增强的早期版本。早期的Wibree和蓝牙ULP(超低功耗)的名称被废除,取而代之的是后来用于一时的BLE。2011年晚些时候,新的商标推出,即用于主设备的 “Bluetooth Smart Ready”和用于传感器的“Bluetooth Smart”。

单模情况下,只能执行低功耗的协议栈。意法半导体、笙科电子、CSR、北欧半导体和德州仪器已经发布了单模蓝牙低功耗解决方案。

双模情况下,Bluetooth Smart功能整合入既有的经典蓝牙控制器。截至2011年3月,高通创锐讯、CSR、博通和德州仪器已宣布发表符合此标准的芯片。适用的架构共享所有经典蓝牙既有的射频和功能,相比经典蓝牙的价格上浮也几乎可以忽略不计。

单模芯片的成本降低,使设备的高度整合和兼容成为可能。它的特点之一是轻量级的链路层,可提供低功耗闲置模式操作、简易的设备发现、和可靠地点对多数据传输,并拥有成本极低的高级节能和安全加密连接。

4.0版本的一般性改进包括推进蓝牙低功耗模式所必需的改进、以及通用属性配置文件(GATT) 和AES加密的安全管理器(SM) 服务。

㈣ 拦截http协议封包hook哪些

文章比较长,得慢点看。转载
利用HOOK拦截封包原理 截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。 首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下: HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn, // hook procere HINSTANCE hMod, // handle to application instance DWORD dwThreadId // thread identifier ); 具体的参数含义可以翻阅msdn,没有msdn可谓寸步难行。 这里Hook本身的功能并不重要,我们使用它的目的仅仅只是为了能够让Windows把我们的代码植入别的进程里去。hook Type我们任选一种即可,只要保证是目标程序肯定会调用到就行,这里我用的是WH_CALLWNDPROC。lpfn和hMod分别指向我们的钩子代码及其所在的dll,dwThreadId设为0,表示对所有系统内的线程都挂上这样一个hook,这样我们才能把代码放到别的进程里去。 之后,我们的代码就已经进入了系统内的所有进程空间了。必须注意的是,我们只需要截获我们所关心的目标程序的调用,因此还必须区分一下进程号。我们自己的钩子函数中,第一次运行将进行最重要的API重定向的工作。也就是通过将所需要截获的API的开头几个字节改为一个跳转指令,使其跳转到我们的API中来。这是最关键的部分。这里我想截三个调用,ws2_32.dll中的send和recv、user32.dll中的GetMessageA。 DWORD dwCurrentPID = 0; HHOOK hOldHook = NULL; DWORD pSend = 0; DWORD pRecv = 0; GETMESSAGE pGetMessage = NULL; BYTE btNewBytes[8] = { 0x0B8, 0x0, 0x0, 0x40, 0x0, 0x0FF, 0x0E0, 0 }; DWORD dwOldBytes[3][2]; HANDLE hDebug = INVALID_HANDLE_value; LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam ) { DWORD dwSize; DWORD dwPIDWatched; HMODULE hLib; if( dwCurrentPID == 0 ) { dwCurrentPID = GetCurrentProcessId(); HWND hwndMainHook; hwndMainHook = ::FindWindow( 0, "MainHook" ); dwPIDWatched = ::SendMessage( hwndMainHook, (WM_USER+100), 0, 0 ); hOldHook = (HHOOK)::SendMessage( hwndMainHook, (WM_USER+101), 0, 0 ); if( dwCurrentPID == dwPIDWatched ) { hLib = LoadLibrary( "ws2_32.dll" ); pSend = (DWORD)GetProcAddress( hLib, "send" ); pRecv = (DWORD)GetProcAddress( hLib, "recv" ); ::ReadProcessMemory( INVALID_HANDLE_value, (void *)pSend, (void *)dwOldBytes[0], sizeof(DWORD)*2, &dwSize ); *(DWORD *)( btNewBytes + 1 ) = (DWORD)new_send; ::WriteProcessMemory( INVALID_HANDLE_value, (void *)pSend, (void *)btNewBytes, sizeof(DWORD)*2, &dwSize ); ::ReadProcessMemory( INVALID_HANDLE_value, (void *)pRecv, (void *)dwOldBytes[1], sizeof(DWORD)*2, &dwSize ); *(DWORD *)( btNewBytes + 1 ) = (DWORD)new_recv; ::WriteProcessMemory( INVALID_HANDLE_value, (void *)pRecv, (void *)btNewBytes, sizeof(DWORD)*2, &dwSize ); hLib = LoadLibrary( "user32.dll" ); pGetMessage = (GETMESSAGE)GetProcAddress( hLib, "GetMessageA" ); ::ReadProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)dwOldBytes[2], sizeof(DWORD)*2, &dwSize ); *(DWORD *)( btNewBytes + 1 ) = (DWORD)new_GetMessage; ::WriteProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)btNewBytes, sizeof(DWORD)*2, &dwSize ); hDebug = ::CreateFile( "C:\\Trace.log", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 ); } } if( hOldHook != NULL ) { return CallNextHookEx( hOldHook, nCode, wParam, lParam ); } return 0; } 上面的钩子函数,只有第一次运行时有用,就是把三个函数的首8字节修改一下(实际上只需要7个)。btNewBytes中的指令实际就是 mov eax, 0x400000 jmp eax 这里的0x400000就是新的函数的地址,比如new_recv/new_send/new_GetMessage,此时,偷梁换柱已经完成。再看看我们的函数中都干了些什么。以GetMessageA为例: BOOL _stdcall new_GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ) { DWORD dwSize; char szTemp[256]; BOOL r = false; //Watch here before it's executed. sprintf( szTemp, "Before GetMessage : HWND 0x%8.8X, msgMin 0x%8.8X, msgMax 0x%8.8x \r\n", hWnd, wMsgFilterMin, wMsgFilterMax ); ::WriteFile( hDebug, szTemp, strlen(szTemp), &dwSize, 0 ); //Watch over // restore it at first ::WriteProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)dwOldBytes[2], sizeof(DWORD)*2, &dwSize ); // execute it r = pGetMessage( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax ); // hook it again *(DWORD *)( btNewBytes + 1 ) = (DWORD)new_GetMessage; ::WriteProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)btNewBytes, sizeof(DWORD)*2, &dwSize ); //Watch here after it's executed sprintf( szTemp, "Result of GetMessage is %d.\r\n", r ); ::WriteFile( hDebug, szTemp, strlen( szTemp ), &dwSize, 0 ); if( r ) { sprintf( szTemp, "Msg : HWND 0x%8.8X, MSG 0x%8.8x, wParam 0x%8.8X, lParam 0x%8.8X\r\nTime 0x%8.8X, X %d, Y %d\r\n", lpMsg->hwnd, lpMsg->message, lpMsg->wParam, lpMsg->lParam, lpMsg->time, lpMsg->pt.x, lpMsg->pt.y ); ::WriteFile( hDebug, szTemp, strlen( szTemp ), &dwSize, 0 ); } strcpy( szTemp, "\r\n" ); ::WriteFile( hDebug, szTemp, strlen( szTemp ), &dwSize, 0 ); //Watch over return r; } 先将截获下来的参数,写入到一个log文件中,以便分析。然后恢复原先保留下来的GetMessageA的首8字节,然后执行真正的GetMessageA调用,完毕后再将执行结果也写入log文件,然后将GetMessageA的执行结果返回给调用者。 整个截获的过程就是这样。你可以把其中的写log部分改成你自己想要的操作。这里有个不足的地方是,截获动作是不能够并发进行的,如果目标进程是多线程的,就会有问题。解决办法是,可以在每次new_GetMessage中加入一个CriticalSection的锁和解锁,以使调用变为串行进行,以原始套接字的方式 截获流经本机网卡的IP数据包 从事网络安全的技术人员和相当一部分准黑客(指那些使用现成的黑客软件进行攻击而不是根据需要去自己编写代码的人)都一定不会对网络嗅探器(sniffer)感到陌生,网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息。可见,嗅探器实际是一把双刃剑。 虽然网络嗅探器技术被黑客利用后会对网络安全构成一定的威胁,但嗅探器本身的危害并不是很大,主要是用来为其他黑客软件提供网络情报,真正的攻击主要是由其他黑软来完成的。而在网络安全方面,网络嗅探手段可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。权衡利弊,有必要对网络嗅探器的实现原理进行介绍。 文章正文 嗅探器设计原理 嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。 具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面先给出结构.数据包的总体结构: 数据包 IP头 TCP头(或其他信息头) 数据 数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。其中UDP数据段头比较简单,由一个8字节的头和数据部分组成,具体格式如下: 16位 16位 源端口 目的端口 UDP长度 UDP校验和 而TCP数据头则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,下面给出TCP数据段头的格式组成: 16位 16位 源端口 目的端口 顺序号 确认号 TCP头长 (保留)7位 URG ACK PSH RST SYN FIN 窗口大小 校验和 紧急指针 可选项(0或更多的32位字) 数据(可选项) 对于此TCP数据段头的分析在编程实现中可通过数据结构_TCP来定义: typedef struct _TCP{ WORD SrcPort; // 源端口 WORD DstPort; // 目的端口 DWORD SeqNum; // 顺序号 DWORD AckNum; // 确认号 BYTE DataOff; // TCP头长 BYTE Flags; // 标志(URG、ACK等) WORD Window; // 窗口大小 WORD Chksum; // 校验和 WORD UrgPtr; // 紧急指针 } TCP; typedef TCP *LPTCP; typedef TCP UNALIGNED * ULPTCP; 在网络层,还要给TCP数据包添加一个IP数据段头以组成IP数据报。IP数据头以大端点机次序传送,从左到右,版本字段的高位字节先传输(SPARC是大端点机;Pentium是小端点机)。如果是小端点机,就要在发送和接收时先行转换然后才能进行传输。IP数据段头格式如下: 16位 16位 版本 IHL 服务类型 总长 标识 标志 分段偏移 生命期 协议 头校验和 源地址 目的地址 选项(0或更多) 同样,在实际编程中也需要通过一个数据结构来表示此IP数据段头,下面给出此数据结构的定义: typedef struct _IP{ union{ BYTE Version; // 版本 BYTE HdrLen; // IHL }; BYTE ServiceType; // 服务类型 WORD TotalLen; // 总长 WORD ID; // 标识 union{ WORD Flags; // 标志 WORD FragOff; // 分段偏移 }; BYTE TimeToLive; // 生命期 BYTE Protocol; // 协议WORD HdrChksum; // 头校验和 DWORD SrcAddr; // 源地址 DWORD DstAddr; // 目的地址 BYTE Options; // 选项 } IP; typedef IP * LPIP; typedef IP UNALIGNED * ULPIP; 在明确了以上几个数据段头的组成结构后,就可以对捕获到的数据包进行分析了。 嗅探器的具体实现 根据前面的设计思路,不难写出网络嗅探器的实现代码,下面就给出一个简单的示例,该示例可以捕获到所有经过本地网卡的数据包,并可从中分析出协议、IP源地址、IP目标地址、TCP源端口号、TCP目标端口号以及数据包长度等信息。由于前面已经将程序的设计流程讲述的比较清楚了,因此这里就不在赘述了,下面就结合注释对程序的具体是实现进行讲解,同时为程序流程的清晰起见,去掉了错误检查等保护性代码。主要代码实现清单为: // 检查 Winsock 版本号,WSAData为WSADATA结构对象 WSAStartup(MAKEWORD(2, 2), &WSAData); // 创建原始套接字 sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)); // 设置IP头操作选项,其中flag 设置为ture,亲自对IP头进行处理 setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag)); // 获取本机名 gethostname((char*)LocalName, sizeof(LocalName)-1); // 获取本地 IP 地址 pHost = gethostbyname((char*)LocalName)); // 填充SOCKADDR_IN结构 addr_in.sin_addr = *(in_addr *)pHost->h_addr_list[0]; //IP addr_in.sin_family = AF_INET; addr_in.sin_port = htons(57274); // 把原始套接字sock 绑定到本地网卡地址上 bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in)); // dwValue为输入输出参数,为1时执行,0时取消 DWORD dwValue = 1; // 设置 SOCK_RAW 为SIO_RCVALL,以便接收所有的IP包。其中SIO_RCVALL // 的定义为: #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) ioctlsocket(sock, SIO_RCVALL, &dwValue); 前面的工作基本上都是对原始套接字进行设置,在将原始套接字设置完毕,使其能按预期目的工作时,就可以通过recv()函数从网卡接收数据了,接收到的原始数据包存放在缓存RecvBuf[]中,缓冲区长度BUFFER_SIZE定义为65535。然后就可以根据前面对IP数据段头、TCP数据段头的结构描述而对捕获的数据包进行分析: while (true) { // 接收原始数据包信息 int ret = recv(sock, RecvBuf, BUFFER_SIZE, 0); if (ret > 0) { // 对数据包进行分析,并输出分析结果 ip = *(IP*)RecvBuf; tcp = *(TCP*)(RecvBuf + ip.HdrLen); TRACE("协议: %s\r\n",GetProtocolTxt(ip.Protocol)); TRACE("IP源地址: %s\r\n",inet_ntoa(*(in_addr*)&ip.SrcAddr)); TRACE("IP目标地址: %s\r\n",inet_ntoa(*(in_addr*)&ip.DstAddr)); TRACE("TCP源端口号: %d\r\n",tcp.SrcPort); TRACE("TCP目标端口号:%d\r\n",tcp.DstPort); TRACE("数据包长度: %d\r\n\r\n\r\n",ntohs(ip.TotalLen)); } } 其中,在进行协议分析时,使用了GetProtocolTxt()函数,该函数负责将IP包中的协议(数字标识的)转化为文字输出,该函数实现如下: #define PROTOCOL_STRING_ICMP_TXT "ICMP" #define PROTOCOL_STRING_TCP_TXT "TCP" #define PROTOCOL_STRING_UDP_TXT "UDP" #define PROTOCOL_STRING_SPX_TXT "SPX" #define PROTOCOL_STRING_NCP_TXT "NCP" #define PROTOCOL_STRING_UNKNOW_TXT "UNKNOW" …… CString CSnifferDlg::GetProtocolTxt(int Protocol) { switch (Protocol){ case IPPROTO_ICMP : //1 /* control message protocol */ return PROTOCOL_STRING_ICMP_TXT; case IPPROTO_TCP : //6 /* tcp */ return PROTOCOL_STRING_TCP_TXT; case IPPROTO_UDP : //17 /* user datagram protocol */ return PROTOCOL_STRING_UDP_TXT; default: return PROTOCOL_STRING_UNKNOW_TXT; } 最后,为了使程序能成功编译,需要包含头文件winsock2.h和ws2tcpip.h。在本示例中将分析结果用TRACE()宏进行输出,在调试状态下运行,得到的一个分析结果如下: 协议: UDP IP源地址: 172.168.1.5 IP目标地址: 172.168.1.255 TCP源端口号: 16707 TCP目标端口号:19522 数据包长度: 78 …… 协议: TCP IP源地址: 172.168.1.17 IP目标地址: 172.168.1.1 TCP源端口号: 19714 TCP目标端口号:10 数据包长度: 200 …… 从分析结果可以看出,此程序完全具备了嗅探器的数据捕获以及对数据包的分析等基本功能。 小结 本文介绍的以原始套接字方式对网络数据进行捕获的方法实现起来比较简单,尤其是不需要编写VxD虚拟设备驱动程序就可以实现抓包,使得其编写过程变的非常简便,但由于捕获到的数据包头不包含有帧信息,因此不能接收到与 IP 同属网络层的其它数据包, 如 ARP数据包、RARP数据包等。在前面给出的示例程序中考虑到安全因素,没有对数据包做进一步的分析,而是仅仅给出了对一般信息的分析方法。通过本文的介绍,可对原始套接字的使用方法以及TCP/IP协议结构原理等知识有一个基本的认识。

㈤ 在qq显示ulp是什么意思

最好截图出来,你的表达不懂.
ulp可以代表蓝牙,还有协议之类的.
你在哪儿看到的

㈥ 电信光纤宽带总是掉线是怎么回事

我的也是,原来电话线宽带没有问题,改了之后经常掉,而且必须重启电脑,重启路由和光猫都没有用,严重时老是重启电脑,烦死了!电信的来把网线直接接在主机上不用路由也掉,郁闷死了!

㈦ 光纤接口的光纤通道基础

根据ANSI(美国国家标准协会)的规定,光纤通道作为某些上层协议(ULP专用的传输通道,应该支持IP,SCSI,HIPPI及其他高层协议等等。光纤通道不但在速度、距离和成本方面都有明显的优点,而且只需要添加一个光纤通道适配器(HBA)就可以使用现有的操作系统和很多软件。
FC-0(物理接口,physical interface)是FC协议的最底层。物理层定义了不同物理介质、传输距离,信号机制标准,也定义了除了光纤同轴电缆和双绞线也可以作为传输介质。本层基本目的是发送和接收二进制(0,1)信号。FC-0定义了数据传输的速度,指传输的有效数据的速度,目前有400MB/s,200MB/s,100MB/s,若加上帧头、编码等额外数据,速率就是4Gb/s,2Gb/s,1Gb/s。FC-1层(Trannsmission Protocol,代码层)是对FC-。层的加强层,利用底层的功能实现字节或传输字的发送和接收。定义了基本传输信号的编码解码特殊字符和字符级的差错控制,采用8B/1 OB编码。FC-2层(Signaling Protocol,协议层)定义了编码和解码的标准、原语和传输字。功能是发送和接收帧、帧序列、帧交换和数据包等。也就是利用FC-1层的功能一次传输一串数据。提供了一些在端到端之间传输信息单元的规则和机制。FC-2层的功能包括几种服务类型、帧格式的定义、序列分装与重组、交换管理、地址分配、别名地址定义、多播管理等。FC-3层(Common Services,服务层)一个节点只有一个FC-3层,给节点的上层提供了公共服务,这些服务利用FC-2层的功能来实现。如FC协议栈的分层图(b)所示。FC-4(Mapping level)是协议映射层,定义了FC与ULP层之间的接口。若上层应用层为SCSI协议,那么FC-4层协议就是FCP协议。

热点内容
美发店认证 发布:2021-03-16 21:43:38 浏览:443
物业纠纷原因 发布:2021-03-16 21:42:46 浏览:474
全国著名不孕不育医院 发布:2021-03-16 21:42:24 浏览:679
知名明星确诊 发布:2021-03-16 21:42:04 浏览:14
ipad大专有用吗 发布:2021-03-16 21:40:58 浏览:670
公务员协议班值得吗 发布:2021-03-16 21:40:00 浏览:21
知名书店品牌 发布:2021-03-16 21:39:09 浏览:949
q雷授权码在哪里买 发布:2021-03-16 21:38:44 浏览:852
图书天猫转让 发布:2021-03-16 21:38:26 浏览:707
宝宝水杯品牌 发布:2021-03-16 21:35:56 浏览:837