Bài giảng Lập trình mạng | Trường Đại học Bách Khoa Hà Nội

1.1.1 Khái niệm: Lập trình mạng là các kỹ thuật lập trình nhằm xây dựng những ứng dụng, phần mềm khai thác hiệu quả tài nguyên mạng máy tính.Mạng máy tính đang ngày một phát triển, ứng dụng của mạng đem lại là không thể phủ nhận. Giáo trình này sẽ đề cập đến một vài phương pháp xây dựng các ứng dụng tận dụng được hạ tầng mạng sẵn có.

Bài ging
LP TRÌNH MNG
Người soạn: Lương Ánh Hoàng
B môn K thut máy tính
Vin Công ngh thông tin và Truyền thông, ĐHBK Hà nội
Hà ni, 8/2010
2
Mc lc bài ging
Chương 1. Giới thiu các mô hình lp trình mng ............................................................. 4
1.1 Tng quan v lp trình mng .......................................................................................... 4
1.1.1 Khái nim ........................................................................................................................ 4
1.1.2 Ngôn ng lp trình ..................................................................................................... 4
1.1.3 Thư viện h tr ............................................................................................................ 5
1.2 Giao thc Internet ............................................................................................................... 5
Chương 2. Bộ giao thc Internet (TCP/IP) ........................................................................... 6
2.1 Gii thiu ................................................................................................................................. 6
2.2 IPv4 ............................................................................................................................................ 7
2.2.1 Địa ch IPv4 .................................................................................................................... 8
2.2.2 Các lớp đa ch ............................................................................................................... 8
2.2.3 Mt n mng ................................................................................................................. 9
2.2.4 Các di địa ch đặc bit ........................................................................................... 10
2.3 IPv6 ......................................................................................................................................... 10
2.4 TCP .......................................................................................................................................... 11
2.5 UDP .......................................................................................................................................... 11
2.6 H thng phân gii tên min ........................................................................................ 12
Chương 3. Winsock ....................................................................................................................... 14
3.1 Kiến trúc................................................................................................................................ 14
3.2 Đặc tính ................................................................................................................................. 15
3.2.1 Giao thức hướng thông điệp ............................................................................... 15
3.2.2 Giao thức hướng dòng ........................................................................................... 16
3.2.3.Giao thc gi dòng ................................................................................................... 16
3.2.4 Giao thức hướng kết ni và không kết ni .................................................... 16
3.2.5 Tính tin cy v{ đúng trật t ................................................................................. 17
3.2.6 Qu| trình đóng kết ni ........................................................................................... 17
3.2.7 Qung bá d liu ....................................................................................................... 17
3.2.8 Multicast ....................................................................................................................... 18
3.2.9 Chất lượng dch v (QoS) ..................................................................................... 18
3.3 Lp trình Winsock ............................................................................................................ 19
3
3.3.1 Môi trường .................................................................................................................. 19
3.3.2 Khi to Winsock ..................................................................................................... 19
3.3.3 X|c định đa ch ......................................................................................................... 22
3.3.4 To socket .................................................................................................................... 26
3.3.5 Truyn d liu s dng giao thc (TCP) ....................................................... 26
3.3.6 Truyn d liu s dng giao thc UDP .......................................................... 40
3.3.7 Mt vài hàm khác ..................................................................................................... 43
3.4 C|c phương ph|p v{o ra ................................................................................................ 44
3.4.1 Các chế độ hoạt động ca Winsock .................................................................. 44
3.4.2 Các mô hình vào ra .................................................................................................. 48
Chương 4. MFC Socket ................................................................................................................ 66
4.1 Gii thiu .............................................................................................................................. 66
4.2 CSocket .................................................................................................................................. 66
4.2.1 Khi to CSocket ...................................................................................................... 66
4.2.2 Kết nối đến máy khác ............................................................................................. 67
4.2.3 Chp nhn kết ni t máy khác ......................................................................... 67
4.2.4 Gi d liu ................................................................................................................... 68
4.2.5 Nhn d liu ............................................................................................................... 68
4.2.6 Đóng kết ni................................................................................................................ 69
4.2.7 Xây dng Client bng CSocket ............................................................................ 69
4.2.8 Xây dng Server bng CSocket .......................................................................... 69
4.3 CAsyncSocket ...................................................................................................................... 70
4.3.1 Khi to đối tượng CAsyncSocket .................................................................... 70
4.3.2 X lý các s kin ....................................................................................................... 71
Chương 5. NET Socket ................................................................................................................. 74
5.1. Gii thiu v NameSpace System.Net và System.Net.Sockets ..................... 74
5.2. Chương trình cho phía máy
c
h s dng giao thc TCP
........................ 76
5.3. Chương trình cho phía máy
k
c
h s dng giao thc TCP
................... 78
5.4 Chương trình phía m|y ch s dng UDP ............................................................. 79
5.5 Chương trình cho m|y kh|ch s dng UDP .......................................................... 80
4
C
C
h
h
ư
ư
ơ
ơ
n
n
g
g
1
1
.
.
G
G
i
i
i
i
t
t
h
h
i
i
u
u
c
c
á
á
c
c
m
m
ô
ô
h
h
ì
ì
n
n
h
h
l
l
p
p
t
t
r
r
ì
ì
n
n
h
h
m
m
n
n
g
g
Bài ging s 1
Thời lượng: 3 tiết.
Tóm tt ni dung :
Định nghĩa lập trình mng.
ng dng ca lp trình mng.
Các ngôn ng lp trình.
Các thư viện và môi trường h tr lp trình mng
Giao thc IP.
1.1 Tng quan v lp trình mng
1.1.1 Khái nim
Lp trình mng các k thut lp trình nhm xây dng nhng ng dng, phn
mm khai thác hiu qu tài nguyên mng máy tính.
Mạng m|y tính đang ng{y mt phát trin, ng dng ca mng đem lại không
th ph nhn. Giáo trình này s đề cập đến một v{i phương ph|p x}y dng các
ng dng tn dụng được h tng mng sn có.
1.1.2 Ngôn ng lp trình
Hu hết các ngôn ng lập trình đều th s dụng để lp trình mng, tuy nhiên
vic lp trình mng còn ph thuộc v{o c|c thư viện v{ môi trường lp trình
h tr hay không. th lit các ngôn ng lp trình có th s dụng để lp
trình mạng như sau:
C/C++: Ngôn ng lp trình rt mnh ph biến, dùng để viết mi loi
ng dụng trong đóng dng mng.
Java: Ngôn ng lp trình khá thông dng h tr trên nhiu môi
trường, trong đó có thể viết ng dng chạy trên điện thoại di động.
C#: Ngôn ng lp trình cũng rất mnh d s dng, ch h tr trên h
h điu hành Windows ca Microsoft.
Python, Perl, Php…: C|c ngôn ng thông dch, s dụng để viết nhanh các
tin ích nh một c|ch nhanh chóng, trong đó th s dụng để viết ng
dng mng.
Hc phn này s trình b{y phương ph|p lp trình mng da trên hai ngôn ng:
C/C++ và C#.
5
1.1.3 Thư viện h tr
Vic lp trình mng ph thuc rt nhiều v{o c|c thư viện h tr đến t h
thng. Tùy thuc vào nn tng phát trin ng dng th s dụng c|c t
vin khác nhau. Có th lit kê một v{i thư viện h tr lp trình mạng như sau:
Winsock: Thư viện liên kết động ca Microsoft, đưc phân phi cùng h
điu hành Windows. Winsock cung cp khá nhiều API để phát trin ng
dng mng. Winsock th s dng cùng bt k ngôn ng lp trình nào,
nhưng bộ đôi C/C++ v{ Winsock đem li hiệu năng cao nhất, nhưng
tương đối khó s dng.
Thư viện System.Net trong .NET framework: Thư vin cung cp rt
nhiu API d s dụng để xây dng ng dng mng. Đ s dụng thư viện
n{y, người ta thưng dùng C#. Vic phát trin ng dng mng nh thư
vin này khá d dàng.
Thư viện MFC Socket: Thư viện đi cùng b phát trin Visual Studio C++.
Đ}y l{ thư viện cũng kh| dễ s dng.
C|c thư viện trong Java Runtime, PHP,….
Giáo trình này s trình bày cách s dụng ba thư viện Winsock, System.Net
MFC Socket.
1.2 Giao thc Internet
Giao thc Internet (IP Internet Protocol) giao thc mng thông dng nht
trên thế gii. Thành công ca Internet phn ln là nh v{o IPv4. IP được c{i đt
rng rãi trên hu hết các h điu hành, trong các mng ni b, các mng din
rng Internet. S bùng n v s ng máy tính nhân dn đến IPv4 càng
tr nên hn chế, đó l{ tiền đề cho vic phát trin giao thc mng mi: IPv6.
Chúng ta s nhc li kiến thức cơ bản v Internet trong chương 2.
6
C
C
h
h
ư
ư
ơ
ơ
n
n
g
g
2
2
.
.
B
B
g
g
i
i
a
a
o
o
t
t
h
h
c
c
I
I
n
n
t
t
e
e
r
r
n
n
e
e
t
t
(
(
T
T
C
C
P
P
/
/
I
I
P
P
)
)
Bài ging s 2
Thời lượng: 3 tiết.
Tóm tt ni dung :
Nhc li v b giao thc TCP/IP.
Giao thc IP.
Địa ch IPv6.
Giao thc TCP và UDP.
Dch v DNS.
2.1 Gii thiu
B giao thc TCP/IP, ngn gn TCP/IP (tiếng Anh: Internet protocol suite
hoc IP suite hoc TCP/IP protocol suite - b giao thc liên mng), mt b
các giao thc truyền thông c{i đặt tng giao thc Internet hu hết các
mạng m|y tính thương mại đang chạy trên đó. Bộ giao thức n{y được đặt tên
theo hai giao thc chính ca TCP (Giao thức Điều khin Giao vn) IP
(Giao thc Liên mạng). Chúng cũng l{ hai giao thức đầu tiên được định nghĩa.
Hình 1 . Các tng giao thc TCP/IP
TCP/IP mt th hin thc tế ca hình OSI. hình OSI nguyên bn chia
thành 7 tng giao thc, tuy nhiên TCP/IP hin thực v{ đơn giản hóa đi chỉ còn 4
tng.
Tng ng dng (Application Layer): Bao gm các giao thức đóng gói d
liu t ng dụng, người dùng ri truyn xung tng thp hơn. C|c giao
7
thc có th k đến tng này là: HTTP, FTP, Telnet, DNS, SSH, SMTP,
POP3,…
Tng giao vn (Transport Layer): Nhn d liu t ng dng tng trên
thông qua tầng dưới, truyn d liu ti ng dng m|y tính đích. Tng
này cung cp dch v truyn d liu gia ng dng - ng dng. Các giao
thc tng này: TCP, UDP, ICMP.
Tng liên mạng (Network Layer): Đnh tuyến và truyn gói tin liên mng.
Tng này cung cp dch v truyn d liu là các gói tin gia các nút mng
trong cùng mt mng hoc liên mng. Các giao thc tng này: IPv4,
IPv6,…
Tng liên kết (Network Acess Layer, Datalink Layer): Truyn d liu
gia các nút mng trên ng mt nhánh mng. Tng này làm vic trc
tiếp vi thiết b chu trách nhim chuyển đổi các bit sang mt dng tín
hiu vật lý kh|c (|nh s|ng, điện, điện t…)
D liu ca người dùng s lần lượt đi qua c|c tng trong hình, mi tng,
d liu s đưc thêm phn header để điu khin chuyn xung tng thp
hơp. Bên nhn s lần lượt bóc tách các header t tng thp chuyn lên tng
cao, cho đến người dùng. Hình dưới đ}y minh họa qu| trình đóng gói dữ liu
ca mt ng dng s dng giao thc UDP.
Hình 2: Đóng gói d liu UDP
2.2 IPv4
Giao thc Internet phiên bn 4 (IPv4) phiên bn th tư trong qu| trình ph|t
trin ca các giao thc Internet (IP). Đ}y l{ phiên bản đu tiên của IP được s
dng rng i. IPv4 cùng vi IPv6 (giao thc Internet phiên bn 6) nòng ct
ca giao tiếp internet. Hin ti, IPv4 vn giao thức được trin khai rng rãi
8
nht trong b giao thc ca lp internet. Các giao thc IP chy tng liên
mng.
Giao thức n{y được công b bi IETF trong phiên bản RFC 791 (th|ng 9 năm
1981), thay thế cho phiên bn RFC 760 (công b v{o th|ng giêng năm 1980).
Giao thức n{y cũng đưc chun hóa bi b quc phòng M trong phiên bn
MIL-STD-1777.
IPv4 giao thức hướng d liệu, được s dng cho h thng chuyn mch gói
(tương tự như chuẩn mạng Ethernet). Đ}y l{ giao thc truyn d liêu hot
động da trên nguyên tc tt nhtthể, trong đó, nó không quan t}m đến th
t truyền gói tin cũng như không đảm bo gói tin s đến đích hay việc gây ra
tình trng lp gói tin đích đến. Vic x lý vấn đề này dành cho tng trên ca
b giao thc TCP/IP. Tuy nhiên, IPv4 chế đảm bo tính toàn vn d liu
thông qua s dng trường checksum.
2.2.1 Địa ch IPv4
IPv4 s dụng 32 bits đ đ|nh địa chỉ, theo đó, số địa ch tối đa có thể s dng là
4,294,967,296 (232). Tuy nhiên, do mt s đưc s dng cho các mục đích
khác như: cấp cho mng nhân (xp x 18 triệu địa ch), hoc s dụng l{m địa
ch qung (xp x 16 triu), nên s ợng địa ch thc tế th s dng cho
mng Internet công cng b gim xung. Vi s phát trin không ngng ca
mạng Internet, nguy thiếu ht địa ch đ~ được d báo, tuy nhiên, nh công
ngh NAT (Network Address Translation - Chuyn dịch đa ch mng) to n
hai vùng mng riêng bit: Mng riêng và Mng công cộng, địa ch mng s dng
mng riêng th ng li mng công công không h b xung đt, qua
đó trì ho~n được vấn đề thiếu hụt địa ch.
Địa ch IPv4 được chia làm 4 nhóm, mỗi nhóm 8 bit (octet) v{ được biu din
i dng thp phân hoc thp lc phân . Thí d:
Dng biu din
Giá tr
Nh phân
11000000.10101000.00000000.00000001
Thp phân
192.168.0.1
Thp lc phân
0xC0A80001
2.2.2 Các lớp địa ch
Dải địa ch IPv4 được chia thành các lớp địa ch con. Có 5 lp ln A,B,C,D,E.
Lp
MSB
Địa ch đầu
Địa ch cui
9
A
0xxx
0.0.0.0
127.255.255.255
B
10xx
128.0.0.0
191.255.255.255
C
110x
192.0.0.0
223.255.255.255
D
1110
224.0.0.0
239.255.255.255
E
1111
240.0.0.0
255.255.255.255
Địa ch lớp A,B,C được s dng để trao đối thông tin thông thường, địa ch lp
D s dng trong Multicast lp E chưa được s dụng v{ để dành riêng sau
này.
2.2.3 Mt n mng
Địa ch IPv4 được chia làm hai phn: phn mng phn host. Các b định
tuyến s s dng phn mạng để chuyn tiếp gói tin ti mạng đích. Thí d
Network
192.168.0.
11000000.10101000.00000000.
Bng :Phn mng và phn host
Mt n mạng được s dụng để đ|nh dấu phn mng phn host. ba cách
biu din mt n mng:
Biu diễn dưới dng /n, trong đó n l{ số bit dành cho phn mng
Thí d: 192.168.0.1/24.
Biu diễn dưới dng nh phân: dùng 32 bit để đ|nh dấu, trong đó c|c bit
dành cho phn mng là 1, các bit dành cho phn host là 0.
Thí d: 11111111.11111111.11111111.00000000
hay 255.255.255.0
Biu diễn dưới dng Hexa: dùng s hexa đ biu diễn, tương tự như dng
nh ph}n. C|ch n{y ít được s dng.
Thí d: 0xFFFFFF00
Vi mi mng n bit dành cho phn mng, thì s 32-n bit dành cho phn
host. Phân phối địa ch trong mạng đó như sau
01 đa ch mng (các bit phn host bng 0).
01 đa ch qung bá (các bit phn host bng 1).
2
n
2 đa ch còn li có th gán cho các máy trm.
Thí d với địa ch 192.168.0.1/24:
Địa ch mng: 192.168.0.0
Địa ch qung bá: 192.168.0.255
10
Địa ch host: 192.168.0.1 192.168.0.254
2.2.4 Các dải địa ch đặc bit
Các dải địa ch đặc biệt, không được s dng trên Internet
Địa ch
Din gii
10.0.0.0/8
Mng riêng
127.0.0.0/8
Địa ch loopback
172.16.0.0/12
Mng riêng
192.168.0.0/16
Mng riêng
224.0.0.0/4
Multicast
240.0.0.0/4
D tr
Trong khong 4 t địa ch có th s dng của IPv4, người ta dành riêng ra ba di
địa ch để s dng trong các mng ni bộ, c|c địa ch ni b s ch s dụng để
trao đổi thông tin ni b trong mạng, v{ không ý nghĩa trên Internet. Đ kết
ni mng ni b với Internet, người ta ng thiết b gi NAT, NAT s chuyn
đổi địa ch ni b sang một địa ch toàn cục đại din cho c mạng, đi ra ngo{i
Internet.
Tên
Dải địa ch
S ợng địa ch
Mô t mng
Viết gn
Khi 24-bit
10.0.0.0
10.255.255.255
16,777,216
Mt di trn vn
thuc lp A
10.0.0.0/8
Khi 20-bit
172.16.0.0
172.31.255.255
1,048,576
T hp t mng lp
B
172.16.0.0/12
Khi 16-bit
192.168.0.0
192.168.255.255
65,536
T hp t mng lp
C
192.168.0.0/16
2.3 IPv6
Giao thc IPv6 phiên bn tiếp theo của IP, được thiết kế da trên thành công
IPv4, phiên bn vn còn được s dng rng rãi hin nay. IPv6 giao thc
trong tng liên mng trong mng chuyn mạch gói TCP/IP. Động lực chính để
thúc đẩy s ra đi ca IPv6 do cn kit t{i nguyên địa ch IPv4. IPv6 được
gii thiệu năm 1998 bi IETF (Internet Engineering Task Force). Giáo trình này
s ch đề cập đến IPv4.
11
2.4 TCP
Transmission Control Protocol TCP mt giao thc lõi chy tng giao vn,
cung cp các dch v truyn d liu theo dòng, tin cy v{ được s dng bi hu
hết các ng dng hin nay. TCP chy bên trên IP chạy bên i ng dng.
Vic lp trình mng s ch yếu s dng giao thức n{y để truyn d liu.
Giao thc IP cung cấp chế truyn d liu các gói tin gia các máy vi
nhau, nhưng không sự đảm bo v trt t, mt mát thông tin. Trái li, TCP
cung cp dch v truyn d liu chính xác, theo dòng, v{ đúng trt t gia các
ng dng trên các máy khác nhau. Ngoài ra TCP còn kim soát tốc độ truyn,
chng nghn mạng…
TCP thc hin chia d liu t tng ng dụng th{nh c|c đon, mỗi đoạn kích
thước thường không vượt qu| kích thước ca gói tin IP. TCP thêm các thông tin
điu khin vào phần đầu đoạn và chuyn xung tầng dưới để gửi đi. Dữ liu ca
các ng dng trên cùng một m|y tính được phân biệt thông qua trường Port
(16 bit) trong header ca TCP. Nếu nt ng dng mun nhn thông tin t
mng, s đăng mt cng vi h điu hành, TCP s chuyn d liu ti
ng dụng đó.
TCP Header
Bit
offset
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
Source port
Destination port
32
Sequence number
64
Acknowledgment number
96
Data
offset
Reserved
C
W
R
E
C
E
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
Window Size
128
Checksum
Urgent pointer
160
...
Options (if Data Offset > 5)
...
Hình : TCP header
rt nhiu dch v tng ng dng s dng TCP, thí d dch v web chy
cng 80, FTP cng 21, SMTP cng 25, POP3 cng 110, IMAP cổng 143…
2.5 UDP
UDP User Datagram Protocol, cũng l{ một giao thc lõi trong b TCP/IP. UDP
cung cấp chế truyn d liu gia các ng dng trên các máy khác nhau. UDP
thc hin chia nh dòng d liu tng ng dụng th{nh c|c đơn vị gi
datagram chuyn xung tng mng. Tuy nhiên ging với IP, UDP không đảm
12
bo th t ca các datagram, cũng như chế phát hin s mt mát li hoc
trùng datagram. Dù vy UDP hoạt động tương đi nhanh và hiu qu vi nhng
thông điệp ngn và yêu cu kht khe v mt thi gian.
UDP thích hp vi nhng ng dng cn tính thi gian thc cao, th sai sót
như thoại, video…
UDP cũng s dng mt s 16 bit trong header gi cng để phân bit gia các
ng dng. Cấu trúc UDP header đơn giản hơn TCP nhiều.
+
Bits 0 - 15
16 - 31
0
Source Port
Destination Port
32
Length
Checksum
64
Data
Hình : UDP header
Mt vài dch v chy trên UDP: Phân gii tên miền (DNS:53),RSTP,MMS…
2.6 H thng phân gii tên min
Trên Internet, mi máy tính muốn trao đi d liu với nhau đu phi biết địa
ch IP. Với người ng, vic nh 32 bit địa ch IPv4 hoặc 128 bit địa ch IPv6
rất khó khăn do vậy người ta xây dng h thng phân cấp, đặt n cho các y
tính trên mng để d nh: h thng phân gii tên min (Domain Name System).
ROOT (.)
.com
.net
Microsoft
.vn
vnexpress
www
Vietnamnet
.com
13
Hình 3: Phân cp h thng phân gii tên min
Tên miền được phân cp qun bi INTERNIC. Cp cao nht root, sau
ngay sau đó l{ tên min cp 1, cp 2, cấp 3…
Cp
Cp 4
Cp 3
Cp 2
Cp 1
Tên min
www.
hut.
edu.
vn
Trên Internet s các máy ch riêng, chuyên thc hin chức năng ph}n giải
tên miền sang địa ch IP v{ ngược lại. Thông thường t chức được cp mt tên
min cp 1 s duy trì sở d liu tên min cp 2 trc tiếp, t chc cp 2 li
duy trì tên min cp 3 trc tiếp…
Mt máy tính mun truy vấn địa ch IP ca tên miền n{o đó sẽ hi trc tiếp
máy ch phân gii tên min nm trong, y ch y nếu không tr li
đưc s hỏi đến máy ch cấp cao hơn, cấp cao hơn không trả lời được li hi
lên cp cao na…
Dch v phân gii tên min chy trên giao thc UDP, cng 53.
14
C
C
h
h
ư
ư
ơ
ơ
n
n
g
g
3
3
.
.
W
W
i
i
n
n
s
s
o
o
c
c
k
k
Bài ging s 3
Thời lượng: 3 tiết.
Tóm tt ni dung :
Kiến trúc WinSock.
Đặc tính ca WinSock.
ớng thông điệp
ng dòng
ng kết ni và không kết ni
Multicast
Cht lượng dch v
3.1 Kiến trúc
Winsock b thư viện liên kết động đi m với h h điu hành Windows ca
Microsoft. Winsock cung cp các API để nhà phát trin có th xây dng các ng
dng mạng đơn giản, hiệu năng cao. Winsock có vài phiên bn, bắt đầu t phiên
bản 1.0 được đưa ra năm 1992, cho đến nay l{ Winsock 2 được tích hp vào tt
c các h điu hành mi ca Microsoft. Kiến trúc Winsock gm nhiu tng,
nhưng tần trên cùng, giao tiếp trc tiếp vi ng dụng l{ thư viện WS2_32.DLL.
Hình 4: Kiến trúc Winsock
Application
Winsock 2 DLL ( WS2_32.DLL)
Layered/Base Provider
RSVP
Proxy
Default Provider
MSAFD.DLL
Winsock Kernel Mode Driver (AFD.SYS)
Transport Protocols
15
ng dng s dng Winsock bng cách liên kết triu gi các hàm trong
thư viện WS2_32.DLL. Thư vin thc hin kim tra tính hp l ca các tham s,
x|c định giao thc tầng dưới thích hp chuyn li gi xuống thư viện giao
thức bên dưới(Provider). th nhiu provider, winsock s la chn
provider thích hp. Các provider cung cp các giao thc tng mng khác nhau
như TCP/IP, IPX/SPX, AppleTalk, NetBIOS…
Các provider sau khi nhn d liu t tng trên, x lý và chuyn tiếp xung
tầng dưới, đó l{ driver chy mc kernel ca h điu hành (AFD.SYS). Driver
này chu trách nhim qun lý kết ni, b đệm v{n c|c t{i nguyên liên quan đến
socket, đồng thi giao tiếp vi driver mc thấp hơn, driver điều khin thiết b
phn cng.
mc thp nht các Transport Protocols, hay còn gọi l{ c|c driver điu
khin thiết b. Các driver này giao tiếp vi tng trên (AFD.SYS) thông quaTDI
(Transport Driver Interface). TDI giao din chung ca Microsoft, nhm cung
cp mt giao tiếp trong sut, không ph thuc vào thiết b. Các hãng phát trin
phn cng ch vic xây dựng trình điều khin ca mình tuân theo TDI, s
phi hp nhp nhàng vi h tng mng bên trên. Thiết kế này gii phóng
Microsoft khi vic xây dng nhng driver c th v{ đảm bảo tính tương thích
cho h điu hành.
Vic lp trình ng dng mng da trên Winsock s ch yếu thao tác vi
một đối tượng bản SOCKET. SOCKET trừu tượng hóa tt c các loi giao
thc. Hai ng dng muốn trao đổi d liu vi nhau , mi bên phi to mt
socket, v{ đường dây o ni gia hai SOCKET s kênh truyn d liu. Tưởng
ng mi socket mt cái phích cm, hai thiết b mun truyn thông tin thì
cn có mt dây dẫn hai đầu, mỗi đầu là mt phích cm cm vào hai thiết b đó.
3.2 Đặc tính
Winsock h tr nhiu giao thc mng, thí d UDP, IP, TCP, IPX, Infared… Mỗi
giao thc những đặc tính riêng vic s dụng SOCKET cũng kh|c nhau vi
mi giao thc.
3.2.1 Giao thc ng thông điệp
Giao thức được gọi l{ hướng thông điệp (Message-Oriented) nếu thông tin
đưc truyền đi dưới dng một thông đip riêng l. Mt bên yêu cu d liu,
s ch nhận được một thông điệp đ|p trả tương ng vi yêu cầu đ~ gửi đi. Thí
d, mt máy tính gửi 3 thông điệp, kích thước lần lượt 32, 64, 128 byte. Bên
nhn nhận đ c 3 thông điệp vào b đệm h thống, nhưng ng dng
mun lấy thông điệp ra, phi thc hin ba ln gi hàm, th t nhận được
mi ln là 32 ,64,128 byte. Phương ph|p n{y bảo toàn biên của c|c thông điệp.
16
Hình 5. Giao thức hướng thông điệp
Giao thức hướng thông điệp thích hp vi các ng dng t chc truyn d liu
theo cu trúc. Thí dụ, game chơi cờ trc tuyến, mi bên gi một thông đip
cha thông tin v ớc đi ca mình hoc nhận thông điệp v ớc đi của đối
phương.
3.2.2 Giao thức hưng dòng
Giao thc không duy trì biên giữa c|c thông điệp được gi giao thức hướng
dòng. Bên gi bên nhn truyn d liu theo dòng, mt cách liên tc
không quan t}m đến biên gia các ln truyn. Thí d, bên gi gi ba gói tin kích
thước lần lượt l{ 32,64,128 byte, nhưng bên nhận nhận được mt gói tin kích
thước 224 byte là t hp ca ba gói tin trên.
Hình 6. Giao thức hướng dòng
3.2.3.Giao thc gi dòng
Giao thc ging là nhng giao thc mà bên gi chia dòng d liu gửi đi
th{nh c|c gói (thông điệp), bên nhn nhn các gói và ghép li thành mt dòng.
TCP và UDP là hai giao thc gi dòng rt thông dng hin nay.
3.2.4 Giao thức hưng kết ni và không kết ni
Winsock h tr các giao thức hướng kết ni không kết ni. Giao thc
ng kết nối nghĩa l{ đường truyền được thành lp gia hai bên truyn nhn
17
trước khi d liu thc s đưc gửi đi, điều n{y đm bảo đường đi giữa hai
bên, v{ đảm bo hai bên cùng trng thái hoạt động, sn sàng truyn d liu.
Tuy nhiên vic thành lp kết ni gia hai bên s l{m tăng đ|ng kể d liu phát
sinh. Phn ln các giao thức hướng kết nối đều cung cp chế kim soát li,
kim soát trt t gói tin kim soát mất m|t, thừa, do đó tăng thêm t{i
nguyên tính to|n. Ngưc li, giao thc không kết ni không cn thiết lập đường
truyn, không cần đảm bo bên nhn s sn sàng nhn, nhận đúng, nhận đ d
liu. Giao thc không kết nối cũng giống như việc gửi thư. Người gửi thư không
biết người nhận mong đi nhận thư, cũng như khi n{o nhận được hay bưu
đin có th chuyển được bức thư đến tay người nhn hay không.
Trong b giao thc TCP/IP, TCP giao thức hướng kết ni còn UDP giao
thc không kết ni.
3.2.5 Tính tin cy và đúng trật t
Những đặc tính l quan trng nht khi la chn mt giao thc đó l{ tính tin
cậy v{ đúng trật t. Tính tin cy trong mt giao thc th hin vic s đảm
bo chính xác từng byte được gi mi bên, nhng giao thc không tin cy s
không đảm bo tính cht này.
Giao thức đúng trt t đảm bo chính xác trt t d liu gia bên gi bên
nhn. Byte nào gửi trước s đưc nhận trưc, byte gi sau s đưc nhn sau.
Giao thức hướng kết nối thường đảm bo tính tin cy và trt t ca d liu, tuy
nhiên chi phí x lý s tăng cao. Ngược li, giao thc không kết nối thường
không đm bo hai tính chất n{y, nhưng lại tốc độ v{ tính đ|p ứng được
đảm bo, nhng loi ng dng thi gian thc chp nhn sai sót th s
dng giao thc loi này.
3.2.6 Quá trình đóng kết ni
Vic thc hiện đóng kết ni ch xy ra trong các giao thức hướng kết ni. Trong
trường hp ca TCP, bên A mun hy phiên truyn, bên A s gi một đoạn tin
vi c FIN, bên B nhận được c FIN liên gửi đoạn tin tr li A vi c ACK để
b|o đ~ nhận được, lúc này A s không th gửi tin, nhưng vẫn th nhn tin,
cho đến khi B gửi đoạn tin có c FIN, khi đó kết nối đ~ được đóng ho{n to{n.
3.2.7 Qung bá d liu
Winsock cũng hỗ tr kh năng quảng d liu ca các giao thc. Với chế
này, mt y trm gửi thông điệp ti tt cc các y trm khác trên LAN, giao
thc không kết ni s đưc s dụng để truyn tin, hn chế của phương ph|p
này mi y tính trong mng s mt thêm chi phí x thông đip mun
hay không mun.
18
3.2.8 Multicast
Multicast l{ chế gi d liệu đến mt hoc nhiu máy trong mng (không
phi tt c) thông qua mt quá trình gi là tham gia nhóm multicast. Thí d, vi
giao thc IP, các máy tính mun nhn d liu s tham gia vào mt nhóm
multicast, b lc s đưc thc hin trên phn cng của card điều hp mạng để
ch x d liệu liên quan đến nhóm multicast đó. D liệu sau đó sẽ được đẩy
ngược lên các tng trên và chuyn cho ng dng thích hp.
3.2.9 Chất lượng dch v (QoS)
Chất lượng dch v l{ chế cho phép ng dng yêu cu một băng thông d{nh
riêng để s dng. Thí d, dch v truyn nh thi gian thực, để ng dng bên
nhn nhn được hình nh ràng, liên tc thì bên gi phi đ|p ng mt vài
tiêu chí v thi gian truyn tốc độ truyn. QoS cho phép dành riêng mt
phn bng thông trên mng cho mc đích n{y, do đó d liu truyền đi sẽ nhanh
v{ đ|p ứng kp vic hin th bên nhn.
19
Bài ging s 4
Thời lượng: 3 tiết.
Tóm tt ni dung :
Lp trình ng dng bng WinSock.
Chun b môi trường.
Khi to WinSock.
Thiết lập địa ch và cổng máy đích.
S dng dch v phân gii tên min.
To socket.
Truyn d liu bng giao thc TCP
o Phn server.
o Phn client.
3.3 Lp trình Winsock
Phn này s tập trung v{o c|c thao t|c bản liên quan đến Winsock
TCP/IP, bao gm khi to, xây dựng TCP server, TCP client…
3.3.1 Môi trường
Môi trường cn thiết để xây dng ng dng mng winsock cn là:
H điu hành: Các h điu hành Win32 ca Microsoft, bao gm Windows
95/98/2000/Me/XP/2003/Vista/7. Giáo trình này s dng h điu
hành Windows XP.
Ngôn ng lp trình: Bt k ngôn ng lp trình nào h tr vic gọi thư
vin liên kết động đều th s dng đ lp trình. Giáo trình này s
dng ngôn ng C/C++.
Thư viện: Winsock 2 bao gm thư viện liên kết động WS2_32.DLL, tp
tiêu đề WINSOCK2.H, tệp thư viện WS2_32.LIB.
ng dẫn: Thư viện trc tuyến MSDN
3.3.2 Khi to Winsock
Mi ng dng mun s dng Winsock phi khi tạo thư viện, Hàm WSAStartup
s làm nhim v khi tạo đó.
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
Trong đó wVersionRequested l{ phiên bản thư viện Winsock mun np, BYTE
thp cha s hiu phiên bn chính, BYTE cao cha phn l. Macro
MAKEWORD(x,y) s dụng để to ra WORD cn thiết, vi x byte thp, y
20
byte cao. Như vy th truyn wVersionRequested giá tr MAKEWORD(2,2)
để khi to phiên bn Winsock 2.2.
Tham s lpWSAData con tr ti cu trúc WSAData, Winsock s đin thông
tin v phiên bn vào trong cu trúc này.
typedef struct WSAData
{
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN + 1];
char szSystemStatus[WSASYS_STATUS_LEN + 1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA, * LPWSADATA;
Ý nghĩa của c|c trưng có th tra trong tviện MSDN. Các phiên bn Winsock
đưc cung cp kèm vi h điều h{nh như sau:
Nền tảng
Phiên bản
Winsock
Windows 95
1.1 (2.2)
Windows 98
2.2
Windows Me
2.2
Windows NT 4.0
2.2
Windows 2000
2.2
Windows XP
2.2
Windows CE
1.1
Nếu vic khi to thành công, hàm tr v giá tr 0, còn không tr v li. Vic
s dng phiên bản thư viện cao hơn phiên bn h điu hành h tr s dẫn đến
li v{ trường wVersion s tr v phiên bn cao nht h điều h{nh đó hỗ tr.
Trong hu hết c|c trường hợp, người ta thưng khi to phiên bn cao nht mà
h điều h{nh đó hỗ tr. ới đ}y l{ đoạn khi tạo thư viện Winsock hoàn
chnh.
WSAData wsaData;
WORD wVersion = MAKEWORD(2,2);
| 1/81

Preview text:

Bài giảng LẬP TRÌNH MẠNG
Người soạn: Lương Ánh Hoàng
Bộ môn Kỹ thuật máy tính
Viện Công nghệ thông tin và Truyền thông, ĐHBK Hà nội Hà nội, 8/2010
Mục lục bài giảng
Chương 1. Giới thiệu các mô hình lập trình mạng ............................................................. 4
1.1 Tổng quan về lập trình mạng .......................................................................................... 4
1.1.1 Khái niệm ........................................................................................................................ 4
1.1.2 Ngôn ngữ lập trình ..................................................................................................... 4
1.1.3 Thư viện hỗ trợ ............................................................................................................ 5
1.2 Giao thức Internet ............................................................................................................... 5
Chương 2. Bộ giao thức Internet (TCP/IP) ........................................................................... 6
2.1 Giới thiệu ................................................................................................................................. 6
2.2 IPv4 ............................................................................................................................................ 7
2.2.1 Địa chỉ IPv4 .................................................................................................................... 8
2.2.2 Các lớp địa chỉ ............................................................................................................... 8
2.2.3 Mặt nạ mạng ................................................................................................................. 9
2.2.4 Các dải địa chỉ đặc biệt ........................................................................................... 10
2.3 IPv6 ......................................................................................................................................... 10
2.4 TCP .......................................................................................................................................... 11
2.5 UDP .......................................................................................................................................... 11
2.6 Hệ thống phân giải tên miền ........................................................................................ 12
Chương 3. Winsock ....................................................................................................................... 14
3.1 Kiến trúc................................................................................................................................ 14
3.2 Đặc tính ................................................................................................................................. 15
3.2.1 Giao thức hướng thông điệp ............................................................................... 15
3.2.2 Giao thức hướng dòng ........................................................................................... 16
3.2.3.Giao thức giả dòng ................................................................................................... 16
3.2.4 Giao thức hướng kết nối và không kết nối .................................................... 16
3.2.5 Tính tin cậy v{ đúng trật tự ................................................................................. 17
3.2.6 Qu| trình đóng kết nối ........................................................................................... 17
3.2.7 Quảng bá dữ liệu ....................................................................................................... 17
3.2.8 Multicast ....................................................................................................................... 18
3.2.9 Chất lượng dịch vụ (QoS) ..................................................................................... 18
3.3 Lập trình Winsock ............................................................................................................ 19 2
3.3.1 Môi trường .................................................................................................................. 19
3.3.2 Khởi tạo Winsock ..................................................................................................... 19
3.3.3 X|c định địa chỉ ......................................................................................................... 22
3.3.4 Tạo socket .................................................................................................................... 26
3.3.5 Truyền dữ liệu sử dụng giao thức (TCP) ....................................................... 26
3.3.6 Truyền dữ liệu sử dụng giao thức UDP .......................................................... 40
3.3.7 Một vài hàm khác ..................................................................................................... 43
3.4 C|c phương ph|p v{o ra ................................................................................................ 44
3.4.1 Các chế độ hoạt động của Winsock .................................................................. 44
3.4.2 Các mô hình vào ra .................................................................................................. 48
Chương 4. MFC Socket ................................................................................................................ 66
4.1 Giới thiệu .............................................................................................................................. 66
4.2 CSocket .................................................................................................................................. 66
4.2.1 Khởi tạo CSocket ...................................................................................................... 66
4.2.2 Kết nối đến máy khác ............................................................................................. 67
4.2.3 Chấp nhận kết nối từ máy khác ......................................................................... 67
4.2.4 Gửi dữ liệu ................................................................................................................... 68
4.2.5 Nhận dữ liệu ............................................................................................................... 68
4.2.6 Đóng kết nối................................................................................................................ 69
4.2.7 Xây dựng Client bằng CSocket ............................................................................ 69
4.2.8 Xây dựng Server bằng CSocket .......................................................................... 69
4.3 CAsyncSocket ...................................................................................................................... 70
4.3.1 Khởi tạo đối tượng CAsyncSocket .................................................................... 70
4.3.2 Xử lý các sự kiện ....................................................................................................... 71
Chương 5. NET Socket ................................................................................................................. 74
5.1. Giới thiệu về NameSpace System.Net và System.Net.Sockets ..................... 74
5.2. Chương trình cho phía máy chủ sử dụng giao thức TCP ........................ 76
5.3. Chương trình cho phía máy khách sử dụng giao thức TCP ................... 78
5.4 Chương trình phía m|y chủ sử dụng UDP ............................................................. 79
5.5 Chương trình cho m|y kh|ch sử dụng UDP .......................................................... 80 3
Chương 1. Giới thiệu các mô hình lập trình mạng Bài giảng số 1
Thời lượng: 3 tiết.
Tóm tắt nội dung :
Định nghĩa lập trình mạng.
Ứng dụng của lập trình mạng.
Các ngôn ngữ lập trình.
Các thư viện và môi trường hỗ trợ lập trình mạng
Giao thức IP.
1.1 Tổng quan về lập trình mạng 1.1.1 Khái niệm
Lập trình mạng là các kỹ thuật lập trình nhằm xây dựng những ứng dụng, phần
mềm khai thác hiệu quả tài nguyên mạng máy tính.
Mạng m|y tính đang ng{y một phát triển, ứng dụng của mạng đem lại là không
thể phủ nhận. Giáo trình này sẽ đề cập đến một v{i phương ph|p x}y dựng các
ứng dụng tận dụng được hạ tầng mạng sẵn có.
1.1.2 Ngôn ngữ lập trình
Hầu hết các ngôn ngữ lập trình đều có thể sử dụng để lập trình mạng, tuy nhiên
việc lập trình mạng còn phụ thuộc v{o c|c thư viện v{ môi trường lập trình có
hỗ trợ hay không. Có thể liệt kê các ngôn ngữ lập trình có thể sử dụng để lập trình mạng như sau:
 C/C++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loại
ứng dụng trong đó có ứng dụng mạng.
 Java: Ngôn ngữ lập trình khá thông dụng và hỗ trợ trên nhiều môi
trường, trong đó có thể viết ứng dụng chạy trên điện thoại di động.
 C#: Ngôn ngữ lập trình cũng rất mạnh và dễ sử dụng, chỉ hỗ trợ trên họ
hệ điều hành Windows của Microsoft.
 Python, Perl, Php…: C|c ngôn ngữ thông dịch, sử dụng để viết nhanh các
tiện ích nhỏ một c|ch nhanh chóng, trong đó có thể sử dụng để viết ứng dụng mạng.
Học phần này sẽ trình b{y phương ph|p lập trình mạng dựa trên hai ngôn ngữ: C/C++ và C#. 4
1.1.3 Thư viện hỗ trợ
Việc lập trình mạng phụ thuộc rất nhiều v{o c|c thư viện hỗ trợ đến từ hệ
thống. Tùy thuộc vào nền tảng phát triển ứng dụng mà có thể sử dụng c|c thư
viện khác nhau. Có thể liệt kê một v{i thư viện hỗ trợ lập trình mạng như sau:
 Winsock: Thư viện liên kết động của Microsoft, được phân phối cùng hệ
điều hành Windows. Winsock cung cấp khá nhiều API để phát triển ứng
dụng mạng. Winsock có thể sử dụng cùng bất kỳ ngôn ngữ lập trình nào,
nhưng bộ đôi C/C++ v{ Winsock đem lại hiệu năng cao nhất, nhưng
tương đối khó sử dụng.
 Thư viện System.Net trong .NET framework: Thư viện cung cấp rất
nhiều API dễ sử dụng để xây dựng ứng dụng mạng. Để sử dụng thư viện
n{y, người ta thường dùng C#. Việc phát triển ứng dụng mạng nhờ thư viện này khá dễ dàng.
 Thư viện MFC Socket: Thư viện đi cùng bộ phát triển Visual Studio C++.
Đ}y l{ thư viện cũng kh| dễ sử dụng.
 C|c thư viện trong Java Runtime, PHP,….
Giáo trình này sẽ trình bày cách sử dụng ba thư viện Winsock, System.Net và MFC Socket. 1.2 Giao thức Internet
Giao thức Internet (IP – Internet Protocol) là giao thức mạng thông dụng nhất
trên thế giới. Thành công của Internet phần lớn là nhờ v{o IPv4. IP được c{i đặt
rộng rãi trên hầu hết các hệ điều hành, trong các mạng nội bộ, các mạng diện
rộng và Internet. Sự bùng nổ về số lượng máy tính cá nhân dẫn đến IPv4 càng
trở nên hạn chế, đó l{ tiền đề cho việc phát triển giao thức mạng mới: IPv6.
Chúng ta sẽ nhắc lại kiến thức cơ bản về Internet trong chương 2. 5
Chương 2. Bộ giao thức Internet (TCP/IP) Bài giảng số 2
Thời lượng: 3 tiết.
Tóm tắt nội dung :
Nhắc lại về bộ giao thức TCP/IP. Giao thức IP. Địa chỉ IPv6.
Giao thức TCP và UDP.
Dịch vụ DNS. 2.1 Giới thiệu
Bộ giao thức TCP/IP, ngắn gọn là TCP/IP (tiếng Anh: Internet protocol suite
hoặc IP suite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ
các giao thức truyền thông c{i đặt tầng giao thức mà Internet và hầu hết các
mạng m|y tính thương mại đang chạy trên đó. Bộ giao thức n{y được đặt tên
theo hai giao thức chính của nó là TCP (Giao thức Điều khiển Giao vận) và IP
(Giao thức Liên mạng). Chúng cũng l{ hai giao thức đầu tiên được định nghĩa.
Hình 1 . Các tầng giao thức TCP/IP
TCP/IP là một thể hiện thực tế của mô hình OSI. Mô hình OSI nguyên bản chia
thành 7 tầng giao thức, tuy nhiên TCP/IP hiện thực v{ đơn giản hóa đi chỉ còn 4 tầng.
 Tầng ứng dụng (Application Layer): Bao gồm các giao thức đóng gói dữ
liệu từ ứng dụng, người dùng rồi truyền xuống tầng thấp hơn. C|c giao 6
thức có thể kể đến ở tầng này là: HTTP, FTP, Telnet, DNS, SSH, SMTP, POP3,…
 Tầng giao vận (Transport Layer): Nhận dữ liệu từ ứng dụng tầng trên và
thông qua tầng dưới, truyền dữ liệu tới ứng dụng ở m|y tính đích. Tầng
này cung cấp dịch vụ truyền dữ liệu giữa ứng dụng - ứng dụng. Các giao
thức ở tầng này: TCP, UDP, ICMP.
 Tầng liên mạng (Network Layer): Định tuyến và truyền gói tin liên mạng.
Tầng này cung cấp dịch vụ truyền dữ liệu là các gói tin giữa các nút mạng
trong cùng một mạng hoặc liên mạng. Các giao thức ở tầng này: IPv4, IPv6,…
 Tầng liên kết (Network Acess Layer, Datalink Layer): Truyền dữ liệu
giữa các nút mạng trên cùng một nhánh mạng. Tầng này làm việc trực
tiếp với thiết bị chịu trách nhiệm chuyển đổi các bit sang một dạng tín
hiệu vật lý kh|c (|nh s|ng, điện, điện từ…)
Dữ liệu của người dùng sẽ lần lượt đi qua c|c tầng trong mô hình, ở mỗi tầng,
dữ liệu sẽ được thêm phần header để điều khiển và chuyển xuống tầng thấp
hơp. Bên nhận sẽ lần lượt bóc tách các header từ tầng thấp và chuyển lên tầng
cao, cho đến người dùng. Hình dưới đ}y minh họa qu| trình đóng gói dữ liệu
của một ứng dụng sử dụng giao thức UDP.
Hình 2: Đóng gói dữ liệu UDP 2.2 IPv4
Giao thức Internet phiên bản 4 (IPv4) là phiên bản thứ tư trong qu| trình ph|t
triển của các giao thức Internet (IP). Đ}y l{ phiên bản đầu tiên của IP được sử
dụng rộng rãi. IPv4 cùng với IPv6 (giao thức Internet phiên bản 6) là nòng cốt
của giao tiếp internet. Hiện tại, IPv4 vẫn là giao thức được triển khai rộng rãi 7
nhất trong bộ giao thức của lớp internet. Các giao thức IP chạy ở tầng liên mạng.
Giao thức n{y được công bố bởi IETF trong phiên bản RFC 791 (th|ng 9 năm
1981), thay thế cho phiên bản RFC 760 (công bố v{o th|ng giêng năm 1980).
Giao thức n{y cũng được chuẩn hóa bởi bộ quốc phòng Mỹ trong phiên bản MIL-STD-1777.
IPv4 là giao thức hướng dữ liệu, được sử dụng cho hệ thống chuyển mạch gói
(tương tự như chuẩn mạng Ethernet). Đ}y l{ giao thức truyền dữ liêu hoạt
động dựa trên nguyên tắc tốt nhất có thể, trong đó, nó không quan t}m đến thứ
tự truyền gói tin cũng như không đảm bảo gói tin sẽ đến đích hay việc gây ra
tình trạng lặp gói tin ở đích đến. Việc xử lý vấn đề này dành cho tầng trên của
bộ giao thức TCP/IP. Tuy nhiên, IPv4 có cơ chế đảm bảo tính toàn vẹn dữ liệu
thông qua sử dụng trường checksum. 2.2.1 Địa chỉ IPv4
IPv4 sử dụng 32 bits để đ|nh địa chỉ, theo đó, số địa chỉ tối đa có thể sử dụng là
4,294,967,296 (232). Tuy nhiên, do một số được sử dụng cho các mục đích
khác như: cấp cho mạng cá nhân (xấp xỉ 18 triệu địa chỉ), hoặc sử dụng l{m địa
chỉ quảng bá (xấp xỉ 16 triệu), nên số lượng địa chỉ thực tế có thể sử dụng cho
mạng Internet công cộng bị giảm xuống. Với sự phát triển không ngừng của
mạng Internet, nguy cơ thiếu hụt địa chỉ đ~ được dự báo, tuy nhiên, nhờ công
nghệ NAT (Network Address Translation - Chuyển dịch địa chỉ mạng) tạo nên
hai vùng mạng riêng biệt: Mạng riêng và Mạng công cộng, địa chỉ mạng sử dụng
ở mạng riêng có thể dùng lại ở mạng công công mà không hề bị xung đột, qua
đó trì ho~n được vấn đề thiếu hụt địa chỉ.
Địa chỉ IPv4 được chia làm 4 nhóm, mỗi nhóm 8 bit (octet) v{ được biểu diễn
dưới dạng thập phân hoặc thập lục phân . Thí dụ: Dạng biểu diễn Giá trị Nhị phân
11000000.10101000.00000000.00000001 Thập phân 192.168.0.1 Thập lục phân 0xC0A80001
2.2.2 Các lớp địa chỉ
Dải địa chỉ IPv4 được chia thành các lớp địa chỉ con. Có 5 lớp lớn A,B,C,D,E.
Lớp MSB Địa chỉ đầu Địa chỉ cuối 8 A 0xxx 0.0.0.0 127.255.255.255 B 10xx 128.0.0.0 191.255.255.255 C 110x 192.0.0.0 223.255.255.255 D 1110 224.0.0.0 239.255.255.255 E 1111 240.0.0.0 255.255.255.255
Địa chỉ lớp A,B,C được sử dụng để trao đối thông tin thông thường, địa chỉ lớp
D sử dụng trong Multicast và lớp E chưa được sử dụng v{ để dành riêng sau này. 2.2.3 Mặt nạ mạng
Địa chỉ IPv4 được chia làm hai phần: phần mạng và phần host. Các bộ định
tuyến sẽ sử dụng phần mạng để chuyển tiếp gói tin tới mạng đích. Thí dụ Network Host 192.168.0. 1
11000000.10101000.00000000. 00000001
Bảng :Phần mạng và phần host
Mặt nạ mạng được sử dụng để đ|nh dấu phần mạng và phần host. Có ba cách
biểu diễn mặt nạ mạng:
 Biểu diễn dưới dạng /n, trong đó n l{ số bit dành cho phần mạng Thí dụ: 192.168.0.1/24.
 Biểu diễn dưới dạng nhị phân: dùng 32 bit để đ|nh dấu, trong đó c|c bit
dành cho phần mạng là 1, các bit dành cho phần host là 0. Thí dụ:
11111111.11111111.11111111.00000000 hay 255.255.255.0
 Biểu diễn dưới dạng Hexa: dùng số hexa để biểu diễn, tương tự như dạng
nhị ph}n. C|ch n{y ít được sử dụng. Thí dụ: 0xFFFFFF00
Với mỗi mạng có n bit dành cho phần mạng, thì sẽ có 32-n bit dành cho phần
host. Phân phối địa chỉ trong mạng đó như sau
 01 địa chỉ mạng (các bit phần host bằng 0).
 01 địa chỉ quảng bá (các bit phần host bằng 1).
 2n – 2 địa chỉ còn lại có thể gán cho các máy trạm.
Thí dụ với địa chỉ 192.168.0.1/24:  Địa chỉ mạng: 192.168.0.0
 Địa chỉ quảng bá: 192.168.0.255 9  Địa chỉ host: 192.168.0.1 – 192.168.0.254
2.2.4 Các dải địa chỉ đặc biệt
Các dải địa chỉ đặc biệt, không được sử dụng trên Internet Địa chỉ Diễn giải 10.0.0.0/8 Mạng riêng 127.0.0.0/8 Địa chỉ loopback 172.16.0.0/12 Mạng riêng 192.168.0.0/16 Mạng riêng 224.0.0.0/4 Multicast 240.0.0.0/4 Dự trữ
Trong khoảng 4 tỉ địa chỉ có thể sử dụng của IPv4, người ta dành riêng ra ba dải
địa chỉ để sử dụng trong các mạng nội bộ, c|c địa chỉ nội bộ sẽ chỉ sử dụng để
trao đổi thông tin nội bộ trong mạng, v{ không có ý nghĩa trên Internet. Để kết
nối mạng nội bộ với Internet, người ta dùng thiết bị gọi là NAT, NAT sẽ chuyển
đổi địa chỉ nội bộ sang một địa chỉ toàn cục đại diện cho cả mạng, đi ra ngo{i Internet. Tên Dải địa chỉ Số lượng địa chỉ Mô tả mạng Viết gọn Khối 24-bit 10.0.0.0– 16,777,216
Một dải trọn vẹn 10.0.0.0/8 10.255.255.255 thuộc lớp A Khối 20-bit 172.16.0.0– 1,048,576
Tổ hợp từ mạng lớp 172.16.0.0/12 172.31.255.255 B 192.168.0.0– Tổ hợp từ mạng lớp Khối 16-bit 65,536 192.168.0.0/16 192.168.255.255 C 2.3 IPv6
Giao thức IPv6 là phiên bản tiếp theo của IP, được thiết kế dựa trên thành công
IPv4, phiên bản vẫn còn được sử dụng rộng rãi hiện nay. IPv6 là giao thức
trong tầng liên mạng trong mạng chuyển mạch gói TCP/IP. Động lực chính để
thúc đẩy sự ra đời của IPv6 là do cạn kiệt t{i nguyên địa chỉ IPv4. IPv6 được
giới thiệu năm 1998 bởi IETF (Internet Engineering Task Force). Giáo trình này
sẽ chỉ đề cập đến IPv4. 10 2.4 TCP
Transmission Control Protocol – TCP là một giao thức lõi chạy ở tầng giao vận,
cung cấp các dịch vụ truyền dữ liệu theo dòng, tin cậy v{ được sử dụng bởi hẩu
hết các ứng dụng hiện nay. TCP chạy bên trên IP và chạy bên dưới ứng dụng.
Việc lập trình mạng sẽ chủ yếu sử dụng giao thức n{y để truyền dữ liệu.
Giao thức IP cung cấp cơ chế truyền dữ liệu là các gói tin giữa các máy với
nhau, nhưng không có sự đảm bảo về trật tự, mất mát thông tin. Trái lại, TCP
cung cấp dịch vụ truyền dữ liệu chính xác, theo dòng, v{ đúng trật tự giữa các
ứng dụng trên các máy khác nhau. Ngoài ra TCP còn kiểm soát tốc độ truyền, chống nghẽn mạng…
TCP thực hiện chia dữ liệu từ tầng ứng dụng th{nh c|c đoạn, mỗi đoạn kích
thước thường không vượt qu| kích thước của gói tin IP. TCP thêm các thông tin
điều khiển vào phần đầu đoạn và chuyển xuống tầng dưới để gửi đi. Dữ liệu của
các ứng dụng trên cùng một m|y tính được phân biệt thông qua trường Port
(16 bit) trong header của TCP. Nếu nột ứng dụng muốn nhận thông tin từ
mạng, nó sẽ đăng ký một cổng với hệ điều hành, và TCP sẽ chuyển dữ liệu tới ứng dụng đó. TCP Header Bit
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 offset 0 Source port Destination port 32 Sequence number 64 Acknowledgment number C E U A P R S F Data 96 Reserved W C R C S S Y I Window Size offset R E G K H T N N 128 Checksum Urgent pointer 160
Options (if Data Offset > 5) ... ... Hình : TCP header
Có rất nhiều dịch vụ ở tầng ứng dụng sử dụng TCP, thí dụ dịch vụ web chạy ở
cổng 80, FTP ở cổng 21, SMTP cổng 25, POP3 cổng 110, IMAP cổng 143… 2.5 UDP
UDP – User Datagram Protocol, cũng l{ một giao thức lõi trong bộ TCP/IP. UDP
cung cấp cơ chế truyền dữ liệu giữa các ứng dụng trên các máy khác nhau. UDP
thực hiện chia nhỏ dòng dữ liệu ở tầng ứng dụng th{nh c|c đơn vị gọi là
datagram và chuyển xuống tầng mạng. Tuy nhiên giống với IP, UDP không đảm 11
bảo thứ tự của các datagram, cũng như cơ chế phát hiện sự mất mát lỗi hoặc
trùng datagram. Dù vậy UDP hoạt động tương đối nhanh và hiệu quả với những
thông điệp ngắn và yêu cầu khắt khe về mặt thời gian.
UDP thích hợp với những ứng dụng cần tính thời gian thực cao, có thể sai sót như thoại, video…
UDP cũng sử dụng một số 16 bit trong header gọi là cổng để phân biệt giữa các
ứng dụng. Cấu trúc UDP header đơn giản hơn TCP nhiều. + Bits 0 - 15 16 - 31
0 Source Port Destination Port 32 Length Checksum 64 Data Hình : UDP header
Một vài dịch vụ chạy trên UDP: Phân giải tên miền (DNS:53),RSTP,MMS…
2.6 Hệ thống phân giải tên miền
Trên Internet, mỗi máy tính muốn trao đổi dữ liệu với nhau đều phải biết địa
chỉ IP. Với người dùng, việc nhớ 32 bit địa chỉ IPv4 hoặc 128 bit địa chỉ IPv6 là
rất khó khăn do vậy người ta xây dựng hệ thống phân cấp, đặt tên cho các máy
tính trên mạng để dễ nhớ: hệ thống phân giải tên miền (Domain Name System). ROOT (.) .com .vn .net Microsoft .com Vietnamnet vnexpress www 12
Hình 3: Phân cấp hệ thống phân giải tên miền
Tên miền được phân cấp và quản lý bởi INTERNIC. Cấp cao nhất là root, sau
ngay sau đó l{ tên miền cấp 1, cấp 2, cấp 3… Cấp
Cấp 4 Cấp 3 Cấp 2 Cấp 1 Tên miền www. hut. edu. vn
Trên Internet sẽ có các máy chủ riêng, chuyên thực hiện chức năng ph}n giải
tên miền sang địa chỉ IP v{ ngược lại. Thông thường tổ chức được cấp một tên
miền cấp 1 sẽ duy trì cơ sở dữ liệu tên miền cấp 2 trực tiếp, tổ chức cấp 2 lại
duy trì tên miền cấp 3 trực tiếp…
Một máy tính muốn truy vấn địa chỉ IP của tên miền n{o đó sẽ hỏi trực tiếp
máy chủ phân giải tên miền mà nó nằm trong, máy chủ này nếu không trả lời
được sẽ hỏi đến máy chủ cấp cao hơn, cấp cao hơn không trả lời được lại hỏi lên cấp cao nữa…
Dịch vụ phân giải tên miền chạy trên giao thức UDP, cổng 53. 13 Chương 3. Winsock Bài giảng số 3
Thời lượng: 3 tiết.
Tóm tắt nội dung : Kiến trúc WinSock.
Đặc tính của WinSock.
Hướng thông điệp Hướng dòng
Hướng kết nối và không kết nối Multicast
Chất lượng dịch vụ 3.1 Kiến trúc
Winsock là bộ thư viện liên kết động đi kèm với họ hệ điều hành Windows của
Microsoft. Winsock cung cấp các API để nhà phát triển có thể xây dựng các ứng
dụng mạng đơn giản, hiệu năng cao. Winsock có vài phiên bản, bắt đầu từ phiên
bản 1.0 được đưa ra năm 1992, cho đến nay l{ Winsock 2 được tích hợp vào tất
cả các hệ điều hành mới của Microsoft. Kiến trúc Winsock gồm nhiều tầng,
nhưng tần trên cùng, giao tiếp trực tiếp với ứng dụng l{ thư viện WS2_32.DLL. Application
Winsock 2 DLL ( WS2_32.DLL) Layered/Base Provider RSVP Proxy Default Provider MSAFD.DLL
Winsock Kernel Mode Driver (AFD.SYS) Transport Protocols
Hình 4: Kiến trúc Winsock 14
Ứng dụng sử dụng Winsock bằng cách liên kết và triệu gọi các hàm trong
thư viện WS2_32.DLL. Thư viện thực hiện kiểm tra tính hợp lệ của các tham số,
x|c định giao thức tầng dưới thích hợp và chuyển lời gọi xuống thư viện giao
thức bên dưới(Provider). Có thể có nhiều provider, winsock sẽ lựa chọn
provider thích hợp. Các provider cung cấp các giao thức tầng mạng khác nhau
như TCP/IP, IPX/SPX, AppleTalk, NetBIOS…
Các provider sau khi nhận dữ liệu từ tầng trên, xử lý và chuyển tiếp xuống
tầng dưới, đó l{ driver ở chạy ở mức kernel của hệ điều hành (AFD.SYS). Driver
này chịu trách nhiệm quản lý kết nối, bộ đệm v{n c|c t{i nguyên liên quan đến
socket, đồng thời giao tiếp với driver ở mức thấp hơn, driver điều khiển thiết bị phần cứng.
Ở mức thấp nhất là các Transport Protocols, hay còn gọi l{ c|c driver điều
khiển thiết bị. Các driver này giao tiếp với tầng trên (AFD.SYS) thông quaTDI
(Transport Driver Interface). TDI là giao diện chung của Microsoft, nhằm cung
cấp một giao tiếp trong suốt, không phụ thuộc vào thiết bị. Các hãng phát triển
phần cứng chỉ việc xây dựng trình điều khiển của mình tuân theo TDI, và nó sẽ
phối hợp nhịp nhàng với hạ tầng mạng bên trên. Thiết kế này giải phóng
Microsoft khỏi việc xây dựng những driver cụ thể v{ đảm bảo tính tương thích cho hệ điều hành.
Việc lập trình ứng dụng mạng dựa trên Winsock sẽ chủ yếu thao tác với
một đối tượng cơ bản SOCKET. SOCKET trừu tượng hóa tất cả các loại giao
thức. Hai ứng dụng muốn trao đổi dữ liệu với nhau , mỗi bên phải tạo một
socket, v{ đường dây ảo nối giữa hai SOCKET sẽ là kênh truyền dữ liệu. Tưởng
tượng mỗi socket là một cái phích cắm, hai thiết bị muốn truyền thông tin thì
cần có một dây dẫn hai đầu, mỗi đầu là một phích cắm cắm vào hai thiết bị đó. 3.2 Đặc tính
Winsock hỗ trợ nhiều giao thức mạng, thí dụ UDP, IP, TCP, IPX, Infared… Mỗi
giao thức có những đặc tính riêng và việc sử dụng SOCKET cũng kh|c nhau với mỗi giao thức.
3.2.1 Giao thức hướng thông điệp
Giao thức được gọi l{ hướng thông điệp (Message-Oriented) nếu thông tin
được truyền đi dưới dạng một thông điệp riêng lẻ. Một bên yêu cầu dữ liệu, nó
sẽ chỉ nhận được một thông điệp đ|p trả tương ứng với yêu cầu đ~ gửi đi. Thí
dụ, một máy tính gửi 3 thông điệp, kích thước lần lượt là 32, 64, 128 byte. Bên
nhận dù có nhận đủ cả 3 thông điệp vào bộ đệm hệ thống, nhưng ứng dụng
muốn lấy thông điệp ra, nó phải thực hiện ba lần gọi hàm, và thứ tự nhận được
mỗi lần là 32 ,64,128 byte. Phương ph|p n{y bảo toàn biên của c|c thông điệp. 15
Hình 5. Giao thức hướng thông điệp
Giao thức hướng thông điệp thích hợp với các ứng dụng tổ chức truyền dữ liệu
theo cấu trúc. Thí dụ, game chơi cờ trực tuyến, mỗi bên gửi một thông điệp
chứa thông tin về nước đi của mình hoặc nhận thông điệp về nước đi của đối phương.
3.2.2 Giao thức hướng dòng
Giao thức không duy trì biên giữa c|c thông điệp được gọi là giao thức hướng
dòng. Bên gửi và bên nhận truyền dữ liệu theo dòng, một cách liên tục mà
không quan t}m đến biên giữa các lần truyền. Thí dụ, bên gửi gửi ba gói tin kích
thước lần lượt l{ 32,64,128 byte, nhưng bên nhận nhận được một gói tin kích
thước 224 byte là tổ hợp của ba gói tin trên.
Hình 6. Giao thức hướng dòng
3.2.3.Giao thức giả dòng
Giao thức giả dòng là những giao thức mà bên gửi chia dòng dữ liệu gửi đi
th{nh c|c gói (thông điệp), bên nhận nhận các gói và ghép lại thành một dòng.
TCP và UDP là hai giao thức giả dòng rất thông dụng hiện nay.
3.2.4 Giao thức hướng kết nối và không kết nối
Winsock
hỗ trợ các giao thức hướng kết nối và không kết nối. Giao thức
hướng kết nối nghĩa l{ đường truyền được thành lập giữa hai bên truyền nhận 16
trước khi dữ liệu thực sự được gửi đi, điều n{y đảm bảo có đường đi giữa hai
bên, v{ đảm bảo hai bên cùng ở trạng thái hoạt động, sẵn sàng truyền dữ liệu.
Tuy nhiên việc thành lập kết nối giữa hai bên sẽ l{m tăng đ|ng kể dữ liệu phát
sinh. Phần lớn các giao thức hướng kết nối đều cung cấp cơ chế kiểm soát lỗi,
kiểm soát trật tự gói tin và kiểm soát mất m|t, dư thừa, do đó tăng thêm t{i
nguyên tính to|n. Ngược lại, giao thức không kết nối không cần thiết lập đường
truyền, không cần đảm bảo bên nhận sẽ sẵn sàng nhận, nhận đúng, nhận đủ dữ
liệu. Giao thức không kết nối cũng giống như việc gửi thư. Người gửi thư không
biết người nhận có mong đợi nhận thư, cũng như khi n{o nhận được hay bưu
điện có thể chuyển được bức thư đến tay người nhận hay không.
Trong bộ giao thức TCP/IP, TCP là giao thức hướng kết nối còn UDP là giao thức không kết nối.
3.2.5 Tính tin cậy và đúng trật tự
Những đặc tính có lẽ quan trọng nhất khi lựa chọn một giao thức đó l{ tính tin
cậy v{ đúng trật tự. Tính tin cậy trong một giao thức thể hiện ở việc nó sẽ đảm
bảo chính xác từng byte được gửi mỗi bên, những giao thức không tin cậy sẽ
không đảm bảo tính chất này.
Giao thức đúng trật tự đảm bảo chính xác trật tự dữ liệu giữa bên gửi và bên
nhận. Byte nào gửi trước sẽ được nhận trước, byte gửi sau sẽ được nhận sau.
Giao thức hướng kết nối thường đảm bảo tính tin cậy và trật tự của dữ liệu, tuy
nhiên chi phí xử lý sẽ tăng cao. Ngược lại, giao thức không kết nối thường
không đảm bảo hai tính chất n{y, nhưng bù lại tốc độ v{ tính đ|p ứng được
đảm bảo, những loại ứng dụng thời gian thực và chấp nhận sai sót có thể sử
dụng giao thức loại này.
3.2.6 Quá trình đóng kết nối
Việc thực hiện đóng kết nối chỉ xảy ra trong các giao thức hướng kết nối. Trong
trường hợp của TCP, bên A muốn hủy phiên truyền, bên A sẽ gửi một đoạn tin
với cờ FIN, bên B nhận được cờ FIN liên gửi đoạn tin trả lại A với cờ ACK để
b|o đ~ nhận được, lúc này A sẽ không thể gửi tin, nhưng vẫn có thể nhận tin,
cho đến khi B gửi đoạn tin có cờ FIN, khi đó kết nối đ~ được đóng ho{n to{n.
3.2.7 Quảng bá dữ liệu
Winsock cũng hỗ trợ khả năng quảng bá dữ liệu của các giao thức. Với cơ chế
này, một máy trạm gửi thông điệp tới tất cảc các máy trạm khác trên LAN, giao
thức không kết nối sẽ được sử dụng để truyền tin, hạn chế của phương ph|p
này là mỗi máy tính trong mạng sẽ mất thêm chi phí xử lý thông điệp dù muốn hay không muốn. 17 3.2.8 Multicast
Multicast l{ cơ chế gửi dữ liệu đến một hoặc nhiều máy trong mạng (không
phải tất cả) thông qua một quá trình gọi là tham gia nhóm multicast. Thí dụ, với
giao thức IP, các máy tính muốn nhận dữ liệu sẽ tham gia vào một nhóm
multicast, bộ lọc sẽ được thực hiện trên phần cứng của card điều hợp mạng để
chỉ xử lý dữ liệu liên quan đến nhóm multicast đó. Dữ liệu sau đó sẽ được đẩy
ngược lên các tầng trên và chuyển cho ứng dụng thích hợp.
3.2.9 Chất lượng dịch vụ (QoS)
Chất lượng dịch vụ l{ cơ chế cho phép ứng dụng yêu cầu một băng thông d{nh
riêng để sử dụng. Thí dụ, dịch vụ truyền hình thời gian thực, để ứng dụng bên
nhận nhận được hình ảnh rõ ràng, liên tục thì bên gửi phải đ|p ứng một vài
tiêu chí về thời gian truyền và tốc độ truyền. QoS cho phép dành riêng một
phần bằng thông trên mạng cho mục đích n{y, do đó dữ liệu truyền đi sẽ nhanh
v{ đ|p ứng kịp việc hiển thị ở bên nhận. 18 Bài giảng số 4
Thời lượng: 3 tiết.
Tóm tắt nội dung :
Lập trình ứng dụng bằng WinSock.
Chuẩn bị môi trường.
Khởi tạo WinSock.
Thiết lập địa chỉ và cổng máy đích.
Sử dụng dịch vụ phân giải tên miền. Tạo socket.
Truyền dữ liệu bằng giao thức TCP o Phần server. o Phần client. 3.3 Lập trình Winsock
Phần này sẽ tập trung v{o c|c thao t|c cơ bản liên quan đến Winsock và
TCP/IP, bao gồm khởi tạo, xây dựng TCP server, TCP client… 3.3.1 Môi trường
Môi trường cần thiết để xây dựng ứng dụng mạng winsock cần là:
 Hệ điều hành: Các hệ điều hành Win32 của Microsoft, bao gồm Windows
95/98/2000/Me/XP/2003/Vista/7. Giáo trình này sử dụng hệ điều hành Windows XP.
 Ngôn ngữ lập trình: Bất kỳ ngôn ngữ lập trình nào hỗ trợ việc gọi thư
viện liên kết động đều có thể sử dụng để lập trình. Giáo trình này sử dụng ngôn ngữ C/C++.
 Thư viện: Winsock 2 bao gồm thư viện liên kết động WS2_32.DLL, tệp
tiêu đề WINSOCK2.H, tệp thư viện WS2_32.LIB.
 Hướng dẫn: Thư viện trực tuyến MSDN 3.3.2 Khởi tạo Winsock
Mọi ứng dụng muốn sử dụng Winsock phải khởi tạo thư viện, Hàm WSAStartup
sẽ làm nhiệm vụ khởi tạo đó. int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );
Trong đó wVersionRequested l{ phiên bản thư viện Winsock muốn nạp, BYTE
thấp chứa số hiệu phiên bản chính, BYTE cao chứa phần lẻ. Macro
MAKEWORD(x,y) sử dụng để tạo ra WORD cần thiết, với x là byte thấp, y là 19
byte cao. Như vậy có thể truyền wVersionRequested giá trị MAKEWORD(2,2)
để khởi tạo phiên bản Winsock 2.2.
Tham số lpWSAData là con trỏ tới cấu trúc WSAData, Winsock sẽ điền thông
tin về phiên bản vào trong cấu trúc này. typedef struct WSAData { WORD wVersion; WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN + 1];
char szSystemStatus[WSASYS_STATUS_LEN + 1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; } WSADATA, * LPWSADATA;
Ý nghĩa của c|c trường có thể tra trong thư viện MSDN. Các phiên bản Winsock
được cung cấp kèm với hệ điều h{nh như sau: Nền tảng Phiên bản Winsock Windows 95 1.1 (2.2) Windows 98 2.2 Windows Me 2.2 Windows NT 4.0 2.2 Windows 2000 2.2 Windows XP 2.2 Windows CE 1.1
Nếu việc khởi tạo thành công, hàm trả về giá trị 0, còn không trả về mã lỗi. Việc
sử dụng phiên bản thư viện cao hơn phiên bản hệ điều hành hỗ trợ sẽ dẫn đến
lỗi v{ trường wVersion sẽ trả về phiên bản cao nhất hệ điều h{nh đó hỗ trợ.
Trong hầu hết c|c trường hợp, người ta thường khởi tạo phiên bản cao nhất mà
hệ điều h{nh đó hỗ trợ. Dưới đ}y l{ đoạn mã khởi tạo thư viện Winsock hoàn chỉnh. WSAData wsaData; WORD wVersion = MAKEWORD(2,2); 20