Bài giảng Lập trình mạng - Chương 1: Những vấn đề cơ bản của lập trình mạng - Trần Đắc Tốt

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 Khái niệm 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 ?

pdf89 trang | Chia sẻ: candy98 | Lượt xem: 659 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình mạng - Chương 1: Những vấn đề cơ bản của lập trình mạng - Trần Đắc Tốt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LẬP TRÌNH MẠNG (Network programming) 1 Giảng viên: Ths. Trần Đắc Tốt – Khoa CNTT Email: tottd@cntp.edu.vn Website: www.oktot.com Facebook: https://www.facebook.com/oktotcom/ TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM Chương 1: Những vấn đề cơ bản của lập trình mạng MÔN HỌC: LẬP TRÌNH MẠNG 2 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) Chương 1: Những vấn đề cơ bản của lập trình mạng 3CHƯƠ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 Chương 1: Những vấn đề cơ bản của lập trình mạng 4Mụ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 Lập trình Socket trong C# Các lớp DNS trong C# Yêu cầu: Sinh viên nắm vững các khái niệm cơ bản về Lập trình mạng Sử dụng socket trong lập trình mạng MỤC ĐÍCH – YÊU CẦU Chương 1: Những vấn đề cơ bản của lập trình mạng 5CHƯƠ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 Chương 1: Những vấn đề cơ bản của lập trình mạng 6Cơ bản về mạng máy tính 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 7 Khái niệm 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 ? Chương 1: Những vấn đề cơ bản của lập trình mạng 8Cơ bản về mạng máy tính Internet ngày nay Chương 1: Những vấn đề cơ bản của lập trình mạng 9Cơ bản về mạng máy tính Xử lý tập trung hay phân tán Chương 1: Những vấn đề cơ bản của lập trình mạng 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) Chương 1: Những vấn đề cơ bản của lập trình mạng 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) 11 Cơ bản về mạng máy tính Giao thức là gì? Chương 1: Những vấn đề cơ bản của lập trình mạng 12 Cơ bản về mạng máy tính Giao thức mạng Chương 1: Những vấn đề cơ bản của lập trình mạng 20 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, Telnet, SSH, Ethernet, 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 Chương 1: Những vấn đề cơ bản của lập trình mạng Mô hình truyền thông Chuyển mạch kênh • 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 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 16 Mô hình truyền thông So sánh Chương 1: Những vấn đề cơ bản của lập trình mạng 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 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” Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Chương 1: Những vấn đề cơ bản của lập trình mạng 19 Các mô hình tham chiếu OSI - Open System Interconnection: Bao gồm 7 tầng Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Chương 1: Những vấn đề cơ bản của lập trình mạng Ethernet/10M CAT5 IP FTP TCP IP 100M/Ethernet CAT5 IP FTP TCP Nguồn ĐíchNút trung gian 100M CAT5 10M CAT5 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 Chương 1: Những vấn đề cơ bản của lập trình mạng Mô hình phân tầng của Internet Địa chỉ Gói quà Trang trí Dán địa chỉ Địa chỉ Chương 1: Những vấn đề cơ bản của lập trình mạng Đóng gói dữ liệu (Encapsulation) (N+1) PDU (N) PDU (N-1) PDU HN HN HN-1 Layer (N+1) Layer (N-1) Layer (N) Service interface Protocol N Service interface Protocol N-1 addr. Chương 1: Những vấn đề cơ bản của lập trình mạng PDU: Protocol Data Unit – Đơn vị dữ liệu giao thức Data Data Ex:HTTP header TCP header IP header Ethernet Frame Signal Application TCP IP Network Interface Physical Sender Bên gửi Mỗi tầng thêm các thông tin điều khiển (header) vào gói tin và truyền xuống tâng dưới Bên nhận Mỗi tầng xử lý thông tin dựa trên phần header, sau đó bỏ header và truyền dữ liệu lên tầng trên Physical Receiver Application TCP IP Network Interface Họ giao thức TCP/IP và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node Dữ End node liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node TCP header End node Dữ liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node IP header TCP header End node Dữ liệu - payload Protocol stack và quá trình đóng gói CAT5 End node End nodeIntermediate node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Dữ liệu - payloadEthernet header IP header TCP header Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node IP header TCP header End node Dữ liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node IP header TCP header End node Dư liệu - payload End node WDM header Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node IP header TCP header End node Dữ liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node End nodeIntermediate node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Dữ liệu - payloadEthernet header IP header TCP header Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node IP header TCP header End node Dữ liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 Intermediate node TCP header End node Dữ liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói CAT5 End node Intermediate node CAT5 Ethernet/10M IP FTP TCP Ethernet/100M IP FTP TCP 10M IP 10G CAT5 WDM 10G IP WDM CAT5 End node Dữ liệu - payload Chương 1: Những vấn đề cơ bản của lập trình mạng Protocol stack và quá trình đóng gói Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Các tầng hoạt động độc lập Tầng trên chỉ quan tâm đến việc sử dụng tầng dưới mà không quan tâm đến các tầng xa hơn. Cho phép định nghĩa giao diện chung giữa các tầng Khả năng mở rộ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ộ 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 Chương 1: Những vấn đề cơ bản của lập trình mạng Định danh trên Internet và quan hệ với các tầng Đị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 Chương 1: Những vấn đề cơ bản của lập trình mạng Địa chỉ dùng trong tầng liên kết dữ liệu Đị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) Chương 1: Những vấn đề cơ bản của lập trình mạng Định danh dùng trên Internet Chương 1: Những vấn đề cơ bản của lập trình mạng Đị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 42 Các RFC quan trọng RFC Document Giao thức RFC 821 SMTP (email, outgoing) RFC 954 WHOIS RFC 959 FTP (uploading and downloading) RFC 1939 POP3 (email, incoming) RFC 2616 HTTP (Web browsing) RFC 793 TCP (runs under all above protocols) RFC 792 ICMP (ping) RFC 791 IP (runs under TCP and ICMP) Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Chương 1: Những vấn đề cơ bản của lập trình mạng Mô hình Client / Server 44 Xử lý Yêu cầu Phục vụ  Lắng nghe yêu cầu  Nhận yêu cầu  Xử lý yêu cầu  Gửi kết quả trả về cho Client  Tạo ra 1 yêu cầu  Gửi yêu cầu qua Server  Chờ Server xử lý  Nhận kết quả trả về và xử lý theo mục đích riêng Dạng thức của thông điệp phải tuân theo protocol của dịch vụ. Mô hình Client / Server Web Client Web Server file1.htm Trình duyệtTrang Web Xử lý • Mô hình Client-Server của dịch vụ WEB: 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 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):  Tính toán dữ liệu  Xử lý thông tin  Dịch vụ lưu trữ (Data Storage):  Lưu trữ dữ liệu  Truy vấn dữ liệu Các kiểu kiến trúc chương trình GOLDMAN: CSIS FIG. 01-11 Presentation Application Data Communication Presentation Logic Interfaces to Presentation GUI Business Logic Actual Program Rules Database Logic Interfaces to DBMS in Data Layer Presentation Logic Interfaces to Presentation GUI Business Logic Actual Program Rules Database Logic Interfaces to DBMS in Data Layer Presentation Application Data CLIENT SERVER Mô hình của 1 chương trình ứng dụng Các kiểu kiến trúc chương trình • Kiến trúc đơn tầng: User Interface Business Rule Data Storage  Sử dụng trên 1 máy tính  Dễ cài đặt  Nhiều nhược điểm Cần có kiến trúc mới – Client/Server 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 Các kiểu kiến trúc chương trình 51 • 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 Các kiểu kiến trúc chương trình GOLDMAN: CSIS FIG. 01-24 Fat Client Fat Server TWO-TIERED ARCHITECTURE THREE-TIERED ARCHITECTURES Presentation Logic Database Logic Middleware C LI E N TS TI E R 1 TI E R 2 D E P A R TM E N TA L S E R V E R S TI E R 3 S U P E R -S E R V E R S M A IN FR A M E S Business 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 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 Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Appletalk, ATM,. Giới thiệu về Socket Chương 1: Những vấn đề cơ bản của lập trình mạng 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 Chương 1: Những vấn đề cơ bản của lập trình mạng 57 Khái niệm địa chỉ và cổng (Address & Port) Chương 1: Những vấn đề cơ bản của lập trình mạng 58 Khái niệm địa chỉ và cổng (Address & Port) Chương 1: Những vấn đề cơ bản của lập trình mạng Nguyên lý Trong máy có rất nhiều ứng dụng muốn trao đổi với các ứng dụng khác thông qua mạng. Ví dụ: có 2 ứng dụng của máy A muốn trao đổi với với 2 ứng dụng trên máy B Mỗi máy tính chỉ có duy nhất một đường truyền dữ liệu (để gửi và nhận) Vấn đề 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. 59 Khái niệm địa chỉ và cổng (Address & Port) Chương 1: Những vấn đề cơ bản của lập trình mạng Cách giải quyết 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). 60 Khái niệm địa chỉ và cổng (Address & Port) Chương 1: Những vấn đề cơ bản của lập trình mạng 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ữ 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# Chương 1: Những vấn đề cơ bản của lập trình mạng port port Network driver Network protocol Transport protocol Network driver Network protocol Transport protocol Program A Program B Host1 Host2 Giao tiÕp gi÷a hai qu¸ tr×nh sö dông Socket port port 62 Lập trình Socket với C# Chương 1: Những vấn đề cơ bản của lập trình mạng • Chế độ có nối kết (connection): • Tồn tại kênh giao tiếp ảo giữa client và server. • Dữ liệu được gởi đi theo chế độ bảo đảm: – 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 . . . 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# Chương 1: Những vấn đề cơ bản của lập trình mạng 64 Các lớp trong .NET Framework được tạo ra để cung cấp một giao diện dễ dàng cho các lập trình viên. Nội dung phần này sẽ gồm: IP Addresses in C# Using C# Socket