1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Lập trình mạng

237 15 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 237
Dung lượng 4,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MÔN HỌC: LẬP TRÌNH MẠNGChương 1: Những vấn đề cơ bản của lập trình mạng Chương 2: Lập trình SOCKET hướng kết nối Chương 3: Lập trình SOCKET phi kết nối Chương 4: Sử dụng các lớp trợ giu

Trang 1

LẬP TRÌNH MẠNG (Network programming)

Giảng viên: Ths Trần Đắc Tốt – Khoa CNTT

Trang 2

MÔN HỌC: LẬP TRÌNH MẠNG

Chương 1: Những vấn đề cơ bản của lập trình mạng

Chương 2: Lập trình SOCKET hướng kết nối

Chương 3: Lập trình SOCKET phi kết nối

Chương 4: Sử dụng các lớp trợ giúp của C# SOCKET

Chương 5: Lập trình đa luồng (MULTI-THREADING)

Trang 3

CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA

LẬP TRÌNH MẠNG

Cơ bản về mạng máy tính

Mô hình truyền thông

Các mô hình tham chiếu

Tổng quan về lập trình mạng

Trang 4

Mục đích: Giới thiệu các khái niệm cơ bản về

Mạng máy tính, truyền thông mạng máy tính

Mô hình OSI, TCP/IP Windows Socket

Trang 5

CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA

LẬP TRÌNH MẠNG

Cơ bản về mạng máy tính

Mô hình truyền thông

Các mô hình tham chiếu

Tổng quan về lập trình mạng

Trang 6

Cơ bản về mạng máy tính

Trang 7

Cơ bản về mạng máy tính

Tập hợp các máy tính và thiết bị mạng kết nối với nhau theo một kiến trúc nào đó để trao đổi dữ liệu

Máy tính: máy tr ạm, máy chủ,

bộ định tuyến, switch

Kết nối bằng phương tiện truyền thông

Theo một kiến trúc nào đó

Các dạng máy tính ?

Trang 8

Cơ bản về mạng máy tính

Internet ngày nay

Trang 9

Cơ bản về mạng máy tính

Xử lý tập trung hay phân tán

Trang 10

Cơ bản về mạng máy tính

Kiến trúc mạng: Hình trạng (topology) và giao thức (protocol)

Thực tế là sự kết hợp của nhiều hình trạng Trục (Bus) Vòng (Ring) Sao (Star)

Trang 11

Cơ bản về mạng máy tính

Giao thức là gì?

Trang 12

Cơ bản về mạng máy tính

Protocol: Quy tắc để truyền thông

Gửi: Một thông điệp với yêu cầu hoặc thông tin

Nhận: Nhận một thông điệp với thông tin, sự kiện hoặc hành động

Định nghĩa khuôn dạng và thứ tự truyền, nhận thông điệp giữa các thực thể trên mạng hoặc các hành động tương ứng khi nhận thông điệp

Ví dụ về giao thức mạng: TCP, UDP, IP, HTTP,

Trang 13

CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA

LẬP TRÌNH MẠNG

Cơ bản về mạng máy tính

Mô hình truyền thông

Các mô hình tham chiếu

Tổng quan về lập trình mạng

Trang 14

Mô hình truyền thông

• Trao đổi dữ liệu sử dụng một kênh riêng

• Mỗi liên kết sử dụng một kênh Tài nguyên của kênh đó không được sử bởi kênh khác cho đến khi đóng liên kết

• Tài nguyên được gán riêng cho mỗi kênh, kê cả khi tài nguyên đó đang rỗi, người khác cũng không sử dụng được

Trang 15

Mô hình truyền thông

Chuyển mạch gói

• Dữ liệu được chia thành các gói(packets) và được truyền qua mạng

• Nhiều liên kết có thể chia sẻ một kênh

• Internet (Với giao thức IP) sử dụng chuyển mạch gói

• Toàn bộ băng thông được chia sẻ cho tât cả mọi người

• Nếu còn bằng thông thì ai cũng có thể sử dụng được

Trang 16

Mô hình truyền thông

So sánh

Chuyển mạch kênh

Mỗi kênh chỉ sử dụng một liên kết

Bảo đảm băng thông (cần cho các ứng dụng audio/video)

Lãng phí nếu liên kết đó không sử dụng hết khả năng của kênh

Chuyển mạch gói

Tăng hiệu quả sử dụng băng thông

Tốt cho các dữ liệu đến ngẫu nhiên, không định trước

Hạn chế: Tắc nghẽ làm trễ và mất gói tin, không đảm bảo băng thông

Trang 17

Mô hình truyền thông

