Professional Documents
Culture Documents
API
1 NetBIOS 1
2 45
2.1 45
2.2 UNC 47
2.3 47
2.4 48
2.5 48
2.6 49
2.6.1 49
2.6.2 51
2.7 51
2.8 52
2.9 53
3 54
3.1 54
3.1.1 54
3.1.2 55
3.1.3 56
3.1.4 57
3.2 / 57
3.2.1 57
3.2.2 59
3.3 API 61
3.4 62
3.4.1 8.3 62
3.4.2 I/O 62
3.4.3 64
3.5 65
4 66
4.1 66
4.1.1 67
4.1.2 67
4.1.3 67
4.1.4 68
4.2 68
4.2.1 68
4.2.2 74
4.2.3 81
4.3 API 83
4.4 86
4.5 87
Winsock API
5 89
5.1 89
5.1.1 89
5.1.2 91
5.1.3 91
5.1.4 92
5.1.5 92
5.1.6 92
5.1.7 92
5.1.8 93
5.1.9 93
5.1.10 93
5.2 93
5.2.1 Win32 93
5.2.2 Windows CE 94
5.3 Winsock 2 94
5.4 Windows 97
5.5 99
5.6 100
5.7 100
6 102
6.1 IP 102
6.1.1 TCP 102
6.1.2 UDP 102
6.1.3 102
6.1.4 105
6.1.5 105
6.2 107
6.2.1 107
6.2.2 108
6.2.3 108
6.2.4 IAS 110
6.2.5 111
6.2.6 112
6.3 IPX/SPX 112
6.3.1 112
6.3.2 112
6.4 NetBIOS 115
6.4.1 115
6.4.2 116
6.5 AppleTalk 117
6.5.1 117
6.5.2 AppleTalk 118
6.5.3 AppleTalk 119
6.5.4 124
6.6 ATM 124
6.6.1 125
6.6.2 128
6.6.3 SAP 129
6.6.4 130
6.7 Winsock 2 130
6.8 131
7 Winsock 132
8.1 172
8.1.1 173
8.1.2 175
8.2 I/O 176
8.2.1 select 176
8.2.2 WSAAsyncSelect 179
8.2.3 WSAEventSelect 183
8.2.4 188
8.2.5 198
8.3 I/O 206
8.4 206
9 I/O 207
9.1 207
9.1.1 SOL_SOCKET 208
9.1.2 SOL_APPLETALK 215
9.1.3 SOL_IRLMP 218
9.1.4 IPPROTO_IP 222
9.1.5 IPPROTO_TCP 227
9.1.6 NSPROTO_IPX 227
9.2 IOCTLSOCKET WSAIOCTL 231
9.2.1 I/O 232
9.2.2 I/O 233
9.2.3 I/O 239
9.2.4 ATM I/O 241
9.3 242
10 243
10.1 243
10.2 243
10.3 245
10.3.1 245
10.3.2 248
10.3.3 251
10.4 254
10.4.1 255
10.4.2 DNS 257
10.5 260
11 261
11.1 261
11.2 IP 264
11.2.1 Internet 264
11.2.2 IP 265
11.2.3 IP 266
11.3 ATM 266
11.3.1 ATM 267
11.3.2 ATM 267
11.4 Winsock 268
11.4.1 Winsock 1 268
11.4.2 Winsock 2 274
11.4.3 Winsock 288
11.4.4 290
11.5 291
12 292
12.1 292
12.1.1 292
12.1.2 293
12.1.3 294
12.1.4 296
12.2 QoS Winsock 296
12.2.1 QoS 297
12.2.2 QoS 299
12.3 QoS 303
12.4 QoS 311
12.4.1 RSVP 312
12.4.2 QoS 314
12.4.3 QoS 316
12.5 318
12.5.1 TCP 318
12.5.2 UDP 336
12.5.3 UDP 337
12.6 ATM QoS 338
12.7 339
13 340
13.1 340
13.2 Internet 341
13.2.1 Ping 342
13.2.2 Traceroute 351
13.3 Internet 352
13.4 IP_HDRINCL 354
13.5 362
14 Winsock 2 363
15.1 397
15.2 398
15.3 399
15.4 UDP 400
15.4.1 UDP 403
15.4.2 UDP 404
15.4.3 Winsock 404
15.4.4 UDP 405
15.4.5 UDP 405
15.5 TCP 406
15.5.1 TCP 412
15.5.2 TCP 413
15.5.3 Winsock 414
15.5.4 TCP 414
15.5.5 TCP 415
15.6 415
15.7 416
15.8 Windows CE Winsock 417
15.8.1 Windows CE Winsock 417
15.8.2 421
15.9 422
16 RAS 423
16.1 424
16.2 424
16.3 DUN 1.3 Windows 95 425
16.4 RASDIAL 425
16.4.1 427
16.4.2 428
16.4.3 432
16.4.4 432
16.5 433
16.5.1 440
16.5.2 442
16.5.3 442
16.5.4 443
16.5.5 443
16.5.6 445
16.6 446
16.7 450
A NetBIOS 451
B IP 464
C Winsock 481
API
NetBIOS
Wi n s o c k A P IWi n s o c k
1 N e t B I O S Wi n s o c k
APINetBIOS OS/2
D O S 2 3
4
Wi n d o w s
Windows
1 NetBIOS
A N e t B I O S
OSI
O S I O S I
1-1 OSI
2 API
/
1-1 OSI
OSINetBIOS
NetBIOS API
N e t B I O S T C P / I PN e t B I O S
I P X / S P X N e t B I O S
N e t B I O S
N e t B I O S Microsoft TCP/IPN e t B E U I
N e t B I O S I P X / S P X
I P X / S P X
N e t B I O S I P X / S P X Windows 2000
NWLink IPX/SPX/NetBIOS Windows 95
Windows 98 I P X / S P X
IPX/SPXNetBIOS
N e t B E U I
T C P / I PI P X / S P X
N e t B I O S
1.1.1 LANA
NetBIOS
L A N LAN adapter, LANA N e t B I O S
N e t B I O S L A N A
Win32
1NetBIOS 3
LANA
N e t B I O S T C P / I PN e t B E U I L A N A
0. TCP/IP1
1. NetBEUI1
2. TCP/IP2
3. NetBEUI2
LANA09LANA 0
LANA 0LANA 0LANANetBIOS
LANA 0
LANALANA 0
Windows 95Windows 98
N e t B I O S
LANA 0
Windows 95Windows 98
Windows NT 4 N e t B I O S
N e t B I O S
N e t B I O S
L A N A
1 - 2 N e t B I O S E d i t
L A N A Windows 2000
L A N A
LANA
1-2 NetBIOS
TCP/IPNetBTNetBEUINbfIPX/SPXNwlnkNb
4 API
N e t B I O S L A N A
N e t B I O S LANA 2
LANA 2 TCP/IP
LANA 2
LANA 2NetBEUI
T C P / I PN e t B E U I
L A N A
L A N A
L A N A
1.1.2 NetBIOS
L A N A N e t B I O S
L A N A
N e t B I O S 1 6 1 6
Wi n 3 2 L A N A
N e t B I O S LANA 0
LANA 0 LANA 254
12 5 402 5 5 2 5 4
LANA
N e t B I O S
NetBIOS Windows
W I N S W I N S
W I N S N e t B I O S
T C P / I P W I N SN e t B I O S
IP WINS
N e t B I O S 1 6
W I N S W I N S
WINS Nbtstat
N e t B I O S
1 - 1 N b t s t a t - n D a v e m a c N e t B I O S
D a v e m a c
1NetBIOS 5
Windows NT Server InternetIIS
1-1 NetBIOS
16
DAVEMAC1 <00>
DAVEMAC1 <20>
DAVEMACD <00>
DAVEMACD <1C>
DAVEMACD <1B>
DAVEMAC1 <03>
Inet~Services <1C> Internet
IS~DAVEMAC1 <00> Internet
DAVEMAC1+++++++ <BF>
T C P / I P N b t s t a t
-a IP
-A
1 - 2 M i c r o s o f t N e t B I O S
16
1-2
16
<00> NetBIOS
<03> WINS WINS
<1B>
<06> RAS
<1F> NetDDE
<20>
<21> RAS
<BE>
<BF>
1-3 NetBIOS 16
N e t B I O S
N e t B I O S
1-3
16
<1C>
W I N S
2 5 1 C
WINS1C
IP
6 API
()
16
<1D>
W I N S
W I N S
W I N S
h m
b
NetBIOSp WINS
m bp b
p h
p
bWindowsh
<1E>
<20> Internet WINS
p r i n t e r s g
_MSBROWSE_ 16 _MSBROWSE_
1.1.3 NetBIOS
NetBIOS
N e t B I O S
L A N A
N e t B I O S
1NetBIOS7
1.2 NetBIOS
N e t B I O S NetBIOS API
N e t B I O S N b 3 0 . h
NetBIOS Netapi32.lib pNCB
N C B N C B
NetBIOSNetbios
NetBIOS
Netbios
Netbios NCB
1-4 A NetBIOS
NCB
1-4 NCB
ncb_command NetBIOS ASYNCH(0X80)
OR
ncb_retcodef
NRC_PENDING
ncb_lsn
NCBCALLNCBLISTEN
ncb_num NCBADDNAMENCBADDGRNAME
ncb_buffer
N e t b i o s
8 API
()
NCBENUM LANA_ENUM
ncb_length Netbios
Netbios NRC_BUFLEN
ncb_callname
ncb_name
ncb_rto 500 1
N C B C A L LN C B L I S T E N
NCBRECV
ncb_sto 500 1
N C B C A L LN C B L I S T E N
NCBSENDNCBCHAINSEND
ncb_post
void CALLBACK PostRoutine(PNCB pncb);
pncb
ncb_lana_num LANA
ncb_cmd_cpl NetbiosNRC_PENDING
ncb_reserve 0
ncb_event N o n s i g n a l e d Wi n d o w s
S i g n a l e d
n c b _ c o m m a n d A S Y N C H n c b _ p o s t0
0 NetbiosNRC_ILLCMD
N e t b i o s N e t B I O S
N e t b i o s N C B L I S T E N
N e t b i o s
N e t B I O S A S Y N C H O R
ASYNCHncb_postPost Routinencb_
event Netbios NRC_GOODRET
( 0 x 0 0 )n c b _ c m d _ c p l t N R C _ P E N D I N G ( 0 x F F ) N e t b i o s
NCBncb_cmd_cpltNRC_PENDING
n c b _ c m d _ c p l t N e t b i o s n c b _ r e t c o d e
1.3 NetBIOS
NetBIOS
N e t B I O S
C a l l B a c k N e t B I O S
1 - 1 N b c o m m o n . c
1NetBIOS 9
\ E x a m p l e s \ C h a p t e r 0 1 \ C o m m o n
1-1 NetBIOS(Nbcommon.c)
10API
1NetBIOS11
12API
1NetBIOS 13
l e n g t h L A N A l a n a L A N A
lengthlana LANA
R e s e t A l l N e t B I O S
NetBIOS LANA
LANA_ENUMLanaEnumLANA LANA
N C B R E S E T R e s e t A l l
LANA_ENUM ncb_commandNCBRESETncb_lana_num
L A N A Windows 95
L A N A Windows NT
L A N A N e t b i o s 5 2 N R C _
ENVNOTDEF
L A N A n c b _ c a l l n a m e
N e t B I O S R e s e t A l l u c M a x S e s s i o n
n c b _ c a l l n a m e0
14 API
Windows NT 4 6 4
ResetAllncb_callname2 LANA NetBIOS
u c M a x N a m e R e s e t A l l
3 N e t B I O S b F i r s t N a m e T R U E
N e t B I O S
NetBIOS
A d d N a m e
L A N A L A N A
LANA LANA
N C B A D D N A M E
L A N A n c b _ n a m e A d d N a m e
n c b _ n a m e n a m e
N e t b i o sn c b _ n u m N e t B I O S
N e t B I O S
NRC_DUPNAME
AddGroupNameAddNameNCBADDGRNAME
NRC_DUPNAME
DelName NetBIOS
LANA
1 - 1 S e n dR e c v
n c b _ c o m m a n d
N C B S E N DN C B R E C V L A N A
N C B C A L LN C B L I S T E N
N C B C A L L
N C B L I S T E N N e t B I O S
S e n dR e c v n c b _ b u ff e r
n c b _ l e n g t h n c b _ b u ff e r
l e n g t h b u ff e r
N e t b i o s
Send Recv
S e n d
N C B S E N D N C B C H A I N S E N D N e t b i o s
NCBSENDNANCBCHAINSENDNA
1 - 1 H a n g u pC a n c e l
1NetBIOS 15
N e t B I O SN C B H A N G U P
N R C _ S C L O S E D ( 0 x 0 A )
H a n g u p
1.3.1
NetBIOS
1 - 2
C b n b s v r. c / E x a m p l e s /
C h a p t e r 0 1 / S e r v e r m a i n L a n a E n u m
L A N A R e s e t A l l L A N A N e t B I O S
1-2 Cbnbsvr.c
16API
1NetBIOS17
18 API
m a i n L A N A
T E S T- S E RV E R - 1 L A N A
N e t B I O S
N e t B I O S
N C B L I S T E N L i s t e n
N C B N e t B I O S N C B
N C B
NCB NCBLISTEN
L A N A 1 - 1
1NetBIOS 19
N C B L I S T E N A S Y N C H O R A S Y N C H
n c b _ p o s tn c b _ e v e n t N e t b i o s
N R C _ I L L C M D 1 - 2L i s t e n n c b _ p o s t
L i s t e n C a l l b a c k L i s t e n n c b _ n a m e
ncb_callname
*
ncb_callname
L i s t e n N e t b i o s N e t b i o s
N C Bn c b _ c m d _ c p l t N R C _ P E N D I N G ( 0 x F F )
m a i n L A N A N C B L I S T E N
N e t B I O S
LANANCBLISTEN
L A N A N C B L I S T E N
n c b _ p o s t N C B
n c b _ r e t c o d e
ncb_retcode NRC_GOODRET(0x00)
L A N A N C B L I S T E N
L A N A
N C B L I S T E N
L A N AN C B L I S T E N
N C B R E C V
N C B S E N D
N C B H A N G U P
NCB
N e t b i o s
A S Y N C H
n c b _ s t o
n c b _ r t o n c b _ s t o
5 0 0
20 API
n c b _ r t o
1.3.2
1 - 3 1 - 2 Wi n 3 2
W i n 3 2
Wa i t F o r S i n g l e E v e n tWa i t F o r M u l t i p l e E v e n t s
1) LANA
2) LANA
3) LANA
4) LANA
N C B 1 - 3 N C B
N C B L A N A
NCBLISTEN NCB
Listen NCB
1-3 Evnbsvr.c
1NetBIOS21
22API
1NetBIOS23
24 API
main LANA
NCBLISTEN
WaitForMultipleObjects
WaitForMultipleObjects
N C B
NCB NCBLISTEN
Listen
ncb_lsnLANAncb_lana_num
N C B
GlobalFree
NCBLISTEN
NCBLISTENLANA
2 LANANCBLISTEN
NRC_NOCALL(0x14)
NCBLISTEN
LANANCBLISTEN
A S Y N C H
N e t B I O S N e t b i o sN C B
1.3.3 NetBIOS
N e t B I O S 1 - 4
1NetBIOS 25
L A N A
N C B L A N A
ncb_cmd_cplt NRC_PENDING
NCB NCB
Wa i t F o r M u l t i p l e O b j e c t s
LANA LANA
N C B H A N G U P
1-4 Nbclient.c
26API
1NetBIOS27
28 API
1.4
D a t a g r a m
N e t B I O S
N C B D G S E N D
NCBDGSENDBC
ncb_numNCBADDNAME
N C B A D D G R N A M E
n c b _ b u ff e r
n c b _ l a n a _ n u m L A N A L A N A
n c b _ c a l l n a m e N e t B I O S
ncb_callname
N C B D G R E C V
N e t B I O S
NCBDGRECVBC
1NetBIOS 29
ncb_numNCBADDNAMENCBADDGRNAME
0 x F F N e t B I O S
n c b _ b u ff e r n c b _ l e n g t h
n c b _ l a n a _ n u m L A N A
NCBDGRECVNCBDGRECVBCNetbios ncb_length
ncb_callname NetBIOS
1 - 5
L A N A
L A N A
N C B D G R E C VN C B D G R E C V B C
L A N A 1 - 5
1 - 6
40 API
1-5 Nbdgram.c
Nbdgram /n:CLIENT01 Nbdgram /s /n:SERVER01 /r:CLIENT01
Nbdgram /n:CLIENT01 /b Nbdgram /s /n:SERVER01 /b
Nbdgram /g:CLIENTGROUP Nbdgram /s /r:CLIENTGROUP
1-6 Nbdgram.c
/n:my-name my-name
/g:group-name group-name
/s
/c:n n
/r:receiver NetBIOS
/b
/a NetBIOS ncb_num0xFF
/l:n LANA n LANA
/d:n n
/ l : x
x L A N A
LANA LANA
Nbdgram /n:CLIENT01 /l:0 LANA 0
LANA /a
N e t B I O S
/ n :
N C B D G R E C V
1.5 NetBIOS
N C B A S TAT N C B F I N D N A M E
LANA NetBIOS
NetBIOS
1.5.1
N C B A S TAT L A N A
Windows 95Windows NT 4MAC
Windows 2000Windows 98 IP HelperIP
1NetBIOS 41
MAC Win32
A D A P T E R _ S TAT U S N A M E _ B U F F E R
M A C a d a p t e r _ a d d r e s s m a x _
d g r a m _ s i z e m a x _ s e s s n a m e _ c o u n t
N A M E _ B U F F E R L A N A N e t B I O S2 5 4
n c b _ l e n g t h0
Netbios
N C B A S TAT n c b _ c o m m a n dn c b _ b u ff e rn c b _ l e n g t h
ncb_lana_numncb_callnamencb_callname *
N e t B I O S
N e t b i o s
n c b _ c a l l n a m e N e t B I O S
42 API
ncb_callname
Microsoft160
Astat.c LANA
/l:LOCALNAME
/r:REMOTENAME
M A C N e t B I O S L A N A
R A S L A N A R A S
LANA MAC RAS
MAC RAS MAC
N b t s t a tN C B A S TAT T C P / I P
TCP/IP
1.5.2
N C B F I N D N A M E 0
Netbios NRC_BUFLEN
F I N D _ N A M E _ H E A D E R
unique_group0
1node_count FIND_NAME_BUFFER
1NetBIOS 43
F I N D _ N A M E _ B U F F E R
d e s t i n a t i o n _ a d d r s o u r c e _ a d d r
s o u r c e _ a d d r M A C
destination_addr MAC
LANA
L A N A R A S
Windows NT 4.0
T C P / I P N e t b i o s
Windows NT 4.0 LANA
TCP/IP
1.5.3 LANA
TCP/IPNetBEUI LANA
N e t B I O S
Windows NT 4Windows 2000 Winsock 2WSAEnumProtocols
Winsock 2 56WSAEnumProtocols
Winsock 2Windows 95 Windows 98
NetBIOS
Winsock 2
W S A S t a r t u p Winsock 2 W S A E n u m P r o t o c o l s
W S A P R O TO C O L _ I N F O C D N b p r o t o . c
WSAEnumProtocols
0
WSAEnumProtocolsWSAPROTOCOL_INFO
szProtocoliAddressFamily
i P r o t o c o l i A d d r e s s F a m i l yA F _ N E T B I O Si P r o t o c o l
szProtocol ProvidedId GUID
GUID
Windows NT Windows 2000
LANA 0 i P r o t o c o l 0 x 8 0 0 0 0 0 0 0 0
LANA 0 0x80000000
1.6
NetBIOS
44 API
1.6.1 Windows CE
N e t B I O S Windows CE N e t B I O S
1.6.2 Windows 9x
Windows 95Windows 98
LANA NetBIOS
L A N A L A N A L A N A
Windows 95 T C P / I P L A N A
N C B R E S E T L A N A
N C B R E S E T
NetBIOS TCP/IP V X D
1.6.3
N C B S E N D N AN C B C H A I N S E N D N AN e t B I O S
T C P / I P
1.7
NetBIOS
T C P / I P
N e t B E U IS P X / I P X N e t B I O S Wi n s o c k
N e t B I O S
NetBIOS NetBIOS Winsock
2
34
2
Wi n d o w s
NOS Windows 95Windows 98Windows
N TWindows 2000Windows CE Wi n d o w s
34
I / O
I / O
I / O
I / O
I/OI/O RedirectionWindows
E :
E : I / O
R e d i r e c t o r
A P I R e a d F i l e
WriteFile
I / O
2.1
U N C
U N C
UNC
\\[]\[]\[]
\ \ []
46 API
U N C
\ []
\[]
M y s e r v e r
D : \ D : \ M y f i l e s \ C o o l M u s i c
M y s h a r e S a m p l e . m p 3
M P 3
UNC
\\Myserver\Myshare\Sample.mp3
Myshare UNC
UNC
U N C
U N C
34
UNC
2 - 1 Wi n d o w s U N C
N O S
U N C\ \ M y s e r v e r \ M y s h a r e \ S a m p l e . m p 3
MUP I/O
2-1
2 47
2.2 UNC
MUP2-1 UNC
Network Provider
M U P U N C
I/O
Windows NTWindows 2000Windows 95Windows 98
W i n d o w s M i c r o s o f tClient for Microsoft
N e t w o r k N o v e l l
Novell Client v3.01 for Windows 95/98
U N C Windows CEM i c r o s o f t
MUP UNC
M U P U N C
U N C M U P
U N CM U P
2.3
E :
U N C Wi n d o w s
Wi n d o w s M i c r o s o f t M i c r o s o f t
M S N P M S N P 3 2
MSNPWindows NT 4Windows 2000Windows 95Windows 98Windows CE
Windows CE M S N P
48 API
2.4
I / O
I/O
M U PI / O
M S N P N e t B I O S
1 NetBIOS API
M S N P L A N
LAN Manager Redirector
Microsoft LAN Manager M S - D O S
N e t B I O S 1N e t B I O S
MSNP
MSNP TCP/IPNetBEUI
I P X / S P X
A T C P / I P B
I P X M S N P
M S N P
S M B
Server Message Block File Sharing SMB
2.5
S M B I n t e l8 0
M S - D O S
S M B Windows MSNP M S N P
S M B
S M B M S N P
S M B
S M B S M B
T C P / I P
SMB
2 49
MSNP
\ \ M y s e r v e r \ M y s h a r e \ S a m p l e . m p 3
1) C r e a t e F i l e A P I
\\Myserver\Myshare\Sample.mp3
2) U N C I / O
\\Myserver MUP
3) MUP I / O M S N P \ \ M y s e r v e r
NetBIOS
4) I/O MSNP
5) S M B \ M y s h a r e
Sample.mp3
6) SMB
7) \\Myserver SMB MSNP
8) I / O \ M y s h a r e
Sample.mp3
9) SMB I/O
10) SMB
11) MSNP S M P
2.6
2.6.1
Security Descriptor
SECURITY_DESCRIPTOR
50 API
Security IdentifierSID
SID
Discretionary Access Control ListDACL
System Access Control ListSACL
Wi n 3 2A P I A P I
1.
DACLSACL access control list, ACL
access control entities, ACE
A C E A C E
SID ACE
ACE
A C ES A C L A C E D A C L
2-2 DACL
SID
SID
DACL
2-2 DACL
D A C L D A C L A P IS e t S e c u r i t y D e s c r i p t o r
D a c l
D A C L D A C LA C E D A C L
ACE DACL
ACE ACE
2 51
A C E
A C E
A C E
A C E A C E A C E
A C E A C E
A C E
2 - 2 D A C L
2 - A C E
A C L
API
2.
A C E S I D
SID
Windows NT
S I D S I D
Windows NT
SID
2.6.2
Windows NT
SID
S I D
DACLSID
2.7
MSNP
MSNP
UNC
52 API
Windows NTWindows 2000
MSNP
B
\ H a c k\ S l a s h A \ H a c k G
\ S l a s h H
M S N P M S N P
2 - 3 M S N P
Windows NT
1. Windows NT 5.
A
2.
Windows NT
A B
4. M S N P
3. UNC 1 6. UNC
B
Windows NT Wi n d o w s
2000
2-3
2.8
M S N P Wi n 3 2 C r e a t e F i l eR e a d F i l e
WriteFileAPI Windows NTWindows 2000
Win32 2-1
UNC \Examples\Chapter02
2-1
2 53
2.9
Wi n d o w s
Wi n d o w s
Windows NTWindows 2000
3
Microsoft Windows NTWindows 2000Windows 95Windows 98
Windows CEinterprocess communication,
I P CM a i l s l o t
TCP/IPIPX
3.1
Wi n d o w s
Win32I/O ReadFileWriteFile
Win32 Windows
Mailslot File System, MSFS 2Windows
3.1.1
3 55
\\server\Mailslot\[path]name
\ \ s e r v e r\ M a i l s l o t\ [ p a t h ] n a m e \ \ s e r v e r
\Mailslot
MSFS \[path]name
path
M a i l s l o t
\\Oreo\Mailslot\Mymailslot
\\Testserver\Mailslot\Cooldirectory\Funtest\Anothermailslot
\\.\Mailslot\Easymailslot
\\*\Mailslot\Myslot
.*
Wi n d o w s
Wi n d o w s
Wi n d o w sS M B
Wi n d o w s
Windows NTWindows 2000
3.1.2
D a t a g r a m
Windows CE3-1
Windows NTWindows 2000425426
3-1
Windows 95Windows 98 64KB
->Windows 95Windows 98
Windows NTWindows 2000 424 426
->Windows NTWindows 2000
Windows NTWindows 2000 424
->Windows 95Windows 98
Windows 95Windows 98 424
->Windows NTWindows 2000
3.1.3
Win32 APICreateFileCreateMailslot
0 C r e a t e F i l eC r e a t e M a i l s l o t A P I
INVALID_HANDLE_VALUEAPI
G e t L a s t E r r o r
C Wi n d o w s Wi n e r r o r. h
3.2
3.2.1
1) CreateMailslot API
2) ReadFile API
3) CloseHandleAPI
A P I
CreateMailslotAPI
lpName
\\.\Mailslot\[path]name
l p N a m e
n M a x M e s s a g e S i z e
nMaxMessageSize
0
l R e a d Ti m e o u t
M A I L S L O T _ WA I T _ F O R E V E R
0
58 API
l p S e c u r i t y A t t r i b u t e s Windows NTWindows 2000
n u l l
I / O .
R e a d F i l eWi n 3 2 R e a d F i l e
C r e a t e M a i l s l o t h F i l el p B u ff e rn N u m b e r O f B y t e s To R e a d
CreateMailslot API
nMaxMessageSize
R e a d F i l e E R R O R _ I N S U F F I C I E N T _ B U F F E R
lpNumberOfBytesRead ReadFile
l p O v e r l a p p e d
Wi n 3 2I / O 4 R e a d F i l e
I / O Windows NTWindows 2000
Windows 95Windows 98 N U L L
3-1
3-1
3 59
3.2.2
1) C r e a t e F i l eA P I
2) WriteFileAPI
3) CloseHandleAPI
CreateFileAPI
l p F i l e N a m e
3-2 dwDesiredAccess
G E N E R I C _ W R I T E d w S h a r e M o d e
FILE_SHARE_READ lpSecurityAttributes
NULLdwCreationDispositionOPEN_EXISTING
APICreateFiledwCreationDisposition
3-2
\\.\mailslot\name
\\servername\mailslot\name servername
\\domainname\mailslot\name domain name
\\*\mailslot\name name
60 API
d w F l a g s A n d A t t r i b u t e s F I L E _ AT T R I B U T E _ N O R M A L
hTemplateFileNULL
Win32WriteFile
l p O v e r l a p p e d
Wr i t e F i l e I / O
N U L L 3 - 2
3-2
3 61
3.3 API
A P I G e t M a i l s l o t I n f o
S e t M a i l s l o t I n f o G e t M a i l s l o t I n f o
GetMailslotInfoGetMailslotInfo
h M a i l s l o t CreateMailslot API l p M a x M e s s a g e S i z e
l p N e x t S i z e
G e t M a i l s l o t I n f o M A I L S L O T _ N O _ M E S S A G E
R e a d F i l e
C P U
ReadFile
Wi n 3 2 I / Ol p M e s s a g e C o u n t
l p R e a d Ti m e o u t
S e t M a i l s l o t I n f o
SetMailslotInfo
62 API
b M a i l s l o t CreateMailslot API l R e a d Ti m e o u t
0
M A I L S L O T _ WA I T _ F O R E V E R
3.4
Windows 95OSR2Windows 98
8.3 I/O
3.4.1 8.3
Windows 95
8
3.4.2 I/O
Wi n d o w s
3-3
3-3
3 63
64 API
3.4.3
Windows 95Windows 98
CreateMailslot 0
R e a d F i l e
FA L S ER e a d F i l e R e a d F i l e
T R U E M S - D O S
0M A I L S L O T _ WA I T _ F O R E V E R
http: //support.microsoft.com/support/search
Q139715ReadFile
3 65
C r e a t e M a i l s l o t R e a d F i l e
ReadFile GetLastError
5
Q192276GetMailslotInfo lpNextSize
Windows 95 OEM Service Release 2 O S R 2 Windows 98 A P I
G e t M a i l s l o t I n f o l p N e x t S i z e
Q170581Win95 4093
WriteFileAPI4093 Windows 95
Q131493CreateFile
A P IC r e a t e F i l e
CreateFile
3.5
M a i l s l o t Wi n d o w s
Wi n d o w s
4
Named Pipes I P C
Microsoft Windows NTWindows 2000Windows 95Windows 98
Windows CE
TCP/IPIPX
MSNP
4.1
Wi n d o w sN a m e d
Pipe File System, NPFS Win32API
R e a d F i l eWr i t e F i l e A P I
Wi n 3 2 Windows NT/Windows 2000 N P F S
MSNP
T C PI P X N P F S
U N C 2 U N CWi n d o w s
4 67
4.1.1
UNC
\\server\Pipe\[path]name
\ \ s e r v e r\ P i p e\ [ p a t h ] n a m e \ \ s e r v e r
\ P i p e
N P F S \ [ p a t h ] n a m e
\\myserver\PIPE\mypipe
\\Testserver\pipe\cooldirectory\funtest\jim
\\.\Pipe\Easynamedpipe
.
4.1.2
4-1
1 2 3
4-1
4.1.3
4.1.4
Win32 APICreateFileCreateNamedPipe
0 C r e a t e F i l e C r e a t e N a m e d P i p e
I N VA L I D _ H A N D L E _ VA L U E
G e t L a s t E r r o r Wi n e r r o r. h
C
4.2
Wi n 3 2 R e a d F i l eWr i t e F i l e
Windows NTWindows 2000 Windows 95
Windows 98
Windows 95Windows 98 Windows 95Windows 98
Windows NTWindows 2000
4.2.1
1) APICreateNamedPipe
2) APIConnectNamedPipe
3) R e a d F i l eWr i t e F i l eA P I
4) APIDisconnectNamedPipe
5) APICloseHandle
C r e a t e N a m e d P i p eA P I
4 69
l p N a m e U N C
[path]name
dwOpenMode I/O
4 - 1
OR
P I P E _ A C C E S S _
P I P E _ A C C E S S _ D U P L E X
P I P E _ A C C E S S _ I N B O U N D
P I P E _ A C C E S S _ O U T B O U N D
4 - 2
4-1
PIPE_ACCESS_DUPLEX
PIPE_ACCESS_OUTBOUND
PIPE_ACCESS_INBOUND
I/O FILE_FLAG_WRITE_THROUGH
FILE_FLAG_OVERLAPPED I/O
WRITE_DAC DACL
ACCESS_SYSTEM_SECURITY SACL
WRITE_OWNER S I D
d w O p e n M o d e I / O
F I L E _ F L A G _ W R I T E _ T H R O U G H
F I L E _ F L A G _ O V E R L A P P E D
I/O
70 API
GENERIC_READI
PIPE_ACCESS_DUPLEX
GENERIC_WRITE
PIPE_ACCESS_OUTBOUND GENERIC_READ
PIPE_ACCESS_INBOUND GENERIC_WRITE
4-2
4-1dwOpenMode
WRITE_DAC
DACLACCESS_SYSTEM_SECURITY
SACLWRITE_OWNER ID
SID
APIDACL2DACLSACLSID
CreateNamedPipeAPIdwPipeMode
4-2
ORPIPE_READMODE_
BYTE | PIPE_TYPE_BYTE
500 100
PIPE_READMODE_MESSAGE | PIPE_TYPE_MESSAGE
5 0 0
ReadFile500
ReadFile ERROR_MORE_DATA
PIPE_TYPE_MESSAGEPIPE_READMORE_BYTE
PIPE_TYPE_BYTEPIPE_READMORE_MESSAGE
C r e a t e N a m e d P i p e E R R O R _ I N VA L I D _
PARAMETER I/O
P I P E _ WA I TP I P E _ N O WA I T
PIPE_WAIT PIPE_NOWAIT
ReadFileI/O
4 71
I/O
PIPE_NOWAITI/O Win32
I/O Microsoft LAN Manager 2.0
ReadFileWriteFile Win32I/O
I/O
4-2
PIPE_TYPE_BYTE
PIPE_TYPE_MESSAGE
PIPE_READMODE_BYTE
PIPE_READMODE_MESSAGE
PIPE_WAIT
PIPE_NOWAIT
PIPE_NOWAITWin32I/O
Microsoft LAN Manager 2.0
n M a x I n s t a n c e s
1P I P E _ U N L I M I T E D _ I N S TA N C E S
5 P I P E _ U N L I M I T E D _ I N S TA N C E S
CreateNamedPipenOutBufferSizenInBufferSize
I / O
ReadFileWriteFile
n D e f a u l t Ti m e O u t
Wa i t N a m e P i p e
l p S e c u r i t y A t t r i b u t e s
N U L L
SECURITY_DESCRIPTOR DACL
C r e a t e N a m e d P i p e
C o n n e c t N a m e d P i p eA P I
h N a m e d P i p e C r e a t e N a m e d P i p e
l p O v e r l a p p e d A P I
F I L E _ F L A G _ O V E R L A P P E D Wi n 3 2
I / O N U L LC o n n e c t N a m e d P i p e
I / O
ConnectNamedPipeAPI
WriteFileReadFile
DisconnctNamedPipe
4 - 1
4-1
4 73
NULL DACL
SECURITY_ATTRIBUTES
l p S e c u r i t y D e s c r i p t o r S E C U R I T Y _ D E S C R I P TO R
S E C U R I T Y _ D E S C R I P TO R
D A C L N U L L
S E C U R I T Y _ D E S C R I P TO R
Win32API SECURITY_DESCRIPTOR
DACL
1) SECURITY_DESCRIPTORAPIInitializeSecurity
Descriptor
2) S E C U R I T Y _ D E S C R I P TO R D A C L A P I
SetSecurityDescriptorDacl
S E C U R I T Y _ D E S C R I P TO R
S E C U R I T Y _ AT T R I B U T E S
CreateNamedPipeWin32SECURITY_ATTRIBUTES
DACLAPI
74 API
4.2.2
4 - 1
API
I / O
C r e a t e N a m e d P i p e A P I
n M a x I n s t a n c e s
Win32 I/O I / O
I / O
I / O
Windows 8
1.
4 - 2
Echo
4-2 Win32
4 75
76 API
A P IC r e a t e T h r e a d
CreateThread PipeInstanceProc
PipeInstanceProc 4-1
DisconnectNamedPipeAPI
D i s c o n n e c t N a m e d P i p e
ConnectNamePipe
2. I/O
I/OWin32 APIReadFileWriteFile
I/OAPIOVERLAPPED
A P IG e t O v e r l a p p e d R e s u l t O V E R L A P P E D
I / O Win32 API
I / O
C r e a t e N a m e d P i p e n M a x I n s t a n c e s 1
dwOpenModeFILE_FLAG_OVERLAPPED4-3
4 77
4-3 Win32I/O
78API
4 79
80 API
C r e a t e N a m e d P i p e
I / O C o n n e c t N a m e d P i p e
I / O
DisconnectNamedPipe ConnectNamedPipe
3.
Windows NTWindows 2000
Windows NTWindows 2000
C o n n e c t N a m e d P i p e A P I
I m p e r s o n a t e N a m e d P i p e C l i e n t
hNamedPipe CreateNamedPipe
Anonymous Identification Impersonation
D e l e g a t i o n
4 81
RevertToSelf RevertToSelfAPI
4.2.3
1) APIWaitNamedPipe
2) APICreateFile
3) APIWriteFileReadFile
4) APICloseHandle
WaitNamedPipe
l p N a m e d P i p e N a m e n Ti m e O u t
ConnectNamedPipe
WaitNamedPipe CreateFileAPI
CreateFile
l p F i l e N a m e
4
d w D e s i r e d A c c e s s G E N E R I C _ R E A D
G E N E R I C _ W R I T E
O R
C r e a t e N a m e d P i p ed w O p e n M o d e
PIPE_ACCESS_INBOUND
GENERIC_WRITE
d w S h a r e M o d e 0
82 API
l p S e c u r i t y A t t r i b u t e s N U L L
C r e a t e F i l e
dwCreationDisposition OPEN_EXISTINGCreateFile
dwFlagsAndAttributes FILE_ATTRIBUTE_NORMAL
F I L E _ F L A G _ W R I T E _ T H R O U G H F I L E _ F L A G _ O V E R L A P P E D
SECURITY_SQOS_PRESENTFILE_ATTRIBUTE_NORMALOR
FILE_FLAG_WRITE_THROUGHFILE_FLAG_OVERLAPPED
4-1SECURITY_SQOS_PRESENT
SECURITY_SQOS_PRESENT
SECURITY_ANONYMOUS
A n o n y m o u s
SECURITY_IDENTIFICATION
I d e n t i f i c a t i o n
SECURITY_IMPERSONATION
I m p e r s o n a t i o n
SECURITY_DELEGATION
D e l e g a t i o n
Windows 2000SECURITY_DELEGATION
Windows NT 4SP6
SECURITY_CONTEXT_TRACKING
S E C U R I T Y _ E F F E C T I V E _ O N LY
4.2.1
C r e a t e F i l e h Te m p l a t e F i l e N U L L
C r e a t e F i l e R e a d F i l eWr i t e F i l e
4 83
C l o s e H a n d l e
4 - 4
A P I
This is a test
4-4
4.3 API
C a l l N a m e d P i p e
84 API
Tr a n s a c t N a m e d P i p e A P I
C a l l N a m e d P i p e
CallNamedPipe
l p N a m e d P i p e N a m e U N C
l p I n B u ff e rn I n B u ff e r S i z e
l p O u t B u ff e rn O u t B u ff e r S i z e
l p B y t e s R e a d
n Ti m e O u t
Tr a n s a c t N a m e d P i p e
API MSNP
I/O TransactNamedPipe
hNamedPipe CreateNamedPipeCreateFileAPI
l p I n B u ff e rn I n B u ff e r S i z e
lpOutBuffernOutBufferSize
l p B y t e s R e a d
lpOverlappedTransactNamedPipe I/O
G e t N a m e d P i p e H a n d l e S t a t e S e t N a m e d P i p e H a n d l e S t a t e
G e t N a m e d P i p e I n f o
G e t N a m e d P i p e H a n d l e S t a t e
4 85
G e t N a m e d P i p e H a n d l e S t a t e
GetNamedPipeHandleState
hNamedPipeCreateNamedPipeCreateFileAPI
lpStatelpState
PIPE_NOWAITPIPE_READMODE_MESSAGElpCurInstances
lpMaxCollectionCount
l p C o l l e c t D a t a Ti m e o u t
l p U s e r N a m en M a x U e r N a m e S i z e
S e t N a m e d P i p e H a n d l e S t a t e G e t N a m e d P i p e H a n d l e S t a t e
SetNamedPipeHandleState
hNamedPipe CreateNamedPipeCreateFileAPI
lpMode lpMaxCollectionCount
l p C o l l e c t D a t a Ti m e o u t
GetNamedPipeInfoAPI
hNamedPipe CreateNamedPipeCreateFileAPI
l p F l a g s
l p O u t B u ff e r S i z e
86 API
l p I n B u ff e r S i z e
lpMaxInstance
A P IP e e k N a m e d P i p e
R e a d F i l eA P I
PeekNamedPipe
hNamedPipe CreateNamedPipeCreateFileAPI
l p B u ff e rn B u ff e r S i z e
l p B y t e s R e a d
lpTotalBytesAvail lpBytesLeftThisMessage
l p B u ff e r
0
4.4
http://support.microsoft.com/support
Q 1 0 0 2 9 1
\ \ . \ P i p e \ M y p i p e s \ \ . P i p e \ M y p i p e s \ P i p e 1
\\.\Pipe\Mypipes
Q 11 9 2 1 8 6 4 K
A P IWr i t e F i l e 6 4 K B
FALSEGetLastError ERROR_MORE_DATA
Q 11 0 1 4 8Wr i t e F i l eR e a d F i l eERROR_INVALID_PARAMETER
I / O Wr i t e F i l eR e a d F i l e
E R R O R _ I N VA L I D _ PA R A M E T E R
OVERLAPPEDO ff s e tOffsetHigh 0
Q 1 8 0 2 2 2Windows 95WaitNamedPipe253
Windows 95 Wa i t N a m e d P i p e
G e t L a s t E r r o r 2 5 3 2 5 3
Windows NT 4
4 87
161ERROR_BAD_PATHNAME 253
161ERROR_BAD_PATHNAME
Q 1 4 1 7 0 9 4 9
4 9
49
Q 1 2 6 6 4 5
Windows NT
5
4.5
Wi n d o w s
Windows NTWi n d o w s
2 0 0 0
Winsock
Winsock API
Wi n 3 2 Wi n s o c k
Wi n s o c k Wi n 3 2 Wi n s o c k
Wi n s o c k U n i xB e r k e l e yB S D
Wi n 3 2 Wi n s o c k
Winsock 2
Wi n s o c k
Wi n s o c k Winsock 2
Q o S
Winsock 2
Winsock 2Win32Windows CE
Wi n s o c kB S D
Winsock
5
Winsock 2
Winsock
5.1
5.1.1
5-1
1286432
2 5 6 1 2 8 6 4 3 2
90 Winsock API
32 128
Win32 Win32
64 64
128 32
5-1
5 - 2
1 2 86 43 2
2
N a g l e
T C P / I P N a g l e
N a g l e
5-2
2 5 6 2 2 4
20 20
p s e u d o - s t r e a m
5-1 5-2
5 91
32
Win32 Win32
64 224
------------
128
5-2
5.1.2
5.1.3
92 Winsock API
5.1.4
T C P
F I N
A C K F I N F I N
FIN
ACK
5.1.5
L A N
L A N
L A N
5.1.6
I P
I P
11 Winsock
5.1.7
QoS
Q o S
Q o S
12 QoS
5 93
5.1.8
5.1.9
AB
A B A
B
NetBEUIWin32
5.1.10
Win32
Wi n s o c k Winsock 2
5 . 3
5.2
Win32
2 Wi n d o w s
Wi n s o c k 6
Winsock
5.2.1 Win32
Wi n 3 2
94 Winsock API
I P 5 - 1
5-1
()
IP MSAFD TCP
MSAFD UDP 65467
RSVP TCP
RSVP UDP 65467
IPX/SPX MSAFD 576
nwlnkipx[IPX]
MSAFD
nwlnkspx[SPX]
MSAFD
nwlnkspx[SPX][]
MSAFD
nwlnkspx[SPXII]
MSAFD
nwlnkspx[SPXII][]
NetBIOS 64KB
(65535)
64KB
(SP25) (65535)
AppleTalk MSAFD 64KB
AppleTalk[ADSP] (65535)
MSAFD
AppleTalk[ADSP][]
MSAFD 4096
AppleTalk[PAP]
MSAFD
AppleTalk[RTMP]
MSAFD
AppleTalk[ZIP]
ATM MSAFD ATM AAL5
ATM(AAL5)
MSAFD lrda[lrDA]
NetBIOSNetBIOS
5.2.2 Windows CE
Windows CE Wi n 3 2 T C P / I P
Windows CEWinsock 1.1 Winsock 2
Windows CE TCP/IP NetBIOS
NetBIOS APIWinsockNetBIOS
5.3 Winsock 2
Winsock 2
5 95
T C P / I P I P T C P
IP
W S A E n u m P r o t o c o l s
Winsock
Wi n s o c k Wi n s o c kWi n s o c k
WSAStartup
int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData)
Wi n s o c k Wi n 3 2Winsock 2
2 . 2 Windows CE Winsock 1.1
Winsock 2.2 0 x 0 2 0 2 M A K E W O R D ( 2 , 2 )
W S A D ATA W S A D ATA
96 Winsock API
W S A S t a r t u p Wi n s o c k 5 - 2 W S A D ATA
WSADATA
WSADATA wVersionwHighVersion
U D P
5-2 WSADATA
wVersion Winsock
wHighVersion Winsock Winsock wVersion
szDescription Winsock
szSystemStatus
iMaxSockets Winsock 2
iMaxUdpDg UDP Winsock 2
lpVendorInfo Winsock 2
Wi n s o c k Wi n s o c k
int WSACleanup (void);
W S A S t a r t u p W S A C l e a n u p
Winsock DLL W S A C l e a n u p
Winsock 2Winsock 1.1 Wi n s o c k
1 . 1 Winsock 2
Winsock 1.1Winsock 2
W S A E n u m P r o t o c o l s N U L Ll p d w B u ff e r L e n g t h
l p P r o t o c o l B u ff e r 0 W S A E N O B U F S
l p d w B u ff e r L e n g t h
W S A P R O TO C O L _ I N F O
CD-ROM Enum.c
W S A P R O TO C O L _ I N F O d w S e r v i c e F l a g s 1
5-3
d w S e r v i c e F l a g s 1
5 97
5-3
XPl_CONNECTIONLESS
XPl_GUARANTEED_DELIVERY
XPl_GUARANTEED_ORDER
XPl_MESSAGE_ORIENTED
XPl_PSEUDO_STREAM
XPl_GRACEFUL_CLOSE
XPl_EXPEDITED_DATA
XPl_CONNECT_DATA
XPl_DISCONNECT_DATA
XPl_SUPPORT_BROADCAST
XPl_SUPPORT_MULTIPOINT
XPl_MULTIPOINT_CONTROL_PLANE
XPl_MULTIPOINT_DATA_PLANE
XPl_QOS_SUPPORTED QoS
XPl_UNI_SEND
XPl_UNI_RECV
XPl_IFS_HANDLES Installable File System
ReadFile WriteFileAPI
XPl_PARTIAL_MESSAGE WSASendWSASendToMSG_PARTIAL
i P r o t o c o liSocketTypei A d d r e s s F a m i l yi P r o t o c o l
iSocketTypeiAddressFamily
5.4 Windows
Winsock
Wi n s o c k A P I
Wi n 3 2S O C K E T
98 Winsock API
af UDPTCP
A F _ I N E T I P t y p e
SOCK_STREAMSOCK_DGRAMSOCK_SEQPACKETSOCK_RAW
S O C K _ R D M p r o t o c o l
5 - 4
5-4
Internet AF_INET TCP SOCK_STREAM IPPROTO_IP
Protocol
(IP)
UDP SOCK_DGRAM IPPROTO_UDP
Raw sockets SOCK_RAW IPPROTO_RAW
IPPROTO_ICMP
IPX/SPX AF/NS MSAFD SOCK_DGRAM NSPROTO_IPX
nwlnkipx[IPX]
AF_IPX MSAFD SOCK_SEQPACKET NSPROTO_SPX
nwlnkspx[SPX]
MSAFD SOCK_STREAM NSPROTO_SPX
nwlnkspx[SPX]
[Pseudo-stream]
MSAFD SOCK_STREAM NSPROTO_SPXII
nwlnkspx[SPXII]
MSAFD SOCK_STREAM NSPROTO_SPXII
nwlnkspx[SPXII]
[Pseudo-stream]
NetBIOS AF_NETBIOS Sequential SOCK_SEQPACKET LANA number
Packets
Datagrams SOCK_DGRAM LANA number
AppleTalk AF_APPLETALK MSAFD SOCK_RDM ATPROTO_ADSP
AppleTalk[ADSP]
MSAFD SOCK_STREAM ATPROTO_ADSP
AppleTalk[ADSP]
[Pseudo-stream]
MSAFD SOCK_RDM ATPROTO_PAP
AppleTalk[PAP]
MSAFD SOCK_DGRAM DDPPROTO_RTMP
AppleTalk[RTMP]
MSAFD SOCK_DGRAM DDPPROTO_ZIP
AppleTalk[ZIP]
ATM AF_ATM MSAFD ATM AAL5 SOCK_RAW ATMPROTO_AAL5
Native ATM(AAL5) SOCK_RAW ATMPROTO_AAL5
Infrared AF_IRDA MSAFD Irda[IrDA] SOCK_STREAM IRDA_PROTO
Sockets _SOCK_STREAM
5 99
AT M
A F _ AT M
S O C K _ R AW
0a ft y p e
W S A P R O TO C O L _ I N F Od w P r o v i d e r F l a g s
socketWSASocket 0
WSASocket WSAEnumProtocols
W S A P R O TO C O L _ I N F O l p P r o t o c o l I n f o W S A S o c k e t
aftypeprotocol FROM_PROTOCOL_INFO
W S A P R O TO C O L _ I N F O
W S A S o c k e t 0
Winsock dwFlags
WSA_FLAG_OVERLAPPED
WSA_FLAG_MULTIPOINT_C_ROOT
WSA_FLAG_MULTIPOINT_C_LEAF
WSA_FLAG_MULTIPOINT_D_ROOF
WSA_FLAG_MULTIPOINT_D_LEAF
W S A _ F L A G _ O V E R L A P P E D I / O
Wi n s o c k 8 s o c k e t
WSA_FLAG_OVERLAPPED WSASocket
W S A S o c k e t W S A P R O TO C O L _ I N F O
I P
U D PI C M PI C M P
I C M P
U D PT C P I P 1 3
5.5
Winsock APIOSI
O S I 4 1 - 1
Wi n s o c k W S A E n u m P r o t o c o l s O S I
UDPTCP IP
Winsock API Wi n s o c k
Wi n d o w s
Wi n s o c k Wi n s o c k
5.6
T C P / I P
A p p l e Ta l kN e t B I O SI P X / S P X
Windows 95 NetBEUIIPX/SPX
T C P / I P
Windows 2000 T C P / I P
N e t B I O S T C P / I P
T C P / I P
AT M AT M
Wi n s o c k AT M T C P / I P
AT M T C P / I P T C P / I P
5.7
5 101
W S A S o c k e ts o c k e t
W S A E n u m P r o t o c o l s W S A P R O TO C O L _ I N F O
WSASocket
6
Wi n s o c k
Wi n s o c k
Winsock 2
g e t s o c k o p t 1 0
10
6.1 IP
Internet Protocol, IP
L A N
WAN IP
TCPUDP IP
6.1.1 TCP
Transmission Control Protocol, TCP
TCP TCP
6.1.2 UDP
T C PU D P I P T C P / I PU D P / I PWi n s o c k
AF_INET IP Winsock 1.hWinsock 2.h
6.1.3
I P I P 3 2 I P v 4
T C PU D P I P
6 103
I P Wi n s o c k
SOCKADDR_IN IP
sin_familyAF_INETWinsock IP
IP6
I P 6 I P I P 1 6 I P v 4
I P v 6 Wi n s o c k
I P v 6 Wi n 3 2 I P v 6 Wi n d o w s
2 0 0 0 I P v 6 h t t p : / / r e s e a r c h .
m i c r o s o f t . c o m / m s t r i p v 6 / 6
T C PU D P s i n _ p o r t
F T PH T T P
I A N A RFC 1700
0 ~ 1 0 2 3I A N A
1 0 2 4 ~ 4 9 1 5 1I A N A
4 9 1 5 2 ~ 6 5 5 3 5
1 0 2 4 ~ 4 9 1 5 1
49152~65535 IANA
bind API
WinsockWSAEADDRINUSE7Winsock
S O C K A D D R _ I Ns i n _ a d d r I P 4
I P I P
a . b . c . d
4 sin_ zero
SOCKADDR_INSOCKADDR
i n e t _ a d d r I P 3 2
1.
I P
INADDR_ANY
I N A D D R _ B R O A D C A S T I P U D P
SO_BROADCAST9
2.
b i g - e n d i a nl i t t l e - e n d i a n
Intel 86
I P
h o s t - b y t e
I P
network-byte
API
h t o n lW S A H t o n lh o s t l o n g 4 h t o n l
W S A H t o n l l p n e t l o n g
h t o n sW S A H t o n sh o s t s h o r t 2 h t o n s
2 WSAHtonslpnetshort
6 105
i n e t _ a d d r h t o n s
SOCKADDR_IN
6.1.4
I P T C PU D PI P T C P
I P A F _ I N E T S O C K _ S T R E A M
socketWSASocket 0
U D P I P
s o c k e t S O C K _ S T R E A M W S A S o c k e t I P
S O C K _ R AW 1 3 S O C K _ R AW
6.1.5
Wi n s o c k I P I P I P
I P
Winsock IP
WindowsgethostbynameWSAAsynGetHostByName API
HOSTENT
106 Winsock API
h _ n a m eD N S
FQDN
I P h _ a l i a s e s
h _ a d d r t y p e h _ l e n g t h h _ a d d r _ l i s t
h_addr_list IP
I P
gethostbyname API
n a m e
H O S T E N T H O S T E N T
WSAAsyncGetHostByName API g e t h o s t b y n a m e
Windows WSAAsynGetHostByName
b W n d w M s g
name buf
H O S T E N T H O S T E N T
MAXGETHOSTSTRUCT
g e t h o s t b y a d d rWSAAsynGetHostByName API
I P I P
gethostbyaddr
addr IP lenaddr
t y p e A F _ I N E T I P
WSAAsyncGetHostByAddr APIgethostbyaddr
6 107
I P
T C PU D P
T C P
T C PS P X 2 1F T P 8 0F T T P
1 ~ 1 0 2 3
T C P 1 0 2 3
g e t s e r v b y n a m eW S A A s y n c G e t S e r v B y N a m e
s e r v i c e s Windows 95Windows 98
W I N D O W S Windows NT Windows 2000 W I N D O W S
\System32\Drivers\Etcgetservbyname
n a m e F T P
n a m e f t pp r o t o n a m e
W S A A s y n c G e t S e r v B y N a m eg e t s e r v b y n a m e
Windows 2000 T C PU D P
WSASetServiceIP API
WSALookupServiceBeginWSALookupServiceNext
WSALookupServiceEnd10
6.2
IrSock Windows
6.2.1
I r D A
IrDA Winsock
I P
IrSock
TCP/IPIP IrSock
108 Winsock API
i r d a A d d r e s s F a m i l y A F _ I R D Ai r d a D e v i c e I D4
IrSock
IrDA
i r d a S e r v i c e N a m e
6.2.2
I r D A L S A P - S E LI A S
I A S L S A P - S E L
I P
L S A P - S E L
L S A P - S E L I r D A Wi n 3 2
L S A P - S E L 11 2 7 I A S
WINS LSAP-SEL
I A S
MyServer SOCKADDR_IRDA
I A S
M y S e r v e r I r D A : Ti n y T P : L s a p - S E L 3 L S A P - S E L
L S A P - S E L
S O C K A D D R _ I R D A I A S M y S e r v e r
I r D A : Ti n y T P : L s a p - S E L I A S3 g e t s o c k e t o p t
IRLMP_IAS_QUERYIAS
I A S
L A S P - S E LI A S I A S I r D A
S O C K A D D R _ I R D A L S A P - S E L - x x x
I A S x x x 11 2 7
L S A P - S E L L S A P - S E L
I A S L S A P - S E L
6.2.3
Windows CE Windows 98Wi n d o w s
2000 Windows CE IrSock
Windows 98Windows 2000 IrSock
6 109
Windows CEAF_irda.h
IrSock
Af_irda.h
g e t s o c k o p t I R L M P _ E N U M _ D E V I C E
DEVICELISToptval Windows 98Windows
2000Windows CE
#define IRDA_DEVICE_INFO
I R L M P _ E N U M _ D E V I C E S
getsockopt ID
110 Winsock API
g e t s o c k o p t D E V I C E L I S T n u m D e v i c e 0
numDevice 0 DeviceIRDA_DEVICE_INFO
getsockopt
Sleep
IrSock
1) AF_IRDA SOCK_STREAM
2) SOCKADDR_IRDA
3) SOCKADDR_IRDAbind
4) backloglisten
5) accept
I r S o c k
1) AF_IRDA SOCK-STREAM
2) IRLMP_ENUM_DEVICESgetsockopt
3) I D SOCKADDR_ IRDA
4) S O C K A D D R _ I R D A c o n n e c t 3
4
6.2.4 IAS
IAS
I R L M P _ I A S _ Q U E RY
g e t s o c k o p t I A S _ Q U E RY
Windows 98Windows 2000Windows CE
6 111
LSAP-SEL irdaClassName LSAP-
S E L I r D A : I r L M P : L s a p S e li r d a A t t r i b u t e N a m e
irdaDeviceID
6.2.5
IrSock
s o c k e tW S A S o c k e t
Winsock 1.1 Windows CEsocket
IRDA_PROTO_SICK_STREAM
AF_IRDA
112 Winsock API
AF_IRDA
6.2.6
I r D A S O _ s o c k e t S O _ L I N G E R
I r S o c k A F _ I R D A
9 9
6.3 IPX/SPX
I P X Novell NetWa r e
IPX
IPX IPX
S P X SPX II S P X I P X Wi n s o c k
Windows IPX Windows 95Windows 98Windows NT
Windows 2000Windows CE IPX
6.3.1
IPX IPX 4
I P X
6
IPXIPX
I P XWi n s o c k S O C K A D D R _ I P X
Wsipx.hWinsock 2.hSOCKADDR_
IPX
sa_familyAF_IPXsa_netnum4 IPX
sa_nodenum6 sa_socket
IPX
6.3.2
I P X I P X A F _ I P X
NSPROTO_IPXsocketWSASocket
6 113
0
IPX
IPX
I P X S P XSPX II s o c k e t
W S A S o c k e t S O C K _ S E Q PA C K E T
SOCK_STREAM NSPROTO_SPXNSPROTO_SPX II
S O C K _ S T R E A M
T C P / I P 2 0 0 0
2000 SPXSPX II
S P X SOCK_ STREAM
Winsock recvW S A R e c v S O C K _ S T R E A M
r e c v
SOCK_SEQPACKET
1.
I P X b i n d S O C K A D D R _ I P X
b i n d I P X
Windows 95
Windows 98Windows NTWindows 2000
g e t s o c k n a m e
2.
I P X I P X
Windows 95Windows 98Windows NTWindows 2000
Windows 95Windows 98
Windows NTWindows 2000 NetWare I P X
SOCKADDR_IPXsa_netnumsa_nodenum
0IPX
A
B
3. WinsockIPX
N S P R O TO _ I P X Winsock IPX IPX
I P X N o v e l l I P X
0 1 h R I P
0 4 h S A P
0 5 h S P X
11 hN e t Ware CoreNCP
1 4 hNovell NetBIOS
IPX NSPROTO_IPX + Nsocket API n
0 4 hS A P I P X
socket
4.
Wi n s o c kI P X
I P X S A P I P X
1 0 Winsock 2
WSASetService API S A P I P X
W S A A e t S e r v i c e
6 115
Winsock 2 A P I
WSALookupServiceBeginWSAlookupServiceNextWSAlookupServiceEnd
I P X S A P
I P X S A P
SAP IPX SAP
6.4 NetBIOS
N e t B I O S Wi n s o c k 1N e t B I O S
Wi n s o c kN e t B I O S
N e t B I O SL A N A 1
WinsockNetBIOS
NetBIOSWinsockWindows NTWindows 2000
Windows 95Windows 98Windows CE
6.4.1
N e t B I O S N e t B I O S 1 N e t B I O S1 6
N e t B I O S
F O O F O O
WinsockNetBIOSWsanetbs.h
s n b _ f a m i l y A F _ N E T B I O Ss n b _ t y p e
snb_type
snb_name NetBIOS
_ s n b S O C K A D D R _ N B
s n b _ f a m i l y A F _ N E T B I O S _ t y p e
N E T B I O S _ U N I Q U E _ N A M EN E T B I O S _ G R O U P _ N A M E_ n a m eN e t B I O S
N E T B I O S _ N A M E _ L E N G T H1
s n b _ n a m e s n b _ n a m e 1 6
_port
Wi n s o c kN e t B I O S
T C PI r D A
N e t B I O S
Wi n s o c kN e t B I O S
6.4.2
WSASockettype
SOCK_DGRAMSOCK_SEQPACKETprotocol
LANA
W S A P R O TO C O L _ I N F O
dwFlagsWSA_FLAG_OVERLAPPEDWSASocket
WSA_FLAG_OVERLAPPED
L A N A
WinsockLANAWinsockWSAEnumProtocols
N C B E N U M N e t b i o s
L A N A 5 W S A E n u m P r o t o c o l s
NetBIOS
6 117
AF_NETBIOS
SOCK_SEQPACKET
SOCK_DGRAM
NetBIOSLANAWSAPROTOCOLS_I N F O
iProtocol LANAiProtocol0x800000000Winsock
j
6.5 AppleTalk
Wi n s o c k A p p l e Ta l k
MAC AppleTalkAppleTalkNetBIOS
AppleTalkN e t B I O S AppleTalk
6.5.1
A p p l e Ta l k
3 2
A p p l e Ta l k
A p p l e Ta l k Wi n d o w s
A p p l e Ta l kN B P
AppleTalkRT M P AppleTalk
WinsockAppleTalk
118 Winsock API
S O C K A D D R _ AT
b i n dc o n n e c tW S A c o n n e c tWi n s o c k
g e t s o c k o p ts e t s o c k o p t
6.5.2 AppleTalk
S O _ R E G I S T E R _ N A M E s e t s o c k o p t A p l p l e Ta l k
WSH_NBP_NAME
W S H _ R E G I S T E R _ N A M E W S H _ D E R E G I S T E R _ N A M E
WSH_REMOVE_NAMEWSH_NBP_NAME
AppleTalk
6 119
M Y _ Z O N E M Y _ T Y P E M Y _ O B J E C T
AppleTalk *
AppleTalkADSPSOCK_STREAM
b i n d
s a t _ s o c k e t
b i n d
AppleTalkSOL_APPLETALKlevelSO_REGISTER_NAME
o p t n a m e s e t s o c k o p t
WSH_REGISTER_NAMEsetsockopt
W i n s o c k
WSAEADDRINUSE100480x02740h AppleTalk
6.5.3 AppleTalk
Wi n s o c k SO_LOOKUP_ NAME
g e t s o c k o p t A p p l e Ta l k W S A _ L O O K U P _ N A M E
A p p l e Ta l kS O _ L O O K U P _ M Y Z O N ES O _ L O O K U P _
Z O N E SS O _ L O O K U P _ N A M Eg e t s o c k o p t
g e t s o c k o p t
6 - 1
S O _ L O O K U P _ N A M E c L o o k u p B u ff e r g e t s o c k o p t
P W S H _ L O O K U P _ N A M E
g e t s o c k o p t p Tu p l e B u ff e r
W S H _ L O O K U P _ N A M E
PWSH_NBP_TUPLE WSH A p p l e Ta l k
W S H _ N B P _ T U P L E
AppleTalk 9
6.5.4
AppleTalkWinsock 1.1
AppleTalk Atalkwh.h
W S A E n u m P r o t o c o l s W S A P R O TO C O L _ I N F O
s o c k e tW S A S o c k e t A p p l e Ta l k
6-1
6-1 AppleTalk
MSAFD AppleTalk[ADSP] SOCK_RDM ATPROTO_ADSP
MSAFD AppleTalk SOCK_STREAM ATPROTO_ADSP
[ADSP][Pseudo-Stream]
AF_APPLETALK
MSAFD AppleTalk[PAP] SOCK_RDM ATPROTO_PAP
MSAFD AppleTalk[RTMP] SOCK_DGRAM DDPPROTO_RTMP
MSAFD AppleTalk [ZIP] SOCK_DGRAM DDPPROTO_ZIP
6.6 ATM
6 125
AT M I P AT M I P
I P AT M I P
1 2
ATM
ATM
ATM
ATM
ATM
ATM
6-1 ATM
6.6.1
AT M U N I N N IU N I
AT M N N I
U N I ATM
AT M AT M
ATM
N N I ATM
WinsockATM UNI
Windows 2000Windows 98SP1WinsockUNI3.1
Wi n s o c kS A P AT M
ATM UNI AT M
AT M AT M
SAPWinsock SOCKADDR_ATM
SAPWinsockUNIATM
S A P AT M W i n s o c k
SOCKADDR_ATM
126 Winsock API
AddressTypeE.164ATM_E164
N S A P AT M _ N S A P
SAP AddressType6-2
N u m o f D i g i t s AT M _ A D D R _ S I Z EA d d r AT M
20E.164NASP
S O C K A D D R _ AT M s a t m _ b l l is a t m _ b h l i AT M
BLLIBLLI ATM
B L L IB H I L ATM FormI E T F
ATM LAN
ATM IP ATM UNI 3.1
ATM Form IETF http://www.ietf.org
6-2 ATM
ATM_ADDRESS AddressType
ATM_E164 E.164SAP
ATM_NSAP NSAPATM AESASAP
SAP_FIELD_ANY_AESA_SEL NSAPATM
SAP
SAP_FIELD_ANY_AESA_REST N S A P
SAP
BHLIBLLI
6 127
AT M
Winsock BHLIBLLI SAP_FIELD_ABSENT
AT M _ B L L I
AT M _ B L L I
AT M _ B H L I HighLayerInfoType
SOCKADDR_ATMNSAPSAP
AT M A S C I I 4 0
ATM_ADDRESSNSAPE.16420 ATM_NSAP
20 Winsock
APIWSAStringToAddress 40 ATM ASCII
AT M _ A D D R E S S A P I
A S C I I 6 - 2 A t o H
Wi n s o c k 7
6-2 ATM
128 Winsock API
6.6.2
AT M AT M
ATM
AF_ATM S O C K _ R AWs o c k e t W S A S o c k e t
ATMPROTO_AAL5
ATMWindows
AT M
WSASATMWSAPROTOCOL_INFO
5 socketWSASocket
Winsock
6 129
ATM Winsock
ATM
6.6.3 SAP
AT M 2 0
Wi n s o c k N S A P
E . 1 6 4
SAP WinsockSAPATM
Winsock ATM SAP
S A P AT M _ E 1 6 4
AT M _ N S A P SOCKADDR_ATM S A P AT M
AF_ATM
6 - 2 S A P _ F I E L D _ A N Y _
A E S A _ S E LS A P _ F I E L D _ A N Y _ A E S A _ R E S TAT M _ E 1 6 4AT M _ N S A P
SOCKADDR_ATMATM Winsockbind API
7 S A P Wi n s o c k S A P
Wi n s o c kW S A E A D D R I N U S E
S A P
S A P _ F I E L D _ A N Y _ A E S A _ R E S T AT M
b i n d
W S A E A D D R I N U S E S A P _ F E I L D _ A N Y _ A E S A _ S E L
AT M _ A D D R E S S AT M S A P _ F I E L D _
A N Y _ A E S A _ R E S T AT M 1 9 0
130 Winsock API
S A P _ F I E L D _ A N Y _ A E S A _ R E S T
S A P _ F I E L D _ A N Y _ A E S A _ S E L
S A P _ F I E L D _ A N Y _ A E S A _ R E S T AT M _ N S A PAT M _ E 1 6 4
7 SAP
Atmadm.exe ATM
AT M 6 - 3
6-3
-c VC
-a ATM
-s ILMI
6.6.4
WinsockATM
2 0 AT M AT M 1 0
Windows 2000 ATM
6.7 Winsock 2
Winsock 2WSAAddressToStringWSAStringToAddress
S O C K A D D R
A F _ I N E TAF_ATM W S A A d d r e s s To S t r i n g
lpsaAddressSOCKADDR
SOCKADDR dwAddressLength
lpProtocolInfo WSAEnumProtocols API
5 N U L L
lpsaAddresslpszAddressString
lpdwAddressStringLengthlpszAddressString
6 131
lpszAddressString
WSAEFAULTlpdwAddressStringLength
W S A S t r i n g ToAddress API
SOCKADDRWSAStringToAddress
AddressString 6-4
6-4
IP XXX.XXX.XXX.XXX:YXIP Y
ATM N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N4 0N
20 ATM
A d d r e s s f a m i l y A d d r e s s S t r i n g l p P r o t o c o l I n f o
N U L LWi n s o c k
A d d r e s s f a m i l y
WSAEnumProtocol API
A d d r e s s S O C K A D D R
lpAddressLength SOCKADDR
6.8
Wi n s o c k
Winsock
7 Winsock
A P I
Wi n s o c k
T C P / I P 6
Wi n s o c k
6
Wi n s o c k
Winsock
Winsock8 Winsock I/O
APIWinsock 1Winsock 2
W S A Winsock 2 A P I
WSA Winsock 1 socket
Winsock 2 W S A S o c k e t Winsock 2
7.1 Winsock
w Ve r s i o n R e q u e s t e d Wi n s o c k
Winsock MAKEWORD(X,Y)x
y wVersionRequested
l p W S A D a t a L P W S A D ATA W S A S t a r t u p
7Winsock 133
W S A S t a r t u p wVersion Wi n s o c k w H i g h Ve r s i o n
Wi n s o c k Wi n s o c k
WinsockszDescriptionszSystemStatus
Wi n s o c k iMaxSockets
i M a x U d p D g
WSAEnumProtocols
lpVendorInfo Wi n s o c k
Win32
7 - 1 Wi n d o w s Wi n s o c k
Winsock 1.x Wi n s o c k
Winsock 1 Wi n s o c k . h Winsock 2
Winsock 2.h
7-1 Windows Winsock
Winsock
Windows 95 1.12.2
Windows 98 2.2
Windows NT 4.0 2.2
Windows 2000 2.2
Windows CE 1.1
Windows 95Winsock 2 h t t p : / / w w w. m i c r o s o f t . c o m / Wi n d o w s
95/downloads/
Winsock 2 Wi n s o c k
Winsock 1.1
Windows NT 4.0 Winsock1.1 Winsock 2 DLL
Winsock
Winsock
Windows NT 4.0
s e n dW S A S e n d F D _ W R I T E F D _ W R I T E
F D _ W R I T E
W S A E W O U L D B L O C K
send WSAsend FD_WRITE
Q 1 8 6 2 4 5
Windows NT 4.0Service Pack4Windows 2000
Winsock
Winsock 3 2 . 2
134 Winsock API
Winsock WSAStartup WSADATA
wHighVersion
7.2
Wi n s o c k
Wi n s o c k
Wi n s o c k S O C K E T _ E R R O R
A P I S O C K E T _ E R R O R - 1
Winsock WSAGetLastError
WSAGetLastError
Wi n s o c k
Winsock 1.h Winsock 2.h Winsock 2.h
Winsock 2 A P I
# WSAE
7.3
Wi n s o c k
7.3.1 API
T C P / I P
I P
Winsock
A P Ib i n d A P Il i s t e n
a c c e p tW S A A c c e p t
API
A P I 7 - 1
1. bind
bind
7Winsock 135
Winsock Winsock
socket/WSASocket socket/WSASocket
accept/WSAAccept connect/WSAConnect
7-1 Winsock
s
struct sockaddr
b i n d s t r u c t
sockaddr
TCP
s o c k a d d r _ i n 6T C P / I P
T C P / I P
5 1 5 0 I P b i n d
IP
b i n d S O C K E T _ E R R O R b i n d
W S A E A D D R I N U S E T C P / I PW S A E A D D R I N U S E
I P I P TIME_WAIT
bind WSAEFFAULT
2. listen
b i n d
APIlisten
136 Winsock API
b a c k l o g
backlog2
W S A E C O N N R E F U S E D
b a c k l o g
b a c k l o g
l i s t e n W S A E I N VA L
l i s t e n b i n d b i n d l i s t e n
WSAEADDRINUSE bind
3. acceptWSAAccept
a c c e p tW S A A c c e p t
accept
s
S O C K A D D R _ I N a d d r l e nS O C K A D D R _ I N
S O C K A D D R S O C K A D D R _ I N
a c c p e t a c c e p t
a d d r I P a d d r l e n
accept
Winsock 2 WSAAccept
acceptWinsock 1 lpfnCondition
7Winsock 137
l e n b u f
buf
l p C a l l e r I db u f
b u f S O C K A D D R T C P / I P
S O C K A D D R _ I N I P
ID
l p C a l l e r D a t a
NULL TCP
W S A E n u m P r o t o c o l s Wi n s o c k
5
l p S Q O Sl p G Q O S Q O S
Q O S
Q O S N U L L l p S Q O S
lpGQOS Winsock 12
QOS 12
lpClalleeId WSABUF
b u f S O C K A D D R
INADDR_ANY
l e n
WSABUFbuf
l e n
l e n 0 l e n 0
Win32
138 Winsock API
C F _ A C C E P T
CF_REJECT CF_DEFER
WSAAcccept
W S A A c c e p t
Win32
C F _ R E J E C T
12
INVALID_SOCKET W S A E W O U L D B L O C K
C F _ D E F E RW S A A c c e p t W S AT RY _ A G A I N
CF_REJECTWSAAcceptWSAECONNREFUSED
7.3.2 API
1) socketWSASocket
2)
3) connectWSAConnect
6 I P
6
TCP
: FIN
FIN_WAIT_1 CLOSING CLOSE_WAIT
: ACK
7-2 TCP
T I M E _ WA I T 2 M S L M S L
Maximum Segment Lifetime
I PT T L 0
T T L 1
TIME_WAIT M S L T C P
A C K F I N M S L
CLOSED
T I M E _ WA I T
F I N A C K
( )
F I N
F I N A C K F I N
C L O S I N G A C K
TIME_WAIT
FIN_WAIT_1
T I M E _ WA I T F I N
F I N - A C K F I N
FIN ACK
TIME_WAIT TCP 2MSL
I P I P
T C P T I M E _ WA I T
TIME_WAIT
W S A E A D D R I N U S E
TIME_WAIT
SO_REFUSEADDR9
FINACK
140 Winsock API
C L O S E _ WA I T
F I N
L A S T _ A C K A C K C L O S E D
T C P / I P R F C 7 9 3 h t t p : / / w w w. r f c -
editor.org
connectWSAConnect
c o n n e c t W S A C o n n e c t
Winsock 1
s T C P n a m e
T C P S O C K A D D R _ I Nn a m e l e n
Winsock 2
connect API l p C a l l e r D a t a
lpCalleeData lpCallerData
l p C a l l e e D a t a
WSABUF
lpCallerDatalenbuf lpCalleeData
lenbuflpSQOS
l p G Q O S Q O S
lpQOS s lpGQOS
lpQOS QOS
c o n n e c t
W S A E C O N N R E F U S E D W S A E T I M E D O U T
7.3.3
API
7Winsock 141
sendWSASend Winsock 2
recvWSARecv Winsock 2
char
Unicode Windows CE Windows CE
UnicodeUnicode char* char*
Winsock API
2 Wi n s o c k
APIWideCharToMultiByteUNICODEASCII
S O C K E T _ E R R O R
W S A G e t L a s t E r r o r W S A E C O N N A B O RT E D
W S A E C O N N R E S E T
W S A E W O U L D B L O C K
8
Winsock I/O
1. sendWSASend
APIsend
S O C K E T b u f
l e n
f l a g s0M S G _ D O N T R O U T EM S G _ O O B f l a g s
M S G _ D O N T R O U T E
MSG_OOB
send SOCKET_ERROR
W S A E C O N N A B O RT E D
W S A E C O N N R E S E T
W S A E T I M E O U T
W S A B U F
W S A B U F
W S A B U F
I / O
WSABUFlpNumberOfBytesSentDWORDWSASend
dwFlagssendlpOverlapped
l p C o m p l e t i o n R O U T I N E I / O I / OWi n s o c k I / O
8
W S A S e n d l p N u m b e r O f B y t e s S e n t 0
SOCK_ERRORsend
2. WSASendDisconnect
WSASendDisconnect
S D _ S E N D s h u t d o w n
b o u n d D i s c o n n e c t D a t a
W S A S e n d D i s c o n n e c t i o n S O C K E T _ E R R O R s e n d
Out-of-band, OOB
OOB
T C PO O B 1 U R GT C P 1 6
TCP.RFC 793 TCP
T C P
RFC 1122
Wi n s o c k O O BT C PO O B
O O B SIOCATMARK
ioctlsocket9SIOCATMARK
Wi n s o c k
7Winsock 143
OOB SO_OOBINLINE 9
Te l n e tR l o g i n Te l n e t
R l o g i n
Win32
3. recvWSARecv
recv
s buf
l e n b u f f l a g s 0
MSG_PEEKMSG_OOB 0
M S G _ P E E K
MSG_PEEK
T C P
MSG_OOB
recv
r e c v W S A E M S G S I Z E
WSAEMSGSIZE
W S A R e c v r e c v I / O
WSARecv
s l p B u ff e r s
144 Winsock API
W S A B U F d w B u ff e r C o u n t W S A B U F
l p N u m b e r O f B y t e s R e c e i v e d
l p F l a g s M S G _ P E E KM S G _ O O BM S G _ PA RT I A L
M S G _ PA RT I A L
W S A R e c v
W S A R e c v
MASG_PARTIAL
M S G _ PA RT I A L
5l p O v e r l a p p e dl p C o m p l e t i o n R O U T I N E
I/O8
4. WSARecvDisconnect
WSASendDisconnect
W S A S e n d D i s c o n n e c t
WSABUF
W S A S e n d D i s c o n n e c t
W S A R e c v D i s c o n n e c t
SD_RECVshutdown
5. WSARecvEx
WSARecvEx Winsock 1 flags recv
MSG_PARTIAL
f l a g s M S G _ PA RT I A L
MSG_PARTIAL
f l a g s W S A R e c v E x
W S A R e c v E x
W S A E M S G S I Z E M S G _ PA RT I A L
W S A E M S G S I Z E
M S G _ P E E K M S G _ O O B
WSARecvEx
7.3.4
7Winsock 145
2048 send
s e n d 2 0 4 8 r e t
TCP/IP
0
0 send
1 0 2 4 1 0 2 4
512
146 Winsock API
4
4
I/O
7.3.5
c l o s e s o c k e t
c l o s e s o c k e t
closesocket shutdown
API
1. shutdown
shutdownshutdown
7Winsock 147
h o w S D _ R E C E I V ES D _ S E N DS D _ B O T H
S D _ R E C E I V E T C P
U D P
S E _ S E N D
T C P F I N
SD_BOTH
2. closesocket
closesocket
c l o s e s o c k e t
WSAENOTSOCK
W S A _ O P E R AT I O N _ A B O RT E D I / O
8 c l o s e s o c k e t
SO_LINGER 9SO_LINGER
7.3.6
r e c vW S A R e c v s e n dW S A S e n d
7 - 1
I P
7-1
148Winsock API
7Winsock 149
150Winsock API
7Winsock 151
7 - 2
T C P
T C P
- O
10send recv
10
7-2
7Winsock 153
154Winsock API
7Winsock 155
7.4
7.4.1
socketWSASocket
b i n d
l i s t e na c c e p t
recvfrom
156 Winsock API
r e c v M S G _ O O BM S G _ P E E K
MSG_PEEK
f r o m S O C K A D D R f r o m l e nA P I
SOCKADDR
recvfromWinsock 2WSARecvFrom
W S A B U F d w B u ff e r C o u n t
WSARecvFrom WSABUF
l p N u m b e r O f B y t e s R e c v d W S A R e c v F r o ml p F l a g s
0M S G _ O O BM S G _ P E E KMSG_PARTIAL
M S G _ PA RT I A L
M S G _ PA RT I A L
W S A R e c v F r o m l p F r o m S O C K A D D R
l p F r o m L e nS O C K A D D R
DWORD lpOverlappedlpCompletionROUTINE
I/O
S O C K A D D R
c o n n e c tW S A C o n n e c t
R e c vW S A R e c v
recvfromWSARecvFrom
7.4.2
sendtoWSASendTosendto
7Winsock 157
b u f l e n r e c v f r o m
t o S O C K A D D R
Winsock 2WSASendTo
W S A S e n d To S e n d To
l p B u ff e r s d w B u ff e r C o u n t
WSABUFI/O WSASendTolpNumber
OfBytesSentlpTo SOCKADDR
i To L e nS O C K A D D R l p O v e r l a p p e d
lpCompletionROUTINE I/O8
s e n d
W S A S e n d s e n d t oW S A S e n d To
WSAEISCONN
c l o s e s o c k e t
7.4.3
I / O
W S A E W O U L D B L O C K
W S A E M S G S I Z E
A p p l e Talk PA P W S A R e c v E x
MSG_PARTIAL
W S A R e c v
r e c v
r e c v
W S A R e c v E x M S G _ PA RT I A L
158 Winsock API
MSG_PARTIAL Winsock 2W S A R e c vW S A R e c v F r o m
WSARecvWSARecvExWSARecvFrom
UDP /IP
U D P I P
U D P
I P U D P I P
b i n d s e n d t oW S A S e n d To
I P I P
IP IP
7.4.4
closesocket
7.4.5
7 - 3
7-3
7Winsock 159
160Winsock API
7Winsock 161
getsockname IPgetsockname
S O C K A D D R _ I N
recvfrom recvfrom
U D P T C P / I P
7 - 4
I P - c c o n n e c t
- c
c o n n e c t s e n d
sendto
162Winsock API
7-4
7Winsock 163
164Winsock API
7Winsock 165
7.5 API
Winsock API
1. getpeername
166 Winsock API
sendto
WSASendTo
2. getsockname
g e t s o c k n a m e
s getpeername
TCP IP
3. WSADuplicateSocket
W S A D u p l i c a t e S o c k e t W S A P R O TO C O L _ I N F O
d w P r o c e s s I d
ID lpProtocolInfo W S A P R O TO C O L _ I N F O
W S A P R O TO C O L _ I N F O
W S A S o c k e t
I / OWi n s o c k
s e t s o c k e t o p t
g e t s o c k o p t
c l o s e s o c k e t
closesocket
W S A A s y n c S e l e c tW S A E v e n t S e l e c t
7Winsock 167
I / O 8
F D _ R E A D A F D _ W R I T EB
4. TransmitFile
Tr a n s m i t F i l e Wi n s o c k
s e n dW S A S e n d
Tr a n s m i t F i l e
hSocketnFile
nNumberOfBytesToWrite
0nNumberOfBytesPerSend
2048TransmitFile 2 KB
0 lpOverlappedOVERLAPPED
I/OI/O8
l p Tr a n s m i t B u ff e r s T R A N S M I T _ F I L E _ B U F F E R S
Head HeadLength
Tail TailLength
Tr a n s m i t F i l e d w F l a g s Tr a n s m i t F i l e
7-2
7-2 TransmitFile
TF_DISCONNECT
TF_REUSE_SOCKET AcceptEx
168 Winsock API
()
TF_USE_DEFAULT_WORKER
TF_USE_SYSTEM_THREAD
TF_USE_KERNEL_APC A P C
TF_WRITE_BEHIND TransmitFile
7.6 Windows CE
Windows CE Windows CE
Winsock 1.1 Winsock 2
W S A Windows CE W S A
W S A S t a r t u pW S A C l e a n u p W S A G e t L a s t E r r o rW S A I o c t l
9
Windows CET C P / I P T C PU D PT C P / I P
I r D A
Winsock 1.1 API Windows CE
2 . 0U D P s e n ds e n d t o
Windows CE 2.1 R O M
Windows CE 2.0 Windows CE 2.0
Windows CE U n i c o d e
Windows 95Windows 98Windows NTWindows 2000
Wi n s o c k Wi n s o c k
Windows CE
Winsock API
Win32
7.7.1 AppleTalk
A p p l e Ta l k
AppleTalk PAPADSPPAP
UDPUDP WSARecvEX
M S G _ PA RT I A L
PA P
SO_PRIME_READ setsockopt
9 A t a l k . c MSG_PARTIAL
SO_PRIME_READ
A D S P T C P
A p p l e Talk API U D PT C P
AppleTalk AppleTalk
6AppleTalk
A p p l e Ta l k Winsock 1.1 A p p l e Ta l k Wi n s o c k 2
A p p l e Ta l k W S A s e n d W S A R e c v
Q 1 6 4 5 6 5
W S A R e c v E xf l a g s r e c v
MSG_PARTIAL
7.7.2 IrDA
I P
Windows CEWinsock 1.1 Windows CE
Winsock 1.1 Windows 98Windows 2000
Winsock 2 Winsock 1.1
Windows 98Windows 2000 2.2 Winsock2.2
AF_IRDA
I r c o m m o n . hI r c o m m o n . c
Irclient.cIrserver.c
Irclient.c
7.7.3 NetBIOS
Winsock NetBIOS 1 N e t B I O S
Wi n s o c k 6
N e t B I O S
S O C K _ D G R A MS O C K _ S E Q PA C K E T
U D PT C P
NetBIOS Winsock
LANA LANA
W s n b s v r. cW s n b c l n t . c S O C K _ S E Q PA C K E T
L A N A
W S A E n u m P r o t o c o l s L A N A
L A N A
W s n b d g s . c S O C K _ D G R A M
7.7.4 IPX/SPX
I P X / S P XS o c k s p x . c I P X S P X I I
- P
S e r v e rC l i e n t
SPXII
I P X
recvfrom sendto
F i l l I p x A d d r e s s
ASCII IPX SOCKADDR_IPX 6 IPX
S O C K A D D R _ I P X I P X
7Winsock 171
4F i l l I p x A d d r e s sI P X
AtoH
E n u m e r a t e A d a p t e r s - m
I P X _ M A X _ A D A P T E R _ N U M I P X
I P X _ A D D R E S S 9
IPX 10
IPX
7.7.5 ATM
AT M c o n n e c t
AT M W S A A c c e p t
accept
c o n n e c ta c c e p t
AT M
closesocket closesocket
AT M
Winsock
7.8
6
Winsock
I / O Wi n s o c k
8 Winsock I/O
Wi n d o w s I / O
Wi n s o c k I / O I / O
Winsock
I / O
I / O
Wi n s o c k
I/O Winsock
I/O
selectWSAAsyncSelectWSAEventSelect
Overlapped I/OI/OCompletion port
I / O
Wi n d o w s
I / O 8 - 1 Windows CE I / O
Windows 98Windows 95 Winsock 1Winsock 2I/O
I/O Windows NTWindows 2000I/O
8-1 I/O
8.1
Wi n d o w s I / O
I/O Winsocksendrecv
Wi n s o c k
Windows CEWindows 95Winsock 1
I / O
8Winsock I/O173
8.1.1
Winsock APIWinsock
8 - 1
8-1
recv
recvMSG_PEEKioctlsockeF
t IONREAD
r e c v
Mutex
8.1.2
8 - 3
8-3
Winsock API
W S A E W O U L D B L O C K
r e c v W S A E W O U L D B L O C K
8 - 2 Wi n s o c k
WSAEWOULDBLOCK
W S A E W O U L D B L O C K
recv
2 0 0 M S G _ P E E K
Wi n s o c k I / O
Winsock
176 Winsock API
W S A E W O U L D B L O C K
I / O
8-2 WSAEWOULDBLOCK
WSAAcceptaccept
closesocket SO_LINGER
setsockopt
WSAConnectconnect
WSARecvrecvWSARecvFromrecvfrom
WSASendsendWSASendTosendto
8.2 I/O
8.2.1 select
s e l e c t Wi n s o c k I / O s e l e c t
selectI/O
U n i x B e r k e l e y s e l e c t
Winsock 1.1
Winsock 1.1 B e r k e l e y
B e r k e l e y s e l e c t
s e l e c t
I / O
sendrecv
W S A E W O U L D B L O C K s e l e c t
I/Oselect
n f d s
8Winsock I/O 177
B e r k e l e y f d _ s e t
readfds writefds exceptfds
fd_set readfds
listen accept
writefds
exceptfds
Out-of-bandOOB
readfds
s e l e c t s e l e c t r e a d f d s
readfdswritefdsexceptfds NULL
s e l e c t
t i m e o u t t i m e v a l
s e l e c t I / O t i m e o u t s e l e c t
t i m e v a l
t v _ s e c t v _ u s e c
0 , 0 s e l e c t s e l e c t
s e l e c t f d _ s e t
I / O t i m e v a l 0
select SOCKET_ERROR
s e l e c t
f d _ s e t
s e l e c t I / OWi n s o c k
I/Ofd_set
FD_CLR(s, *set)sets
FD_ISSET(s, *set)sset TRUE
FD_SET(s, *set) sset
FD_ZERO(*set)set
178 Winsock API
FD_SET fd_read select
fd_read FD_ISSET
select
1) FD_ZERO fd_set
2) FD_SET fd_set
3) selectfd_setI/O
selectfd_set
4) s e l e c t
I/O FD_ISSET fd_set
5) I/OI/O 1)
select
s e l e c t f d _ s e t I / O
(4) FD_ISSET
8-4 select
8.2.2 WSAAsyncSelect
Wi n s o c k I / O
Wi n d o w s
W S A A s y n c S e l e c t Wi n s o c k1 . 1
1 6Wi n d o w s Windows for Wo r k g r o u p s
Wi n d o w s
w i n p r o c Microsoft Foundation Class
MFCCSocket
W S A A s y n c S e l e c t C r e a t e Wi n d o w
Wi n p r o c
WSAAsyncSelect
s h W n d
w M s g
h W n d
Wi n d o w sW M _ U S E R
lEvent
8-3
FD_READFD_WRITEFD_ACCEPTFD_CONNECT
F D _ C L O S E F D _ A C C E P T F D _ C O N N E C T
O R l E v e n t
c l o s e s o c k e t W S A A s y n c S e l e c t
l E v e n t 0
WSAAsyncSelect
WSARecvWinsock
I/OWSAEWOULDBLOCK
WSAAsyncSelectuMsg
8-3 WSAAsyncSelect
FD_READ
FD_WRITE
FD_OOB OOB
FD_ACCEPT
FD_CONNECT join
FD_CLOSE
FD_QOS QoS
FD_GROUP_QOS
FD_ROUTING_INTERFACE_CHANGE
FD_ADDRESS_LIST_CHANGE
WSAAsyncSelecthWnd
Windows
hWnd uMsg
W S A A s y n c S e l e c t
w P a r a m
l P a r a m
l P a r a m l P a r a m
lParam
WSAGETSELECTERROR
8Winsock I/O 181
Windows lParam
WSAGETSELECTEVENTlParam
8 - 5 W S A A s y n c S e l e c tI / O
Windows
8-5 WSAAsyncSelect
182Winsock API
8Winsock I/O 183
F D _ W R I T E
FD_WRITE
connectWSAConnect
acceptWSAAccept
s e n dW S A S e n ds e n d t oW S A S e n d To W S A E W O U L D B L O C K
F D _ W R I T E
s e n d W S A S e n ds e n d t oW S A S e n d To
W S A E W O U L D B L O C K F D _ W R I T E
8.2.3 WSAEventSelect
Wi n s o c k I / O W S A A s y n c S e l e c t
8 - 3
W S A A s y n c S e l e c t
WSACreateEvent
W S A C r e a t e E v e n t
8-3 WSAEventSelect
s h E v e n t O b j e c t
184 Winsock API
W S A C r e a t e E v e n t l N e t w o r k E v e n t s
8 - 3
WSAAsyncSelect I/O
W S A E v e n t S e l e c t
s i g n a l e dn o n s i g n a l e d
manual resetauto resetW S A C r e a t e E v e n t
I / O
WSAResetEvent
T R U E
FA L S E W S A C l o s e E v e n t
WSACloseEvent
T R U E
FALSE
I / O
W S AWa i t F o r M u l t i p l e E v e n t s
W S AWa i t F o r M u l t i p l e E v e n t s
c E v e n t sl p h E v e n t s W S A E V E N T
cEvents lphEvents
W S AWa i t F o r M u l t i p l e E v e n t s W S A _ M A X I M U M _ WA I T _ E V E N T S
6 4 W S AWa i t F o r M u l t i p l e E v e n t s
I / O 6 4 6 4
f Wa i t A l l
W S AWa i t F o r M u l t i p l e E v e n t s T R U E
l p h E v e n t s
FA L S E
FA L S E
dwTimeout WSAWaitForMultipleEvents
8Winsock I/O 185
f Wa i t A l l 0
0
W S AWa i t F o r M u l t i p l e E v e n t s WSA_WAIT_TIMEOUTd w s Ti m e o u t
WSA_INFINITE
f A l e r t a b l e W S A E v e n t S e l e c t
FA L S E I / O
W S AWa i t F o r M u l t i p l e E v e n t s
W S AWa i t F o r M u l t i p l e E v e n t s
WSA_WAIT_EVENT_0
W S A E n u m N e t w o r k E v e n t s
s h E v e n t O b j e c t
h E v e n t O b j e c t
W S A R e s e t E v e n t
l p N e t w o r k E v e n t s W S A N E T W O R K E V E N T S
W S A N E T W O R K E V E N T S
lNetworkEvents8-3
FD_READFD_WRITE
i E r r o r C o d e l N e t w o r k E v e n t s
_ B I T F D _ R E A D
186 Winsock API
i E r r o r C o d e F D _ R E A D _ B I T
FD_READ
WSANETWORKEVENTS
8 - 6
WSAEventSelectI/O
8.2.4
Wi n s o c k I / OI / OOverlapped I/O
Winsock I/O
Windows CE Wi n d o w s
Wi n 3 2I / O R e a d F i l eWr i t e F i l e
I/O
Wi n s o c kI / O Windows NT Wi n s o c k
1 . 1 R e a d F i l eWr i t e F i l e
Winsock 2 I / O
Winsock WSASendWSARecv I/O
Winsock 2Windows
Winsock 2I/OWindows NTWindows 2000
ReadFileWriteFileWindows 95Windows 98
Win32ReadFileWriteFileWSARecvWSASend
8Winsock I/O 189
Winsock 2I/O
I / O W S A _ F L A G _ O V E R L A P P E D
s o c k e t W S A S o c k e t
W S A _ F L A G _ O V E R L A P P E D
I / O Wi n s o c k
WSAOVERLAPPED
WSASend
WSASendTo
WSARecv
WSARecvFrom
WSAIoctl
AcceptEx
TrnasmitFile
WSAOVERLAPPED WSAOVERLAPPED
W S A O V E R L A P P E D I / O
I / O
A c c e p t E x
l p C o m p l e t i o n R O U T I N E
1.
I/OWin32WSAOVERLAPPED
WSAOVERLAPPEDWSASendWSARecvI/O
I / O S O C K E T _ E R R O R
W S A G e t L a s t E r r o r I / O
W S A O V E R L A P P E D
I/O WSAOVERLAPPED I/O
InternalInternalHighO ff s e tO ff s e t H i g h
h E v e n t
W S A E v e n t S e l e c t W S A C r e a t e E v e n t
h E v e n t
Winsock WSASendWSARecv
I/O I/O
Wi n s o c k W S A O V E R L A P P E D
WSAOVERLAPPED WSAWaitForMultipleEvents
I / O WSAEventSelect I/O
W S AWa i t F o r M u l t i p l e E v e n t s
W S AWa i t F o r M u l t i p l e E v e n t s
6 4 W S A G e t O v e r l a p p e d
R e s u l t
s l p O v e r l a p p e d
W S A O V E R L A P P E D
l p c b Tr a n s f e r D W O R D
fWait
f Wa i tT R U E FA L S E
W S A G e t O v e r l a p p e d R e s u l t FA L S E
W S A _ I O _ I N C O M P L E T EI / O
lpdwFlags DWORD
WSARecvWSARecvFrom
W S A G e t O v e r l a p p e d R e s u l t T R U E I / O
l p c b Tr a n s f e r FA L S E
I/O
W S A G e t O v e r l a p p e d R e s u l t
8Winsock I/O 191
l p c b Tr a n s f e r
WSAGetLastError
8 - 7
I / O
1)
2)
3) WSAOVERLAPPED
WSAWaitForMultipleEvents
4) WSARecv WSAOVERLAPPED
SOCKET_ERRORWSA_IO_PENDING
I/O
5) 3 ) W S AWa i t F o r M u l t i p l e E v e n t s
6) WSAWa i t F o r M u l t i p l e E v e n t s W S A R e s e t E v e n t
7) WSAGetOverlappedResult
8) WSARecv
9) 5)~8)
I / O
8-7 I/O
192Winsock API
8Winsock I/O 193
s L i s t e n S o c k e t s A c c e p t S o c k e t
AcceptExaccept
socketWSASocketsAcceptSocketAcceptEx
lpOutputBuffer
dwReceiveDataLength
lpOutputBuffer
0 d w L o c a l A d d r e s s L e n g t h
dwRemoteAddressLength lpOutputBuffer
16
TCP/IP SOCKADDR_IN
16lpdwBytesReceived
AcceptExERROR_IO_PENDING
194 Winsock API
lpOverlappedOVERLAPPEDAcceptEx
I/O
GetAcceptExSockaddrsWinsocklpOutputBuffer
GetAcceptExSockaddrs
l p O u t p u t B u ff e r A c c e p t E x l p O u t p u t B u ff e rd w R e c e i v e D a t a L e n g t h
d w L o c a l A d d r e s s L e n g t h d w R e m o t e A d d r e s s L e n g t h A c c e p t E x
d w R e c e i v e D a t a L e n g t hd w L o c a l A d d r e s s L e n g t hd w R e m o t e A d d r e s s L e n g t h
L o c a l S o c k a d d r R e m o t e S o c k a d d r
S O C K A D D R l p O u t p u t B u ff e r
l p O u t p u t B u ff e r S O C K A D D R
L o c a l S o c k a d d r L e n g t hR e m o t e S o c k a d d r L e n g t h
2.
I / O
I/O I/O
I/O
I/O
I/O I/O
Wi n s o c k W S A O V E R L A P P E D
I/O
dwError lpOverlapped
cbTransferred
lpOverlapped I/OWSAOVERLAPPED
dwFlags 0
8Winsock I/O 195
W S A O V E R L A P P E D h E v e n t
I / O
I / O
W S AWa i t F o r M u l t i p l e E v e n t s
W S AWa i t F o r M u l t i p l e E v e n t s
Wi n 3 2S l e e p E x
WSAWaitForMultipleEvents WSAOVERLAPPED
I/O fAlertableTRUE
I / O W S A _ I O _ C O M P L E T I O N
S l e e p E x W S AWa i t F o r M u l t i p l e E v e n t s
SleepEx
d w M i l l i s e c o n d s S l e e p E x
dwMillisecondsINFINITESleepEx bAlertable
b A l e r t a b l eFA L S E I / O I / O
d w M i l l i s e c o n d s
TRUE SleepExWAIT_IO_COMPLETION
8 - 8
1)
2)
3) WSAOVERLAPPED
4) WSARecv WSAOVERLAPPED
5) f A l e r t a b l e T R U E W S AWa i t F o r M u l t i p l e E v e n t s
I / O W S AWa i t F o r M u l t i p l e
Events WSA_IO_COMPLETION
WSARecv
6) WSAWaitForMultipleEventsWSA_IO_COMPLETION
7) 5)6)
196Winsock API
8-8 I/O
8Winsock I/O197
198 Winsock API
8.2.5
I / O
Win32
I/O I/O
Win32Windows NTWindows 2000I/O
I / O
I/OCreateCompletionPort
N u m b e r O f C o n c u r r e n t T h r e a d s
NumberOfConcurrentThreads
0
I/O
8Winsock I/O 199
1.
I / O
I / O
CreateIoComletionPort
C r e a t e I o C o m p l e t i o n P o r t
C r e a t e I o C o m p l e t i o n P o r t N u m b e r O f C o n c u r r e n t
T h r e a d s n
n n
C r e a t e I o C o m p l e t i o n P o r t
C r e a t e I o C o m p l e t i o n P o r t
S l e e p
WaitForSingleObject
C r e a t e I o C o m p l e t o n P o r t
C r e a t e I o C o m p l e t o n P o r tN u m b e r O f C o n c u r r e n t T h r e a d s
I/O
CreateIo CompletionPort
F i l e H a n d l eE x i s t i n g C o m p l e t i o n P o r tC o m p l e t i o n K e y
FileHandle
ExistingCompletionPort CompletionKey
8 - 9
1) 0
200 Winsock API
2)
3) 2 ) I / O
C r e a t e T h r e a d
4) 5150
5) accept
6)
7) C r e a t e I o C o m p l e t i o n P o r ta c c e p t
CompletionKey CreateIoCompletionPort
8) I / O I / O
W S A R e c vW S A S e n d I / O
I/O I/O 3)
9) 5)~8)
8-9
8Winsock I/O201
202 Winsock API
2. I/O
I/O I/O
Wi n 3 2I / O W S A S e n d
W S A R e c v Winsock API
OVERLAPPED
G e t Q u e u e d C o m p l e t i o n S t a t u s
C o m p l e t i o n P o r t lpNumberOfBytes
Tr a n s f e r r e d I / O W S A S e n dW S A R e c v
lpCompletionKey CreateCompletionPort
K e yl p O v e r l a p p e d
I / O
I / O d w M i l l i s e c o n d s
INFINITE
3. I/O
G e t Q u e u e d C o m p l e t i o n S t a t u s A P I I / O
l p C o m p l e t i o n K e yl p O v e r l a p p e d
I / O
I/O
l p C o m p l e t i o n K e y
CreateIoCompletionPort API C o m p l e t i o n K e y
I / O
l p O v e r l a p p e d O V E R L A P P E D I / O
I / O
O V E R L A P P E D O V E R L A P P E D
OVERLAPPED
I/O
8Winsock I/O 203
I/O I/O
I / O
Winsock API O V E R L A P P E D
O V E R L A P P E D
OVERLAPPED
G e t Q u e u e d C o m p l e t i o n S t a t u s
O p e r a t i o n Ty p e
PER_IO_OPERATION_DATAI/O
I / O
I / O
ServerWorkerThread
8 - 1 0
I/OI/O
8-10
204 Winsock API
8-9 8-10
I / O
8Winsock I/O 205
I/O I/O
OVERLAPPED
c l o s e s o c k e t I / O
P o s t Q u e u e d C o m p l e t i o n S t a t u s
PostQueuedCompletionStatus
C o m p l e t i o n P o r t
d w N u m b e r O f B y t e s Tr a n s f e r r e dd w C o m p l e t i o n K e yl p O v e r l a p p e d
GetQueuedCompletionStatus
G e t Q u e u e d C o m p l e t i o n S t a t u s
d w C o m p l e t i o n P o r t
0
CloseHandle
4.
I / O
I / O
W S A R e c v
W S A R e c v
WSARecv WSARecv
SO_SNDBUFSO_RCVBUF
0Wi n s o c k I / O
Winsock
SO_SNDBUFsetsockopt
0 I/O
9
AcceptExAPI
206 Winsock API
API
a c c e p tW S A R e c v
A c c e p t E x O V E R L A P P E D
r e c v - s e n d
A c c e p t E x We b
WinsockWinsockReadFileWriteFile
Win32 I/O OVERLAPPED
Winsock 2 I / O
W S A R e c vW S A S e n d R e a d F i l eWr i t e F i l e
8.3 I/O
I / O
I / O
1.
I / O
W S A E v e n t S e l e c t Wi n d o w s
WSAAsyncSelect
W S A A s y n c S e l e c t Wi n d o w s
2.
I / O
I / O I / O
8.4
Wi n s o c kI / O I / O
I / O
Winsock I/O Wi n s o c k
Wi n s o c k 9 1 4
Winsock 9
I/O
9 I/O
I / O
I / O Wi n s o c k
g e t s o c k o p ts e t s o c k e t o p ti o c t l s o c k e tW S A I o c t l
Wi n 3 2 Windows CE
Windows 95Windows 98Windows NTWindows 2000
Winsock 2 Winsock 2
Winsock 2I/O Windows CEWindows 95
Windows 95Winsock 2 Windows CE
TCP/IP
I/O Winsock.hWinsock2.h
Winsock 1 Winsock 2 M i c r o s o f t
Wi n s o c k . hM s w s o c k . h
Mswock.lib
9.1
g e t s o c k e t o p t
levelSOL_SOCKET
SOL_SOCKET
S O _ B R O A D C A S T
o p t n a m e Wi n s o c k
S O L _ S O C K E T
208 Winsock API
Wi n s o c k . hWi n s o c k 2 . h
o p t v a lo p t l e n
s e t s o c k e t o p t
g e t s o c k e t o p t o p t v a lo p t l e n
g e t s o c k e t o p t o p t v a l
g e t s o c k e t o p ts e t s o c k e t o p t
S O C K _ S T R E A M
S O _ B R O A D C A S T
WSAENOPROTOOPT
9.1.1 SOL_SOCKET
1. SO_ACCEPTCONN
/ Winsock
1+ TRUE
L i s t e n TRUE
SOCK_DGRAM
2. SO_BROADCAST
/ Winsock
1+ TRUE
T R U ES O _ B R O A D C A S T s e t s o c k o p t
SOCK_STREAM
r e c v f r o mW S A R e c v f r o m
c o n n e c tW S A C o n n e c t r e c vW S A R e c v U D P
9I/O 209
UDP
U D P
255.255.255.255INADDR_BROADCAST #define
AppleTalk AppleTalk
6 A p p l e Ta l k
ATA D D R _ B R O A D C A S T ( 0 x F F )
S O _ B R O A D C A S T
Windows 95
IPX SO_BROADCAST
Q 1 3 7 9 1 4
http://support.microsoft.com/support/searchWindows 95
3. SO_CONNECT_TIME
/ Winsock
1+
S O _ C O N N E C T _ T I M E
A c c e p t E x A c c e p t E x
S O C K E T
0xFFFFFFFF
4. SO_DEBUG
/ Winsock
1+ TRUE
Wi n s o c k S O _ D E B U G
5. SO_DONTLINGER
210 Winsock API
/ Winsock
1+ TRUESO_LINGER
SO_LINGERsetsockopt
W S A E C O N N R E S E T
S O _ D O N T L I N G E R
S O _ D O N T L I N G E R g e t s o c k o p t T R U EFA L S E
S O _ D O N T L I N G E R s e t s o c k o p t
SOCK_DGRAM
6. SO_DONTROUTE
/ Winsock
1+ TRUE
S O _ D O N T R O U T E
U D P
A B
B
T R U E s e t s o c k o p t
g e t s o c k o p t
Wi n 3 2 M i c r o s o f t
7. SO_ERROR
/ Winsock
1+
S O _ E R R O R
W S A G e t L a s t E r r o rW S A S e t L a s t E r r o r
SO_ERROR
0
WSAGetLastError
8. SO_EXCLUSIVEADDRUSE
/ Winsock
2+ TRUE
S O _ R E U S E A D D R
S O _ R E U S E A D D R
S O _ R E U S E A D D R
9I/O 211
S O _ E X C L U S I V E A D D R U S E
S O _ R E U S E A D D R
Windows 2000
9. SO_KEEPALIVE
/ Winsock
1+ T R U E
TCP TCP
Keep Alive S O _ K E E PA L I V E
Wi n 3 2 RFC 11 2 24 . 2 . 3 . 6
WSAENETRESET WSAENOTCONN
R F C
2 2
T C P
7
SOCK_DGRAM
K e e p A l i v e I n t e r v a l
K e e p A l i v e Ti m e R E G _ D W O R D
T C P
Windows 95Windows 98
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP
Windows 2000 I / O
SIO_KEEPALIVE_VALS
I / O
10. SO_LINGER
/ Winsock
struct linger 1+
L I N G E R S O _ L I N G E R
c l o s e s o c k e t
getsockoptlinger
212 Winsock API
l _ o n o ff l _ l i n g e r
setsockopt
struct linger
s e t s o c k o p t l _ o n o ff
SO_LINGER setsockopt
l i n g e rl _ o n o ff 0 S O _ D O N T L I N G E R
setsockoptoptval TRUE SOCK_DGRAM
c l o s e s o c k e t 9 - 1
9-1
SO_DONTLINGER
SO_LINGER 0
SO_LINGER
WSAECONNRESET
S O _ L I N G E Rc l o s e s o c k e t
Wi n d o w s
closesocket
11. SO_MAX_MSG_SIZE
/ Winsock
2+
12. SO_OOBINLINE
/ Winsock
1+ TRUE
O u t - o f - b a n dO O B
M S G _ O O B O O B
O O B
9I/O 213
SIOCATMARK i o c t l s o c k e t O O B
S O C K _ D G R A M Wi n 3 2
OOB 7
13. SO_PROTOCOL_INFO
/ Winsock
WSAPROTOCOL_INFO 2+
W S A P R O TO C O L _ I N F O 6
WSAPROTOCOL_INFO
14. SO_RCVBUF
/ Winsock
1+
s e t s o c k o p t
getsockopt
Windows CEWi n 3 2 Windows CE
U D P
I / O 0
0
88.2.5
15. SO_REUSEADDR
/ Winsock
1+ TRUE
TIME_WAIT
7
T C P / I P
T C P / I P
T C P
214 Winsock API
T I M E _ WA I T S O _ R E U S E A D D R
T I M E _ WA I T
16. SO_SNDBUF
/ Winsock
1+ T R U E
s e t s o c k o p t
g e t s o c k o p t
Windows CE Wi n 3 2
Windows CE
S O _ R C V B U F S O _ S N D B U F 0
0
0
0
0
I / O
88.2.5
17. SO_TYPE
/ Winsock
1+ S O C K _ D G R A MS O C K _
STREAM
S O _ T Y P E
S O C K _ D G R A MS O C K _ S T R E A MS O C K _ S E Q PA C K E TS O C K _ R D M
SOCK_RAW
18. SO_SNDTIMEO
/ Winsock
1+
SO_SNDTIMEO Winsock
SO_SNDTIMEOWSASocketWSA_FLAG_OVERLAPPED
WSASocketdwFlags Winsocksendsendto
WSASendWSASendTo
10060WSAETIMEDOUT
Windows CE 2.1
9I/O 215
Windows CE
19. SO_RCVTIMEO
/ Winsock
1+
S O _ R C V T I M E O
Winsock
S O _ R C V T I M E O W S A S o c k e t W S A _ F L A G _
OVERLAPPEDWSASocketdwFlags Winsock
r e c vr e c v f r o mW S A R e c vW S A R e c v F r o m
10060WSAETIMEDOUT
Windows CE 2.1
Windows CE
20. SO_UPDATE_ACCEPT_CONTEXT
/ Winsock
SOCKET 1+
M i c r o s o f t A c c e p t E x
Winsock 1 I/O
QoS
Q o S
s e t s o c k o p tS O C K E T o p t v a l
Windows NTWindows 2000
9.1.2 SOL_APPLETALK
A p p l e Ta l k s o c k e tW S A S o c k e t
AF_APPLETALK A p p l e Ta l k
A p p l e Ta l k 6
A p p l e Ta l k S O _ D E R E G I S T E R _ N A M E
1. SO_CONFIRM_NAME
/ Winsock
WSH_NBP_TUPLE 1 AppleTalk
S O _ C O N F I R M _ N A M E A p p l e Ta l k
N B P
WSAEADDRNOTAVAIL
9-1 SO_LOKUP_NAME
5. SO_LOOKUP_ZONESSO_GETZONELIST
/ Winsock
WSH_LOOKUP_ZONES 1 Internet
W S H _ L O O K U P _ Z O N E S
WSH_LOOKUP_ZONES
SO_LOOKUP_ZONES
9I/O 217
6. SO_LOOKUP_ZONES_ON_ADAPTERSO_GETLOCALZONES
/ Winsock
WSH_LOOKUP_ZONES 1
SO_LOOKUP_ZONES
W S H _ L O O K U P _ Z O N E S W S H _ L O O K U P _
ZONES UNICODEWCHAR
7. SO_LOOKUP_NETDEF_ON_ADAPTERSO_GETNETINFO
/ Winsock
WSH_LOOKUP_NETDEF_ON_ADAPTER 1
ANSI
UNICODE
WCHAR
1~0xFFFEANSI*
8. SO_PAP_GET_SERVER_STATUS
/ Winsock
WSH_PAP_GET_SERVER_STATUS 1 PAP
S e r v e r A d d rPA P
NBP PAP
PA P S O _ PA P _ S E T _
S E RV E R _ S TAT U S W S H _ PA P _ G E T _
SERVER_STATUS
PA P S e r v e r S t a t u s
9. SO_PAP_PRIME_READ
/ Winsock
char [] 1 PA P
PAP
recvWSARecvEx select
optval
M I N _ PA P _ R E A D _ B U F _ S I Z E
4 0 9 6 PA P
S O _ PA P _ P R I M E _
READ setsockopt
10. SO_PAP_SET_SERVER_STATUS
/ Winsock
char [] 1
SO_ PA P _ G E T _ S E RV E R _ S TAT U S PA P
255
11. SO_REGISTER_NAME
/ Winsock
WSH_REGISTER_NAME 1 AppleTalk
A p p l e Ta l k
W S A E A D D R I N U S E 6 W S H _ R E G I S T E R _ N A M E
9.1.3 SOL_IRLMP
1. IRLMP_9WIRE_MODE
/ Winsock
1+ IPIP
IrCOMM Windows 98
I r S o c k 9 Ti n y T PI r L M P
1 I r C O M M
I R L M P _ S E N D _ P D U _ L E N I r L M P P D U
s e t s o c k o p t 9
9I/O 219
1IrCOMM0
s e n d P D U I r C O M M
I r C O M M
Windows 98 Windows 2000
2. IRLMP_ENUMDEVICES
/ Winsock
DEVICELIST 1+ I r D A
ID
I R
ID
IrSock DEVIDELIST
Windows CEDEVIDELIST
Windows CE W C E _ I R D A _
DEVICE_INFOWindows 98Windows 2000WINDOWS_IRDA_DEVICE_INFO
220 Winsock API
i r d a D e v i c e I D 4
S O C K A D D R _ I R D A
I R L M P _ I A S _ S E TI R L M P _ I A S _ Q U E RY
IAS
g e t s o c k o p t o p t v a l
D E V I C E L I S T n u m D e v i c e 0
IRgetsockopt
numbDevice 0
DevicenumDevice
3. IRLMP_EXECLUSIVE_MODE
/ Winsock
1+ TRUE
I r D A Ti n y T P
I r L M P h t t p : / / w w w. i r d a . o rg
IrDA Windows CEWindows 2000
4. IRLMP_IAS_QUERY
/ Winsock
IAS-QUERY 1+ IAS
I R L M P _ I A S _ S E T
getsockopt irdaDeviceID
IDirdaAttribName
LSAP-SELIrDA:IrLMP:LsapSel
i r d a C l a s s N a m e
getsockopt irdaAttribType
9 - 2
WSASERVICE_NOT_FOUND
Windows CEWindows 98Windows 2000
5. IRLMP_IAS_SET
/ Winsock
IAS_QUERY 1+
IAS IRLMP_IAS_SET
I A S I R L M P _ E N U M D E V I C E S Wi n d o w s
C E Windows 98 Windows 2000
Windows 98Windows 2000
9I/O 221
Windows CEIAS
9 - 2 i r d a A t t r i b Ty p e
g e t s o c k o p t
I R L M P _ I A S _ Q U E RY i r d a A t t r i b Ty p e
9-2 IAS
irdaAttribType
IAS_ATTRIB_INT irdaAttribInt
IAS_ATTRIB_OCTETSEQ irdaAttribOctetSeq
IAS_ATTRIB_STR irdaAttribUsrStr
IAS_ATTRIB_NO_CLASS
IAS_ATTRIB_NO_ATTRIB
irdaDevicdID
222 Winsock API
I A S i r d a A t t r i b N a m e
i r d a C l a s s N a m e
I r S o c k I A S
L S A P - S E L L S A P - S E L
I A S L S A P - S E L i r d a D e v i c e I D
I D i r d a A t t r i b N a m e I r D A : I r L M P : L s a p S e l
i r d a C l a s s N a m e M y S o c k e t S e r v e r i r d a A t t r i b Ty p e
IAS_ATTRIB_INTi r d a A t t r i b I n t L S A P - S E L L S A P - S E L
6. IRLMP_IRLPT_MODE
/ Winsock
1+ TRUE IR
Wi n s o c k
I R L P T
T R U E I R L M P _ E N U M D E V I C E S
IAS
L S A P - S E L - x x x 6
IrSock IAS Windows CEWindows 2000
7. IRLMP_SEND_PDU_LEN
/ Winsock
1+ PDU
IRLMP_9WIRE_MODE9
PDU IRLMP_9WIRE_MODE
Windows CEWindows 2000
9.1.4 IPPROTO_IP
I P P R O TO _ I P I P I P
I P Wi n s o c k . hWi n s o c k 2 . h
Winsock 1
Wsock32.lib Winsock 2
Winsock 2 W s 2 _ 3 2 . l i b
Wi n s o c k Wi n d o w s
CE Win32 Windows CE2.1
1. IP_OPTIONS
/ Winsock
char[] 1+ IPIP
IPIP
RFC 1108
I P 1 3P i n g
9I/O 223
IP
IP
IP
I P s e t s o c k o p t 9 - 2 I P
40
40
1 1 1 37
9-2 IP
I P 0 x 7
struct ip_option_hdr
9 l o n g
9I P I P 4 0
3 9 3 2 4 0
I P _ O P T I O N S g e t s o c k o p t
I P
SOCK_RAWIP_HDRINCL
IP Winsock
224 Winsock API
2. IP_HDRINCL
/ Winsock
2+ TRUEIP
I P _ H D R I N C L T R U E I P
I P Wi n s o c k
I P I P 9 - 3
IP Windows 2000
4 4
8 16()
31
16 13
8 8 16
32IP
32IP
IP()
9-3 IP
I P 4 3 2
32
TOS
I P _ TO S I P
I P
IPTime to LiveTTL
TTL1TTL0
I P T C PU D PI G M PI C M P
I P1 61
3 2I P I P
IP
I P
9I/O 225
I P Wi n s o c ks e n d 1 3
Windows 2000
3. IP_TOS
/ Winsock
1+ IP
TOSIP
8 3
4 TO S 0 TO S
0RFC 1340
TCPSMTPNNTP RFC 1349
RFC
R l o g i nTe l n e t
F T P
S N M P U s e n e t
N N T P I P _ TO S
Windows CE
QoS TOS
IP QoS
QoS setsockoptIP_TOS
Q o S
12QoS
4. IP_TTL
/ Winsock
1+ IPTTL
TTLIP TTL
T T L 1 0
Windows CE
5. IP_MULTICAST_IF
/ Winsock
1+
I P I F
M o d e m
optval
IP inet_addr IP
6. IP_MULTICAST_TTL
/ Winsock
1+
IPTTL
TTL TTL
TTL1
7. IP_MULTICAST_LOOP
/ Winsock
1+ T R U E
I P
FA L S E
8. IP_ADD_MEMBERSHIP
/ Winsock
struc ip_mreq 1+ IP
Winsock 1 IP
s o c k e t A F _ I N E T
SOCK_DGRAM
i p _ m r e q i m r _ m u l t i a d d r
imr_interface 11
i m r _ i n t e r f a c e I P
INADDR_ANY
9. IP_DROP_MEMBERSHIP
/ Winsock
struct ip_mre1 1+ IP
I P _ A D D _ M E M B E R S H I P i p _ m r e q
s
11IP
10. IP_DONTFRAGMENT
/ Winsock
1+ TRUEIP
IP IP
9I/O 227
M T U I P
I C M P
Windows CE
9.1.5 IPPROTO_TCP
IPPROTO_TCP
S O C K _ S T R E A M A F _ I N E T Wi n s o c k
Win32 Windows CE
TCP_NODELAY
/ Winsock
1+ TRUE Nagle
N a g l e
TCP TCP
T C P
2 0 2 2 0
N a g l e
T C P A C K
A C K
N a g l e
Te l n e t Te l n e t
N a g l e
9.1.6 NSPROTO_IPX
M i c r o s o f t Windows IPX/SPX
Microsoft IPX/SPX
I P X / S P X W S N w L i n k . h
Winsock.hWsipx.h
1. IPX_PTYPE
/ Winsock
1+ IPX
I P X I P X o p t v a l
228 Winsock API
optval
2. IPX_FILTERPTYPE
/ Winsock
1+ IPX
o p t v a l I P X
3. IPX_STOPFILTERPTYPE
/ Winsock
1+ IPX
IPX_FILTERTYPE
4. IPX_DSTYPE
/ Winsock
1+ SPX
SPX
5. IPX_EXTENDED_ADDRESS
/ Winsock
1+ TRUE IPX
SOCKADDR_IPX
u n s i g n e d c h a r s a _ p t y p e 1 5
S O C K A D D R _ I P X s a _ p t y p eunsigned char sa_flags 1 6
sa_flags
0 x 0 1
0 x 0 2
6. IPX_RECVHDR
/ Winsock
1+ TRUE IPX
Winsock IPX
7. IPX_MAXSIZE
/ Winsock
1+ IPX
getsockopt IPX
8. IPX_ADDRESS
/ Winsock
IPX_ADDRESS_DATA 1+ IPX
IPX n
M o d e m 0n ~ 1
I P X I P X _ M A X _ A D A P T E R _ N U M
getsockopt IPX_ADDRESSadapternum optval
IPX_ADDRESS_DATA
9I/O 229
9. IPX_GETNE TINFO
/ Winsock
IPX_NETNUM_DATA 1+ IPX
I P X I P X
R I P o p t v a l
IPX_NETNUM_DATA
10. IPX_GETNETINFO_NORIP
/ Winsock
IPX_ADDRESS_DATA 1+ TRUE IP
IPX_GETNETINFO RIP IPX
I P X _ R E R I P N E T N U M B E R R I P I P X _ G E T N E T I N F O
optval IPX_NETNUM_DATA
11. IPX_SPXGETCONNECTIONSTATUS
/ Winsock
IPX_SPXCONNSTATUS_DATA 1+ SPX
S P X o p t v a l
I P X _ S P X C O N N S TAT U S _ D ATA
12. IPX_ADDRESS_NOTIFY
/ Winsock
IPX_ADDRESS_DATA 1+ IPX
I P X
WA N
I P X _ A D D R E S S _ D ATA o p t v a l
I P X _ A D D R E S S _ D ATA
g e t s o c k o p t o p t v a l
I P X _ A D D R E S S _ D ATA
I P X g e t s o c k o p t
I P X _ A D D R E S S _ D ATA o p t v a l
g e t s o c k o p t
getsockopt
13. IPX_MAX_ADAPTER_NUM
/ Winsock
1+ IPX
I P X n
9I/O 231
0n~1
14. IPX_RERIPNETNUMBER
/ Winsock
IPX_NETNUM_DATA 1+
IPX_GETNETINFO IPXRIP
IPX_GETNETINFO
optval IPX_NETNUM_DATA
15. IPX_RECEIVE_BROADCAST
/ Winsock
1+ TRUE IPX
IPX
FA L S E
FALSE
16. IPX_IMMEDIATESPXZCK
/ Winsock
1+ TRUESPX ACK
TRUE ACK SPX
S P X T R U E
ACK
9.2 IOCTLSOCKETWSAIOCTL
I/O I/O
I / O i o c t l s o c k e t Winsock 1
s I/O cmd
I / O a rg p
Winsock 2 i o c t l
a rg p
I/O WSAIoctl
232 Winsock API
i o c t l s o c k e t l p v I n B u ff e rc b I n B u ff e r
l p v I n B u ff e r c b I n B u ff e r
lpvOutBuffercbOutBuffer
lpvOutBuffer cbOutBuffer
l p v O u t B u ff e r
l p c b B y t e s R e t u r n e d
l p O v e r l a p p e dl p C o m p l e t i o n R o u t i n e I / O
8I/O
9.2.1 I/O
1. FIONBIO
Winsock
ioctlsocket/WSAIoctl 1+
sN o n b l o c k i n g
F I O N B I O I / O
i o c t l s o c k e t a rg p
0
W S A I o c t l l p v I n B u ff e r
W S A A s y n c S e l e c tW S A E v e n t S e l e c t
W S A E I N VA L
W S A A s y n c S e l e c t W S A A s y n c S e l e c t l E v e n t 0
WSAEventSelectlNetworkEvents0 WSAEventSelect
2. FIONREAD
Winsock
1+
i o c t l s o c k e ta rg p
W S A I o c t l
lpvOutBuffersSOCK_STREAM
F I O N R E A D
S O C K _ D G R A M I / O
3. SIOCATMARK
Winsock
1+
O O B O O B
9I/O 233
S O _ O O B I N L I N E I / O
O O B T R U E FA L S E
O O B i o c t l s o c k e ta rg p
W S A I o c t l l p v O u t B u ff e r
O O B 7
OOB
9.2.2 I/O
TRUE
I / O
W S A E N O P R O TO O P T
Windows NTWindows 2000
I / O
2. SIO_FIND_ROUTE
Winsock
WSAIoctl SOCKADDR 2+
I / O l p v I n B u ff e r
SOCKADDR
I P X IPX GetLocalTa rg e t
Win32Microsoft I/O
3. SIO_FLUSH
Winsock
WSAIoct1 2+ OOB
I / O
Windows 2000Windows NT 4 Service Pack 4SP4
234 Winsock API
4. SIO_BROADCAST_ADDRESS
Winsock
WSAIoctl SOCKADDR 2+
I / O S O C K A D D Rl p v O u t B u ff e r s
sendtoWSASendTo Windows NT
Windows 2000 Windows 98Windows 98WSAEINVAL
5. SIO_GET_EXTENSION_FUNCTION_POINTER
Winsock
WSAIoctl GUID 2+
I/O Winsock
I / O
G U I D I / O
S I O _ G E T _ E X T E N S I O N _ F U N C T I O N _ P O I N T E R
M s w s o c k . h Wi n s o c k G U I D
Wi n s o c k Tr a n s m i t F i l e G U I D
GUID
Tr a n s m i t F i l e
Mswsock.lib Mswsock.lib
M s w s o c k . h G U I D
I / O
14
6. SIO_CHK_QOS
Winsock
WSAIoctl DWORD DWORD 2+ QOS
I / O Q o S Windows 2000
A L L O W E D _ TO _ S E N D _ D ATA
A B L E _ TO _ R E C V _ R S V P R S V P
LINE_RATE
L O C A L _ T R A F F I C _ C O N T R O L
L O C A L _ Q O S A B I L I T Y
E N D _ TO _ E N D _ Q O S A B I L I T Y
A L L O W E D _ TO _ S E N D _ D ATA Q o S
S I O _ S E T _ Q O S R S V P R E S V
R E S V R E S V
B e s t - e ff o r t 12RSVP
A L L O W E D _ TO _ S E N D _ D ATA
9I/O 235
S I O _ S E T _ Q O SQ o S
1 0
ALLOWED_TO_SEND_DATA 0
RESV
ABLE_TO_RECV_RSVP
RSVP 10 RSVP
LINE_RATE
k b i t / sK b p s I N F O _ N O T _ AVA I A B L E
1 0
I N F O _ N O T _ AVA I A B L E L O A C A L _ T R A F F I C _ C O N T R O L
L O C A L _ Q O S A B I L I T Y
QoSEND_TO_END_QOSABILITY QoS
7. SIO_GET_QOS
Winsock
WSAIoctl QOS 2+ QOS
I / O Q o S
s i z e o f ( Q O S )
QoS 12 QoS
I / O W S A E N O P R O TO O P T
S I O _ S E T _ Q O S Q o S Windows 98
Windows 2000
8. SIO_SET_QOS
Winsock
WSAIoctl QOS 2+ QOS
I / O S I O _ G E T _ Q O S Q o S
1 2
Q o S S I O _ G E T _ Q O S Q o S
Windows 98Windows 2000
9. SIO_MULTIPOINT_LOOPBACK
Winsock
WSAIoctl 2+
I P AT M
l p v I n B u ff e r FA L S E
NULL
10. SIO_MULTICAST_SCOPE
Winsock
WSAIoctl 2+
236 Winsock API
1
TTL1TTL0
l p v I n B u ff e r T T L W S A I o c t l
lpvOutBuffer TTL
11. SIO_KEEPLIVE_VALS
Winsock
WSAIoctl tcp_keepalive tcp_keepalive 2+ TCP
I / O T C P
S O _ K E E PA L I V E T C P
R e g i s t r y
I / O
tcp_keepalive
k e e p a l i v e t i m e k e e p a l i v e i n t e r v a l
S O _ K E E PA L I V E
W S A I o c t l SIO_KEEPALIVE_VALSI / O
t c p _ k e e p a l i v e I / O
Windows 2000
12. SIO_RCVALL
Winsock
WSAIoctl 2+
I / O T R U E I P
W S A I o c t l A F _ I N E T
S O C K _ R AW I P P R O TO _ I P
INADDR_ANY
I/O recvWSARecvIP
I P
16 65535
M T U I / O
I / O Windows 2000 R c v a l l . c
SIO_RCVALL
13. SIO_RCVALL_MCAST
Winsock
WSAIoctl 2+
I / O SIO_RCVALLSIO_RCVALL
9I/O 237
W S A I o c t l I P P R O TO _ I G M P
I P
224.0.0.0239.255.255.255IP I/O Windows 2000
14. SIO_RCVALL_IGMPMCAST
Winsock
WSAIoctl 2+ IGMP
S I O _ R C VA L L W S A I o c t l
I P P R O TO _ I G M P I G M P
SIO_RCVALL I / O
Windows 2000
15. SIO_ROUTING_INTERFACE_QUERY
Winsock
SOCKADDR 2+ OOB
I / O
SOCKADDR lpvInBuffer
lpvOubBuffer
SOCKADDR
bind
Windows 2000 I/O
P C M C I A Windows 2000
SIO_ROUTING_INTERFACE_QUERY
SIO_ROUTING_
INTERFACE_CHANGEI/O
SIO_ROUTING_INTERFACE_QUERY
16. SIO_ROUTING_INTERFACE_CHANGE
Winsock
WSAIoctl SOCKADDR 2+
I / O
SOCKADDR
SIO_ROUTING_INTERFACE_QUERY
W S A I o c t l
WSAEWOULDBLOCK WSAEventSelectWSAAsyncSelect
FD_ROUTING_INTERFACE_
C H A N G E I / O
WSAOVERLAPPED
238 Winsock API
S O C K A D D R
INADDR_ANY
S I O _ R O U T I N G _ I N T E R FA C E _
QUERY
17. SIO_ADDRESS_LIST_QUERY
Winsock
WSAIoctl SOCKET_ADDRESS_LIST 2+
I / O
S O C K E T _ A D D R E S S _ L I S T
i A d d r e s s C o u n t A d d r e s s
Win32
I/O
S I O _ A D D R E S S _ L I S T _ Q U E RY
S I O _ A D D R E S S _ L I S T _ C H A N G E
W S A I o c t l W S A E FA U LT
lcbBytesReturned
18. SIO_ADDRESS_LIST_CHANGE
Winsock
WSAIoctl 2+
W S A I o c t l
WSAEWOULDBLOCK WSAEventSelectWSAAsyncSelect
F D _ A D D R E S S _ L I S T _ C H A N G E
9I/O 239
I / O
W S A O V E R L A P P E D
19. SIO_GET_INTERFACE_LIST
Winsock
WSAIoctl INTERFACE_INFO[] 2+
I / O W s 2 t c p i p . h
INTERFACE_INFO
iiFlags IFF_UP
I F F _ B R O A D C A S T I F F _ M U LT I C A S T
I F F _ L O O P B A C K
I F F _ P O I N T TO P O I N T
9.2.3 I/O
3. SO_SSL_SET_FLAGS
WSAIoctl DWORD s
D W O R D
S S L _ F L A G _ D E F E R _ H A N D S H A K E
Wi n s o c k Wi n s o c kc o n n e c t
SO_SSL_PERFORM_HANDSHAKE
4. SO_SSL_GET_PROTOCOLS
WSAIoctl SSLPROTOCOLS
SSLPROTOCOLS
d w P r o t o c o l S S L _ P R O TO C O L _ S S L 2S S L _ P R O TO C O L _
SSL3SSL_PROTOCOL_PCT1
5. SO_SSL_SET_PROTOCOLS
WSAIoctl SSLPROTOCOLS
I/O
SSLPROTOCOLS
6. SO_SSL_SET_VALIDATE_CERT_HOOK
WSAIoctl SSLVALIDATECERTHOOK SSL
I / O
Wi n d o w s
SSLVALIDATECERTHOOK
9I/O 241
H o o k F u n c p v A rg
7. SO_SSL_PERFORM_HANDSHAKE
WSAIoctl
I / O S S L _ F L A G _
D E F E R _ H A N D S H A K E
SL_FLAG_DEFER_HANDSHAKE
I / OAT M AT M
ATMATM 6
1. SIO_GET_NUMBER_OF_ATM_DEVICES
Winsock
WSAIoctl DWORD 2+ ATM
I/O DWORD lpvOutBuffer
AT M I D 0 ~
-1
2. SIO_GET_ATM_ADDRESS
Winsock
WSAIoctl DWORD ATM_ADDRESS 2+ ATM
I / O AT M
D W O R DI D l p v O u t B u ff e r
AT M _ A D D R E S S b i n d
ATM
3. SIO_ASSOCIATE_PVC
Winsock
WSAIoctl ATM_PVC_PARAMS 2+
I / O Permanent Virtual CircuitP V C
P V C AT M _ P V C _ PA R A M S
AF_ATM
ATM_PVC_PARAMS
242 Winsock API
4. SIO_GET_ATM_CONNECTION_ID
Winsock
ATM_CONNECTION_ID 2+ OOB
I / O AT MI D
l p v O u t B u ff e r AT M _ C O N N E C T I O N _ I D
V P I / V C I S I O _ A S S O I C AT E _ P V C
9.3
I / O
I / O A p p l e Ta l kI r D A
I/O I/O
Wi n d o w s
10
Winsock 2
Winsock 1
Winsock 2
10.1
I P
1 5 7 . 5 4 . 1 8 5 . 1 8 6
ajones1IP
DNSIP
Wi n s o c k
1 5 7 . 6 4 . 1 8 5 . 1 8 6 5 0 0 0
Winsock
10.2
Wi n s o c k
IPDNSNovellIPXNetWareNDS
Winsock
S A P
NetWareAppleTalkNBP
Wi n s o c k
D N S D N S I P
244 Winsock API
DNS
NDS
Nspapi.h
1 0 - 1 Wi n 3 2
I P X / S P X
NS_SAP
10-1
NS_SAP 1 SAP IPX
NS_NDS 2 NDS IPX
NS_DNS 11 DNS TCP/IP
ND_NTDS 32 Windows NT Windows 2000
IPX/SPXSAP
S A P N e t Wa r eClient Service of
NetWare IPX 0
N D S N D S
Winsock 2
WSAEnumNameSpaceProviders
l p n s p B u ff e r W S A N A M E S PA C E _ I N F O
lpdwBufferLength WSAGetLastErrorWSAEFAULT
W S A N A M E S PA C E _ I N F O
S O C K E T _ E R R O RWSANAMESPACE_INFO
10 245
U n i c o d eA N S IWinsock 2
WSANAMESPACE_INFO Winsock 2
UnicodeANSI NSProviderId
G U I D d W N a m e S p a c e
N S _ D N SN S _ N A Pf A c t i v e
d w Ve r s i o n l p s z I d e n t i f i e r
10.3
service class
10.3.1
Wi n s o c kW S A I n s t a l l S e r v i c e C l a s s
lpServiceClassInfoWSASERVICECLASSINFO
G U I D G U I D
U u i d g e n . e x e G U I D
G U I D
246 Winsock API
S v c g u i d . h
G U I D S A P I P X
S V C I D _ N E T WA R E SAP ID S A P
IDNetWare0x40x7
SAP ID GUID
G U I D
S v c g u i d e . hG U I D
GUID SAP ID 10-2
F T PTe l n e t
10-2 ID
SVCID_TCPPort TCP GUID
SVCID_DNSRecordType DNS GUID
SVCID_UDPPort UDP GUID
SVCID_NETWARESapId SAP ID GUID
W S A S E RV I C E C L A S S I N F O l p s z S e r v i c e C l a s s N a m e
dwCount
l p C l a s s I n f o sW S A N S C L A S S I N F O
l p s z N a m e 1 0 - 3
REG_DWORD
10-3
SapId SERVICE_TYPE_VALUE_SAPID NS_SAP SAP ID
ConnectionOriented SERVICE_TYPE_VALUE_CONN
TcpPort SERVICE_TYPE_VALUE_TCPPORT NS_DNS TCP
NS_NTDS
UdpPort SERVICE_TYPE_VALUE_UDPPORT NS_DNS UDP
NS_NTDS
d w N a m e S p a c e 1 0 - 3
dwValueTypedwValueSizelpValue
dwValueType
D W O R D R E G _ D W O R D dwValueSize
10 247
lpValue lpValue
Widget Server Class
G U I D G U I D
Widget Server Class
NetWareSAP ID of 200
248 Winsock API
G U I D U D P G U I D
5150 UDP
WSASERVICECLASSINFOdwCount4
SAPNS_SAPWindows NT NS_NTDS
WSANSCLASSINFO
W S A N S C L A S S I N F O
S E RV I C E _ T Y P E _ VA L U E _ C O N N 0
Windows NT SERVICE_TYPE_VALUE_UDPPORT
UDP SAPSERVICE_
TYPE_VALUE_SAPID SAP ID
W S A N S C L A S S I N F O
1 0 - 3
D W O R D W S A I n s t a l l S e r v i c e C l a s s
WSASERVICECLASSINFOWSAInstallServiceClass0
S O C K E T _ E R R O R W S A S E RV I C E C L A S S I N F O
W S A G e t L a s t E r r o r W S A E I N C A L W S A G e t L a s t E r r o r
WSAEALREADYWSARemoveServiceClass
GUIDGUID GUID
10.3.2
Wi n s o c k
WSASetService
l p q s R e g I n f o W S A Q U E RY S E T
essOperation 10-
4
dwControlFlags0SERVICE_MULTIPLE
W S A S e r v i c eW S A Q U E RY C S A D D R _ I N F O
SERVICE_MULTIPLE
RNRSERVICE_DELETE 1 0 - 5
10 249
10-4
RNRSERVICE_REGISTER
RNRSERVICE_DEREGISTER
RNRSERVICE_DELETE
S E RV I C E _ M U LT I P L E
10-5 WSASetService
RNRSERVICE_REGISTER
none
SERVICE_MULTIPLE
RNRSERVICE_DEREGISTER
none WSASERVICE_
WSAQUERY, NOT_FOUND
CSADDR_INFO 0
SERVICE_MULTIPLE WSASERVICE_
NOT_FOUND
RNRSERVICE_DELETE
none W S A S E RV I C E _
NOT_FOUND
SERVICE_MULTIPLE WSASERVICE_NOT_
FOUND
W S A S e t S e r v i c e W S A Q U E RY S E T
d w S i z e W S A Q U E RY S E T l p s z S e r v i c e I n s t a n c e N a m e
lpServiceClassId GUID
l p Ve r s i o n
l p s z C o m m e n t d w N a m e S p a c e
NS_ALL
1 4 d w N a m e S p a c e 0
l p N S P r o v i d e r I d G U I Dl p s z C o n t e x t
NDS
dwNumberOfProtocolslpafpProtocols
dwNumberOfProtocolsAFPROTOCOLS
lpafpProtocols
i A d d r e s s F a m i l y A F _ I N E TA F _ I P X
iProtocol IPPROTO_TCPNSPROTO_IPX
W S A Q U E RY S E T l p s z Q u e r y S t r i n g
SQL Whois++
d w N u m b e r O f C s A d d r s
lpcsaBufferCSADDR_INFOCSADDR_INFO
S O C K E T _ A D D R E S S
L o c a l A d d r
R e m o t e A d d r c o n n e c ts e n d t o
i S o c k e t Ty p e i P r o t o c o l
10 251
SOCK_STREAMSOCK_DGRAM AF_INETAF_IPX
WSAQUERYSET dwOutputFlagslpBlob
B L O B
BLOB
1 0 - 6W S A Q U E RY S E T
10-6 WSAQUERYSET
dwSize
lpszServiceInstanceName *
lpServiceClassId
lpVersion
lpszComment
dwNameSpace
lpNSProviderId
lpszContext
dwNumberOfProtocols 00 00
lpafpProtocols
lpszQueryString
dwNumberOfCsAddrs
lpcsaBuffer
dwOutputFlags
lpBlob
10.3.3
S A P N T D S
Windows NT
Windows NTWindows 2000
Active Directory () Windows 2000
Windows NT
I PI P X 1 0 - 1
10-1 WSASetService
252Winsock API
10 253
1 0 - 1
W S A Q U E RY
WidgetServer
G U I D
WidgetService Class G U I D
S V C I D _ N E T WA R E ( 2 0 0 )
I P XU D P N S _ A L L
lpNSProviderIdNULL
C S A D D R _ I N F O S O C K A D D R W S A S e t S e r v i c e
WSAQUERYSET l p c s a B u ff e r
S O C K A D D R
U D P
I N A D D R _ A N Y g e t s o c k e t n a m e I P
getsocketname SOCKADDR_IN CSADDR_INFO
U D P S O C K A D D R _ I N F O I P X
6
0
I P X _ A D D R E S S I P XC S A D D R _ I N F O
S O C K _ D G R A M N S P R O TO _ I P X
W S A Q U E RY S E T d w N u m b e r O f A d d r s 2 U D PI P X
W S A S e t S e t S e r v i c e WSAQUERYSET
R N R S E RV I C E _ R E G I S T E R SERVICE_MULTIPLE
IPXUDP
INADDR_ANYUDP
I P g e t s o c k n a m e I P
g e t h o s t b y n a m e
I P Winsock 2 i o c t l
S I O _ G E T _ I N T E R FA C E _ L I S T Windows 2000 i o c t lS I O _ A D D R E S S _
L I S T _ Q U E RY B I P T C P / I P
g e t h o s t b y n a m e 6i o c t l 9 R n r c s . c
WSALookupServiceBeginWSALookupServiceNextWSALookupServiceEnd
W S A L o o k u p S e r v i c e B e g i n
WSAQUERY
d w C o n t r o l F l a g s 1 0 - 7
H A N D L E
0 S O C K E T _ E R R O R
W S A G e t L a s t E r r o r WSAEINVAI
W S A N O _ D ATA
WSASERVICE_NOT_FOUND
10-7
LUP_DEEP
LUP_CONTAINERS
LUP_NOCONTAINERS
LUP_FLUSHCACHE
LUP_FLUSHPREVIOUS W S A L o o k u p
S e r v i c e N e x tW S A _ N O T _ E N O U G H _ M E M O RY
LUP_NEAREST
LUP_RES_SERVICE CSADDR_INFO
LUP_RETURN_ADDR lpcsaBuffer
LUP_RETURN_ALIASES WSALookupService
LUP_RETURN_ALL
LUP_RETURN_BLOB lpBlob
LUP_RETURN_COMMENT lpszComment
LUP_RETURN_NAME lpszServiceInstanceName
LUP_RETURN_TYPE lpServiceClassId
LUP_RETURN_VERSION lpVersion
WSALookupServiceBeginWSALookupServiceNext
10 255
h L o o k u pW S A L o o k u p S e r v i c e B e g i n d w C o n t r o l F l a g s
L U P _ F L U S H P R E V I O U S W S A L o o k u p S e r v i c e B e g i n
l p d w B u ff e r L e n g t h l p q s R e s u l t s W S A Q U E RY S E T
B L O B
WSA_NOT_ENOUGH_MEMORY
W S A L o o k u p S e r v i c e B e g i n W S A _ E _ N O _ M O R E ( 1 0 11 0 )
WSALookupServiceNext Winsock
W S A E N O M O R E ( 1 0 1 0 2 )
HANDLEWSALookupServiceEnd
10.4.1
WSAQUERY
G U I D
g u i d I D q s 0d w S i z e
* G U I D N S _ A L L
I P XU D P / I P
AFPROTOCOLS
W S A L o o k u p S e r v i c e B e g i n
WSAQUERYSET
L U P _ R E T U R N _ A D D RL U P _ R E T U R N _ N A M E
256 Winsock API
*
L U P _ R E T U R N _ N A M E
HANDLE
WSA_E_NO_MORE WSALookupServiceNext
10 257
W S A L o o k u p S e r v i c e N e x t
LUP_FLUSHPREVIOUS
LUP_FLUSHPREVIOUS WSAEFAULT
lpdwBufferLength
WSAQUERYSET2 0 0 0
WSAEFAULT
W S A L o o k u p S e r v i c e N e x t W S A Q U E RY S E T
WSAQUERYSET
l p s z S e r v i c e I n s t a n c e N a m el p c s a B u ff e r
C S A D D R _ I N F O d w N u m b e r O f C s A d d r s
IPXIP
* W S A L o o k u p S e r v i c e N e x t
W S A _ E _ N O _ M O R E
WSALookupServiceEnd
10.4.2 DNS
D N S
Winsock DNS DNS
DNS BLOB
6g e t h o s t n a m e H O S T N A M E
IPWSAQUERYSET
BLOB
DNS Dnsquery.c
D N S
DNS
258 Winsock API
D N S G U I D
SVCD_INET_HOSTADDRBYNAMEGUIDlpszServiceInstanceName
D N S d w N a m e S p a c e
N S _ D N S l p a f P r o t o c o l s A F P R O TO C O L S
TCP/IPUDP/IP
WSALookupServiceNext
DNS BLOB
WSAQUERYSET
HOSTENT 2048
W S A E FA U LT D N S H O S T E N T
IP WSALookupServiceNext
B L O B 6
HOSTENT
H O S T E N T B L O B
BLOB
10 259
1 0 - 1 H O S T E N T D N S
riven IP
H O S T E N T h _ n a m eh _ a l i a s e sh _ a d d r _ l i s t
h_aliasesh_addr_list
32 10-1h_addr_list
1 6 H O S T E N T 4I P
2 8
H O S T E N T 2 8 4
0 x 9 D 3 6 B 9 B AI P1 5 7 . 5 4 . 1 8 5 . 1 8 6
2 8 4 0
I P
h _ a l i a s e s
0 h_name
HOSTENT
HOSTENT
h_name
h_aliases h_addr_list
H O S T E N T
0
h _ a d d r _ l i s t H O S T E N T
10.5
R N R
T C P / I P D N S
DNS Windows 2000Windows NT
S A P I P X / S P X N T D S
11
Multicasting
B r o a d c a s t i n g
Wi n 3 2 Wi n s o c k
I PAT M
I PAT M
I PAT M
A P I Winsock 1 Winsock 2
WinsockIP WinsockWinsock 1
Winsock 2
Windows CE 2.1Windows 95Windows 98Windows NT 4
Windows 2000 2 . 1 Windows CE I P
I P Windows 98
Windows 2000 ATM Wi n s o c k
Win98 SE AT M I P
AT M
ATM 11.2IP
NICIP
1998 IP
11.1
C o n t r o l
P l a n eData Plane
R o o t e d
N o n r o o t e d c_root
c _ l e a f
c _ r o o t c _ l e a f
c _ l e a f
AT M
262 Winsock API
c _ l e a f
c _ r o o t
I P
11 - 1
c_root c_leaf
c_root
c_leaf
c_leaf c_leaf
c_leaf
11-1
d _ r o o t d _ r o o t
d _ l e a f
d _ l e a f
d _ r o o t d _ r o o t d _ l e a f AT M
11 - 2
d _ r o o t a b c d _ l e a f d _ l e a f
x y z d _ r o o t
abcxyz
11 263
I P
AT M I P
Wi n s o c k
d_root
d_leaf
11-2
5
W S A E n u m P r o t o c o l s
WSAPROTOCOL_INFO dwServiceFlags1
XP1_MULTIPOINT_CONTROL_PLANE
X P 1 _ M U LT I P O I N T _ D ATA _ P L A N E
264 Winsock API
0
11.2 IP
I P
I P
IP DIP
2 2 4 . 0 . 0 . 02 3 9 . 2 5 5 . 2 5 5 . 2 5 5
2 2 4 . 0 . 0 . 02 2 4 . 0 . 0 . 1
2 2 4 . 0 . 0 . 2 I G M P
RFC 1700
I n t e r n e t
I A N A 11 - 1
RFC 1700
11-1
224.0.0.0
224.0.0.1
224.0.0.2
224.0.1.1
224.0.0.9 RIP2
224.0.1.24 WINS
T C P / I P I P
I P
I G M P
I P
I n t e r n e t Internet Gateway Management Protocol,
IGMP
11.2.1 Internet
IGMP
I G M PI P
I G M P AB 2 2 4 . 1 . 2 . 3
I G M P
IGMP IGMP
I G M P
11 265
2 2 4 . 0 . 0 . 2
T T L
I P X T T L 2
T T L1
T T L
1 T T L 0
TTL
2 2 4 . 0 . 0 . 1
I G M P
Winsock
A
B
AB
I G M P 2
11.2.2 IP
IP
IPWinsock 1Winsock 2
A P I Winsock 1 I P
1) s o c k e t A F _ I N E T S O C K _ D G R A M
socket
2)
3) s e t s o c k o p t I P _ A D D _ M E M B E R S H I P
266 Winsock API
Winsock 2 1 )2 ) 3 )
W S A J o i n L e a f s e t s o c k o p t
11.4 Winsock
I P
U D P
I P U D P
11.2.3 IP
I P Wi n d o w s 2 . 1 Windows CE
I P
I P
M A C I P
I P
MAC RFC 1700
Winsock API
Windows 95Windows NT 4
M A C
1 63 2 Windows 98
W S A E N O B U F S
Windows 2000 Windows 2000
Windows 95Windows NT 4 MAC
11.3 ATM
WinsockATMIP
AT M
c_root
I P AT M AT M I P
ATM IP IP ATM
AT M I P I P I P
ATM ATM
11 267
AT MI P I P I P
IGMP ATM
AT M L A N L A N E L A N E
AT M I P X / S P XN e t B E U IT C P / I P
I G M PI C M P I P I P
IGMP
AT M
Wi n d o w s
2000
AT MI P AT M
AT M
11.3.1 ATM
ATM
1) W S A S o c k e t AF_ATM W S A _ F L A G _
MULTIPOINT_C_LEAFWSA_FLAG_MULTIPOINT_D_LEAF
2) ATM bind
3) listen
4) a c c e p tW S A A c c e p t
I/O Winsock I/O 8
AT M
11.3.2 ATM
ATM
1) W S A S o c k e t AF_ATM W S A _ F L A G _
M U LT I P O I N T _ C _ R O O TW S A _ F L A G _ M U LT I P O I N T _ D _ R O O T
2) ATM WSAJoinLeaf
WSAJoinLeaf
268 Winsock API
11.4 Winsock
Wi n d o w s
Wi n s o c k A P I I P Wi n s o c k
Wi n s o c k Winsock 1
Winsock 2
W S A J o i n L e a f Winsock 1
Berkeley
11.4.1 Winsock 1
Winsock 1 IP setsockopt
I P _ A D D _ M E M B E R S H I P I P _ D R O P _ M E M B E R S H I P
ip_mreq
i m r _ m u l t i a d d r i m r _ i n t e r f a c e
i m r _ i n t e r f a c eI N A D D R _ A N Y
I P I P
234.5.6.7
setsockoptIP_DROP_MEMBERSHIP
ip_mreq
Winsock 1 IP
11-1 IP
11 269
Multicast Loopback I P
Winsock 1
Winsock 1.1 Winsock.h Wsock32.lib
Winsock 2 Wi n s o c k . h W s 2 t c p i p . h
W s 2 _ 3 2 . l i b
I P _ A D D _ M E M B E R S H I P I P _ D R O P _ M E M B E R S H I P I P _ M U LT I C A S T _ I F
I P _ M U LT I C A S T _ L O O PStephen Deering
Wi n s o c k Winsock 2
Wi n s o c k w s o c k 3 2 . l i b Winsock 2
274 Winsock API
11.4.2 Winsock 2
Winsock 2Winsock 1
Q o S
Winsock
W S A J o i n L e a f
s W S A S o c k e t
W S A J o i n L e a f
W S A E I N VA L
W S A _ F L A G _ M U LT I P O I N T _ C _ R O O T
W S A _ F L A G _ M U LT I P O I N T _ C _ L E A F W S A _ F L A G _
MULTIPOINT_D_ROOTWSA_FLAG_MULTIPOINT_D_LEAF SOCKADDR
AT M
I P
namelen name
l p C a l l e r D a t a
l p C a l l e e D a t a
Wi n d o w s
N U L Ll p S Q O S F L O W S P E C
1 2 Q o S
l p G Q O S
Windows dwFlags
JL_SENDER_ONLYJL_RECEIVER_ONLY
JL_BOTY
S O C K E T
W S A J o i n L e a f
W S A A s y n c S e l e c t
WSAEventSelect s FD_CONNECT
FD_CONNECT
11 275
n a m e 11 - 2
F D _ C O N N E C T c l o s e s o c k e t
W S A J o i n L e a f
ioctlsocketFIONBIO
W S A J o i n L e a f W S A E W O U L D B L O C K
I / O
F D _ C O N N E C T 8 W S A A s y n c S e l e c t
W S A E v e n t S e l e c tI / O W S A J o i n L e a f
Winsock
W S A J o i n L e a f
n a m e
c _ r o o t
W S A J o i n L e a f
I / O W S A E v e n t S e l e c t
W S A A s y n c S e l e c t F D _ C L O S E
c _ r o o t W S A J o i n L e a f
AT M
closesocket
W S A J o i n L e a f n a m e
ATM UNI4.0
I P W S A J o i n L e a f
s W S A J o i n L e a f
bindlistenaccept/WSAAccept
c l o s e s o c k e t
11 - 2
n a m e
FD_CONNECT
acceptWSAAccept
c_leafWSAJoinLeaf
c_root
276 Winsock API
WSAJoinLeaf
W S A J o i n L e a f
W S A S o c k e t W S A J o i n L e a f
c l o s e s o c k e t
c _ r o o t c l o s e s o c k e t I / Oc _ l e a f
FD_CLOSE
11-2 WSAJoinLeaf
s name FD_
CONNECT
c_root F D _ C L O S E
c_leaf s
c_root N/A N/A N/A
c_leaf s
1. Winsock 2 IP
11-2 Mcastws2.c
WSAJoinLeaf IP Winsock 1 IP
M c a s t w s 1 . c
WSAJoinLeaf
11-2 IP
11 277
278Winsock API
11 279
280Winsock API
11 281
2. Winsock 2 ATM
11-3 Mcastatm.c ATM
S u p p o r t . c
G e t AT M A d d r e s s
ATM
11-3 Server
W S A J o i n L e a f
W S A S e n d
AT M
W S A J o i n L e a f
W S A J o i n L e a f
C l i e n t
a c c e p tW S A A c c e p t
11-3 ATM
282Winsock API
11 283
284Winsock API
11 285
286Winsock API
11 287
288 Winsock API
11.4.3 Winsock
Winsock 1 Winsock 2 I P
11 289
I P _ M U LT I C A S T _ T T LI P _ M U LT I C A S T _ I FI P _ M U LT I C A S T _ L O O P
Winsock 1 Winsock 2
IP
1. IP_MULTICAST_TTL
TTL TTL1
T T L
T T L
TTL11 TTL
0
2 2 4 . 0 . 0 . 02 2 4 . 0 . 0 . 2 5 5
T T L
s e t s o c k o p tl e v e l I P P R O TO _ I Po p t n a m e I P _ M U LT I C A S T _ T T L
o p t v a l T T L T T L
W S A I o c t li o c t l s o c k e t
SIO_MULTICAST_SCOPE
AT M T T L AT M
c_root
2. IP_MULTICAST_IF
I P
optval
1 2 9 . 1 2 1 . 3 2 . 1 9 s
IP
AT M W S A J o i n L e a f
c_root ATM
acceptWSAAccept
3. IP_MULTICAST_LOOP
r e c v f r o m
I P _ M U T L I C A S T _ L O O P
o p t v a l
W S A I o c t l i o c t l s o c k e t i o c t l S I O _ M U LT I P O I N T _
L O O P B A C K Windows 95
Windows 98Windows NT 4
WSAENOPROTOOPT
AT M
ATM
c _ r o o t c _ l e a f c _ r o o t
Loopback
11.4.4
R A S
Wi n d o w s Windows NT 4
IGMP Windows NT 4
Windows 2000 R A S I G M P
11 291
11.5
I P AT M
Winsock API Winsock 1Winsock 2
WSAJoinLeaf
12
I n t e r n e t
Quality of ServiceQoS
Q o S
Q o S
UDP
Generic Quality of ServiceGQOSQoS
QoSTCP/IPUDP/IPWindows 98Windows 2000
ATM QoS
Q o S Wi n 3 2
Winsock
I P Q o S
QoSATM IPQoS
QoS
QoS
12.1
QoS
R e s o u r c e
Reservation ProtocolR S V P Q o S Q o S
RSVPQoS QoS
12.1.1
R S V P
12 293
R S V P
R S V P Q o S R S V P
RSVP
R S V P
QoS QoS
PAT H PAT H
R E S V
R S V P
R S V P
RESV
R E S V Q o S
PAT HR E S V
PATHRESV RSVP
Wi n s o c k Q o S R S V P
Winsock API
R S V P
R S V P
12.1.2
QoS
Q o S
8 0 2 . 1 p M A C
3
IP IP
2 RSVP WAN QoS OSI2
SBM
R S V P Q o S
Q o S
294 Winsock API
1. 802.1p
Q o S H U B
H U B O S I 2
802.1p M A C 3
8 0 2 . 1 p
8 0 2 . 1 p
Q o S 8 0 2 . 1 p 3
NIC 802.1p
2. IP
IP IP Precedence802.1p
O S I 3
I P I PTO S
8 0 2 . 1 p I P 3 I P
3. 2
WA N 2 WA N
WA N 12 3
QoSWANQoS
Q o S R S V P Q o S WA N 2
WAN QoS
4.
Subnet Bandwidth ManagerSBM
S B M Q o S
S B M Q o S
S B M
12.1.3
QoS
Q o S
12 295
QoS
GQOS QoS
RSVP
GQOS API GQOS Winsock
T CA P I
1. GQOS
G Q O S G Q O S Q o S G Q O S
G Q O S
RSVP
Q o S W S A E n u m P r o t o c o l s
Q o S W S A P R O TO C O L _ I N F O
WSAEnumProtocols dwServiceFlags1
X P 1 _ Q O S _ S U P P O RT E D Q o S
WSAEnumProtocols 5
2.
Traffic ControlTCQoS TC
T C
Q o S T C
(1)
Generic Packet ClassifierGPC
GPC CPU
G P C
(2)
Packet Scheduler Q o S
QoS
G P C
GPC
(3)
Packet Shaper
Q o S
12.1.4
P o l i c yG Q O S Q o S
2.
Local Policy ModuleLPM ACS
A C S R S V P L P M L P M
Active DirectorySBM
A C S R S V P
Q o S R S V P
Windows 2000
3.
L P M
12.2 QoSWinsock
QoS
Winsock 2 A P I Q o S
12 297
Wi n s o c k Q o S
Q o SWi n s o c k Q o S Q o S
Q o S
Q o S Q o S
Winsock API
12.2.1 QoS
QoS QoS
FLOWSPEC QoS
FLOWSPEC QoS
QoS
1. QoS
QoS QoS
F L O W S P E C P r o v i d e r
S p e c i f i c Q o S
2. FLOWSPEC
F L O W S P E C
FLOWSPEC
(1) TokenRate
TokenRate /Token
To k e n B u c k e t S i z e
PeakBandwidth
T C
TokenRate
QOS_NOT_SPECIFIED-1
(2) TokenBucketSize
To k e n B u c k e t S i z e
TokenRateTokenBucketSize
(3) PeakBandwidth
P e a k B a n d w i d t h
P e a k B a n d w i d t h
(4) Latency
L a t e n c y
S e r v i c e Ty p e
Latency
(5) DelayVariation
D e l a y Va r i a t i o n
DelayVariation
(6) ServiceType
ServiceType
SERVICETYPE_NOTRAFFIC
S E RV I C E T Y P E _ B E S T E F F O RT F L O W S P E C
S E RV I C E T Y P E _ C O N T R O L L E D L O A D
12 299
SERVICETYPE_GUARANTEED TokenRate
To k e n S i z e
T C
TokenRateLatency
ServiceType O R 1 2 - 1
12-1
SERVICETYPE_NETWORK_UNAVAILABLE
SERVICETYPE_GENERAL_INFORMATION
SERVICETYPE_NOCHANGE Q o S
Wi n s o c k Q o S
QoS
SERVICE_IMMEDIATE_TRAFFIC_CONTROL TC
RESV
SERVICE_NO_TRAFFIC_CONTROL ServiceTypeOR
SERVICE_NO_QOS_SIGNALING S E RV I C E T Y P E _
I M M E D I AT E _ T R A F F I C _ C O N T R O L
R S V P R S V P
PATH FLOWSPEC
R E S V
PA T H W S A I o c t l
SIO_SET_QOS RESV
(7) MaxSduSize
M a x S d u S i z e M a x S d u S i z e
(8) MinimumPolicedSize
MinimumPolicedSize MinimumPolicedSize
12.2.2 QoS
R S V P F D _ Q O S
QoS FD_QOS
WSAAsyncSelectWSAEventSelect
FD_QOS
300 Winsock API
FLOWSPECQOS_NOT_SPECIFIED
Q o S F D _ Q O S Q o S
F L O W S P E C
FD_QOS QoS
Q o S
F D _ Q O S
S I O _ G E T _ Q O S Q o S Q o S
1. WSAConnect
W S A C o n n e c t
QoS QoSlpSQOS QoSGroup QoS
lpGQOS NULL
WSAConnect
PAT H
RESV
PATHRESV WSAConnect
Q o S
WSAConnect
Q o S
WSAIoctlSIO_SET_QOS
2. WSAAccept
WSAAccept QoS
12 301
Q o S l p S Q O S
Q o S Q o SW S A A c c e p t
W S A I o c t lS I O _ S E T _ Q O S Q o S
T C P
T C P
PAT H Q o S Q o S
WSAAccept
Windows 98WSAAccept
WSAAccept lpSQOS NULL QOS
SIO_SET_QOSWSAAccept
3. WSAJoinLeaf
WSAJoinLeaf 11
WSA_FLAG_MULTIPOINT_C_ROOTWSA_FLAG_MULTIPOINT_C_LEAFWSA_FLAG_
MULTIPOINT_D_ROOTWSA_FLAG_MULTIPOINT_D_LEAF
lpSQOS QoS
W S A J o i n L e a fI P QoS RSVP
F D _ Q O S
T T L SIO_MULTICAST_
S C O P EI P _ M U LT I C A S T _ T T L T T L T T L W S A J o i n L e a f
302 Winsock API
SIO_SET_QOS Ioctl Q o S Q o S
TTLQ o SS I O _ S E T _ Q O S T T L
TTL RSVP
QoS TTL
T T L R S V P T T L
I P
3 T T L = 3
W S A J o i n t L e a f T T L
R S V P T T L6 3
4. WSAIoctl
I / O S I O _ S E T _ Q O S W S A I o c t l
Q o S Q o S Q o S
W S A I o c t l Q o S
9 W S A I o c t l S I O _ S E T _
QOSSIO_GET_QOS
S I O _ S E T _ Q O S Q o S S I O _ S E T _ Q O S
W S A I o c t l
Q o S
WSAConnectSIO_SET_QOSWSAIoctl
R S V P
Q o S l p v I n B u ff e r Q o S c b I n B u ff e r
S I O _ G E T _ Q O S F D _ Q O S
S I O _ G E T _ Q O S W S A I o c t l
F D _ Q O S
Q o Sl p v O u t B u ff e r
c b O u t B u ff e r N U L L
0SIO_GET_QOS
QoS ProviderSpecific
WA S B U F Q o S l e n Q U E RY _ P S _ S I Z E b u f
NULL WSAIoctllen
l e n
Windows 2000 Windows 98
W S A I o c t l I / O S I O _ C H K _ Q O S
12-26 l p v I n B u ff e r DWORD
12 303
l p v O u t B u ff e r D W O R D
A L L O W E D _ TO _ S E N D _ D ATA PAT H
R E S V Q o S
A L L O W E D _ TO _ S E N D _ D ATA S I O _ C H K _ Q O SI / O
Q o S
Q o S 9 I / O
12-2 SIO_CHK_QOS
SIO_CHK_QOS
ALLOW_TO_SEND_DATA BOOL
RESV
ABLE_TO_RECV_RSVP RSVP BOOL
LINE_RATE DWORD
LOCAL_TRAFFIC_CONTROL TC BOOL
LOCAL_QOSABILITY QoS BOOL
END_TO_END_QOSABILITY QoS BOOL
1 2 - 2 10
I N F O _ N O T _ AVA I L A B L E
12.3 QoS
Q o S Q o S
RSVP
TC
closesocket
shutdown
WSAConnect
S E RV I C E T Y P E _ N O T R A F F I CS E RV I C E _ T Y P E _ B E S T E F F O RT
WSAIoctlSIO_SET_QOS
s h u t d o w n
S D _ S E N D
shutdown QoS
QoSProviderSpecific
F D _ Q O S Q o S
Q o S W S A I o c t l S I O _ S E T _ Q O S
QoS
Q O S _ O B J E C T _ H D R
304 Winsock API
S I O _ G E T _ Q O S Q o S
Q O S _ O B J E C T _ H D R
ObjectType O b j e c t L e n g t h
1 2 - 3
12-3
QOS_OBJECT_PRIORITY QOS_PRIORITY
QOS_OBJECT_SD_MODE QOS_SD_MODE
QOS_OBJECT_TRAFFIC_CLASS QOS_TRAFFIC_CLASS
QOS_OBJECT_DESTADDR QOS_DESTADDR
QOS_OBJECT_SHAPER_QUEUE_DROP_MODE QOS_SHAPER_QUEUE_LIMIT_DROP_MODE
QOS_OBJECT_SHAPER_QUEUE_LIMIT QOS_SHAPER_QUEUE_LIMIT
RSVP_OBJECT_STATUS_INFO RSVP_STATUS_INFO
RSVP_OBJECT_RESERVE_INFO RSVP_RESERVE_INFO
RSVP_OBJECT_ADSPEC RSVP_ADSPEC
RSVP_OBJECT_POLICY_INFO RSVP_POLICY_INFO
QOS_OBJECT_END_OF_LIST
1. QoS
Q o S 07
QOS_PRIORITY
3
F L O W S P E CServiceType
Packet Scheduler SendFlagsReceivePriority
2. QoS
QoS TCPacket Shaper
F L O W S P E C
12 305
FLOWSPECTokenRate
QOS_SD_MODE
ShapeDiscardMode 12-4
TC_NONCONF_DISCARD
F L O W S P E C
T C _ N O N C O N F _ S H A P E
12-4 QoS
TC_NONCONF_BORROW
S h a p e rS e q u e n c e r
To k e n R a t e
TC_NONCONF_SHAPE TokenRatePacket
Shaper
TC_NONCONF_DISCARD TokenRate
3. QoS
Q O S _ T R A F F I C _ C L A S S 2 8 0 2 . 1 p
Tr a ff i c C l a s s M A C
Qos.h
4. QoS
Q O S _ D E S TA D D R
W S A C o n n e c t
RSVP PATHRESV SIO_SET_QOSI/O
SocketAddress SOCKADDR
SocketAddressLengthSOCKADDR
5. QoS
Traffic Shaper
F L O W S P E C
DropMode 12-5
12-5
QOS_SHAPER_DROP_FROM_HEAD
QOS_SHAPER_DROP_INCOMING
6. QoS
QueueSizeLimit
7. RSVP
RSVP RSVP
S t a t u s C o d e R S V P 1 2 - 6
12 307
ExtendedStatus1ExtendedStatus2
12-6 RSVP
WSA_QOS_RECEIVERS RESV
WSA_QOS_SENDERS PATH
WSA_NO_QOS_RECEIVERS
WSA_NO_QOS_SENDERS
WSA_QOS_REQUEST_CONFIRMED
WSA_QOS_ADMISSION_FAILURE
WSA_QOS_POLICY_FAILURE
WSA_QOS_BAD_STYLE
WSA_QOS_BAD_OBJECT RSVP_FILTERSPEC
WSA_QOS_TRAFFIC_CTRL_ERROR FLOWSPEC
WSA_QOS_GENERIC_ERROR
ERROR_IO_PENDING
R S V P F D _ Q O S
S I O _ G E T _ Q O S Q o S R S V P _ S TAT U S _ I N F O
QoSUDP WSA_QOS_SENDERS
FD_QOS QoS
8. RSVP
RSVP RSVP Winsock 2 QoS API
R S V P _ R E S E RV E _ I N F O
QoS
S t y l e 1 2 - 7
C o n f i r m R e q u e s t R E S V
N u m P o l i c y E l e m e n t sP o l i c y E l e m e n t L i s t
R S V P _ P O L I C Y P o l i c y E l e m e n t L i s t
RSVP_POLICY
9. RSVP_DEFAULT_STYLE
QoS 12-7
WSAConnectUDP
308 Winsock API
12-7
UDP
UDP
10. RSVP_FIXED_FILTER_STYLE
QoS
U D P
N u m F l o w D e s c1F l o w D e s c L i s t
20Kbps
NumFlowDesc3FlowDescList FLOWSPEC
Q o S
U D P 1 2 - 1
F L O W D E S C R I I P TO R R S V P _ F I LT E R S P E CR S V P
12-1
11. RSVP_WILDCARD_STYLE
U D P W I L D C A R D T C P
U D P N u m F l o w D e s c 0
F l o w D e s c L i s tN U L L U D P
12. RSVP_SHARED_EXPLICIT_STYLE
N u m F l o w D e s c1F l o w D e s c L i s t
12-2
12 309
12-2
RSVP NumFlowDesc
F l o w D e s c L i s t
N u m F l o w D e s c F L O W D E S C R I P TO R F l o w D e s c L i s t
F l o w S p e c F L O W S P E C
N u m F i l t e r s F i l t e r L i s t R S V P _ F I LT E R S P E C
RSVP_FILTERSPEC
Type
FILTERSPEC
310 Winsock API
13. RSVP
RSVP_ADSPECRSVPAdspec RSVP
PAT H
RSVP MTU
G e n e r a l P a r a m s AD_GENERAL_PARAMS
I n t S e r v Aw a r e H o p C o u n tI n t S e r v ( h o p )
PathBandwidthEstimate
12 311
M i n i m u m L a t e n c y
P a t h M T UM T U
Flags
14. RSVP
R S V P
RSVP
N u m P o l i c y E l e m e n t P o l i c y E l e m e n t
RSVP_POLICY
R S V P _ P O L I C Y R S V P
12.4 QoS
Q o S R S V P RSVP PAT HR E S V
R S V P PAT H
FLOWSPEC
IP
IP
Q o S F L O W S P E C
W S A C o n n e c tW S A J o i n L e a fW S A I o c t lS I O _ S E T _ Q O S I P
U D P S I O _ S E T _ Q O S
I / O Q O S _ D E S TA D D R
RSVP RESV
FLOWSPEC
FLOWSPEC QoSWinsock
312 Winsock API
R S V P _ R E S E RV E _ I N F O
PAT H
R E S V PAT H
RESV UDP
QoS
R S V P Q o S
Q o S
Q o S
12.4.1 RSVP
WSAConnect
W S A C o n n e c t QOS_DESTADDR
SIO_SET_QOS SIO_SET_QOSQoS
UDP WSAConnect
SIO_SET_QOSI/O QOS_DESTADDR
S I O _ S E T _ Q O S
R E S V W S A C o n n e c t
Q O S _ D E S TA D D R
U D P W S A C o n n e c tS I O _ S E T _ Q O SI / O
W S A C o n n e c t S I O _ S E T _ Q O S
RESV RESV
W S A C o n n e c t S I O _ S E T _ Q O S
R E S V R S V P
RSVP QoS
2. TCP
T C P
12 313
Q o S W S A C o n n e c t PAT H
I / O S I O _ S E T _ Q O S
PATH
W S A A c c e p t
Q o S
S I O _ S E T _ Q O SW S A A c c e p t Q o S
Q o S W S A A c c e p t
Q o S
Q o S Windows 98
Windows 2000 Windows 98l p S Q O S
N U L L I / O S I O _ S E T _ Q O S Q o S
CF_ACCEPTWSAAccept QoS
T C P W S A C o n n e c t
FLOWSPEC QoS RESV
Q o SW S A C o n n e c tS I O _ S E T _ Q O SI / O
R E S V
W S A A c c e p t Q o S
QoSQoS
PAT H Q o S R E S V
3.
U D P
W S A J o i n L e a f W S A C o n n e c t
WSAJoinLeafQoS SIO_SET_QOS
RSVP RSVP PATH
W S A J o i n L e a f
R E S V Q o S
R E S V Q o S
RESV
PATHWSAJoinLeafQoSRESV
S I O _ S E T _ Q O S Q o S
Q o S sendto
W S A S e n d To Q o S
W S A J o i n L e a f
d w F l a g s J L _ S E N D E R _ O N LYJ L _ R E C E I V E R _ O N LYQ o S
314 Winsock API
Q o S
12.4.2 QoS
TCPUDPUDP QoS
R S V P R S V P
A P I T C P
W S A C o n n e c t R E S V R E S V A P I
F D _ Q O S
FD_QOS
QoS
QoS
QoS
1. FD_QOS
F D _ Q O S
WSAEventSelect
WSAAsyncSelect FD_QOS
Q o S F D _ Q O S
F D _ Q O S
Q o S Q o S F L O W S P E C
Q O S _ N O T _ S P E C I F I E DS E RV I C E T Y P E _ N O T R A F F I C
Q o S S E RVICE_NO_QOS_ SIGNALING
SERVICETYPE_NOTRAFFIC
8
W S A E v e n t S e l e c t
W S A E n u m N e t w o r k E v e n t s 8
Q o S
W S A N E T W O R K E V E N T S
lNetworkEvents
& i E r r o r C o d e
Q o S
0
12 315
F D _ Q O S
F D _ Q O S _ B I T i E r r o r C o d e
Wi n s o c kF D _ R E A D _ B I TF D _ W R I T E _ B I T
2. RSVP
QoS
Q o S W S A A s y n c S e l e c t
W S A E v e n t S e l e c tF D _ Q O S F D _ Q O S
W S A I o c t l S I O _ G E T _ Q O SI / O
F D _ Q O S I / O
WSAIoctlSIO_GET_QOS QoS
Q o S
QoS
QoS
F D _ Q O S I / OS I O _ G E T _ Q O S
F D _ Q O S W S A I o c t l
S I O _ G E T _ Q O SI / O Q o S
Q o S F L O W S P E C
ServiceType SERVICETYPE_NOCHANGE
QoS WSAIoctlSIO_GET_QOS
S O C K E T _ E R R O R W S A G e t L a s t E r r o r W S A E W O U L D B L O C K
S I O _ G E T _ Q O S F D _ Q O S
R S V P _ S TAT U S _ I N F O
W S A I o c t l
F D _ Q O S S I O _ G E T _ Q O S F D _ Q O S
Q o S Q o S
Q o S
F L O W S P E C
Q o S
Controlled Load
Q o S
Q o S F L O W S P E C
Q o S
S I O _ S E T _ Q O S Q o S
R S V P
316 Winsock API
Q o SQ o S
1 2 - 6
R S V P _ S TAT U S _ I N F O
Q o S S I O _ G E T _ Q O S R S V P _ S TAT U S _ I N F O
W S A E v e n t S e l e c t
WSAEnumNetworkEventsWSANETWORKEVENTS
1 2 - 6 i E r r o r C o d e F D _ Q O S _ B I T
Q o S
Q o S
Q o S
QoS
3. WSA_QOS_RECEIVERSWSA_QOS_NO_RECEIVERS
R E S V
WSA_QOS_RECEIVERS QoS
R E S V W S A _ Q O S _ N O _ R E C E I V E R S
F D _ C L O S EW S A _ Q O S _ N O _ R E C E I V E R S
WSA_QOS_RECEIVERS QoS
WSA_QOS_RECEIVERS
4. WSA_QOS_SENDERSWSA_QOS_NO_SENDERS
PAT H
PATHWSA_QOS_SENDERS
PATH WSA_QOS_NO_SENDERS
W S A _ Q O S _ S E N D E R S 0W S A _ Q O S _ N O _ S E N D E R S
5. WSA_QOS_REQUEST_CONFIRMED
Q o S R S V P _ S TAT U S _ I N F O
C o n f i r m R e q u e s t
Q o S
QoS SIO_SET_QOSI/O
12.4.3 QoS
Wi n s o c k Q o STe m p l a t e
12 317
G 7 11
H263QCIF QoSWSAGetQOSByName
l p Q O S N a m e
lpQOS
NULL
G711
QoS FALSEWSAEINVAL
T R U E Q o s t e m p l a t e . c Q o S
Q o S
W S C I n s t a l l Q O S Te m p l a t eW S C R e m o v e Q O S Te m p l a t e
QoS
WSCInstallQOS
Template GUIDQoSGUID
Uuidgen.exe WSCRemoveQOSTemplate
G U I D
318 Winsock API
TRUE
12.5
QoS TCP
U D P
U D P
W S A E v e n t S e l e c tW S A A s y n c S e l e c t T C P
U D P
PrintQosFindProtocolInfo
P r i n t q o s . cP r o v i d e r. c Q o S
QoS
12.5.1 TCP
TCP QoS
12 Qostcp.c
WSASelect 8
F D _ Q O S
S e r v e rC l i e n t
QoS
Q o SQ o S 1 2 - 8
Q o s t c p . c Q o S
S I O _ S E T _ Q O S QOS FLOWSPEC
S I O _ S E T _ Q O S
RSVP
Q o S Q o S W S A C o n n e c t
R S V P
Q o S Q o S W S A C o n n e c t
Q o S S E RV I C E _ N O _ Q O S _ S I G N A L I N G F L O W S P E C
S e r v i c e Ty p e O R S I O _ S E T _ Q O S W S A I o c t l
QoS RSVP
Q o S F D _ Q O S
F D _ Q O SQ o S F D _ Q O S F D _ Q O S
W S AWa i t F o r M u l t i p l e E v e n t s
W S A E n u m N e t w o r k E v e n t s
Q o s t c p . c F D _ R E A D F D _ W R I T E
12 319
FD_CLOSE 8 WSAEventSelect
F D _ W R I T E RSVP PAT H
WSA_QOS_RECEIVERS
R E S V F D _ Q O S
SIO_CHK_QOS WSA_QOS_RECEIVERS
W S A N E T W O R K E V E N T S i E r r o r C o d e
F D _ Q O S _ B I T
W S A I o c t l R S V P _ S TAT U S _ I N F O S I O _ G E T _ Q O SI / O
S t a t u s C o d e W S A _ Q O S _
RECEIVERS WSANETWORKEVENTS
RSVP_STATUS_INFO
Q o S
s c 0
n C o n n s
QoS
QoS QoS
A c c e p t E x F D _ A C C E P T
W S AWa i t F o r M u l t i p l e E v e n t s
0
W S A E n u m N e t w o r k E v e n t s
HandleClientEvents
FD_ACCEPT
W S A A c c e p t Q o S
Windows 98 Q o S N U L L Q o S
Windows 2000 Q o S Q o S
F D _ Q O S W S A _ Q O S _
R E C E I V E R S F D _ Q O S
FD_QOSQoS
12-1 TCPQostcp.c
12321
322Winsock API
12323
324Winsock API
12325
326Winsock API
12327
328Winsock API
12329
330Winsock API
12331
332Winsock API
12333
334Winsock API
12335
336 Winsock API
12-8 Qostcp.c
-q:[b,d,a,e] bda FD_QOSeQoS
-s
-c: IP IP
-w RESV
-r
12.5.2 UDP
UDPTCPUDPQosudp.c
Q o S
RSVP
QOS_DESTADDR W S A C o n n e c t
12 337
S I O _ S E T _ Q O S U D P
Q o S Q o S
W S A C o n n e c t Q o S Q o S
W S A C o n n e c t Q o S S I O _ S E T _ Q O S
QOS_DESTADDR FD_QOS
Q o S Q O S _ D E S TA D D R
S I O _ S E T _ Q O S S E RV I C E _ Q O S _ N O _ S I G N A L I N G S e r v i c e Ty p e
FLOWSPEC
QoS
QoSFD_QOS
U D P
Q o S
-r:IP
I P R S V P _ R E S E RV E _ I N F O
S e t Q o s R e c e i v e r s RSVP_FILTERSPEC
I P
IP
WSAConnect IP
U D P
W S A C o n n e c t W S A C o n n e c t I P
QoS
U D P T C P
QoSUDP IP
R S V PQ o S T C P
U D P W S A C o n n e c t
S I O _ S E T _ Q O S Q o S
I N A D D R _ A N Y 0 I P
WSAConnect
Q o S
12.5.3 UDP
Q o S Q o s m c a s t . c
W S A J o i n L e a f
Q o S
U D P
Q o S Q o S Q o S
338 Winsock API
W S A J o i n L e a f S I O _ S E T _ Q O S W S A I o c t l
QoS
U D P
- r :I P- f
se ff
- m
- s
-w WSA_QOS_RECEIVERS
- q QoS QoS
5 1 5 0
0
I P
U D P
QoS WSAJoinLeaf
IP_ADD_MEMBERSHIP
I P _ D R O P _ M E M B E R S H I P W S A J o i n L e a f
QoS
QoS
U D P R S V P
PATHRESV
12.6 ATMQoS
R S V PAT M
12.6 QoS
12.7
QoS
Q o S
RSVP
13
Raw Socket
I P Tr a c e r o u t eP i n g
I P I P
AT M
S O C K _ R AW Wi n s o c k
2 Microsoft Windows CE Windows 95
Winsock 2
I n t e r n e t I C M PI n t e r n e t
I G M P U D PI C M PP i n g
I P
I G M P Wi n 3 2 I G M P
2 IGMP
U D P I P _ H D R I N C L
I G M P
13.1
socketWSASocket
Wi n s o c kI P S O C K _ R AW
W S A P R O TO C O L _ I N F O 5
W S A E n u m P r o t o c o l s W S A P R O TO C O L _ I N F O
S O C K _ R AW I C M P
IP
13 341
Windows NTA d m i n i s t r a t o r s
S O C K _ R AW Windows 95Windows 98
Windows NT
1DWORD
I C M P I G M PU D PI P
IPIPPROTO_IGMPIPPROTO_UDPIPPROTO_IPIPPROTO_RAW
Windows NT 4 Windows 98Windows 95
Winsock 2 I G M P I C M P
I P P R O TO _ U D PI P P R O TO _ I PI P P R O TO _ R AW I P _ H D R I N C L
Windows 2000 I P _ H D R I N C L
I P I P P R O TO _ R AW T C P I P P R O TO _ T C P U D P
IPPROTO_UDP
I P
IP_HDRINCL
13.2 Internet
I n t e r n e t I C M P
I C M P I C M P
ICMP IP IP 13-1
ICMP ICMP IP
ICMP()
13-1 ICMP
I C M P
1 6 I C M P
I C M P I C M P 1 3 - 1
I C M P I C M PI P
I P 8 I C M P
P i n g
I C M P I C M P
T C PU D P I C M P
342 Winsock API
I C M P P i n g P i n g
13-1 ICMP
0 0 Echo Reply
3 0
1
2
3
4
5
6
7
8
9
10
11 TOS
12 TOS
13
14
15
4 0
5 0
1
2 TOS
3 TOS
8 0 Echo Request
9 0
10 0
11 0 TTL0
1 TTL0
12 0 IP
1
13 0
14 0
15 0
16 0
17 0
18 0
13.2.1 Ping
P i n g
I C M PEcho Request
P i n g
13343
Ping
1) SOCK_RAW IPPROTO_ICMP
2) ICMP
3) sendtoWSASendtoICMP
4) recvfromWSARecvfromICMP
I C M P
I C M P
1 3 - 1
P i n g . c I C M P
IP_OPTIONS
13-1 Ping.c
344Winsock API
13345
346Winsock API
13347
348Winsock API
13349
350Winsock API
13 351
Ping IP_OPTIONS
I P I C M P I P
I P I P
I P 4
4 I P v 4 4
I P v 6 Wi n d o w s
I P
9 IP
13.2.2 Traceroute
IP TracerouteWindows
Tracert.exe
I P P i n g
I P I P P i n g 9
I P
I n t e r n e t
9Traceroute
Traceroute UDP IP
TTL TTL1 TTL
0 I C M P
T T L 1 U D P I C M P
I C M P I P
T T L
I C M P
Tr a c e r o u t e
352 Winsock API
Tr a c e r o u t e P i n g
Traceroute
Tr a c e r o u t e U D P
TTLTTL ICMP
U D P I C M P
U D P U D P 7
I C M P S O C K _ R AW
I P P R O TO _ I C M PU D P T T LI P _ T T L
U D P I P _ H D R I N C LI PT T L
I C M P T T L
T T L I C M P P i n g
I C M P
I C M P Tr a c e r o u t e
Ping
13.3 Internet
Internet IGMPIP
11 Winsock
I G M P
2 2 4 . 0 . 0 . 2 I G M P
IGMP 1IGMPv12IGMPv2
RFC 111 2RFC 2236 1
1 3 - 2 1 1 3 - 3 2 8
32(DIP)
13-2 IGMPv1
13353
8IGMP 8 16IGMP
32(DIP)
13-3 IGMPv2
1 4 I G M P
I G M P 2 8 1
0.1 0
I G M P v 1 1 1 3 - 2
0 x 1
0 2 2 4 . 0 . 0 . 1
I G M P
0 x 2
1 3 - 3I G M P22 0 x 1 6
0x17 1
2IGMP
0 x 11 0 0 0 1 0 0 0 1
1 1
13-2 IGMP1
0x1
0x2
13-3 IGMP2
0x11
0x12 1
0x16 2
0x17
2 0 x 11 1
1
I G M PI C M P I P P R O TO _ U D P U D P
TCP IP TCPUDP
I P I P _ H D R I N C L
IP
I P
I P P R O TO _ R AW I P
U D P U D P
IP
I P _ H D R I N C L I P
I P 9
9 - 3 I P _ H D R I N C L I P U D P
8 1 3 - 4
1 6 U D P U D P
U D P
16 16
16UDP 16UDP
13-4 UDP
U D P
I P
U D P U D P I P
I P I P U D P
32IPIP
32IPIP
8
8
16UDP
U D P I PI C M P
1 61 0
1 3 - 5
3 2 U D P U D P
1 6 0
13 355
32IP
32IP
0 8 16UDP
16 16
16UDP 16UDP
()
13-5 UDP
13-2 IP
I P U D P
IP_HDRINCL
I P P R O TO _ U D P
Windows 2000 I P _ H D R I N C L I p h d r i n c . c
IP_HDRINCL IPUDP
13-2 UDP
356Winsock API
13357
358Winsock API
13359
360Winsock API
13 361
I P _ H D R I N C L I P
I P I P _ H D R 4
1 I P
4i p _ p r o t o c o l 0 x 11 U D P i p _ s r c a d d r I P
ip_destaddr IP
IP
U D P
U D P 0
U D P
U D P
b u f
362 Winsock API
memcpyIPUDP
s e n d t o I P _ H D R I N C L s e n d t ot o
IP
Iphdrinc.c 7 UDP
Receiver.c UDP
I P - i
I P Windows 2000
Iphdrinc.c
-ti IP IP
r e c v f r o m R e c e i v e r. c
S O C K A D D R _ I N r e c v f r o m
I P M i c r o s o f t 1 3 - 4
Iphdrinc IP/
13-4 Iphdrinc.c
-fi:xxx.xxx.xxx.xxx IPIP
-fp: IP
-ti:xxx.xxx.xxx.xxx IP IP
-tp: IP
-n: UDP
-m:
13.5
Winsock ICMPIGMP
IP_HDRINCL IP IP
14 Winsock 2
Winsock 2 Service Provider Interface, SPI Wi n s o c k
Winsock 2APIWi n s o c k A P I S P I 6 1 3
W i n s o c k 2 A P I Winsock 2 Wi n d o w s
Windows Open System ArchitectureWOSAWOSAWinsockWinsock
A P IWi n s o c kWi n s o c k T C P / I P
S P I1 4 - 1W s 2 _ 3 2 . d l lWinsock 2 D L LWi n s o c k
Winsock Winsock 2 SPI
Winsock 2
Winsock 2 Winsock 2
Winsock 2 Winsock 2
14.1 SPI
Winsock 2 SPI
Transport providers T C P / I P
Name space providers
Wi n 3 2 D L L Winsock 2W s 2 _ 3 2 . d l l
Winsock2 API
Winsock 2 SPI
WSPWinsock
NSP
WPUWinsock Ws2_32.dll
WSCWinsockWinsock 2
WSAInstallProvider SPI
Winsock 2 W s 2 _ 3 2 . d l l Wi n s o c k
S P I s e l e c tW S P S e l e c t
WSAConnectWSPConnectWSAAcceptWSPAccept Winsock
SPI
htonlhtonsntohlntohs Ws2_32.dll
WSA
inet_addrinet_ntoaIP Ws2_32.dll
Winsock 1.1IPgetXbyYWSAAsynGetXByY
WSACancelAsyncRequestgethostnameWs2_32.dll
Wi n s o c k W s 2 _ 3 2 . d l l
W S A E n u m P r o t o c o l sW S A I s B l o c k i n gW S A S e t B l o c k i n g H o o kW S A U n h o o k B l o c k i n g
SPI
Wi n s o c k W s 2 _ 3 2 . d l l S P I W S A G e t L a s t E r o r
WSASetLastError
WSACreateEventWSACloseEventWSASetEvent
WSAResetEventWSAWaitForMultipleEvents Win32
SPI
Winsock API Winsock 2
Ws2spi.hSPI
14.2
Winsock 2
T C P / I P
L a y e r e d
T C P / I P 1 4 - 2
Ws2_32.dll
S P I
WSPSend SPI
14Winsock 2 365
W S P S e n d W S P S e n d
S P I
Winsock I/O I / O 8
LSP
I P S D K
l a y e r e dM S D NS D K
M S D N S D K f t p : / / f t p . m i c r o s o f t . c o m / b u s s y s / Wi n S o c k /
winsock2/layered.zip
SPISPI
Winsock 2Ws2_32.dll
SPI Winsock Winsock
Ws2_32.dllWinsock 2 API
API
Ws2_32.dll
SPI
SPI
SPI
14-2
14.2.1 WSPStartup
14-1
API SPI
WSAAcceptaccept WSPAccept WSPAccept
WSAAddressToString WSPAddressToString
WSAAsyncSelect WSPAsyncSelect
bind WSPBind
WSACancelBlockingCall WSPCancelBlockingCall
WSACleanup WSPCleanup
closesocket WSPCloseSocket
WSAConnectconnect WSPConnect WSPConnect
WSADuplicateSocket WSPDuplicateSocket
WSAEnumNetworkEvents WSPEnumNetworkEvents
WSAEventSelect WSPEventSelect
WSAGetOverlappedResult WSPGetOverlappedResult
getpeername WSPGetPeerName
getsockname WSPGetSockName
getsockopt WSPGetSockOpt
WSAGetQOSByName WSPGetQOSByName
WSAIoctl WSPIoctl
WSAJoinLeaf WSPJoinLeaf
listen WSPListen
WSARecvrecv WSPRecv WSPRecv
WSARecvDisconnect WSPRecvDisconnect
WSARecvFromrecvfrom WSPRecvFrom WSPRecvFrom
select WSPSelect
WSASendsend WSPSend WSPSend
WSASendDisconnect WSPSendDisconnect
WSASendTosendto WSPSendto WSPSendTo
setsockopt WSPSetSockOpt
sbutdown WSPSbutdown
WSASocketsocket WSPSocket WSPSocket
WSAStringToAddress WSPStringToAddress
14.2.2
WSAStartup
14Winsock 2 367
wVersionRequested Windows Sockets SPI
W S P D ATA l p W S P D a t a W S P D ATA
wVersion Wi n s o c k wHighVersion
Wi n s o c k w Ve r s i o n
Wi n s o c k 7s z D e s c r i p t i o n U N I C O D E
SPI 256
W S P S t a r t u pl p P r o t o c o l I n f o W S A P R O TO C O L _ I N F O W
5
WinsockWSAPROTOCOL_INFOW Ws2.32_dllWinsock 2
Winsock 2
l p P r o t o c o l I n f o
W s 2 _ 3 2 . d l l
D L L
W S P S t a r t u p l p P r o t o c o l I n f o
W S A P R O TO C O L _ I N F O W P r o t o c o l C h a i n
ProtocolChain WSAPROTOCOLCHAIN
ChainLenWs2_32.dll
T C P / I P 2C h a i n E n t r i e s
1 4 . 2 . 7 W S A P R O TO C O L C H A I N
P r o t o c o l C h a i n
l p P r o t o c o l I n f o W S P S t a r t u p
W S P S t a r t u p W S A P R O TO C O L _ I N F O W
368 Winsock API
l p P r o t o c o l I n f o 1 4 - 1
lpProtocolInfo
14-1 WSPStartup WSAPROTOCOL_INFOW
14Winsock 2 369
W S P S t a r t u pU p c a l l Ta b l eW s 2 _ 3 2 . d l lS P I
Winsock 2I/O
Winsock I/O
W S P S t a r t u p lpProcTable 3 0S P I
3 0 1 4 - 1 S P I
API
l p E r r n o
Wi n s o c k W S P S e n d
WSAENOBUF
SPIWSPSendWSPSendToWSPRecvWSPRecvFromWSPIoctl
l p T h r e a d I d S P I
Winsock 1.1 s e n dr e c v
Winsock 2 Winsock 1.1 S P I
Winsock 2 s e n d W S A S e n d
W S A S e n d W S P S e n d1 4 - 1 S P IA P I
14.2.3
Wi n s o c k W S A S t a r t u pW S A C l e a n u p
W S P S t a r t u pW S P C l e a n u p A P I
W S P S t a r t u p
WSPCleanup WSPStartup
0 0
Ws2_32.dll
14.2.4
S P I W S P S o c k e tWSPAcceptW S P J o i n t L e a f
S P I I F S
370 Winsock API
I F S I F S I F S
IFS IFS
Winsock Winsock Win32 APIReadFileWriteFile
R e a d F i l eWr i t e F i l eWi n s o c k
IFS I/O
1. IFS
I F S Wi n s o c k
ReadFileWriteFile
M S D N
Device Development KitDDK
I F S I F S
IFS ( ) SPI
R e a d F i l eWr i t e F i l e W S P S e n d
WSPRecv IFS
I / O
I/O
IFS
I F S
W P U M o d i f y I F S H a n d l e S P I Wi n 3 2 A P I
ReadFileWriteFile I/O Winsock Ws2_32.dll
IFS WPUModifyIFSHandle
dwCatalogEntryId IDProposedHandleIFS
IFS
INVALID_SOCKET
lpErrno Winsock
2. IFS
IFS IFS WPUCreateSocketHandle
W P U C r e a t e S o c k e t H a n d l e I F S
Winsock ReadFileWriteFile I/O
14Winsock 2 371
Winsock 2 W S P R e c v
WSPSendI/OWPUCreateSocketHandle
d w C a t a l o g E n t r y I d I Dd w C o n t e x t
LSP
Wi n s o c k W P U Q u e r y S o c k e t H a n d l e C o n t e x t
dwContext
s SPI WPUCreateSocketHandle
l p C o n t e x t
W P U C r e a t e S o c k e t H a n d l e l p E r r n o
Wi n s o c k W P U C r e a t e S o c k e t H a n d l e
INVALID_SOCKETWPUQuerySocketHandleContextSOCKET_ERROR
8 Wi n s o c k I / O
I / O S P I
W s 2 _ 3 2 . d l l W S P S t a r t u pU p c a l l Ta b l e
I F S I / O
I / O
IFS
1.
Winsock 2 I / O I / O
I / O S P I
W S P R e c v
WSPRecv WSPRecv WSPRecv
WSPStartup dwCatalogEntryId
I Dl p l p f n C a l l b a c k
l p l p f n C a l l b a c k l p d w C o n t e x t
d w C o n t e x t W P U Q u e r y B l o c k i n g C a l l b a c k l p E r r n o
SOCKET_ERROR Winsock
2. select
select I/O W S P S e l e c t r e a d f d sw r i t e f d s
exceptfdsfd_setWSPSelect
fd_set SPIWSPSelect
I F S f d _ s e t S P I
W S P S e l e c t
f d _ s e t
W P U F D I s S e t F D _ I S S E T
8
s s e t
WSPSelect
14Winsock 2 373
I/O
f d _ s e t
S P I W s 2 s p i . h F D _ C L RF D _ S E T
F D _ Z E R O 8
14-2 WSPSelect
14-2 WSPSelect
374 Winsock API
3. WSAAsyncSelect
WSAAsyncSelect I/OWindows
SPIWSPAsyncSelect
s S P I h W n d
sIEvent wMsg
S O C K E T _ E R R O Rl p E r r n o
Wi n s o c k I E v e n t
14Winsock 2 375
8-3
SPI WSPAsyncSelect
W S PA s y n c S e l e c t S P I
WPUPostMessageSPI
WPUPostMessage
WSPAsyncSelect WSPAsyncSelect
WPUPostMessageSPI
4. WSAEventSelect
W S A E v e n t S e l e c t
WSPEventSelect SPI
s S P I h E v e n t O b j e c t
WSAEVENT slNetworkEvents
lpErrnoWinsock
376 Winsock API
S O C K E T _ E R R O R l N e t w o r k E v e n t s
WSAAsyncSelect I/O
I F S W S P E v e n t S e l e c t S P I
W P U Q u e r y S o c k e t H a n d l e C o n t e x t S P I
S P I W S P E v e n t S e l e c t S P I
I / O S P I
S P I
S P I
W S A A s y n c S e l e c t
lNetworkEvents
W S P E v e n t S e l e c t
S P I W P U S e t E v e n tS P I
h E v e n t W S P E v e n t S e l e c t
FALSElpErrno Winsock
5. OverlappedI/O
O v e r l a p p e d I / O I / O I / O
I / O S P IWi n s o c k
Win32I/O
WSPSend
WSPSendTo
WSPRecv
WSPRecvFrom
WSPIoctl
W S A O V E R L A P P E D
W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N E
WSATHREADID
I / O S P I
WSAOVERLAPPED
14Winsock 2 377
I / O S P I W S A O V E R L A P P E D I n t e r n a l
I n t e r n a l W S S _ O P E R AT I O N _ I N _
PROGRESSSPI WSPGetOverlappedResult
WSS_OPERATION_IN_PROGRESS
W S P G e t O v e r l a p p e d R e s u l t
I / O O ff s e t H i g hO ff s e tO ff s e t H i g h
Wi n s o c kO ff s e t W S P R e c vWSPRecvFrom I/O
slpOverlappedWSAOVERLAPPED
dwError I/O c b Tr a n s f e r r e d
lpErrno SOCKET_ERROR
Winsock WPUCompleteOverlapped RequestSPI
W S A O V E R L A P P E D I n t e r n a l H i g h c b Tr a n s f e r r e d
InternalWSS_OPERATION_IN_PROGRESS
I / O S P I W S P G e t O v e r l a p p e d R e s u l t
W S P G e t O v e r l a p p e d R e s u l t
I n t e r n a lI n t e r n a l H i g hO ff s e tO ff s e t H i g h
S P I W S A O V E R L A P P E D W S P G e t O v e r l a p p e d R e s u l t
SPIWSAOVERLAPPEDInternal Internal
378 Winsock API
W S S _ O P E R AT I O N _ I N _ P R O G R E S S
W S P G e t O v e r l a p p e d R e s u l tfWaitT R U E
SPI WSAOVERLAPPED fWait
FA L S E Wi n s o c kW S A _ I O _ I N C O M P L E T E
W S P G e t O v e r l a p p e d R e s u l t
l p c s Tr a n s f e rW S A O V E R L A P P E D I n t e r n a l H i g h
l p d w F l a g sW S A O V E R L A P P E D O ff s e t W S P R e c v
WSPRecvFrom
lpErrnoWSAOVERLAPPEDOffsetHigh
14-3 WSPGetOverlappedResult
14-3 WSPGetOverlappedResult
14Winsock 2 379
l p T h r e a d I d S P I WSATHREADID
I / O l p f n U s e r A p c W S A U S E R A P C
S P I
S P I W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N E
WSAUSERAPC
d w C o n t e x tS P I
dwContext WPUQueueApcdwContext
S P I W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N Ed w C o n t e x t
8
WPUQueueApcdwContext
Winsock
WSAOVERLAPPED
380 Winsock API
I/O
SPIWSAOVERLAPPED_
COMPLETION_ROUTINE
(3) Completion ports
Winsock 2 I / O W s 2 _ 3 2 . d l l 8
I / O
(4) I/O
SPI I/O
8 I / O
Windows NTWindows 2000
I/OWindows 95Windows 98
I/OI/O
WPUCreateEvent 8WSACreate
Event WPUCreateEvent
N U L Ll p E r r n o Wi n s o c k W S P R e s e t E v e n t
W S A R e s e t E v e n t h E v e n t s i g n a l e d
u n s i g n a l e dW P U C l o s e E v e n tW S A C l o s e E v e n t
L S P I / OS P I
I / O L S P Windows 2000 Windows NT Windows 98
Windows 95 I/O
I / O W S A _ M A X I M U M _
WAIT_EVENTS(64) 8 64
14.2.6
Wi n s o c kM s w s o c k . l i b Wi n s o c k1 4 - 2
14-2 Winsock
GUID
AcceptEx WSAID_ACCEPTEX
GetAcceptExSockaddrs WSAID_GETACCEPTEXSOCKADDRS
TransmitFile WSAID_TRANSMITFILE
WSARecvEx GUID
14Winsock 2 381
M s w s o c k . l i b A c c e p t E x G e t A c c e p t E x S o c k a d d r s
Tr a n s m i t F i l e S I O _ G E T _ E X T E N T I O N _ F U N C T I O N _ P O I N T E R
WSPIoctlWSPIoctl
d w I o C o n t r o l C o d e S I O _ G E T _ E X T E N S I O N _ F U N C T I O N _
POINTERlpvInBuffer GUID
M s w s o c k . l i b 1 4 - 2 G U I D
GUID lpvOutBuffer
SPI
1 4 - 2 W S A R e c v E x G U I D W S A R e c v E x
WSPIoctl WSARecv WSARecvEx
14.2.7
Winsock 2
Winsock 2
Winsock 2
Wi n s o c k
Winsock 2 W S 2 _ 3 2 . D L L
socketWSASocket API
W s 2 _ 3 2 . d l l
DLLDLL
Winsock 2
SPI WSC
WSCEnumProtocols
WSCInstallProvider
WSCWriteProviderOrder
WSCDeInstallProvider
W S A P R O TO C O L _ I N F O W
5
382 Winsock API
P r o v i d e r I dd w C a t a l o g E n t r y I dP r o t o c o l C h a i nP r o v i d e r I d G U I D
dwCatalogEntryId
W S A P R O TO C O L _ I N F O W P r o t o c o l C h a i n
W S A P R O TO C O L _ I N F O W
ProtocolChain WSAPROTOCOLCHAIN
C h a i n L e n ChainLen = 0
ChainLen = 1 ChainLen >1
protocol chain Wi n s o c k
1 4 - 2
C h a i n E n t r i e s 1 I D
Ws2_32.dll
C h a i n L e n0
Ws2_32.dll
1.
W S A P R O TO C O L _ I N F O W
ProtocolChainChainLen 1
WSCInstallProvider WSCInstallProvider
l p P r o v i d e r I d G U I D W i n s o c k
lpszProviderDllPath DLL
S y s t e m R o o t l p P r o t o c o l I n f o L i s t
W S A P R O TO C O L _ I N F O W W S A P R O TO C O L _
INFOWdwNumberOfEntrieslpProtocolInfoList
WSCInstallProviderSOCKET_ERRORlpErrno
2.
W S A P R O TO C O L _ I N F O W
0
1
W S P R O TO C O L _ I N F O W W S C E n u m P r o t o c o l s
WSPROTOCOL_INFOW
14Winsock 2 383
lpiProtocols lpiProtocolsNULL
lpProtocolBuffer
Winsock 2 W S A P R O TO C O L _ I N F O W
lpdwBufferLength WSCEnumProtocolslpProtocolBuffer
W S C E n u m P r o t o c o l s
SOCKET_ERRORlpErrno
WSAPROTOCOL_INFOW
W S C I n s t a l l P r o v i d e r
WSCEnumProtocols ID
W S C I n s t a l l P r o v i d e r
P F L _ H I D D E N W S A P R O TO C O L _ I N F O W
W S A E n u m P r o t o c o l s 5
X P 1 _ I F S _ H A N D L E S I F S
WPUCreateSocketHandle
W S A P R O TO C O L _ I N F O W X P 1 _ I F S _ H A N D L E S
X P 1 _ I F S _ H A N D L E S Wi n s o c k
ReadFileWriteFile
3.
Winsock 2
Wi n s o c k s o c k e tW S A S o c k e t
A F _ I N E T
S O C K _ S T E R E A M Winsock 2
T C P / I P W S C I n s t a l l P r o v i d e r
T C P / I P
T C P / I P
WSCWriteProviderOrder
lpwdCatalogEntryIdIDID
WSCEnumProtocolsIDdwNumberOfEntries
W S C Wr i t e P r o v i d e r O r d e r
ERROR_SUCCESS(0) Winsock
W S C Wr i t e P r o v i d e r O r d e r W s 2 _ 3 2 . d l l
S p o r d e r. l i b S p o r d e r. l i b Wi n d o w s D L L
M S D N
M S D N S p o r d e r. e x e
Winsock 2 14-3 Windows 2000
Winsock 2 Sporder.exe
14Winsock 2 385
14-3 Sporder.exe
4.
Winsock 2 WSCDeinstallProvider
l p P r o v i d e r I d G U I D S O C K E T _ E R R O R
lpErrno Winsock
I D
ID
Winsock 2
URL
Winsock 2
386 Winsock API
W S P S t a r t u p L S P
W S A P R O TO C O L _ I N F O W P r o t o c o l C h a i n . C h a i n L e n 1
14.3
1 0
Winsock 2
9 D L L N S P
1 0 R N R W S A S e t S e r v i c e
N S P S e t S e r v i c eD L L G U I D
14.3.1
D L L
WSCInstallNameSpace
W S A E n a b l e N S P r o v i d e rW S A U n I n s t a l l N a m e S p a c e
1. WSCInstallNameSpace
lpszIdentifier
WSAEnumNameSpaceProviders 10lpszPathName
D L L S y s t e m R o o t d w N a m e S p a c e
Nspapi.h
IPX SAPN S _ S A PdwVersion l p P r o v i d e r I d
GUID
14Winsock 2 387
W S C I n s t a l l N a m e S p a c e 0 S O C K E T _ E R R O R
W S A E I N VA L G U I D
WSAEACCESS
2. WSCEnableNSProvider
lpProviderIdGUID fEnable
WSCEnableNSProvider0SOCKET_ERROR
GUID WSAEINVAL
3. WSCUnInstallNameSpace
l p P r o v i d e r I d G U I D G U I D
WSAEINVAL
14.3.2
9 1 0R N R
D L L
D L L D L L
D L L
1 0
R N R
W S A Q U E RY S E TWSASERVICECLASSINFO
R N R A S C I I
Unicode ASCII
W S A Q U E RY S E T W S A L o o k u p S e r v i c e N e x t
Unicode ASCII
R N R
9 7 Winsock 2 RNR
1 4 - 3
388 Winsock API
G U I D
1 0 Wi n s o c k 2 R N R
W S A I n s t a l l S e r v i c e C l a s s
G U I D N S P I n s t a l l S e r v i c e C l a s s
14-3 Winsock 2
Winsock
WSAInstallServiceClass NSPInstallServiceClass
WSARemoveServiceClass NSPRemoveServiceClass
WSAGetServiceClassInfo NSPGetServiceClassInfo
WSASetService NSPSetService
WSALookupServiceBegin NSPLookupServiceBegin
WSALookupServiceNext NSPLookupServiceNext
WSALookupServiceEnd NSPLookupServiceEnd
1. NSPStartup
DLL NSPStartup
D L L D L L
lpProviderId GUIDlpnspRoutines
N S P _ R O U T I N E 8
8 NSP_ROUTINE
c b S i z e N S P _ R O U T I N E
dwMajorVersiondwMinorVersion
N S P S e t S e r v i c e
N S P S e t S e r v i c e
14Winsock 2 389
NSPStartup NSP_ROUTINE
N O _ E R R O R S O C K E T _ E R R O R
Wi n s o c k WSA_NOT_
ENOUGH_MEMORY WSASetLastErrorSOCKET_ERROR
D L L
N O _ E R R O R S O C K E T _ E R R O R
Winsock
R N R W S A G e t L a s t E r r o r0
0
2. NSPCleanup
DLL NSPStartup
G U I D
3. NSPInstallServiceClass
N S P I n s t a l l S e r v i c e C l a s s W S A I n s t a l l S e r v i c e C l a s s
NSPInstallServiceClass
G U I D l p S e r v i c e C l a s s I n f o W S A S E RV I C E -
C L A S S I N F O W W S A S E RV I C E -
CLASSINFOW GUID GUID
W S A E A L R E A D Y R N R
4. NSPRemoveServiceClass
N S P I n s t a l l S e r v i c e C l a s s
WSARemoveServiceClass
G U I D l p S e r v i c e C l a s s I d
G U I D l p S e r v i c e
ClassId WSATYPE_NOT_FOUND
5. NSPGetServiceClassInfo
NSPGetServiceClassInfo WSAGetServiceClassInfo GUID
390 Winsock API
WSANAMESPACE_INFOW
G U I Dl p d w B u f S i z e
lpService ClassInfo W S A S E RV I C E -
C L A S S I N F O W
G U I D
lpServiceClassInfo WSASERVICECLASSINFOW lpdwBufSize
WSATYPE_FOUND
lpdwBufSize WSAEFAULT
6. NSPSetService
N S P S e t S e r v i c e W S A S e t S e r v i c e
GUIDlpServiceClassInfo WSASERVICE-
C L A S S I N F O W l p q s R e g I n f o e s s O p e r a t i o n
dwControlFlags SERVICE_MULTIPLE
e s s O p e r a t i o n d w C o n t r o l F l a g s
1 01 0 . 3 W S A S e t S e r v i c e
NSPSetService
W S A S E RV I C E _
N O T _ F O U N D W S A Q U E RY S E T W
WSAEINVAL
NSPLookupServiceNext
N S P S e t S e r v i c e
7. NSPLookupServiceBegin
N S P L o o k u p S e r v i c e B e g i nN S P L o o k u p S e r v i c e N e x tN S P L o o k u p S e r v i c e E n d
W S A L o o k u p S e r v i c e B e g i n
14Winsock 2 391
G U I Dl p q s R e s t r i c t i o n s
WSAQUERYSETW lpServiceClassInfoWSASERVICE-
C L A S S I N F O W
d w C o n t r o l F l a g s
W S A L o o k u p S e r v i c e B e g i n 1 0
l p h L o o k u p
WSALookupServiceNextWSALookupServiceEnd
N S P L o o k u p S e r v i c e B e g i n
8. NSPLookupServiceNext
NSPLookupServiceBegin NSPLookupServiceNext
NSPLookupServiceNext
h L o o k u pW S A L o o k u p S e r v i c e B e g i n d w C o n t r o l F l a g s
L U P _ F L U S H P R E V I O U S
lpdwBufferLength lpqsResults
NSPLookupServiceNext hLookup
W S A L o o k u p S e r v i c e N e x t
NSPLookup WSALookupServiceNext
W S A L o o k u p S e r v i c e E n d
392 Winsock API
WSALookupServiceNext WSA_E_CANCELLED
9. NSPLookupServiceEnd
N S P L o o k u p S e r v i c e E n d
hLookup
W S A _ I N VA L I D _ H A N D L E
14.3.3
E x a m p l e s \ C h a r p t e r 1 4 \ N S P M y n s p . h
M y n s p . c p pM y n s p . d e f D L L D L L
Winsock DLL
M y n s p . c p p N s p s v c . c p pP r i n t o b j . c p pD L L
D L L
N s p s v c . hP r i n t o b j . h R n r c s . c
10
D L L
1.
Wi n s o c k D L L
l o o p b a c k1 2 7 . 0 . 0 . 1
I P
DNSDNSIP DHCP
T C P
U D P
2. DLL
14Winsock 2 393
DLL
GUIDGUIDMnsp.h
WSAQUERYSETdwNameSpace
10 GUID
Wi n s o c k
W S A E n u m N a m e S p a c e P r o v i d e r s
1 0 N S _ A L L
Wi n d o w s
MicrosoftInternet Explorer
G U I D
M y n s p . c p p N S P
N S P S t a r t u pN S P C l e a n u p
NSP_ROUTINE
1) NyNspConnect
2) 1
3) N S P L o o k u p S e r v i c e N e x t
N S P S e t S e r v i c e
WSAQUERYSET
4)
M y n s p . h M Y N S P _ S U C C E S S
MYNSP_ERROR
5)
NSPLookupService WSAQUERYSET
D L L N S P
W S A Q U E RY S E TW S A S E RV I C E C L A S S I D
1 4 - 4
marshaling data
394 Winsock API
W S A N A M E S PA C E I N F O
W S A Q U E RY S E T N s p s v c . c p p D L L
f o o b a r \0
WSASERVICECLASSINFO
14-4
3.
N s p i n s t a l l . c
D L L G U I D
D L L
GUID
4.
D L L
m a i n
D L L
14Winsock 2 395
DLL
DLL
WSASERVICECLASSINFO
WSAQUERYSET RNR
D L L m a i n L o o k u p S e r v i c e C l a s s
M y n s p s v c . c p p S e r v i c e C l a s s e s
WSASERVICECLASSINFO G U I D
D L L W S A E A L R E A D Y
dwNumServiceClasses
m a i n L o o k u p S e r v i c e C l a s s
Winsock 2
W S A S E RV I C E C L A S S I N F O W S A Q U E RY
S e r v i c e s d w N u m S e r v i c e
WSALookup
ServiceNext
WSALookupServiceNextServices
WSALookupServiceNext
5.
R n r c s . c 1 0
NS_MYNSP
R n r c s . c I P
S O C K A D D R
10
6.
Nspinstall.exe install
396 Winsock API
M y n s p . d l l S y s t e m R o o t\ S y s t e m 3 2
Mynspsvc.exe
R n r c s . e x e 1 4 - 4
14-4
Rnrcs.exe -s:ASERVICE ASERVICE
Rnrcs.exe -s:BSERVICE BSERVICE
Rnrcs.exe -c:*
Rnrcs.exe -c:BSERVICE BSERVICE
Rnrcs.exe -c:ASERVICE -d ASERVICE
Rnrcs.exe -c:BSERVICE -d BSERVICE
Rnrcs.exe -c:*
Winsock 2W s 2 _ 3 2 . d l lA P IS P I
MSDNSDK Dt_dllDt_dll2
S P I
APISPI
Winsock 2W s 2 _ 3 2 . d l l
b u i l d M s s d k \ B i n \ D e b u g \ Wi n s o c kM S D NS D K
S y s t e m R o o tS y s t e m 3 2 W S 2 _ 3 2 . D L L
Winsock
MSDN Dt_dll
DLLDt_dll.dll Dt_dll.dllWinsock
Winsock
2 API SPI
14.5
Wi n s o c k Microsoft Vi s u a l
Basic Wi n s o c k Wi n s o c k Wi n s o c k
VisualBasicWinsock Visual Basic
RAS Winsock
Wi n s o c kVisual Basic
Visual BasicVisual Basic Winsock.bas
Visual Basic Wi n s o c k
Winsock
15.1
1 5 - 1
7 7
Wi n s o c k Winsock API
P r o t o c o l
S O C K _ S T R E A M
S O C K _ D G R A M
S o c k e t H a n d l e
D L L
Winsock APIState
398 Winsock API
15-2
15-1 Winsock
BytesReceived Long
GetData
LocalHostName String
LocalIP String IP
LocalPort Long 0
0
Protocol Long T C PU D P
s c k T C P P r o t o c o l T C P
sckUDPProtocolUDP 01
RemoeHost String
RemoteHostIP String IP TCP
U D P
D a t a A r r i v a l
IP
RemotePort Long
SocketHandle Long
State Integer 1 5 - 2
15-2
sckClosed 0
sckOpen 1
sckListening 2
sckConnectionPending 3
sckResolvingHost 4
sckHostResolved 5
sckConnecting 6
sckConnected 7
sckClosing 8
sckError 9
15.2
Wi n s o c k Wi n s o c k
GetDataSendDataGetData
DataArrival GetDataSendData
P e e k D a t a Wi n s o c k
r e c v M S G _ P E E K
15Visual Basic Winsock 399
15-3
15-3 Winsock
Accept RequestID Void TCP ConnectionRequest
Bind LocalPort, LocalIP Void IP
B i n dB i n d L i s t e n
Close Void
Connect RemoteHost Void R e m o t e P o r t
RemotePort RemoteHost TCP
GetData DataType Void Ty p eM a x L e n
MaxLen Ty p e M a x L e n
GetDataMaxLen
Listen Void L i s t e n
TCP
PeekData DataType Void G e t D a t a
MaxLen
SendData Data Void UNICODE
A N S I
15.3
Vi s u a l
B a s i c Wi n s o c k
T C P
TCPHalf-close
F I N A C K F I N
C l o s e Wi n s o c k
Close
15-4 Winsock
15-4 Winsock
Close
Connect Connect
ConnectionRequest RequestID
DataArrival bytesTotal
Error NumberDescriptionScode Winsock
SourceHelpFileHelpContext
CancelDisplay
SendComplete
SendProgress bytesSentbytesRemaining
400 Winsock API
15.4 UDP
U D P C h a p t e r 1 5
S o c k U D P. v b pVisual Basic
1 5 - 1 U D P
1 5 - 1
Winsock
15-1 UDP
Wi n s o c k
Wi n s o c k
I P R e m o t e H o s t
I P
U D P
txtSendLocalPort
0
t x t S e n d D a t a
Winsock
Close Socket
15-1 UDP
15Visual Basic Winsock401
402Winsock API
15Visual Basic Winsock 403
15.4.1 UDP
F o r m _ L o a d _ s o c k s e n d Wi n s o c k P r o t o c o l
UDPsckUDPProtocol cmdCloseSend
C l o s e Wi n s o c k
c m d S e n d D g r a m _ C l i c k
U D P
U D P
UDP Winsock sckClosedsckOpen
40020
Invalid operation at current state
Winsock
S e n d D a t a
SendData
UDP cmdCloseSend
s o c k S e n d _ E r r o r Wi n s o c k Wi n s o c k
U D P
WinsockUDP UDP
F o r m _ L o a d U D P Wi n s o c k
P r o t o c o l U D P Close Listen
Winsock connect
UDP c m d L i s t e n _ C l i c k L i s t e n
U D P Wi n s o c k B i n d
U D P U D P
Wi n s o c k c m d L i s t e n
s o c k R e c v U D P U D P
D a t a A r r i v a l s o c k R e c v _ D a t a A r r i v a l
b y t e s To t a l
G e t G e t D a t a
Visual Basicv b S t r i n g
bytesTotal bytesTotal
I P U D P
R e m o t e H o s t I PR e m o t e P o r t I P
UDP
U D P c m d C l o s e L i s t e n _ C l i c ks o c k R e c v _ E r r o r
cmdCloseListen_Click Winsock
C l o s e U D P Wi n s o c k
s o c k R e c v _ E r r o r U D P
UDP
15.4.3 Winsock
15Visual Basic Winsock 405
15.4.4 UDP
U D P
L i s t e n
Recipients Name/IP IP
I P S e n d
D a t a g r a m
Winsock InformationWi n s o c k
IPSender
I P
1 5 7 . 5 4 . 1 8 5 . 1 8 61 5 7 . 5 4 . 1 8 5 . 2 2 4I P
1 6 9 . 2 5 4 . 2 6 . 11 3 1 5 7 . 5 4 . 1 8 5 . 2 0 6
1 5 7 . 5 4 . 1 8 5 . 2 5 5 U D P
B i n d I P
I P B i n d
IP WinsockLocalIP IP
IP
Listen
I P
157.54.185.255Send Data
2 5 5 . 2 5 5 . 2 5 5 . 2 5 5
Send Datagram
U D P
15.4.5 UDP
Winsock
1 5 - 2
U D P
406 Winsock API
sckClosed
SendData
GetData
PeekData
sckOpen
SendData
GetData
PeekData sckError
sck-
Resolved
(IP)
SendData
sck-
GetData sckClosed Resolving-
PeekData Host
15-2 UDP
15.5 TCP
Wi n s o c k T C P U D P
U D P
TCP TCP
1 5 - 3 1 5 - 2
15 Visual Basic
SockTCP.vbp
1 5 - 3
TCP ServerTCPTCP ClientTCPWinsock Information
Wi n s o c k T C P
txtServerPort
Wi n s o c k s o c k S e r v e r
I n d e x0 Wi n s o c k
0 0
Winsock
Wi n s o c k Wi n s o c k
7
Winsock
xWi n s o c k
15Visual Basic Winsock407
x
x
Winsock
Winsock
15-3 TCP
15-2 TCP
408Winsock API
15Visual Basic Winsock409
410Winsock API
15Visual Basic Winsock411
412 Winsock API
15.5.1 TCP
1 5 - 2
Form_Load IP
WinsockUDP
sockServer TCPWinsock 0
Close Listen
ListViewlstStates
Winsock
12 Winsock
Local Server
U D P
L i s t e n
L i s t e n c m d L i s t e n L o c a l P o r t
t x t S e r v e r P o r t
L o c a l P o r t
L i s t e nL i s t e n s o c k S e r v e r
sockServerConnectionRequest
Close Listen sockServerClose Listen
sockServer(0)Close
T C P C o n n e c t i o n R e q u e s t
15Visual Basic Winsock 413
r e q u e s t I D
A c c e p t r e q u e s t I D
S o c k T C P
Wi n s o c k 0
s c k C l o s e d
S t a t e
f r e e S o c k 0
Winsock ServerIndex
Winsock IDrequestID
Accept lstStatesListView
Winsock
Wi n s o c k
A c c e p t
Wi n s o c k
C l o s e
s o c k S e r v e r _ C l o s e
L i s t Vi e w I P - - - . - - - . - - - . - - - - 1
s o c k S e r v e r _ D a t a A r r i v a l G e t D a t a
l s t M e s s a g e s E r r o r
15.5.2 TCP
F o r m _ L o a d
s o c k C l i e n t T C P
C o n n e c t c m d C o n n e c t _ C l i c kL o c a l P o r t0
R e m o t e H o s tR e m o t e P o r t t x t S e r v e r N a m e
txtPort TCP
C o n n e c t
s c k R e s o l v i n g H o s ts c k R e s o l v e ds c k C o n n e c t i n g
s c k C o n n e c t e d C o n n e c t
s o c k C l i e n t _ C o n n e c t S e n d D a t a
D i s c o n n e c t
lstStates ListView
414 Winsock API
sockClient_ClosesockClient_ErrorsockClient_Close
WinsocksockClient_Error
Send Data D i s c o n n e c t
cmdSendData_ClickSend Data
Wi n s o c k t x t S e n d D a t a S e n d D a t a
Disconnect cmdDisconnect_Click
lstStates ListVi e w Local Client
15.5.3 Winsock
T C P Wi n s o c k
UDP Winsock
5 0 0 lstStates ListVi e w
Local Client Wi n s o c k
s o c k C l i e n t L o c a l S e r v e r
Wi n s o c ks c k S t a t e s
I P I P - - - . - - - . - - - . - - -
- 1
IP
15.5.4 TCP
TCP TCP
T C P
T C P L i s t e n State Information
L i s t Vi e w Local Server s c k C l o s e d
sckListening 5150
Server Name
C o n n e c t S t a t e
I n f o r m a t i o n Local Client s c k C o n n e c t e d
IPsckConnected
M e s s a g e Send Data
M e s s a g e D i s c o n n e c t
State Information Local Client
s c k C l o s e d- 1
I P s c k C l o s e d
- 1
15Visual Basic Winsock 415
Server Name
Winsock
Winsock
Socket Information
I P I P
15.5.5 TCP
TCPWindowsUDPTCP
1 5 - 4 T C P s c k C l o s e d
s c k C l o s i n g T C P S e n d D a t a
T C P C l o s e
C l o s e s c k C l o s i n g
S e n d D a t a s c k C l o s i n g C l o s e
S e n d D a t a s c k E r r o r C l o s e
SendData
GetData
PeekData
sckClosed sckListening sckClosing
sck-
GetData Connection-
SendData Pending
PeekData GetData
() SendData
PeekData
SendData
sck-
Resolving- sckError
Host
SendData
SendData GetData
GetData PeekData
sck- sck- PeekData sck-
(IP)
Resolved Connecting Connected
15-4 TCP
15.6
Wi n s o c k
416 Winsock API
Visual Basic 5.0
SP 2
S e n d D a t a C l o s eC l o s e S e n d D a t a
S e n d C o m p l e t e S e n d D a t a
Close Close
1 0 0 0 S e n d C o m p l e t e
15.7
614 Winsock
Winsock
1.
B i n d C o n n e c t
T C P
TIME_WAIT
L o c a l P o r t
0 LocalPort
L o c a l P o r t
0
2.
15Visual Basic Winsock 417
Invalid operation at current state
Winsock
15-215-4UDPTCP
Wi n s o c k E r r o r Wi n s o c k
Wi n s o c k 7
C Winsock
7 Windows CE Wi n s o c k Wi n d o w s
C EWi n s o c k C o n n e c t
C o n n e c t C o n n e c t
C o n n e c t i o n R e q u e s t R e q u e s t I D
A c c e p t C o n n e c t i o n R e q u e s t
Windows CEWi n s o c k
Winsock Windows CE 15-
Windows CE Winsock
15-3 Windows CE Winsock
418Winsock API
15Visual Basic Winsock419
420Winsock API
15Visual Basic Winsock421
1 5 - 3
1 5 - 2 S o c k T C P
Windows CE Winsock
T C P
15.8.2
VBCE Wi n s o c k Wi n s o c k
s c k
An error
was encountered while running this program
VBCE
422 Winsock API
15.9
Visual Basic Wi n s o c k Wi n s o c k
Visual Basic 5.0
Visual Basic Visual Basic
Winsock
Winsock DLL
Winsock Visual Basic Ws2_32.dllWinsock
Chapter07\VBSimpleTCPSimpleUDP
Winsock.bas
Microsoft Wi n d o w s A P I
OSI
Remote Access
Service, RAS
16 RAS
Wi n d o w s R A S
R A S
R A S
DUN
D U N R A S
RAS
P P PIP IPX NetBEUI
S L I P I P
N e t B E U IWindows NT 3.1Windows for Workgroups3.11
NetBEUI
R A S R A S
T C P / I PI P X R A S
R A S Windows 95 Windows 98 Windows 2000
Windows NTRAS
R A S
R A S L A N
LAN
R A S
R A S
RAS API R A S R A S Wi n d o w s
2000Windows NT RAS Windows NT
424
RAS Windows NT
R A SR A SWindows NT R A S
Windows NT Wi n d o w s
9 5Windows 98 R A S R A S
R A S R A S
16.1
RAS
R a s . hRAS API
Raserror.hRAS API
R a s a p i 3 2 . l i bRAS API
R a s e r r o r. h
R A S R A S
RasGetErrorString RAS
RasGetErrorString
u E r r o r Va l u e R A S R A S
l p s z E r r o r S t r i n g
u E r r o r Va l u e
E R R O R _ U N S U F F I C I E N T _ B U F F E R
256 RAS
cBufSizelpszErrorString
16.2
R A S
W I N V E R Windows CESDK
16RAS 425
WINVER Windows CERAS dwSize
R A S R A S
R A S W I N V E R
Windows 95Windows 98Windows 2000Windows NT
WINVER = 0X400 RAS Windows 95Windows 98
Windows NT 4
WINVER = 0X401 RAS Windows NT
WINVER = 0X500 RAS Windows 2000
R A S
Windows CE
16.4 RASDIAL
RAS R a s D i a lR a s D i a l
R A S
l p R a s D i a l E x t e n s i o n s R A S D I A L E X T E N S I O N S
RasDial Windows 95Windows 98
Windows CE N U L LR A S D I A L E X T E N S I O N S
426
W I N V E R
d w S i z e R A S D I A L E X T E N S I O N S
d w f O p t i o n s R a s D i a l 1 6 - 1
h w n d P a r e n t N U L L
r e s e r v e d 0
r e s e r v e d 1 Windows 2000 RAS 0
R a s E a p I n f oWindows 2000E A P
EAP
16-1 RasDial
RDEOPT_UsePrefixSuffix RasDial
RDEOPT_PausedStates R a s D i a l
RDEOPT_IgnoreModemSpeaker RasDialRAS Modem
RDEOPT_SetModemSpeaker R D E O P T _ I g n o r e M o d e m S p e a k e r
Modem
RDEOPT_IgnoreSoftwareCompression RasDial
RDEOPT_SetSoftwareCompression RDEOPT_IgnoreSoftwareCompression
RDEOPT_PauseOnScript RasDialDlg
R A S D I A L PA R A M S l p R a s D i a l P a r a m s R a s D i a l
16RAS 427
RASDIALPARAMS
d w S i z e R A S D I A L PA R A M S
RAS WINVER
s z E n t r y N a m e R a s D i a l
l p s z P h o n e b o o k
R A S M o d e m
R a s D i a l
R a s D i a l M o d e m
szPhoneNumber
s z P h o n e b o o k N u m b e r s z E n t r y N a m e
s z C a l l b a c k N u m b e r R A S
R A S
s z U s e r N a m e R A S
s z P a s s w o r d R A S
d w S u b e n t r y Windows 2000Windows NT
s z D o m a i n R A S
RAS
d w C a l l b a c k I d R a s D i a l F u n c 2
R a s D i a ld w N o t i f i e rl p v N o t i f i e r R a s D i a l
R a s D i a l l p h R a s C o n n
H R A S C O N N R A S R a s D i a l N U L L
RasDial RAS
RasDial RasDial
RasDial RasDial
16.4.1
R a s D i a ll p v N o t i f i e rN U L LR a s D i a l l p v N o t i f i e r
N U L Ld w N o t i f i e r Ty p e R a s D i a l
1 6 - 1 R a s D i a l
RAS
16-1 RasDial
428
16.4.2
R a s D i a l R a s D i a ll p v N o t i f i e r
N U L LR a s D i a l
RAS RasDial lpcNotifier
R a s D i a l
Wi n d o w sR a s D i a ld w N o t i f i e r Ty p e
l p v N o t i f i e r d w N o t i f i e r Ty p e 1 6 - 2
16-2 RasDial
0 lpvNotifierRasDialRasDialFunc
1 lpvNotifierRasDialRasDialFunc1
2 lpvNotifierRasDialRasDialFunc2
0xFFFFFFF lpvNotifierRasDial
16-2lpvNotifier RasDial
RasDialFuncRasDialFunc1RasDialFunc2RasDialFunc
u n M s g W M _ R A S D I A L E V E N T
r a s c o n n s t a t e R a s D i a l 1 6 - 3
16RAS 429
dwErrorRAS
1 6 - 3 R a s D i a l
RasDial
R a s D i a l
RASDIALEXTENSIONS RDEOPT_PausedStates
16-3 RAS
RASCS_OpenPort
RASCS_PortOpened
RASCS_ConnectDevice
RASCS_DeviceConnected
RASCS_AllDevicesConnected
RASCS_Authenticate RAS
RASCS_AuthNotify
RASCS_AuthRetry
RASCS_AuthCallback
RASCS_AuthChangePassword RAS
RASCS_AuthProject
RASCS_AuthLinkSpeed
RASCS_AuthAck
RASCS_ReAuthenticate
RASCS_Authenticated
RASCS_PrepareForCallback
RASCS_WaitForModemReset Modem
RASCS_WaitForCallback
RASCS_Projected
RASCS_StartAuthentication Windows 95
Windows 98
RASCS_CallbackComplete Windows 95Windows 98
RASCS_LogonNetwork Windows 95
Windows 98
RASCS_SubEntryConnected R a s D i a l F u n c 2
dwSubEntry
RASCS_SubEntryDisconnected R a s D i a l F u n c 2
dwSubEntry
RASCS_RetryAuthentication RasDial
RASCS_CallbackSetByCaller RasDial
RASCS_PasswordExpired RasDial
RASCS_InvokeEapUI Windows 2000 R a s D i a l
EAP
RASCS_Connected RAS
RASCS_Disconnected RAS
430
RASDIALPARAMS
R a s D i a l
RAS RasDial RasDial
RASDIALPARAMS
R a s D i a l lphRasConn
l p v N o t i f i e r R a s H a n g U p
R a s D i a l
RASDIALPARAMS
R a s D i a l F u n c
RasDialRasDial
()R a s D i a l R a s H a n g U p
R a s D i a l
R a s D i a l 1 6 - 2
RasDial
16-2 RasDial
16RAS 431
16-2 RasDialFunc1RasDialFunc2
RasDialFunc1 RasDialFunc
h b r a s c o n nd w E x t e n d e d E r r o rh b r a s c o n n R a s D i a l
dwExtendedError dwError
E R R O R _ S E RV E R _ N O T _ R E S P O N D I N Gd w E x t e n d e d E r r o r N e t B I O S
E R R O R _ N E T B I O S _ E R R O Rd w E x t e n d e d E r r o rN e t B I O S
E R R O R _ A U T H _ I N T E R N A Ld w E x t e n d e d E r r o r
432
E R R O R _ C A N N O T _ G E T _ L A N Ad w E x t e n d e d E r r o rR A S
RasDialFunc2RasDialFunc1 dwCallbackId
d w S u b E n t r yd w C a l l b a c k I d
RASDIALPARAMSdwCallbackId RasDial
dwSubEntry RasDialFunc2
16.4.3
R A S R a s C o n n e c t i o n N o t i f i c a t i o n
RAS
h r a s c o n n R a s D i a l h E v e n t
CreateEvent dwFlags
R A S C N _ C o n n e c t i o n R A S h r a s c o n n I N VA L I D _
HANDLE_VALUE RAS
R A S C N _ D i s c o n n e c t i o n R A S h r a s c o n n INVALID_
HANDLE_VALUE
R A S C N _ B a n d w i d t h A d d e d
R A S C N _ B a n d w i d t h R e m o v e d
1 6 - 3
Wi n 3 2
WaitForSingleObject
16.4.4
RasDial RasHangUp
h r a s c o n n h a s D i a l
R A S
R a s G e t C o n n e c t i o n S t a t u s
RasGetConnectionStatus
16RAS 433
h r a s c o n n R a s D i a l l p r a s c o n n s t a t u s R A S C O N N S TAT U S
RASCONNSTATUS
d w S i z eR A S C O N N S TAT U S
r a s c o n n s t a t e1 6 - 3
d w E r r o rR a s G e t C o n n e c t S t a t u s0 R A S
szDeviceType
s z D e v i c e N a m e
R A S C S _ D i s c o n n e c t e d
R a s G e t C o n n e c t i o n S t a t u s
16.5
R A S
R A S E N T RY
Windows 95 Windows 98
Windows CE Windows NTWindows 2000
.PBK RASENTRY
434
d w S i z e R A S E N T RY
d w f O p t i o n s 16-4
16-4 RASENTRY
RASEO_Custom Windows 2000
RASEO_DisableLcpExtensions RAS RFC 1570PPP LCP
RASEO_IpHeaderCompression RASPPP IP
RASEO_ModemLights Windows 2000
RASEO_NetworkLogon Windows 95Windows 98RAS
RAS
RASEO_PreviewDomain Windows 2000RAS
RASEO_PreviewPhoneNumber Windows 2000RAS
RASEO_PromoteAlternates R A S
RASEO_RemoteDefaultGateway R A S I P
RASEO_RequireCHAP Windows 2000CHAP
RASEO_RequireDataEncryption
RASEO_RequireEncrytedPw
RASEO_RequireEAP Windows 2000 EAP
RASEO_RequireEncryptedPw PPP
PAPCHAPShiva SPAP
16RAS 435
()
RASEO_RequireMsCHAP Windows 2000 CHAP
RASEO_RequireMsCHAP2 Windows 2000 CHAP2
RASEO_RequireMsEncryptedPw R A S E O _ R e q u i r e E n c r y p t e d P w R A S
CHAP
RASEO_RequirePAP Windows 2000 PAP
RASEO_RequireSPAP Windows 2000 SPAP
RASEO_RequireW95MSCHAP Windows 2000CHAPWindows 95
RAS
RASEO_ReviewUserPW Windows 2000RAS
RASEO_SecureLocalFiles Windows 2000Windows NT R A S
RASEO_SharedPboneNumbers Windows 2000
RASEO_ShowDialingProgress Windows 2000RAS
RASEO_SpecificIpAddr RASipaddr IP
RASEO_SpecificNameServers R A S i p a d d r D n si p a d d r D n s A l ti p a d d r Wi n s
ipaddrWinsAlt IP
RASEO_SwCompression RAS
RASEO_TerminalAfterDial RAS
RASEO_TerminalBeforeDial RAS
RASEO_UseCountryAndAreaCodes RASdwCountryIDdwCountryCodeszAreaCode
szLocalPhoneNumber
RASEO_UseLogonCredentials R A S
R A S E O _ R e q u i r e d M s E n c r y p t e d P w
d w C o u n t r y I DR A S E O _ U s e C o u n t r y A n d A r e a C o d e s
TA P I R a s G e t C o u n t r y I n f o
C o u n t r y C o d e R A S E O _ U s e C o u n t r y A n d A r e a C o d e s
d w C o u n t r y I D 0 Wi n d o w s
dwCountryID
s z A r e a C o d e R A S E O _ U s e C o u n t r y A n d A r e a C o d e s
s z L o c a l P h o n e N u m b e r RASEO_UseCountry-
AndAreaCodesRASdwCountryIDdwCountryCodeszAreaCode
d w A l t e r n a t e O ff s e t RAS
i p a d d r R A S E O _ S p e c i f i c I p A d d r I P
i p a d d r d n s R A S E O _ S p e c i f i c N a m e S e r v e r s
DNSIP
436
i p a d d r D n s A l t R A S E O _ S p e c i f i c N a m e S e r v e r s
DNSIP
i p a d d r D Wi n s R A S E O _ S p e c i f i c N a m e S e r v e r s
WINSIP
i p a d d r D Wi n s A l t R A S E O _ S p e c i f i c N a m e S e r v e r s
WINSIP
d w F r a m e S i z e d w F r a m i n g P r o t o c o l R A S F P _ S l i p
10061500
d w f N e t P r o t o c o l s
N e t B E U IR A S N P _ N e t B E U I I P XR A S N P _ I p x I P
RASNP_Ip
d w F r a m i n g P r o t o c o l R A S
PPPRASFP_PppSLIPRASFP_Slip
s z S c r i p t S c r i p t
s z A u t o d i a l D l l D L LD L L R A S a u t o d i a l
RAS
s z A u t o d i a l F u n cs z A u t o d i a l D l l D L L
szDeviceType 16-5
16-5 RAS
RASDT_Modem COM
RASDT_Isdn ISDN
RASDT_X25 X.25
RASDT_Vpn VPN
RASDT_Pad /
RASDT_Generic
RASDT_Serial
RASDT_FrameRelay
RASDT_Atm ATM
RASDT_Sonet SONET
RASDT_SW56 56-Kbps
RASDT_Irda
RASDT_Parallel
s z D e v i c e N a m e TA P I R a s E n u m D e v i c e s
TAPI
szX25PadType X.25 PAD
s z X 2 5 A d d r e s s X . 2 5
s z X 2 5 F a c i l i t i e s X . 2 5
s z X 2 5 U s e r D a t aX . 2 5
d w C h a n n e l s
16RAS 437
d w R e s e r v e d 1 0
d w R e s e r v e d 2 0
d w S u b E n t r i e s
0R a s S e t S u b E n t r y P r o p e r t i e s
d w D i a l M o d eWindows 2000 R A S E D M _ D i a l A l lR A S E D M _ D i a l A s N e e d e d
R A S
RASEDM_DialAll RASEDM_DialAsNeeded
RASdwDialExtraPercentdwDialExtraSampleSecondsdwHangUpExtraPercent
d w H a n g U p E x t r a S a m p l e S e c o n d s
d w D i a l E x t r a P e r c e n tWindows 2000
dwDialExtraSampleSeconds RAS
d w D i a l E x t r a S a m p l e S e c o n d sWindows 2000 R A S
dwDialExtraPercent
d w H a n g U p E x t r a P e r c e n tWindows 2000
dwDialExtraSampleSeconds RAS
d w H a n g U p E x t r a S a m p l e S e c o n d sWindows 2000 RAS
d w H a n g U p E x t r a P e r c e n t
dwIdleDisconnectSecondsRAS
RASIDS_DisabledRASIDS_UseGlobalValue
dwTypeWindows 2000 16-6
16-6 RASENTRY
RASET_Direct
RASET_Internet ICS
RASET_Phone
RASET_Vpn
d w E n c r y p t i o n Ty p eWindows 2000
16-7
16-7 RAS
ET_40Bit 40
ET_128Bit 128
d w C u s t o m A u t h k e yWindows 2000 E A P
438
g u i d I dWindows 2000 GUID
s z C u s t o m D i a l D l lWindows 2000 D L L D L L
R A S N U L LR A S
RAS
d w V p n S t r a t e g yWindows 2000VPNVPN 16-8
16-8 RAS VPN
VS_Default RAS(PPTP)2(L2TP)
VS_L2tpFirst L2TP
VS_L2tpOnly L2TP
VS_PptpFirst PPTP
VS_PptpOnly PPT
l p s z P h o n e b o o k l p s z E n t r y
E R R O R _ S U C E S S E R R O R _ I N VA L I D _ N A M E
ERROR_ALREADY_EXISTS
R a s E n u m D e v i c e R A S
lpRasDevInfo
RASDEVINFO RASDEVINFO
16RAS 439
d w S i z eR a s E n u m D e v i c e s R A S D E V I N F O
szDeviceType RASDT_Modem
s z D e v i c e N a m eTA P I
R a s E n u m D e v i c e s
ERROR_BUFFER_TOO_SMALL lpcb
l p R a s D e v I n f o
lpcDevices lpRasDevInfolpcDRASADEVINFO
l p R a s C t r y I n f o
R A S C T RY I N F O
R A S C T RY I N F O 2 5 6
RASCTRYINFO
d w S i z e RASCTRYINFO
d w C o u n t r y I D Wi n d o w s TA P I
R A S E N T RY d w C o u n t r y I D 1
d w N e x t C o u n t r y I D TA P I 0
d w C o u n t r y C o d ed w C o u n t r y I D
d w C o u n t r y N a m e O ff s e t
RASCTRYINFO
RasGetCountryInfo lpdwsize lpRasCtryInfo
l p R a s C t r y I n f o
440
16.5.1
RASRASENTRYRasSetEntry
R a s G e t E n t r y P r o p e r t i e sR a s R e n a m e E n t r yR a s D e l e t e E n t r y
RasSetEntryProperties
l p s z P h o n e b o o k l p s z E n t r y
R A S E N T RY
l p R a s E n t r y R A S E N T RY
R A S E N T RY
dwEntryInfoSizelpRasEntry
lpbDeviceInfo TAPI
Windows 2000 Windows NT
N U L L d w D e v i c e I n f o S i z e l p b D e v i c e I n f o
R a s G e t E n t r y P r o p e r t i e s
lpszPhonebooklpszEntry
NULLlpRasEntrylpbDeviceInfo
R A S R a s S e t E n t r y P r o p e r t i e s
lpRasEntrylpvDeviceInfo
lpRasEntry RASENTRY
RasSetEntryProperties
RASENTRY NULLlpdwEntryInfoSize
R A S E N T RY
l p d w E n t r y I n f o S i z e
D W O R D l p R a s E n t r y RasSetEntry Properties
16RAS 441
l p d w E n t r y I n f o S i z el p R a s E n t r y
l p R a s E n t r yN U L Ll p d w E N t r y I n f o S i z e0
l p b D e v i c e I n f o
TAPI NULLlpdwDeviceInfoSize
Windows 2000 Windows NT
l p b D e v i c e I n f o N U L L l p d w D e v i c e I n f o S i z e D W O R D
DWORD lpbDeviceInfo
R a s G e t E n t r y P r o p e r t i e s l p b D e v i c e I n f o S i z e l p b D e v i c e I n f o
1 6 - 3 R a s G e t E n t r y P r o p e r t i e sR a s S e t E n t r y
Properties
16-3 RAS
442
16.5.2
R a s R e n a m e E n t r y
RasRenameEntry
lpszPhonebook lpszOldEntry
l p s z N e w E n t r y
R a s R e n a m e E n t r y R a s Va l i d a t e E n t r y N a m e R a s R e n a m e E n t r y
0
ERROR_INVALID_NAMEl p s z N e w E n t r y
E R R O R _ A L R E A D Y _ E X I S T S l p s z N e w E n t r y
ERROR_CANNOT_FIND_PHONEBOOK_ENTRYlpszOldEntry
16.5.3
RasDeleteEntry
16RAS 443
l p s z P h o n e b o o k l p s z E n t r y
E R R O R _ S U C C E S S
ERROR_INVALID_NAME
16.5.4
R A SR a s E n u m E n t r i e s
r e s e r v e d N U L Ll p s z P h o n e b o o k
l p r a s e n t r y n a m e
RASENTRYNAME RASENTRYNAME
d w S i z e R a s E n u m E n t r i e s R A S E N T RY N A M E
s z E n t r y N a m e
dwFlagsWindows 2000REN_AllUsers
REN_User
s z P h o n e b o o k P a t hWindows 2000
R a s E n u m E n t r i e s
E R R O R _ B U F F E R _ TO O _ S M A L L l p c b
l p r a s e n t r y n a m e
l p c E n t r i e s l p r a s e n t r y n a m e
RASENTRYNAME
16.5.5
R A S R a s D i a l
444
R a s G e t C r e d e n t i a l sR a s S e t C r e d e n t i a l sR a s G e t E n t r y D i a l
P a r a m sR a s S e t E n t r y D i a l P a r a m s
RasGetCredentialsRasSetCredentialsWindows NT 4
Windows 2000 RasGetEntryDialParamsRasSetEntryDialParams
R a s G e t C r e d e n t i a l sR a s S e t C r e d e n t i a l s Wi n d o w s 9 5Windows 98Windows CE
RasGetEntryDialParamsRasSetEntryDialParams
RasGetCredentials
l p s z P h o n e b o o k l p s z E n t r y
lpCredentials RASCREDENTIALS
RASCREDENTIALS
d w S i z eR A S C R E D E N T I A L S
d w M a s k
s z U s e r N a m e R A S C M _ U s e r N a m e
szPasswordRASCM_PasswordszDomainRASCM_Domain
s z U s e r N a m e
s z P a s s w o r d
s z D o m a i n
R a s G e t C r e d e n t i a l s 0l p C r e d e n t i a l sd w M a s k
R a s S e t C r e d e n t a i s R a s G e t C r e d e n t i a l s
f C l e a r C r e d e n t i a l s
RasGetCredentialsRasSetCredentais
f C l e a r C r e d e n t i a l s T R U ER a s S e t C r e d e n t i a l s
l p C r e d e n t i a l s d w M a s k
16RAS 445
d w M a s k R A S C M _ P a s s w o r d
RasSetCredentials 0
R a s G e t E n t r y D i a l P a r a m sR a s S e t E n t r y D i a l P a r a m s
RasGetEntryDialParams
l p s z P h o n e b o o k l p r a s d i a l p a r a m s
R A S D I A L PA R A M S l p f P a s s w o r d l p r a s d i a l p a r a m s
TRUE
RasSetEntryDialParams RasDial
RasSetEntryDialParams
l p s z P h o n e b o o kl p r a s d i a l p a r a m sR a s G e t E n t r y D i a l P a r a m s
f R e m o v e P a s s w o r d T R U E R a s S e t E n t r y
D i a l P a r a m s l p r a s d i a l p a r a m s
16.5.6
l p s z P h o n e b o o k l p s z E n t r y
dwSubEntry lpRasSubEntry
R A S S U B E N T RY
RASSUBENTRY
446
d w S i z e R A S S U B E N T RY
d w F l a g s
szDeviceType
s z D e v i c e N a m eTA P I
s z L o c a l P h o n e N u m b e r
d w A l t e r n a t e O ff s e t R A S S U B E N T RY
l p R a s S u b E n t r y R A S S U B E N T RY
R a s G e t S u b E n t r y P r o p e r t i e s E R R O R _ B U F F E R _ TO O _ S M A L L
l p d w c b l p R a s S u b E n t r y l p d w c b
R A S S U B E N T RY
lpbDeviceConfiglpcbDeviceConfig NULL
RasSetSubEntryProperties
l p R a s S u b E n t r y
RasGetSubEntryProperties
16.6
RAS
RasEnumConnectionsRasGetSubEntryHandleRasGetProjectionInfoRasEnumConnections
RAS
16RAS 447
lprasconn RASCONN RASCONN
d w S i z eR A S C O N N
b r a s c o n nR a s D i a l
s z E n t r y N a m e
.
szDeviceType
s z D e v i c e N a m e
s z P h o n e N a m e
d w S u b E n t r y
g u i d E n t r yWindows 2000 GUID
RasEnumConnections
RASCONNERROR_BUFFER_TOO_SMALL
RASCONNdwSize RASCONN
l p c b
l p r a s c o n n l p c b
l p c b
lpcConnections lprasconnRASCONN
R a s G e t S u b E n t r y H a n d l e
RASPROJECTION
R A S P _ A m b
R A S P _ P p p N b f
R A S P _ P p p I p x
R A S P _ P p p I p
RASP_Amb RASAMB
d w S i z e R A S A M B
d w E r r o rP P P
s z N e t B i o s E r r o r P P P
N e t B I O S d w E r r o rE R R O R _ N A M E _ E X I S T S _ O N _ N E Ts z N e t B i o s E r r o r
b L a n a NetBIOS LANLANA
R A S P _ P p p N b f R a s G e t P r o j e c t i o n I n f o R A S P P P N B F
16RAS 449
R A S P P P N B F R A S A M B
szWorkstationName dwNetBiosErrorszWorkstationNameNetBIOS
dwNetBiosError NetBIOS
R A S P _ P p p I p x R a s G e t P r o j e c t i o n I n f o R A S P P P I P X
d w S i z e R A S P P P I P X
d w E r r o rP P P
s z I p x A d d r e s s I P X
R A S P _ P p p I p R a s G e t P r o j e c t i o n I n f o R A S P P P I P
d w S i z e R A S P P P I P
d w E r r o rP P P
s z I p x A d d r e s s I P
s z S e r v e r I p A d d r e s s I P
R A S I P I P
16-4
16-4 IP RasGetProjectionInfo
450
16.7
R A S
R a s D i a l
RAS RAS
A NetBIOS
N C B n c b _ c o m m a n d
N e t b i o s
N C B N e t b i o s N C B
N e t B I O S
X
X Netbios 1
A.1 NCBADDGRNAME
ncb_num A-1
A-1
/
ncb_command X
ncb_retcode X
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.2 NCBADDNAME
n c b _ n u m
A - 2
452
A-2
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt X
ncb_event
A.3 NCBASTAT
n c b _ b u ff e r
A D A P T E R _ S TAT U S
NAME_BUFFER A-3
A-3
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer / X
ncb_length / X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.4 NCBCALL
ncb_name A-4
A-4
/
ncb_command X
ANetBIOS 453
()
/
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname X
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.5 NCBCANCEL
ncb_bufferNCB
NCBSENDNCBCHAINSEND
N C B A D D G R N A M E
N C B A D D N A M E N C B C A N C E L N C B D E L I N A M E N C B R E S E T N C B D G S E N D
NCBDGSENDBCNCBSSTATA-5
A-5
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer X
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.6 NCBCHAINSEND
1 2 8 K B
64KBn c b _ b u ff e rncb_length
ncb_callname0~1 2~5 A-6
454
A-6
/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.7 NCBCHAINSENDNA
1 2 8 K B 6 4 K B n c b _ b u ff e rn c b _ l e n g t h
n c b _ c a l l n a m e0 ~ 1 2 ~ 5
A-7
A-7
/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.8 NCBDELNAME
N R C _ A C T S E S0 x 0 F N R C _ N A M E R R
0x17 A-8
ANetBIOS 455
A-8
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.9 NCBDGRECV
n c b _ n u m n c b _ n u m
0 x F F
NRC_INCOMP0x06
A-9
A-9
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.10 NCBDGRECVBC
N R C _ I N C O M P0 x 0 6
456
A-10
A-10
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.11 NCBDGSEND
N C B A S TAT
A D A P T E R _ S TAT U S
A-11
A-11
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.12 NCBDGSENDBC
L A N
ANetBIOS 457
NCBDGSEND A-12
A-12
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.13 NCBENUM
LANA n c b _ b u ff e r LANA_ENUM
L A N A _ E N U Ml e n g t h L A N A
LANA_ENUMlana LANAA-13
A-13
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.14 NCBFINDNAME
n c b _ b u ff e r
FIND_NAME_HEADER FIND_NAME_BUFFER
458
Windows NT Win32 A-14
A-14
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer / X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.15 NCBHANGUP
N R C _ S C L O S E D0 x O A
N C B R E C VA N Y
A-15
A-15
/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.16 NCBLANSTALERT
Windows NT LAN
ANetBIOS 459
LAN A-16
A-16
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.17 NCBLISTEN
ncb_callname
* NCBCALL
N C B C A L L n c b _ c a l l n a m e
A-17
A-17
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname / X
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.18 NCBRECV
460
1) NCBBECV
2) NCBRECVANY
3) NCBRECEANY
NRC_INCOMP0x06
ncb_length A-18
A-18
/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.19 NCBRECVANY
ncb_num
0 x F F n c b _ n u m
NCBRECV
N R C R E C VA N Y N R C _ S C L O S E D
0 x 0 AN C Bn c b _ _ l s n
N C B R E C VA N Y n c b _ n u m0 x F F
NCBRECVANY N R C _ S C L O S E D n c b _ l s n
A-19
A-19
/
ncb_command X
ncb_retcode
ncb_lsn
ANetBIOS 461
()
/
ncb_num / X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.20 NCBRESET
LANA
ncb_lsn0ncb_lana_num
n c b _ l s n0 n c b _ l a n a _ n u m
n c b _ c a l l n a m e [ 0 ] n c b _ c a l l n a m e [ 2 ]
ncb_callname[3] 1A-20
A-20
/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num X
ncb_buffer
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.21 NCBSEND
65 53664KB
N R C _ S C L O S E D0 x 0 A
A-21
462
A-21
/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.22 NCBSENDNA
NCBSEND A-22
A-22
/
ncb_command
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.23 NCBSSTAT
n c b _ b u ff e r
S E S S I O N _ B U F F E R S E S S I O N _ H E A D E R
n c b _ n a m e*
NRC_INCOMP0x06
4 NRC_BUFLEN0x01A-23
ANetBIOS 463
A-23
/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event
A.24 NCBUNLINK
N e t B I O S
Win32
B IP
A P I I P
I p c o n f i g . e x e Windows 95Wi n i p c f g . e x eI P
DHCPIP
Netstat.exeTCPUDPIP
Route.exe
Arp.exeARPIP
Windows 98Windows 2000
Windows NT SP4SP Windows 95
Iphlpapi,h Iphlpapi.lib
B.1 IPCONFIG
I p c o n f i g . e x e I P I P
IP GetNetworkParams
p F i x e d I n f o F I X E D _ I N F O
I P p O u t B u f L e n
pFixedInfo GetNetworkParams
E R R O R _ B U F F E R _ O V E R F L O W p O u t B u f L e n
GetNetworkParamsFIXED_INFO
HostName DNS
BIP 465
DomainName DNS
CurrentDnsServer DNSIP
DnsServerList DNS
NodeTypeIPNetBIOSB-1
S c o p e I d N e t B I O S
TCP/IP
EnableRouting IP
E n a b l e P r o x y W I N SW I N S W I N S
b W I N S
E n a b l e D n s N e t B I O SD N SW I N S L M H O S T
B-1
BROADCAST_NODETYPE: bNetBIOS
IP NetBIOS
PEER_TO_PEER_NODETYPE: p
N e t B I O S W I N S I P
MIXED_NODETYPE: mmixedNetBIOS
bp b
p
HYBRID_NODETYPE: h hybridNetBIOS
bpp
b
F I X E D _ I N F O D n s S e r v e r L i s t I P _ A D D R _ S T R I N G I P
466
p A d a p t e r I n f o
A D A P T E R _ I N F O p O u t B u f I n f o
p A d a p t e r I n f o
G e t A d a p t e r s I n f o E R R O R _ B U F F E R _ O V E R F L O W p O u t B u f L e n
I P _ A D A P T E R _ I N F O
IP IP_ADAPTER_INFO
Next NULL
ComboIndex 0
AdapterName
Description
AddressLengthAddress
Address
Index
Type B-2
DhcpEnabled DHCP
CurrentIpAddress NULL
IpAddressList IP
GatewayList IP
DhcpServer DHCPSIP
HaveWins WINS
BIP 467
P r i m a r y Wi n s S e r v e r W I N S
IP
S e c o n d a r y Wi n s S e r v e r W I N S
IP
LeaseObtained DHCPIP
LeaseExpiresDHCPIP
B-2
MIB_IF_TYPE_ETHERNET
MIB_IF_TYPE_FDDI FDDI
MIB_IF_TYPE_LOOPBACK Loopback
MIB_IF_TYPE_OTHER
MIB_IF_TYPE_PPP PPP
MIB_IF_TYPE_SLIP Slip
MIB_IF_TYPE_TOKENRING
B.1.1 IP
Ipconfig.exe DCHP IP
/ r e l e a s e/ r e n e w I P
IPReleaseAddress
IPIPRenewAddress
A d a p t e r I n f o I P _ A D A P T E R _ I N D E X _ M A P
IP_ADAPTER_INDEX_MAP
Index
Name
GetInterfaceInfo IP_ADAPTER_INDEX_MAP
468
p I f Ta b l e I P _ I N T E R FA C E _ I N F O
d w O u t B u f L e n pIfTable
G e t I n t e r f a c e I n f o E R R O R _
INSUFFICIENT_BUFFER dwOutBufLen
IP_INTERFACE_INFO
NumAdaptersAdapter
AdapterIP_ADAPTER_INDEX_MAP
I P _ A D A P T E R _ I N D E X _ M A P
IPReleaseAddressIPRenewAddress DHCPIP
B.1.2 IP
I p c o n f i g . e x e I PD H C P
I P A d d I p A d d r e s sDeleteIpAddress IP
I P Wi n d o w s
I D I P
I D I DI P G e t A d a p t e r s I n f oA d d I p A d d r e s s
A d d r e s s I P I p M a s kI P
I f I n d e x
N T E C o n t e x t I P N T E I n s t a n c e I P
IP DeleteIpAddress
N T E C o n t e x t I P G e t A d a p t e r s I n f o
B.2 NETSTAT
N e t s t a t . e x e T C P U D P I P
BIP469
Windows 98Windows 2000Windows NT 4 SP4
B.2.1 TCP
G e t Tc p Ta b l e T C P -p tcp-a
Netstat.exe GetTcpTable
pTcpTable MIB_TCPTABLE
TCPpdwsize pTcpTable
T C P
bOrder
GetTcpTable MIB_TCPTABLE
dwNumEntriestable
tableMIB_TCPROW TCP
MIB_TCPROW TCPIP
dwStateTCP B-3
B-3 TCP
RFC
MIB_TCP_STATE_CLOSED
MIB_TCP_STATE_CLOSING
MIB_TCP_STATE_CLOSE_WAIT
MIB_TCP_STATE_DELETE_TCB
MIB_TCP_STATE_ESTAB
MIB_TCP_STATE_FIN_WAIT1 FIN WAIT1
MIB_TCP_STATE_FIN_WAIT2 FIN WAIT2
470
()
RFC
MIB_TCP_STATE_LAST_ACK
MIB_TCP_STATE_LISTEN
MIB_TCP_STATE_SYN_RCVD
MIB_TCP_STATE_SYN_SENT
MIB_TCP_STATE_TIME_WAIT
dwLocalAddr IP
dwLocalPort
dwRemoteAddr IP
dwRemotePort
B.2.2 UDP
G e t U d p Ta b l e U D P -pudp -a
Netstat.exe GetUdpTable
p U d p Ta b l e M I B _ U D P TA B L E
U D P p d w S i z e p U d p Ta b l e
U D P
bOrder
GetUdpTable MIB_UDPTABLE
dwNumEntriestable
tableMIB_UDPROW UDP
MIB_UDPROW IPUDP
dwLocalAddr IP
dwLocalPort IP
BIP 471
B.2.3 IP
I P G e t I p S t a t i s t i c sG e t I c m p S t a t i s t i c sG e t Tc p S t a t i s t i c s
G e t U d p S t a t i s t i c s - sN e t s t a t . e x e
G e t I p S t a t i s t i c s I P
pStats MIB_IPSTATA IP
MIB_IPSTATS
dwForwarding IP
dwDefaultTTL TTL
dwInReceives
dwInHdrErrors
dwInAddrErrors
dwForwDatagrams
dwInUnknownProtos
dwInDiscards
dwInDelivers
472
dwOutRequestsIP
dwRoutingDiscards
dwOutDiscards
dwOutNoRoutes
dwReasmTimeout
dwReasmReqds
dwReasmOks
dwFragFails
dwFragCreates
dwNumIf IP
dwNumAddr IP
dwNumRoutes
G e t I c m p S t a t i s t i c sI C M P
p S t a t s M I B _ I C M P I C M P
MIB_ICMP
MIB_ICMP MIBICMPINFO
M I B I C M P I N F O M I B I C M P S TAT S I C M Pi c m p I n S t a t s
icmpOutStats MIBICMPSTATS
BIP 473
dwMsgs
dwErrors
dwDestUnreachs
dwTimeExcds
dwParmProbs IP
dwSrcQuenchs
dwRedirects
dwEchos ICMP
dwEchoReps ICMP
dwTimestamps
dwTimestampReps
dwAddrMasks
dwAddrMaskReps
TCP GetTcpStatistcs
pStats MIB_TCPSTATS IP
MIB_TCPSTATS
d w R t o A l g o r i t h m M I B _ T C P _ RTO _
C O N S TA N TM I B _ T C P _ RTO _ R S R EM I B _ T C P _ RTO _ VA N J
MIB_TCP_RTO_OTHER
dwRtoMin
dwRtoMax
474
dwMaxConn
dwActiveOpens
dwPassiveOpens
dwAttemptFails
dwEstabResets
dwCurrEstab
dwInSegs
dwOutSegs
dwRetransSegs
dwInErrs
dwOutRsts
dwNumConns
G e t U d p S t a t i s t i c s U D P
pStats MIB_UDPSTATS IP
MIB_UDPSTATS
dwInDatagrams
dwNoPorts
dwInErrors dwNoPorts
dwOutDatagrams
dwNumAddrs UDP
B.3 ROUTE
R o u t e . e x e
I PI PIP Helper Library
Windows 98Windows 2000Windows NT 4 SP4
R o u t e . e x e
I P
BIP 475
I P
B.3.1
Route.exe GetIpForwardTable
p I p F o r w a r d Ta b l e
p I p F o r w a r d Ta b l e N U L L
p d w S i z e b O r d e r
1)
2)
3)
4)
MIB_INFORWARDROW
MIB_IPFORWARDROW dwNumEntries
MIB_IPFORWARDROW
476
dwForwardDest IP
dwForwardMask
d w F o r w a r d P o l i c y I P
TO S TO S 9I P _ TO S
1354
dwForwardNextHop IP
dwForwardIfIndex
dwForwardTypeRFC 1354 B-4
d w F o r w a r d P r o t o B - 5 I P X
Routprot.hIPIprtrmib.h
dwForwardAge
dwForwardNextHopAS
dwForwardMetric1 RFC 1354
Route.exe
MIB_IPROUTE_METRIC_UNUSED-1
dwForwardMetric2 RFC 1354
dwForwardMetric3 RFC 1354
dwForwardMetric4 RFC 1354
dwForwardMetric5 RFC 1354
B-4
MIB_IPROUTE_TYPE_INDIRECT
MIB_IPROUTE_TYPE_DIRECT
MIB_IPROUTE_TYPE_INVALID
MIB_IPROUTE_TYPE_OTHER
B-5
MIB_IPPROTO_OTHER
MIB_IPPROTO_LOCAL
MIB_IPPROTO_NETMGMT Route.exeSNMP
MIB_IPPROTO_ICMP ICMP
MIB_IPPROTO_EGP
MIB_IPPROTO_GGP
MIB_IPPROTO_HELLO HELLO
MIB_IPPROTO_RIP
MIB_IPPROTO_IS_IS IP
MIB_IPPROTO_ES_IS IP
MIB_IPPROTO_CISCO IPCisco
MIB_IPPROTO_BBN BBN
MIB_IPPROTO_OSPF OSPF
MIB_IPPROTO_BGP .
BIP 477
()
MIB_IPPROTO_NT_AUTOSTATIC
MIB_IPPROTO_NT_STATIC Routemon.exe
MIB_IPPROTO_STATIC_NON_DOD P R O TO _ I P _ N T _ S TAT I C
DOD
IPX_PROTOCOL_RIP IPX
IPX_PROTOCOL_SAP
IPX_PROTOCOL_NLSP NetWare
B.3.2
I P
I P I P
I P
GetIpAddrTable
p I p A d d r Ta b l e M I B _ I PA D D RTA B L E
p d w S i z e b O r d e r
IPIP pIpAddrTable
N U L L p d w S i z e MIB_IPADDRTA B L E
M I B _ I PA D D R O W d w N u m E n t r i e s t a b l e
MIB_IPADDROWMIB_IPADDRROW
dwAddr IP
dwIndexIP
478
dwMaskIP
dwBCastAddr
dwReasmSize
unused1 and unused2
I P
SetIpForwardEntry
pRouteMIB_IPFORWARDROW
dwForwardIfIndexdwForwardDestdwForwardMask
dwForwardNextHopdwForwardPolicy
B.3.3
MIB_IPFORWARDROW
G e t I p F o r w a r d Ta b l e M I B _ I P F O RWA R D R O W
DeleteForwardEntry DeleteForwardEntry
pRoutedwForward-
IfIndexdwForwardDestdwForwardMaskdwForwardNextHopdwForwardPolicy
B.4 ARP
A r p . e x e A R PI P A r p . e x ePlatform SDK
Iprap.exeARP IP
MAC Arp.exe
- a A R P- d
- s A R P
ARP ARP
I P Windows 98 Windows 2000Windows NT4 SP4
ARPIP GetIpNetTable
pIpNetTableMIB_IPNETTABLEARP
BIP 479
IP
NULLpdwSizeERROR_INSUFFICIENT_B U F F E R
p d w S i z e p I p N e t Ta b l e b O r d e r
IP
MIB_IPNETTABLE MIB_IPNETROW
d w N u m E n t r i e s t a b l e M I B _ I P N E T R O W
ARP
dwIndex
dwPhysAddrLenbPhysAddrs
bPhysAddr
dwAddr IP
dwTypeARP B-6
B-6 ARP
ARP
MIB_IPNET_TYPE_STATIC
MIB_IPNET_TYPE_DYNAMIC
MIB_IPNET_TYPE_INVALID
MIB_IPNET_TYPE_OTHER
B.4.1 ARP
A R P A R P A R P I P
SetIpNetEntry
M I B _ I P N E T W O R K
A R P A R P d w I n d e x I P
A R P I P
480
G e t I p A d d r Ta b l e d w P h y s A d d r L e n 6
ETHEENET MAC 6b P h y s A d d r
M A C 1 2 0 0 - A 0 - C 9 - 8 6 - E 8
bPhysAddr MAC
I P XAT M 6d w A d d r
I P M A C dwType
B-6ARPMIB_IPNETWORK SetIpNetEntry
ARP NO_ERROR
B.4.2 ARP
A R P
d w I n d e x A R P I Pd w A D D R A R P
DeleteIpNetEntry
M I B _ I P N E T R O WA R P I P
IP IP GetIpAddrTable
NO_ERROR
C Winsock
Wi n s o c k
B S D Wi n s o c k Wi n 3 2
Winsock
10004WSAEINTR
WSACancelBlockingCall
10009WSAEBADF
Microsoft Windows CEsocket
10013WSAEACCES
s e n d t oW S A S e n d To
s e t s o c k o p tS O _ B R O A D C A S T
10014WSAEFAULT
Wi n s o c k
10022WSAEINVAL
WSAIoctl
acceptWSAAccept
10024WSAEMFILE
M i c r o s o f t
10035WSAEWOULDBLOCK
c o n n e c t
10036WSAEINPROGRESS
16Winsock
10037WSAEALREADY
c o n n e c tW S A C o n n e c t
Winsock
482
10038WSAENOTSOCK
S O C K E T Wi n s o c k
10039WSAEDESTADDRREQ
sendto
INADDR_ANY
10040WSAEMSGSIZE
10041W S A E P R O TO T Y P E
socketWSASocket
S O C K _ S T R E A M I P I P P R O TO _ U D P
10042WSAE N O P R O TO O P T
getsockoptsetsockopt
10043WSAEPROTONOSUPPORT
TCP/IPTCPUDP
10044WSAESOCKTNOSUPPORT
S O C K _ R AW
10045WSAEOPNOTSUPP
Wi n s o c k Wi n s o c k
acceptWSAAccept
10046WSAEPFNOSUPPORT
WSAEAFNOSUPPORT
10047WSAEAFNOSUPPORT
S O C K _ S T R E A M s e n d t oW S A S e n d To
socketWSASocket
10048WSAEADDRINUSE
CWinsock 483
I P
I P b i n dc o n n e c tW S A C o n n e c t
s e t s o c k o p t S O _ R E U S E A D D R
IP 9
10049WSAEADDRNOTAVAIL
API
bind IP IP
c o n n e c tW S A C o n n e c ts e n d t oW S A S e n d ToW S A J o i n L e a f
0
10050WSAENETDOWN
10051WSAENETUNREACH
10052WSAENETRESET
setsockoptSO_KEEPALIVE
10053WSAECONNABORTED
10054WSAECONNRESET
S O _ L I N G E R s e t s o c k o p t
9
10055WSAENOBUFS
10056WSAEISCONN
c o n n e c tW S A C o n n e c t
sendtoWSASendTo
10057WSAENOTCONN
10058WSAESHUTDOWN
s h u t d o w n
484
s h u t d o w n
10060WSAETIMEDOUT
S O _ S N D T I M E OS O _ R C V T I M E O c o n n e c tW S A C o n n e c t
SO_SNDTIMEOSO_RCVTIMEO 9
10061WSAECONNREFUSED
10064WSAEHOSTDOWN
W S A E T I M E D O U T
10065WSAEHOSTUNREACH
WSAENETUNREACH
10067WSAEPROCLIM
Winsock
10091WSASYSNOTREADY
W S A S t a r t u p
10092WSAVERNOTSUPPORTED
Winsock.dll Winsock
10093WSANOTINITIALISED
Winsock WSAStartup
10101WSAEDISCON
W S A R e c vW S A R e c v F r o m
ATM
10102WSAENOMORE
W S A L o o k u p S e r v i c e N e x t
WSA_E_NO_MORE
WSA_E_NO_MORE
10103WSAECANCELLED
W S A L o o k u p S e r v i c e N e x t
WSALookupServiceEnd WSALookupServiceNext
W S A _ E _ C A N C E L L E D
WSA_E_CANCELLED
CWinsock 485
10104WSAEINVALIDPROCTABLE
14
10105WSAEINVALIDPROVIDER
Winsock
10106WSAEPROVIDERFAILEDINIT
DLL
10107WSASYSCALLFAILURE
10108W S A S E RV I C E _ N O T _ F O U N D
10
10109WSATYPE_NOT_FOUND
S e r v i c e
C l a s s W S A I n s t a l l S e r v i c e C l a s s
10110WSA_E_NO_MORE
W S A L o o k u p S e r v i c e N e x t
W S A E N O M O R E
WSAENOMORE
10111WSA_E_CANCELLED
W S A L o o k u p S e r v i c e N e x t
WSALookupServiceEnd WSALookupServiceNext
W S A E C A N C E L L E D
WSAECANCELLED
10112WSAEREFUSED
11001WSAHOST_NOT_FOUND
g e t h o s t b y n a m eg e t h o s t b y a d d r
Authoritative Answer Host
11002WSATRY_AGAIN
g e t h o s t b y n a m eg e t h o s t b y a d d r
11003WSANO_RECOVERY
gethostbynamegethostbyaddr
11004WSANO_DATA
486
g e t h o s t b y n a m eg e t h o s t b y a d d r
11005WSA_QOS_RECEIVERS
IP QoS
QoS 12 QoS
11006WSA_QOS_SENDERS
QoS
QoS
11007WSA_QOS_NO_SENDERS
Q o S Q o S Q o S
12
11008WSA_QOS_NO_RECEIVERS
Q o S Q o S Q o S
12
11009WSA_QOS_REQUEST_CONFIRMED
QoS
1 2
11010WSA_QOS_ADMISSION_FAILURE
QoS
11011WSA_QOS_POLICY_FAILURE
QoS
11012WSA_QOS_BAD_STYLE
QoS
1 2
11013WSA_QOS_BAD_OBJECT
FILTERSPEC Q o S FILTERSPEC
12
11014WSA_QOS_TRAFFIC_CTRL_ERROR
F L O W S P E C F L O W S P E C Q o S
11015WSA_QOS_GENERIC_ERROR
QoS QoS
6WSA_INVALID_HANDLE
Wi n 3 2 Wi n s o c k
Win32 WSAWaitForMultipleEvents
8WSA_NOT_ENOUGH_MEMORY
CWinsock 487
Win32
87WSA_INVALID_PARAMETER
Win32
WSAWaitForMultipleEvents
258WSA_WAIT_TIMEOUT
Win32I/O
995WSA_OPERATION_ABORTED
Win32 I/O
SIO_FLUSHI/O
996WSA_IO_INCOMPLETE
I / O Wi n 3 2 I / O
WSAGetOverlappedResults I/O
997WSA_IO_PENDING
Winsock I/O Win32
I / O
8