Giới thiệu
Kỹ thuật lập trình mạng
Cơ bản về mạng: OSI, TCP/IP
Giao thức TCP, UDP
Mô hình Client/Server
Trao đổi dữ liệu giữa các máy tính
Giới thiệu kỹ thuật socket
              
                                            
                                
            
 
            
                 59 trang
59 trang | 
Chia sẻ: Mr Hưng | Lượt xem: 1224 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang nội dung tài liệu Lập trình mạng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Introduction
GV: Nguyễn Thị Thanh Vân - CNTT
1
Java Simplified / Session 22 / 2 of 45
 Giới thiệu
 Kỹ thuật lập trình mạng
 Cơ bản về mạng: OSI, TCP/IP
 Giao thức TCP, UDP
 Mô hình Client/Server
 Trao đổi dữ liệu giữa các máy tính
 Giới thiệu kỹ thuật socket
2
Java Simplified / Session 22 / 3 of 45
 Một ứng dụng chạy trên máy đơn cục bộ: không 
còn thích hợp với nhu cầu thực tế.
 ứng dụng: tích hợp và triệu gọi lẫn nhau trên mạng 
Intranet, Internet một cách hiệu quả và an toàn: 
kỹ thuật lập trình mạng.
 Yêu cầu người lập trình những hiểu biết và kỹ năng 
chuyên sâu hơn để tạo giao tiếp và trao đổi dữ liệu 
giữa các máy tính với nhau.
3
Java Simplified / Session 22 / 4 of 45
 Học lập trình mạng để làm gì?
◦ Có được sự hiểu biết để quản trị các dịch vụ có 
sẵn trên mạng tốt hơn.
◦ Có kiến thức để có thể lập được các tiện ích khai 
thác tài nguyên trên mạng internet
◦ Bước đầu lập được các ứng dụng server và client 
phục vụ cho một mục đích riêng nào đó.
4
Java Simplified / Session 22 / 5 of 45
 Thực hiện được nhiều chức năng:
◦ 1 Retrieve Data
◦ 2 Send Data
 1 File storage
 2 Massively parallel computing
◦ 3 Peer-to-Peer Interaction
 1 Games
 2 Chat
 3 File Sharing
◦ 4 Server
◦ 5 Searching the Web
◦ 6 Electronic Commerce
◦ 7 Ubiquitous Computing
◦ 8 Interactive Television
5
Java Simplified / Session 22 / 6 of 45
 Các khái niệm
 Các thành phần
 OSI Model
 TCP/IP
 Giao thức TCP
 Giao thức UDP
 Các dịch vụ mạng
6
Java Simplified / Session 22 / 7 of 45
3. Các khái niệm cơ bản:
 Mạng máy tính: 
là một tập hợp các máy tính được nối với nhau bởi 
các đường truyền vật lý theo một kiến trúc nào đó
 Đường truyền vật lý: 
 Kiến trúc mạng: Thể hiện cách nối các máy tính 
với nhau ra sao và tập hợp các qui tắc, qui ước 
mà tất cả các thực thể tham gia truyền thông trên 
mạng phải tuân theo.
 Hình trạng/đồ hình mạng – Topology: Topo
Point to point, Broadcast
 Giao thức mạng – Protocol
7
Java Simplified / Session 22 / 8 of 45
 Phân loại theo khoảng cách địa lý:
◦ LAN, WAN, MAN
 Phân loại theo đồ hình mạng (Topo): 
◦ Point to point, 
◦ Broadcast
 Phân loại theo cách truyền tin
◦ Chuyển mạch kênh (circuit-switched),
◦ Chuyển mạch gói (packet-switched). 
 Phân loại theo kiến trúc quản lý: 
◦ Peer to peer, 
◦ Server based
8
Java Simplified / Session 22 / 9 of 45
 Đặc điểm:
