电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Linux网络编程:原始套接字编程及实例分析

Linux网络编程:原始套接字编程及实例分析_第1页
1/8
Linux网络编程:原始套接字编程及实例分析_第2页
2/8
Linux网络编程:原始套接字编程及实例分析_第3页
3/8
下载后可任意编辑Linux 网络编程:原始套接字编程及实例分析一、原始套接字能干什么?通常情况下程序员接所接触到的套接字(Socket)为两类:(1)流式套接字(SOCK_STREAM):一种面对连接的 Socket,针对于面对连接的 TCP 服务应用;(2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。从用户的角度来看,SOCK_STREAM、SOCK_DGRAM 这两类套接字似乎的确涵盖了 TCP/IP 应用的全部,因为基于 TCP/IP 的应用,从协议栈的层次上讲,在传输层的确只可能建立于TCP 或 UDP 协议之上,而 SOCK_STREAM、SOCK_DGRAM 又分别对应于 TCP 和 UDP,所以几乎所有的应用都可以用这两类套接字实现。 但是,当我们面对如下问题时,SOCK_STREAM、SOCK_DGRAM 将显得这样无助:(1)怎样发送一个自定义的 IP 包?(2)怎样发送一个 ICMP 协议包?(3)怎样分析所有经过网络的包,而不管这样包是否是发给自己的?(4)怎样伪装本地的 IP 地址?这使得我们必须面对另外一个深刻的主题——原始套接字(SOCK_RAW)。原始套接字广泛应用于高级网络编程,也是一种广泛的黑客手段。著名的网络 sniffer(一种基于被动侦听原理的网络分析方式)、拒绝服务攻击(DOS)、IP 欺骗等都可以通过原始套接字实现。原始套接字(SOCK_RAW)可以用来自行组装数据包,可以接收本机网卡上所有的数据帧 (数据包),对于监听网络流量和分析网络数据很有作用。下载后可任意编辑原始套接字是基于 IP 数据包的编程(SOCK_PACKET 是基于数据链路层的编程)。另外,必须在管理员权限下才能使用原始套接字。原始套接字(SOCK_RAW)与标准套接字(SOCK_STREAM、SOCK_DGRAM)的区别在于原始套接字直接置“根”于操作系统网络核心(Network Core),而 SOCK_STREAM、SOCK_DGRAM 则“悬浮”于 TCP 和 UDP 协议的外围。 流式套接字只能收发 TCP 协议的数据,数据报套接字只能收发 UDP 协议的数据,原始套接字可以收发内核没有处理的数据包。二、原始套接字编程原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据。区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。原始套接字的创建:int socket ( int family, int type, int protocol );参数:family:协议族 这里写 PF_PACKETtype...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Linux网络编程:原始套接字编程及实例分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部