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, cung cấp cho người học những kiến thức như: 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. Mời các bạn cùng tham khảo!
TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THỰC PHẨM TP.HCM LẬP TRÌNH MẠNG (Network programming) 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/ Chương 1: Những vấn đề lập trình mạng MƠN HỌC: LẬP TRÌNH MẠNG Chương 1: Những vấn đề 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 lớp trợ giúp C# SOCKET Chương 5: Lập trình đa luồng (MULTI-THREADING) Chương 1: Những vấn đề lập trình mạng CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA LẬP TRÌNH MẠNG Cơ mạng máy tính Mơ hình truyền thơng Các mơ hình tham chiếu Tổng quan lập trình mạng Chương 1: Những vấn đề lập trình mạng MỤC ĐÍCH – U CẦU Mục đích: Giới thiệu khái niệm 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 C# Các lớp DNS C# Yêu cầu: Sinh viên nắm vững khái niệm Lập trình mạng Sử dụng socket lập trình mạng Chương 1: Những vấn đề lập trình mạng CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA LẬP TRÌNH MẠNG Cơ mạng máy tính Mơ hình truyền thơng Các mơ hình tham chiếu Tổng quan lập trình mạng Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Khái niệm mạng máy tính Tập hợp máy tính thiết bị mạng kết nối với theo kiến trúc để trao đổi liệu Máy tính: máy trạm, máy chủ, định tuyến, switch Kết nối phương tiện truyền thơng Theo kiến trúc Các dạng máy tính ? Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Internet ngày Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Xử lý tập trung hay phân tán Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Kiến trúc mạng: Hình trạng (topology) giao thức (protocol) Trục (Bus) Vòng (Ring) Sao (Star) Thực tế kết hợp nhiều hình trạng Chương 1: Những vấn đề lập trình mạng 10 Lớp IPEndpoint: thành viên Tên phương thức Mô tả IPEndPoint (Int64, Int32) Tạo đối tượng lớp IPEndPoint, tham số truyền vào địa IP (ở dạng số) cổng dùng để giao tiếp IPEndPoint (IPAddress, Int32) Tạo đối tượng lớp IPEndPoint, Tham số truyền vào địa IPAddress số hiệu cổng dùng để giao tiếp (Tham khảo cách tạo IPAddress phần trên) Create Tạo endpoint từ địa socket (socket address) ToString Trả địa IP số hiệu cổng theo khn dạng ĐịaChỉ: Cổng, ví dụ: 192.168.1.1:8080 13/07/2016 75 Lớp IPEndpoint: ví dụ khởi tạo private void TaoEndpoint() { // Tạo địa IP IPAddress IPAdd = IPAddress.Parse("127.0.0.1"); // Truyền vào cho hàm khởi tạo để tạo IPEndpoint IPEndPoint IPep = new IPEndPoint(IPAdd, 10000); } 13/07/2016 76 Lớp IPEndpoint: ví dụ khởi tạo private void TaoEndPointBoiTenMay() { IPAddress IPAdd = new IPAddress(); //tạo đối tượng IP từ tên máy thông qua phương thức tĩnh Dns.GetHostAddresses lớp DNS IPAdd = Dns.GetHostAddresses("Localhost")[0]; IPEndPoint IPep = new IPEndPoint(IPAdd, 10000); } 13/07/2016 77 Lớp IPEndpoint: ví dụ khởi tạo Lưu ý : Vì máy tính có nhiều card mạng (Interface) có nhiều địa IP Hàm GetHostAddresses trả cho mảng chứa tất địa Chúng ta lấy số để chọn địa card mạng IPHostEntry lớp chứa (Container) thông tin địa máy trạm Internet Lưu ý: Nó nơi để "chứa", trước sử dụng cần phải “nạp" thơng tin vào cho Lớp hay được dùng với lớp DNS 13/07/2016 78 Lớp IPHostEntry: thành viên Tên thuộc tính Mơ tả AddressList Lấy thiết lập danh sách địa IP liên kết với host Aliases Lấy thiết lập danh sách bí danh (alias) liên kết với host HostName Lấy thiết lập DNS name host 13/07/2016 79 Sử dụng C# Sockets System.Net.Sockets namespace có chứa lớp cung cấp giao diện lập trình Net cho hàm mức thấp API winsock Tạo socket Sử dụng hàm tạo lớp Socket Socket(AddressFamily af, SocketType st, ProtocolType pt) • Trong đó: – An AddressFamily to define the network type: – A SocketType to define the type of data connection – A ProtocolType to define a specific network protocol • Giá trị AddressFamily ln InterNetwork • Cịn giá trị SocketType ProtocolType phải được kết hợp đúng 13/07/2016 80 Sử dụng C# Sockets Bảng kết hợp SocketType Protocoltype Description Dgram Udp Connectionless communication Stream Tcp Connection-oriented communication Raw Icmp Internet Control Message Protocol Raw Raw Plain IP packet communication • Vị dụ tạo Socket Socket newsock = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 13/07/2016 81 Sử dụng C# Sockets Một số thuộc tính lớp Socket Property Description AddressFamily Gets the address family of the Socket Available Gets the amount of data that is ready to be read Blocking Gets or sets whether the Socket is in blocking mode Connected Gets a value that indicates if the Socket is connected to a remote device Handle Gets the operating system handle for the Socket LocalEndPoint Gets the local EndPoint object for the Socket ProtocolType Gets the protocol type of the Socket RemoteEndPoint Gets the remote EndPoint information for the Socket SocketType Gets the type of the Socket 13/07/2016 82 DNS (Domain Name Service) DNS (Domain Name Service) lớp giúp chúng ta việc phân giải tên miền (Domain Resolution) đơn giản Phân giải tên miền tức là: Đầu vào tên máy trạm thì đầu cho ta địa IP tương ứng máy đó, ví dụ: ServerCNTT 192.168.3.8 Ngồi lớp Dns cịn có nhiều phương thức cho chúng ta thêm thông tin máy cục tên, địa chỉ, v.v System.Net namespace có chứa lớp Dns có chứa tất hàm cần thiết ta làm việc với hệ thống tên miền Trong phương thức có – Các phương thức đờng – Các phương thức không đồng 13/07/2016 83 Lớp DNS: thành viên Tên phương thức Mô tả GetHostByAddress (String IP) GetHostByAddress (IPAddress IP) Trả thông tin (IPHostEntry) trạm có địa IP truyền vào GetHostByName (String hostname) Trả thông tin (IPHostEntry) DNS trạm Đã bị loại bỏ Thay GetHostEntry() HostName Cho ta biết tên máy vừa phân giải Nếu khơng phân giải có giá trị địa IP 13/07/2016 Thay GetHostEntry() 84 Lớp DNS: thành viên Tên phương thức Mô tả GetHostAddresses (String IP_Or_HostName) Trả tất địa IP trạm Kiểu IPAddress GetHostEntry (String IP_Or_HostName) GetHostEntry (IPAddress IP) Giải đáp tên địa IP truyền vào trả đối tượng IPHostEntry tương ứng GetHostName Lấy tên máy tính cục (String) Resolve (String Hostname) Chuyển tên máy địa IP thành IPHostEntry tương ứng Đã bị bỏ, thay GetHostEntry() • Lưu ý: Đây phương thức tĩnh, gọi thì gọi trực tiếp từ tên lớp mà không cần phải khai báo đối tượng lớp • Ví dụ: Dns.Resolve, Dns.GetHostname, Dns.GetHostEntry, v.v… 13/07/2016 85 Lớp DNS: ví dụ private void ShowIPs() { // Lấy tất địa IP máy IPAddress[] add = Dns.GetHostAddresses("PC"); foreach (IPAddress ip in add) { MessageBox.Show(ip.ToString()); } //Cách //for (int i = 0; i < add.Length; i++) //{ // MessageBox.Show(add[i].ToString()); //} } 13/07/2016 86 Lớp DNS: ví dụ private void CreatIPHostEntry() { IPHostEntry iphe1, iphe2, iphe3; IPAddress ipadd = IPAddress.Parse("127.0.0.1"); iphe1 = Dns.GetHostEntry("Notebook"); iphe2 = Dns.GetHostEntry("127.0.0.1"); iphe3 = Dns.GetHostEntry(ipadd); MessageBox.Show(iphe1.HostName); MessageBox.Show(iphe2.HostName) ; MessageBox.Show(iphe3.HostName) ; } 13/07/2016 87 TÓM LƯỢC BÀI HỌC Cơ mạng máy tính Mơ hình truyền thơng Các mô hình tham chiếu Tổng quan lập trình mạng Chương 1: Những vấn đề lập trình mạng 88 Chương 1: Những vấn đề lập trình mạng 89 ... Interface Card) Sử dụng để địa hóa máy tính mạng quảng bá HEX BIN 00 :11 :24:79:8e:82 00000000 00 010 0 01 0 010 010 0 011 110 01 OUI 10 0 011 10 10 000 010 Gán nhà sản xuất OUI (Organizationally Unique Identifier):... HỌC: LẬP TRÌNH MẠNG Chương 1: Những vấn đề 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 lớp trợ giúp C# SOCKET Chương 5: Lập. .. Layer (N) (N) PDU HN Service interface Protocol N -1 addr Layer (N -1 ) Chương 1: Những vấn đề lập trình mạng (N -1 ) PDU HN HN -1 Họ giao thức TCP/IP q trình đóng gói Bên gửi Mỗi tầng thêm thơng tin