◦ Thực hiện sự trao đổi thông tin giữa hai đối tượng theo thời gian thực.
◦ Đối tượng sử dụng làm chủ kênh dẫn trong suốt quá trình trao đổi tin
◦ Hiệu suất thấp vì có lúc cả 2 bên đều hết thông tin để truyền
◦ Lãng phí thời gian do có giai đoạn thiết lập kênh và giải phóng kênh
◦ Nội dung thông tin không mang thông tin địa chỉ
◦ Phù hợp với dịch vụ thoại
◦ Khi lưu lượng tăng đến một mức ngưỡng nào đó thì một số cuộc gọi 
có thể bị khoá, mạng từ chối mọi yêu cầu kết nối cho đến khi có thể
9
Java Simplified / Session 22 / 10 of 4510
Java Simplified / Session 22 / 11 of 45
a. Môi trường truyền dẫn
cáp, sóng điện từ, sóng vi ba, tia hồng ngoại...
b. Thiết bị phần cứng:
 Kết nối các môi trường truyền: Card mạng (NIC hay 
Adapter), Hub, Switch, Router...
 Điều khiển quá trình truyền dữ liệu
 Chạy các phần mềm: PC, Server
 Các thiết bị ngoại vi: máy in, máy fax, Modem, Scanner
c. Phần mềm mạng
 Các protocol
 Các hệ điều hành mạng
 Các tài nguyên: file, thư mục
 Các ứng dụng mạng
11
Java Simplified / Session 22 / 12 of 45
Xuất phát từ ý tưởng Kiến trúc phân tầng:
- Mục đích: giảm độ phức tạp của việc thiết kế và cài 
đặt mạng
12
Tầng n
Tầng i+1
Tầng i
Tầng i-1
Tầng 1
Tầng n
Tầng i+1
Tầng i
Tầng i-1
Tầng 1
Giao thức tầng i
Liên kết vật lý
Hệ thống A Hệ thống B
Giao 
diện 
tầng i 
và 
tầng 
i-1
Java Simplified / Session 22 / 13 of 45
- Mỗi mức được thiết kế để cung cấp một số dịch vụ xác 
định cho mức trên nó
. Một số NSX:
• SNA của IBM (6 layer)
• DECnet của Digital Equipment Corporation (8)
• Appletalk của Apple, 
• Netware của Novell Inc
Java Simplified / Session 22 / 14 of 45
 Không thống nhất về kiến trúc giữa các hệ 
thống mạng, gây ra sự khác nhau về: 
- Phương pháp truy nhập đường truyền
- Giao thức giữa các mạng.
 OSI: Reference Model for Open Systems 
Interconnection – Mô hình tham chiếu cho việc nối 
kết các hệ thống mở:
• Xuất phát từ kiến trúc phân tầng
• Xây dựng một khung chuẩn về kiến trúc mạng, làm 
căn cứ cho các nhà thiết kế và chế tạo các sản 
phẩm về mạng 
14
Java Simplified / Session 22 / 15 of 4515
 OSI 7 layers
Java Simplified / Session 22 / 16 of 4516
Java Simplified / Session 22 / 17 of 45
 Một số đặc tính
- Độc lập về hình thái của mạng.
- Độc lập về phần cứng của mạng.
- Mô hình địa chỉ toàn cầu.
- Nền tảng client/server mạnh mẽ.
- Các chuẩn về giao thức ứng dụng mạnh mẽ.
17
Java Simplified / Session 22 / 18 of 45
 Có 4 tầng:
◦ Mức liên kết dữ liệu (Data Link/ Network Access)
Giao tiếp với thiết bị phần cứng 1 cách phù hợp
◦ Mức mạng (Network / Internet)
Đánh địa chỉ, routing, vận chuyển gói tin
◦ Mức chuyển (Transport)
Đảm bảo dữ liệu được truyền một cách tin cậy
◦ Mức ứng dụng (Aplication)
Các ứng dụng, các dịch vụ
18
Java Simplified / Session 22 / 19 of 4519
Java Simplified / Session 22 / 20 of 4520
Java Simplified / Session 22 / 21 of 45
 Địa chỉ là thông tin giúp gói tin đi đến đích 
đúng
21
Java Simplified / Session 22 / 22 of 45
 TCP (Transmission Control Protocol) là giao 