Truyền thông hướng liên kết và không hướng liên kết

Truyền thông hướng liên kết

 Dữ liệu được truyền qua một liên kết đã được thiết lập

 Thông qua 3 giai đoạn: Thiết lập liên kết, truyền dữ liệu hủy bỏ liên kết.

 Đáng tin cậy

Truyền thông không hướng liên kết

 Không thiết lập liên kết, chỉ có giai đoạn truyền dữ liệu

 Không tin cậy - “Best effort”

Trang 18

CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA

LẬP TRÌNH MẠNG

Cơ bản về mạng máy tính

Mô hình truyền thông

Các mô hình tham chiếu

Tổng quan về lập trình mạng

Trang 19

Các mô hình tham chiếu

Trang 20

Các mô hình tham chiếu

Chức năng chung của các tầng

Vật lý: Truyền bits “trên đường truyền”

Liên kết dữ liệu: Truyền dữ liệu giữa các thành phần nối kết trong mạng Mạng: chọn đường, chuyển tiếp gói tin từ nguồn tới đích

Giao vận: Xử lý việc truyền-nhận dữ liệu cho các ứng dụng

Phiên: Đồng bộ hóa, check-point, khôi phục quá trình trao đổi

Trình diễn: cho phép các ứng dụng biễu diễn dữ liệu, e.g., mã hóa, nén, chuyển đổi…

Ứng dụng: Hỗ trợ các ứng dụng trên mạng

Trang 21

Các mô hình tham chiếu

Mô hình OSI và TCP/IP

Trong mô hình TCP/IP (Internet), chức năng 3 tầng trên được phân định vào một tầng duy nhất

Trang 22

Ví dụ về quá trình gửi dữ liệu từ nguồn, qua nút trung gian (bộ đinh tuyến), rồi tới đích

Mô hình phân tầng của Internet

Trang 24

(N+1) PDU

(N) PDU (N-1) PDU

Trang 25

Data Data Ex:HTTP header

Trang 26

IP

FTP TCP

Protocol stack và quá trình đóng gói

Trang 27

IP

FTP TCP

Trang 29

IP

FTP TCP

Protocol stack và quá trình đóng gói

Trang 30

IP

FTP TCP

Trang 31

CAT5 CAT5

Ethernet/10M

IP

FTP TCP

Ethernet/100M

IP

FTP TCP

Trang 32

IP

FTP TCP

Trang 33

IP

FTP TCP

Protocol stack và quá trình đóng gói

Trang 34

IP

FTP TCP

Trang 35

IP

FTP TCP

Trang 36

IP

FTP TCP

Trang 37

Tóm tắt: ưu điểm của kiến trúc phân tầng

Chia nhỏ cho phép dễ dàng xác định chức năng của mỗi tầng

Mềm dẻo, linh hoạt với các công nghệ mới

Trao đổi giữa các tầng đồng mức: Có thể cải tiến hệ thống bằng cách thay đổi công nghệ của tầng tương ứng Vd: ISDN→ADSL→FTTH、IPv4→IPv6 Nếu không phân tầng: Khi muốn thay đổi, phải làm toàn bộ

Trang 38

application TCP/UDP

IP

data link

e.g 00:11:24:79:8e:82 physical

Port Number , e.g Port 80

IP address , e.g 203.12.15.165

Physical address / MAC address

Định danh trên Internet và quan hệ với các tầng

Trang 39

Địa chỉ vật lý /địa chỉ MAC

Sử dụng trong tầng liên kết dữ liệu

Cố định trên card mạng NIC ( Network Interface Card)

Sử dụng để địa chỉ hóa máy tính trong các mạng quảng bá

00:11:24:79:8e:82

00000000 00010001 00100100 01111001 10001110 10000010 HEX

OUI Gán bởi nhà sản xuất

OUI (Organizationally Unique Identifier): Mã nhà sản xuất

Mỗi nhà sản xuất có các giá trị OUI riêng Một nhà sản xuất có thể có nhiều OUI BIN

Địa chỉ dùng trong tầng liên kết dữ liệu

Trang 40

Địa chỉ IP

Dùng trong giao thức IP - Internet Protocol ( tầng mạng)

Giá trị phụ thuộc từng mạng, mỗi card mạng được gán một địa chỉ IP

Sử dụng để định danh máy tính trong một mạng IP

ví dụ :

133.113.215.10 (ipv4) 2001:200:0:8803::53 (ipv6)

Định danh dùng trên Internet

Trang 41

Địa chỉ sử dụng trong tầng giao vận

Số hiệu cổng: Một địa chỉ phụ, dùng kèm theo địa chỉ IP

