File: packet.7

package info (click to toggle)
cman 0.0.7-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 6,664 kB
  • ctags: 1,518
  • sloc: perl: 555; sh: 148; makefile: 65
file content (316 lines) | stat: -rw-r--r-- 8,922 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
.\" This man page is Copyright (C) 1999 Andi Kleen .
.\" Permission is granted to distribute possibly modified copies
.\" of this page provided the header is included verbatim,
.\" and in case of nontrivial modification author and date
.\" of the modification is added to the header.
.\" $Id: packet.7,v 1.2 2001/03/06 08:14:05 mhss Exp $
.\" İ Copyright (c) 2000 mhss  www.linuxforum.net
.TH PACKET(7) Linux Programmer's Manual PACKET(7)
.SH NAME 

(ҲΪݰ)PF_PACKET - 豸ķӿ
עPF_PACKET е PF  protocol family(Э)д

.SH SYNOPSIS 
.nf
.B #include <sys/socket.h>
.br
.B #include <features.h> /* Ҫ glibc 汾 */
.br
.B #if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
.br
.B #include <netpacket/packet.h>
.br
.B #include <net/ethernet.h> /* ·㣨L2Э */
.br
.B #else
.br
.B #include <asm/types.h>
.br
.B #include <linux/if_packet.h>
.br
.B #include <linux/if_ether.h> /* ·Э */
.br
.B #endif
.sp
.PP
.BI packet_socket = socket(PF_PACKET, int socket_type, int protocol);
.fi
.SH DESCRIPTION 
׽ӿ(ҲΪڻ׽)豸(OSI ·)
շԭʼ(raw )顣ûûռʵ֮ϵ
Эģ顣


ڰ·㱨ͷԭʼ飬socket_type  SOCK_RAW
ȥ·㱨ͷļӹķ飬socket_type 
SOCK_DGRAM·㱨ͷϢΪһʽ sockaddr_ll 
еõsocket  protocol ָ IEEE 802.3 İ
Эţͷļб
Эб protocol Ϊ htons(ETH_P_ALL)ʱԽ
еЭ顣Ĵ͵ķڴ͵ںʵֵЭ
֮ǰҪȴ͸׽ӿڡ

עDGRAM ݱ˼htons  hosts to networks
of a short (16λĴֽ任)д

ֻЧ uid  0  CAP_NET_RAW Ľ̿Դ򿪷
׽ӿڡ


͵豸ʹ豸 SOCK_RAW 鲻ıκηݡ
յһ SOCK_RAW ʱ, ַԱ͵һ׼
sockaddr_ll ַṹСһ SOCK_RAW ʱ, û
ĻӦð㱨ͷŴ˷鲻޸ĵķĿ
ַĽӿڵĶСһЩ豸
ͷSOCK_RAW ѱ Linux 2.0 
SOCK_PACKET Ƶݡ

 SOCK_DGRAM IJҪ΢һΡڷ鱻͵û
֮ǰͷѱȥ SOCK_DGRAM׽ӿͳķڱ
Ķ֮ǰ sockaddr_ll еĿĵַ
õһʺϵ㱨ͷ

ȱʡضЭ͵ķ鱻͵׽ӿڡΪֻ
Ľӿڵõ飬ʹbind(2)ָһ sockaddr_ll ṹ
еĵַԴ˰һ׽ӿڰ󶨵һӿϡֻеַ
 sll_protocol  sll_ifindex ;ʹá

֧ڷ׽ӿϵ connect(2) (Ϊͻʹ)

.SH ADDRESS TYPES ַ
sockaddr_ll 豸޹صַ

.RS
.nf
.ta 4n 20n 35n
struct sockaddr_ll
{
unsigned short sll_family; /*  AF_PACKET */
unsigned short sll_protocol; /* Э */
int sll_ifindex; /* ӿں */
unsigned short sll_hatype; /* ͷ */
unsigned char sll_pkttype; /*  */
unsigned char sll_halen; /* ַ */
unsigned char sll_addr[8]; /* ַ */
};
.ta
.fi
.RE

sll_protocol  linux/if_ether.h ͷļжİ
ı׼̫Э͡sll_ifindex ǽӿڵ(μ
netdevice(2))0 ƥеĽӿ(ȻֻкϷIJڰ)
sll_hatype  linux/if_arp.h ж ARP Ӳַ͡
sll_pkttype ͡ЧķǣĿַDZ
ķõ PACKET_HOST㲥õ PACKET_BROADCAST
͵һ·㲥ַķõ PACKET_MULTICAST
ڻ(promiscuous)ģʽµ豸ķõ
PACKET_OTHERHOSTԴڱķ鱻ص׽ӿ
 PACKET_OUTGOINGЩֻԽյķ塣sll_addr
 sll_halen ( IEEE 802.3)ַ͵ַȡȷ
Ľ豸

ע 
(1) ̫(ethernet) OSI ģͲȫã̫嶨
·Ļ, ν̫Эͱʶ
Э顣IEEE 802 ίԱΪ OSI һ£̫嶨Ϊ 
MAC(medium access control)㣬 MAC ֮ LLC
(logical link control)㣬 OSI ׼·㡣BSD
TCP/IP Ϊ˼ݹٷ׼űʵֵġ TCP/IP Э
OSI ģҲȫãTCP/IP û·㣬ֻ UNIX 
ȥӦ·㡣Ǽȳʵڱֲҳ
㡢·㡢豸ָĶ̫ MAC 㡣Ϊϸ
λȥ⣬Эջʤ̭Ľί
Ա۳ġ
(2) ַ̫Ϊַ࣬(λΪ0)·㲥ַ
(λΪ1)㲥ַ(ȫ1) DP8390 ΪĽ
Ĵ D2 λָ NIC Ƿܹ㲥壬D3 λָ NIC
ǷԶ·㲥йˣD4 λָ NICǷе
ַ塣(Promiscuous)ģʽǽַ塣