thức truyền thông cơ bản giúp trao đổi dữ 
liệu qua lại giữa 2 hay nhiều máy tính một 
cách tin cậy và chính xác.
22
Java Simplified / Session 22 / 23 of 45
 TCP đòi hỏi thiết lập kết nối trước khi bắt đầu 
gửi dữ liệu và kết thúc kết nối khi việc gửi dữ 
liệu hoàn tất. 
 Cụ thể, các kết nối TCP có ba pha:
◦ thiết lập kết nối
◦ truyền dữ liệu
◦ kết thúc kết nối
23
1
Java Simplified / Session 22 / 24 of 45
CTL = Which control bits in the TCP header are set to 1
1
2
3
Java Simplified / Session 22 / 25 of 45
1
2
4
3
Java Simplified / Session 22 / 26 of 45
• Báo nhận dữ liệu từ trạm đích; 
• Có cơ chế để phát hiện mất gói tin hoặc các gói 
tin đến không theo thứ tự; 
• Có cơ chế tự động gởi lại những gói tin bị mất; 
• Có cơ chế điều khiển luồng dữ liệu,
• Chậm
26
Java Simplified / Session 22 / 27 of 45
 UDP (User Datagram Protocol) là giao thức 
truyền nhận dữ liệu dưới dạng các gói tin độc 
lập giữa các máy tính với nhau nhưng không 
đảm bảo sự toàn vẹn dữ liệu (không tin cậy). 
UDP là giao thức phi kết nối
27
Java Simplified / Session 22 / 28 of 45
 Mô hình được phổ biến nhất trong các hệ 
thống phân tán là mô hình client/server. 
 Mô hình truyền tin client/server hướng tới 
việc cung cấp dịch vụ. 
Quá trình trao đổi dữ liệu bao gồm: 
 Truyền một yêu cầu từ tiến trình client tới tiến 
trình server
 Yêu cầu được server xử lý
 Truyền đáp ứng cho client
28
Java Simplified / Session 22 / 29 of 45
Mô hình client/server thường được cài đặt dựa 
trên các thao tác cơ bản là gửi (send) 
và nhận (receive). 
29
Java Simplified / Session 22 / 30 of 45
 Kiến trúc client/server đơn giản nhất là kiến trúc 
hai tầng. 
 Một ứng dụng hai tầng cung cấp nhiều trạm:
◦ tầng trình diễn (client): xử lý các công việc. 
◦ tầng lưu trữ dữ liệu tập trung (server). kiểm soát 
luồng vào ra giữa ứng dụng và dữ liệu
 Hầu hết các ứng dụng Internet như là email, 
telnet, ftp, Web là các ứng dụng hai tầng. 
 Hạn chế: 