Các ứng dụng được định danh bởi một địa chỉ IP và một số hiệu cổng E.g HTTP cổng 80, FTP cổng 20, 21 …

Trang 42

Các RFC quan trọng

RFC 821 SMTP (email, outgoing)

RFC 954 WHOIS

RFC 959 FTP (uploading and downloading)

RFC 1939 POP3 (email, incoming)

Trang 43

CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA

LẬP TRÌNH MẠNG

Cơ bản về mạng máy tính

Mô hình truyền thông

Các mô hình tham chiếu

Tổng quan về lập trình mạng

Trang 44

Mô hình Client / Server

Xử lý Yêu cầu

 Tạo ra 1 yêu cầu

 Gửi yêu cầu qua Server

Trang 45

Mô hình Client / Server

Trang 46

Mô hình Client / Server

Các chế độ giao tiếp:

Chế độ giao tiếp nghẽn Chế độ giao tiếp không nghẽn

Trang 47

Các kiểu kiến trúc chương trình

 Chức năng của 1 chương trình ứng dụng:

 Giao diện người dùng (User Interface):

 Tương tác với người dùng

 Nhập liệu, báo biểu, thông báo ra màn hình, …

 Dịch vụ nghiệp vụ (Business Rule):

Trang 48

Các kiểu kiến trúc chương trình

Interfaces to Presentation GUI

Business Logic

Actual Program Rules

Trang 49

Các kiểu kiến trúc chương trình

• Kiến trúc đơn tầng:

 Nhiều nhược điểm

Cần có kiến trúc mới – Client/Server

Trang 50

Các kiểu kiến trúc chương trình

• Kiến trúc 2 tầng (2-tiered):

Client/Server kiểu Fat Client

Client/Server kiểu Fat Server

Trang 51

Các kiểu kiến trúc chương trình

• Kiến trúc đa tầng (n tiered):

– Thường gọi là Ứng dụng phân tán.

– Mỗi thành phần có nhiệm vụ riêng.

Mô hình Client/Server 3 tầng

Client

Application Server

Database Server Middleware

Trang 52

Các kiểu kiến trúc chương trình

GOLDMAN: CSIS

Fat Client Fat Server TWO-TIERED ARCHITECTURE

THREE-TIERED ARCHITECTURES

Presentation Logic

Database Logic

Database Logic

Business Logic

Presentation Logic Presentation Logic

Business Logic

Database Logic

• So sánh kiến trúc 2 tầng và kiến trúc

3 tầng của ứng dụng

Trang 53

Sockets cung cấp một interface để lập trình mạng tại tầng Transport.

Một socket là một end-point của một liên kết giữa hai ứng dụng mạng.

Nhiều NNLT: C, C++, Java, VB, C#,

Windows Socket Application Programming Interface (Winsock API)

Winsock hỗ trợ xây dựng các ứng dụng mạng trên nền TCP/IP.

.NET hỗ trợ lập trình mạng tốt nhất so với các sản phẩm khác của Microsoft

=> Mục tiêu: nghiên cứu cách xây dựng ứng dụng truyền thông

client/server dùng Sockets

Giới thiệu về Socket

Trang 54

Giới thiệu về Windows Socket

Windows Sockets Application Programming Interface (WinSock API) là một giao diện lập trình mạng dưới nền tảng của Windows.

Đầu tiên Windows Socket được phát triển cho hệ điều hành Linux, nhưng nay nó đã được cài đặt trền Windows và hỗ trợ cơ chế điều khiển thông điệp tự nhiên của Windows.

Windows Socket đã phát triền qua nhiều phiên bản

Vd phiên bản chạy

trên Windows XP và 2000 là 2.2

Giới thiệu về Socket

Trang 55

Giới thiệu về Windows Socket

Windows Sockets cho phép những nhà sản xuất cung cấp một giao diện đồng nhầt để người lập trình có thể viết các chương trình ứng dụng theo những đặc tả của Windows Sockets và có thể chạy được trên bất kỳ hệ thống nào có hỗ trợ Windows Sockets.

Các phiên bản sau của Windows socket đều tương thích với các phiên bản trước của nó Điều đó có nghĩa là một ứng dụng được viết cho phiền bản trước cũng hoàn toàn có thể chạy được trên phiên bản sau của Windows Sockets.

Windows Sockets hỗ trợ nhiều giao thức khác: IPX/SPX, Apple’s

Giới thiệu về Socket

Trang 56

Một số khái niệm

