基于原始套接字编程
在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的IP,...
分类:
系统相关 时间:
2016-04-01 18:27:08
阅读次数:
212
一、套接字的类型A.流套接字(SOCK_STREAM) 用于提供面向连接、可靠的数据传输服务,其使用传输层的TCP协议B.数据报套接字(SOCK_DGRAM)用于提供一个无连接、不可靠的服务,其使用传输层上的UDP协议C.原始套接字(SOCK_RAM)原始套接字是相对表中套接字(即前面两种套接字)而言的。它与标准套接字的区别是原始套接字可以读写内核没有处理的IP数据包,流套接字只能读取TCP协议的...
分类:
系统相关 时间:
2016-04-01 18:24:25
阅读次数:
285
对于linux网络编程来说,可以简单的分为标准套接字编程和原始套接字编程,标准套接字主要就是应用层数据的传输,原始套接字则是可以获得不止是应用层的其他层不同协议的数据。与标准套接字相区别的主要是要开发之自己构建协议头。对于原始套接字编程有些细节性的东西还是需要注意的。 1. 原始套接字创建 原始套接 ...
分类:
系统相关 时间:
2016-03-31 23:09:33
阅读次数:
293
一.概述 同上一篇tcp一样,udp也是封装在ip报文里面。创建UDP的原始套接字如下: 1 (sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_UDP); 同样,如果要构造udp的ip首部,要开启IP_HDRINCL选项! udp首部格式: udp的不可靠性,比
分类:
系统相关 时间:
2016-01-30 01:54:23
阅读次数:
291
一.概述 tcp报文封装在ip报文中,创建tcp的原始套接字如下: 1 sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP); 此时只能构造tcp报文,如果想进一步构造ip首部,那么就要开启sockfd的IP_HDRINCL选项: 1 int on = 1;
分类:
系统相关 时间:
2016-01-29 21:16:06
阅读次数:
424
一.概述 上一篇arp请求使用的是链路层的原始套接字。icmp封装在ip数据报里面,所以icmp请求可以直接使用网络层的原始套接字,即socket()第一个参数是PF_INET。如下: 1 sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP); icmp报
分类:
系统相关 时间:
2016-01-28 23:57:09
阅读次数:
415
一.概述 以太网的arp数据包结构: arp结构op操作参数:1为请求,2为应答。 常用的数据结构如下: 1.物理地址结构位于netpacket/packet.h 1 struct sockaddr_ll 2 { 3 unsigned short int sll_family; 4 unsigned
分类:
系统相关 时间:
2016-01-27 23:02:42
阅读次数:
373
一般来说,我们会用到如下三种套接字:TCP:SOCK_STREAM套接字UDP:SOCK_DGRAM套接字原始套接字:SOCK_RAW套接字对于TCP和UDP两种套接字,相对来说只要配置好IP地址和端口号就可以了,比较简单,这里我们主要介绍原始套接字的使用。1.原始套接字简介 原始套接字的强大之处....
分类:
其他好文 时间:
2016-01-13 17:47:28
阅读次数:
246
原始套接字-12010-05-20 00:13:16|分类:计算机与 Interne|字号订阅大多数程序员所接触到的套接字(Socket)为两类: (1)流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP服务应用; (2)数据报式套接字(SOCK_DGRAM.....
分类:
其他好文 时间:
2015-12-09 11:41:55
阅读次数:
220
大致流程: 建立一个client端,一个server端,自己构建IP头和UDP头,写入数据(hello,world!)后通过原始套接字(SOCK_RAW)将包发出去。server端收到数据后,打印UDP数据并发送确认消息(yes),client收到yes后将其打印。其中:client端IP:192....
分类:
其他好文 时间:
2015-11-19 22:26:47
阅读次数:
378