◦ hiệu năng ứng dụng giảm do hạn chế tại CLient
◦ dữ liệu truyền trên mạng tăng
◦ Bảo trì (affect to Client & Server
30
Java Simplified / Session 22 / 31 of 4531
Java Simplified / Session 22 / 32 of 45
 Một ứng dụng được chia thành ba tầng tách 
biệt nhau về mặt logic:
◦ Tầng đầu tiên là tầng trình diễn thường bao gồm 
các giao diện đồ họa. 
◦ Tầng thứ hai, còn được gọi là tầng trung gian hay 
tầng tác nghiệp. 
◦ Tầng thứ ba chứa dữ liệu cần cho ứng dụng, thực 
hiện các lời gọi hàm để tìm kiếm dữ liệu cần thiết. 
Tầng trình diễn nhận dữ liệu và định dạng nó để 
hiển thị.
Oracle, SQL Server hoặc tài liệu XML.
32
Java Simplified / Session 22 / 33 of 4533
Java Simplified / Session 22 / 34 of 45
 Kiến trúc n-tầng được chia thành các tầng như 
sau: 
◦ Tầng giao diện người dùng: quản lý tương tác của 
người dùng với ứng dụng 
◦ Tầng logic trình diễn: Xác định cách thức hiển thị giao 
diện người dùng và các yêu cầu của người dùng 
được quản lý như thế nào. 
◦ Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác 
nghiệp, 
◦ Tầng các dịch vụ hạ tầng: Cung cấp một chức năng 
bổ trợ cần thiết cho ứng dụng như các thành phần 
(truyền thông điệp, hỗ trợ giao tác).
34
Java Simplified / Session 22 / 35 of 4535
Java Simplified / Session 22 / 36 of 45
 Khi kết nối vào máy chủ ta có thể yêu cầu máy chủ 
nhiều dịch vụ khác nhau: HTTP, mail, DNS, FTP
 Mỗi dịch vụ đều có cách gửi nhận dữ liệu theo quy 
ước riêng => quy định bởi cổng (hay port).
 Mỗi chương trình dịch vụ sẽ sử dụng một cổng khác 
để truy xuất thông tin. Cổng là một số nguyên dương 
có giá trị từ 1 đến 16383 
 Server sẽ quy định cổng được sử dụng cho mỗi loại 
dịch vụ. 
 Thông tin giữa Client và Server phải sử dụng cổng 
tương ứng nhau thì mới trao đổi được với nhau.
36
Java Simplified / Session 22 / 37 of 4537
Java Simplified / Session 22 / 38 of 45
 Làm thế nào để 
truyển dữ liệu từ 
máy này đến máy 
kia?
 Có thể sử dụng một 
trong các kỹ thuật 
như:
- NetBIOS
- Pipe
- Socket 
38
Java Simplified / Session 22 / 39 of 45
 Cho phép các ứng dụng trong các máy tính liên lạc bên 
trong LAN. 
 Được dùng trong các mạng Ethernet và Token Ring và coi 
như là một phần của NetBIOS Extended User Interface 
(NetBEUI), trong Windows. Được phát triển bởi IBM.
 Cung cấp các dịch vụ session và transport (OSI). 
 NetBIOS cung cấp 2 kiểu liên lạc là session và datagram
◦ Session: là kiểu liên lạc giữa 2 máy tính thông qua thủ tục kết 
nối, nó cho phép truyền được các messages kích thước lớn, 
xác định lỗi và sửa lỗi.
◦ Datagram là kiểu liên lạc không cần thủ tục kết nối messages 
nhỏ, và nó hỗ trợ kiểu truyên quảng bá một message đến mỗi 
máy tính trên mạng LAN.
39
Java Simplified / Session 22 / 40 of 4540
1. ADD NAME
3. CALL
4. SEND
7. RECEIVE
CLIENT
1. ADD NAME
2. LISTEN
5. RECEIVE
6. SEND
SERVER
8. HANGUP
9. HANGUP
Java Simplified / Session 22 / 41 of 4541
SEND DATAGRAM 
SEND_BCST_DATAGRAM_WAIT
DELETE NAME
ADD NAME
RECEIVE DATAGRAM 
RECEIVE_BCST_DATAGRAM_WAIT
DELETE NAME
STATION 1 STATION 2
ADD NAME
Java Simplified / Session 22 / 42 of 45
 Pipe:
◦ là một bộ đệm dữ liệu được thực hiện trong bộ nhớ hệ thống, 
◦ được sử dụng như là chuyển dòng dữ liệu liên tục giữa các tiến trình 
hoặc giữa các máy tính.
 Các Pipe làm việc như là các file giả. Do đó, một số hàm I/O 
API về file có thể áp dụng (không phải là tất cả) 
 Có 2 kiểu pipe: anonymous và named pipes. 
- Anonymous pipes : kiểu unidirectional, được sử dụng để 
liên lạc giữa các tiến trình. 
- Named pipes: có thể là bidirectional và thường được sử 
dụng để liên lạc giữa các trạm trên mạng.
42
Java Simplified / Session 22 / 43 of 4543
Java Simplified / Session 22 / 44 of 4544
Java Simplified / Session 22 / 45 of 45
 khi yêu cầu một dịch vụ trên máy chủ thực 
hiện điều gì đó, Client phải có khả năng kết 
nối được với máy chủ. => Thực hiện thông 
qua cơ chế socket (ổ cắm)
 Socket là một API => ta có thể lập trình điều 
khiển truyền thông giữa 2 máy sử dụng các 
giao thức TCP, UDP. 
 Kết nối theo socket cần: IP và port.
45
Java Simplified / Session 22 / 46 of 45
 Socket API – Socket Application 
Programming Interface
 Ðược giới thiệu ở BSD4.1 UNIX, 1981
 Ðược ứng dụng khởi tạo, sử dụng và hủy bỏ.
 Dùng cơ chế client/server
 Cung cấp hai dịch vụ chuyển dữ liệu thông
qua socket API:
◦ unreliable datagram (UDP)
◦ reliable, byte stream-oriented (TCP)
46
Java Simplified / Session 22 / 47 of 4547
Java Simplified / Session 22 / 48 of 4548
Java Simplified / Session 22 / 49 of 4549
Java Simplified / Session 22 / 50 of 45
 Stream Socket: dùng cho connection-
oriented protocol như TCP.
 Datagram Socket: dùng cho connectionless 
protocol như UDP.
 Raw Socket: dùng cho một số protocol của 
một số ứng dụng đặc biệt, dùng các dịch vụ 
trực tiếp của lớp IP.
50
Java Simplified / Session 22 / 51 of 45
 Hàm bind() để đăng ký với hệ thống
 Hàm connect() để kết nối đến server
 Hàm listen() đặt socket ở trạng thái chờ, lắng 
nghe kết nối từ phía client
 Hàm accept() : chấp nhận kết nối từ client đến
 Hàm read() để đọc dữ liệu từ socket
 Hàm write() để ghi dữ liệu
 Hàm sendto() để gởi dữ liệu đến một địa chỉ 
socket từ xa
 Hàm recvfrom() để nhận dữ liệu đến một địa chỉ 
socket từ xa
51
Java Simplified / Session 22 / 52 of 4552
Java Simplified / Session 22 / 53 of 4553
Java Simplified / Session 22 / 54 of 45
 Một trong 2 quá trình phải công bố số hiệu 
cổng của socket mà mình sử dụng
 Mỗi cổng giao tiếp thể hiện 1 địa chỉ xác định 
trong hệ thống 
 Có thể nhận dữ liệu gửi đến cổng giao tiếp 
này từ các quá trình khác.
54
Java Simplified / Session 22 / 55 of 4555
Dịch vụ Giao thức Cổng dịch vụ
DNS lookup UDP 53
FTP TCP 21
HTTP TCP 80
POP3 TCP 110
Windows shared
printer name lookup
UDP 137
Telnet TCP 23
Java Simplified / Session 22 / 56 of 45
 Socket API dựa trên nền Berkeley socket.
 Socket trên BSD Unix
 Socket trên Windows 
 Trong MS-DOS, Windows, MacOS và OS/2, 
sockets được cung cấp dưới dạng các thư 
viện lập trình.
 Hầu hết ngôn ngữ lập trình đều hỗ trợ lập 
trình mạng: C/C++, Python, Java, VB, 
56
Java Simplified / Session 22 / 57 of 45
 Trong BSD Unix, socket là một phần trong 
kernel của hệ điều hành. Nó cung cấp các 
dịch vụ IPC cục bộ hoặc giữa các tiến trình 
trên mạng
57
Java Simplified / Session 22 / 58 of 45
 WinSock hiện thực Berkeley Sockets 
Interface trên môi trường Windows.
 WinSock có nhiều mở rộng thêm so với 
Berkeley Sockets.
58
Java Simplified / Session 22 / 59 of 45
 Dùng thư viện WinSock API (Windows 
Sockets Application Programming Interface ) 
để hiện thực.
◦ Cần có thư viện WINSOCK.DLL hoặc 
◦ WINSOCK32.DLL (32-bit Windows ).
◦ Cần include các hàm và cấu trúc từ WINSOCK.H 
hoặc WINSOCK2.H
◦ Có thể biên dịch dạng dòng lệnh :
cl –o dest-file src-file ws2_32.lib
59
            Các file đính kèm theo tài liệu này:
 lap_trinh_mang_chapter1_introduction_661.pdf lap_trinh_mang_chapter1_introduction_661.pdf