Socket: Một điểm giao tiếp đầu cuối của một chương trình trên mạng Một TCP/IP Sockets được xác định bằng sự kết nối của một địa chỉ và một số hiệu cổng

 Địa chỉ sẽ xác định máy mà Sockets đó làm việc

 Cổng sẽ xác định chính xác tiến trình đang thực hiện Sockets trên máy có địa chỉ đó.

Giới thiệu về Socket

Trang 57

Khái niệm địa chỉ và cổng (Address & Port)

Trang 58

Khái niệm địa chỉ và cổng (Address & Port)

Có thể xảy ra "nhầm lẫn" khi dữ liệu từ máy A gửi đến máy B thì trên máy

B không biết là dữ liệu đó gửi cho ứng dụng nào?

Mỗi ứng dụng trên máy B sẽ được gán một số hiệu (cổng: Port), từ 0 65535.

Trang 59

Khái niệm địa chỉ và cổng (Address & Port)

Khi ứng dụng trên máy A muốn gửi cho ứng dụng nào trên máy B thì chỉ việc điền thêm số hiệu cổng (vào trường RemotePort) vào gói tin cần gửi Trên máy B, các ứng dụng chỉ việc kiểm tra giá trị cổng trên mỗi gói tin xem có trùng với số hiệu cổng của mình (đã được gán – chính là giá trị LocalPort) hay không? Nếu bằng thì xử lý, trái lại thì không làm gì (vì không phải là của mình).

Trang 60

Khái niệm địa chỉ và cổng (Address & Port)

Một số quy định

Không bao giờ có 2 ứng dụng lại cùng dùng 1 port

Các port từ 0 – 1023 (Well-know): dùng cho các ứng dụng quan trọng trên hệ điều hành

Các port từ 1024 – 49151 (Registered): dành cho người lập trình (khuyến cáo tuân theo)

Các port từ 49152 – 65535 (Dynamic): dự trữ

Trang 61

Giao tiếp sử dụng socket có thể ở chế độ hướng kết nối (giao thức TCP) hoặc không hướng kết nối (giao thức UDP) bằng cách xác định giao thức của tầng vận chuyển.

Lập trình Socket với C#

Network driver Network protocol Transport protocol

Network driver Network protocol Transport protocol Program A Program B

Giao tiÕp gi÷a hai qu¸ tr×nh sö dông Socket

Trang 62

– Kiểm tra lỗi.

– Truyền lại gúi tin lỗi, mất

– Bảo đảm thứ tự cỏc gúi tin

• Dữ liệu chớnh xỏc, Tốc độ truyền

chậm.

Chế độ không nối kết (connectionless):

 Không tồn tại kênh giao tiếp ảo giữa client và server.

 Dữ liệu được gởi đi theo chế độ không bảo đảm:

 Không kiểm tra lỗi.

 Không phát hiện, không truyền lại gói tin lỗi, mất.

 Không bảo đảm thứ tự các gói tin

 Dữ liệu không chính xác, tốc độ truyền nhanh.

 Thích hợp cho các ứng dụng cần tốc

độ, không cần chính xác cao: truyền

âm thanh, hình ảnh

Trang 63

Giao tiếp sử dụng socket có thể ở chế độ hướng kết nối (giao thức TCP) hoặc không hướng kết nối (giao thức UDP) bằng cách xác định giao thức của tầng vận chuyển.

Lập trình Socket với C#

Trang 64

Các lớp trong NET Framework được tạo ra để cung cấp một giao diện

Trang 65

Lớp IPAddress

Trên Internet mỗi một trạm (có thể là máy tính, máy in, thiết bị …) đều có một định danh duy nhất, định danh đó thường được gọi là một địa chỉ (Address).

Địa chỉ trên Internet là một tập hợp gồm 4 con số có giá trị từ 0-255 và cách nhau bởi dấu chấm.

Để thể hiện địa chỉ này, người ta có thể viết dưới các dạng sau:

Tên: ví dụ như May01, Server, …

Địa chỉ IP nhưng đặt trong một chuỗi: "192.168.1.1", "127.0.0.1“

Đặt trong một mảng 4 byte, mỗi byte chứa một số từ 0-255.

Hoặc cũng có thể là một số (long), có độ dài 4 byte Ví dụ, với địa chỉ 192.168.1.2 ở trên thì giá trị đó sẽ là 33663168 (số ở hệ thập phân khi xếp

liền 4 byte ở trên lại với nhau) 00000010000000011010100011000000

Trang 66

• IPAddress được sử dụng để biểu hiện một địa chỉ IP duy nhất

• Hàm tạo là : public IPAddress(long address)

• Tuy nhiên hàm tạo này không được sử dụng thường xuyên