.SH SOCKET OPTIONS ׽ӿѡ

׽ӿڿɱĶ·㲥ͻģʽͨ
setsockopt(2)ʵ֣׽ӿڲһ׽ӿڡβΪ
SOL_PACKET ѡе PACKET_ADD_MEMBERSHIP һ
󶨣ѡе PACKET_DROP_MEMBERSHIP ɾһ
ѡҪΪ packet_mreq ṹ

.RS
.nf
.ta 4n 20n 35n
struct packet_mreq
{
int mr_ifindex; /* ӿ */
unsigned short mr_type; /*  */
unsigned short mr_alen; /* ַ */
unsigned char mr_address[8]; /* ַ */
};
.ta
.fi
.RE 

mr_ifindex ӿڵĽӿţmr_ifindex ״̬ǿԸ
ġmr_type ָǸPACKET_MR_PROMISC 
ڹϵз飬ֽ״̬Ϊģʽ
PACKET_MR_MULTICAST ׽ӿڰ󶨵mr_address  mr_alen
ָ·㲥ϣPACKET_MR_ALLMULTI ׽ӿڽ
еӿڵĶ·㲥顣


֮⴫ͳ ioctls  SIOCSIFFLAGS, SIOCADDMULTI, 
SIOCDELMULTI ҲʵͬĿġ

.SH IOCTLS 
SIOCGSTAMP յķʱIJ
timeval ṹ

֮⣬е netdevice(7)  socket(7) жı׼
 ioctl ڷ׽ӿϾЧ

.SH ERROR HANDLING 
׽ֻԴͷ鵽豸ʱĴ
ûеȴĴĸ

.SH COMPATIBILITY 
 Linux 2.0 Уõ׽ӿڵΨһǵ 
socket(PF_INET, SOCK_PACKET, protocol)Աֵ֧
ûмֵַҪͬ SOCK_PACKET ʹϵ 
sockaddr_pkt ṹָһӿڣûṩӿ޹ԡ
(豸)

.RS
.nf
.ta 4n 20n 35n
struct sockaddr_pkt
{
unsigned short spkt_family;
unsigned char spkt_device[14];
unsigned short spkt_protocol;
};
.ta
.fi
.RE


spkt_family 豸ͣspkt_protocol 
ж IEEE 802.3 Эͣspkt_device DZʾ豸 null
սַ eth0

ע: "who is nntp" һ null ('\0')սַ


ṹѾӦµĴʹá


.SH NOTES ע

Ҫֲijͨ pcap(3) ʹ PF_PACKET Э壻
ֻ PF_PACKET һӼ 

עú ftp://ftp.ee.lbl.gov/libpcap.tar.Z õ 


SOCK_DGRAM ׽ӿڶ IEEE 802.3 岻ɻ IEEE 
802.2 LLC ͷijԡ׽ӿָ ETH_P_802_3 Э飬
֪ں 802.3 壬д˳ֶΣûṩṩ
LLC ͷϱ׼ķ顣 802.3 鲻Э
ֶ DSAP/SSAP ʵֶ·ãǹİ ETH_P_802_2
Э LLC ͷṩûԲܰ󶨵 ETH_P_802_3
԰󶨵 ETH_P_802_2 Լ·áȱʡķ͵
׼̫ DIX װдЭֶΡ 

ע: ֶκЭֶʵ̫ĵֶΣֶ
ֵС 1518 ʱʾ̫ IEEE 802.3 壬ڴ1536
ʱʾ̫ DIX 塣DIX е D  DECI  Intel
X  Xerox 


׽ӿڲǽϵ⡣



.SH ERRORS Ϣ
.TP
.B ENETDOWN
ӿδ

.TP
.B ENOTCONN
δݽӿڵַ

.TP
.B ENODEV 
ڽӿڵַָδ֪豸ӿ

.TP
.B EMSGSIZE
Ƚӿڵ MTU(䵥Ԫ)

.TP
.B ENOBUFS
û㹻ڴ顣

.TP
.B EFAULT 
ûЧĵַ

.TP
.B EINVAL 
Ч

.TP
.B ENXIO
ӿڵַǷӿš

.TP
.B EPERM
ûû㹻Ȩִ

.TP
.B EADDRNOTAVAIL
δ֪Ķ·㲥ַ 

.TP
.B ENOENT
δյ顣

֮⣬ײܲĴϢ

.SH VERSIONS 汾
PF_PACKET  Linux 2.2 Linux ڰ汾ֻ֧
SOCK_PACKET

.SH BUGS ȱ
glibc 2.1 ûж SOL_PACKETIJʹ
.RS
.nf
#ifndef SOL_PACKET
#define SOL_PACKET 263
#endif
.fi
.RE
ڴԺ glibc 汾и˴ libc5 ϵͳϲᷢ

ûж IEEE 802.2/803.3 LLC ĴΪȱݡ

׽ӿڹδĵ

.SH CREDITS 
ֲҳ Andi Kleen дģõ Matthew Wilcox İ
 Linux 2.2 е PF_PACKET  Alexey Kuznetsov ʵֵģ
ʵ Alan Cox ˵ĴΪġ

.SH SEE ALSO μ

.BR ip(7), socket(7), socket(2), raw(7), pcap(3).
.BR RFC 894 - IP ݱ Ethernet װ׼
.BR RFC 1700 - IP ݱ IEEE 802.3 װ׼
.BR ͷļ linux/if_ether.h Э顣 
.SH "[İά]"
mhss  Email:jijingzhisheng@up369.com
.SH "[ݸ]"
2000/10/15
.br
.B MAN PAGE ƻ:www.cmpp.net/