• Lớp IPAddress cung cấp một số phương thức khác để làm việc với địa chỉ IP

Trang 67

Lớp IPAddress: các thành viên

AddressFamily

Trả về họ địa chỉ của địa chỉ IP hiện hành Nếu địa chỉ

ở dạng IPv4 thì kết quả là Internetwork và InternetworkV6 nếu là địa chỉ IPv6

GetAddressBytes Chuyển địa chỉ thành mảng byte (4 byte)

HostToNetworkOrder Đảo thứ tự byte của một số cho đúng với thứ tự byte

trong địa chỉ IPAddress.

Trang 68

Lớp IPAddress: các thành viên

IsLoopback Cho biết địa chỉ có phải là địa chỉ lặp hay không?

NetworkToHostOrder Đảo thứ tự byte của một địa chỉ cho đúng với thứ tự

byte thông thường.

Parse Chuyển một địa chỉ IP ở dạng chuỗi thành một địa chỉ

IP chuẩn (Một đối tượng IPAddress)

ToString Trả về địa chỉ IP (một chuỗi) nhưng ở dạng ký pháp

có dấu chấm (Ví dụ "192.168.1.1")

TryParse (S: String) Kiểm tra xem một địa chỉ IP (ở dạng chuỗi) có phải

đúng là địa chỉ IP hợp lệ hay không? True = đúng

Trang 69

IPAddress: Ví dụ tạo địa chỉ

IPAddress Ip3 = IPAddress.Parse( “192.168.1.2")

• Cách 4: Thông qua tính toán

Long So = 192* 256^0+168* 256^1+1* 256^2 + 2*256^3;

IPAddress Ip4 = new IPAddress(So);

Trang 70

Cung cấp một địa chỉ IP quảng bá (Broadcast, thường là 255.255.255.255), ở dạng số Long Muốn lấy ở dạng chuỗi, viết: Broadcast.ToString() Thuộc tính này chỉ đọc.

Loopback Trả về một địa chỉ IP lặp (IP Loopback, ví dụ 127.0.0.1)

Trang 71

IPAddress: Ví dụ kiểm tra địa chỉ

private void KiemTra()

{

IPAddress ip;

String Ip4 = "127.0.0.1";

String Ip5 = "999.0.0.1";

MessageBox.Show(IPAddress.TryParse(Ip4, out ip).ToString());

MessageBox.Show(IPAddress.TryParse(Ip5, out ip).ToString());

}

Trang 72

IPAddress: Ví dụ chuyển địa chỉ hiện hành ra

mảng

void ChuyenDoi()

{

IPAddress Ip3 = new IPAddress(16885952);

Byte[] b= new Byte[4];

b = Ip3.GetAddressBytes();

MessageBox.Show("Address: " + b[0] + "." + b[1] + "." + b[2] + "." + b[3]);

}

Trang 73

Lớp IPEndpoint

• Trong mạng, để hai trạm có thể trao đổi thông tin được với nhau thì chúng cần phải biết được địa chỉ (IP) của nhau và số hiệu cổng mà hai bên dùng

để trao đổi thông tin.

• Lớp IPAddress mới chỉ cung cấp địa chỉ IP (IPAddress), như vậy vẫn còn thiếu số hiệu cổng (Port number).

• NET Framework sử dụng IPEndPoint để biểu diễn một sự kết hợp giữa cổng và địa chỉ IP

• Hai hàm tạo của lớp này là:

– IPEndPoint(long address, int port)

– IPEndPoint(IPAddress address , int port )

• Hàm tạo thứ 2 được sử dụng phổ biến hơn

Trang 74

Lớp IPEndpoint: các thành viên

Address Trả về hoặc thiết lập địa chỉ IP cho endpoint (Trả về một đối

tượng IPAddress)

AddressFamily Lấy về loại giao thức mà Endpoint này đang sử dụng.

Port Lấy về hoặc thiết lập số hiệu cổng của endpoint.

Trang 75

Lớp IPEndpoint: các thành viên

Tên phương

IPEndPoint

(Int64, Int32) Tạo một đối tượng mới của lớp IPEndPoint, tham số

truyền vào là địa chỉ IP (ở dạng số) và cổng sẽ dùng để giao tiếp.

để giao tiếp (Tham khảo cách tạo IPAddress ở phần trên)

Create Tạo một endpoint từ một địa chỉ socket (socket address)

ToString Trả về địa chỉ IP và số hiệu cổng theo khuôn dạng ĐịaChỉ:

Cổng, ví dụ: 192.168.1.1:8080

Ngày đăng: 19/03/2022, 10:30

TỪ KHÓA LIÊN QUAN