590 likes | 855 Views
Chapter 1. Introduction GV: Nguyễn Thị Thanh Vân - CNTT. Nội dung. 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. Giới thiệu.
E N D
Chapter 1 Introduction GV: Nguyễn Thị Thanh Vân - CNTT
Nội dung • 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
Giới thiệu • 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ầungườ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.
Giới thiệu • 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 đó.
Kỹ thuật lập trình mạng • 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
Review Network • 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
Network: Các khái niệm cơ bản 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
Phân loại mạng • Phânloạitheokhoảngcáchđịalý: • LAN, WAN, MAN… • Phânloạitheođồ hìnhmạng (Topo): • Point to point, • Broadcast • Phânloạitheocáchtruyền tin • Chuyển mạch kênh (circuit-switched), • Chuyển mạch gói(packet-switched). • Phânloạitheokiếntrúcquảnlý: • Peer to peer, • Server based
Chuyểnmạchkênh – Circuit switched • Đặ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ấpvìcólúccả 2 bênđềuhếtthô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ể
Các thành phần của mạng máy tính: 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
Kiến trúc mạng 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 Hệ thống A Hệ thống B Giao diện tầng i và tầng i-1 Giao thức tầng i Liên kết vật lý
Kiến trúc phân tầng - 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
OSI Model • 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
OSI Model • OSI 7 layers
Giao thức TCP/IP • Mộtsố đặ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ẽ.
Giao thức TCP/IP • 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ụ
Địa chỉ • Địa chỉ là thông tin giúp gói tin đi đến đích đúng
Giao thức TCP • 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.
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 TCP – Hoạt động
Three-Way Handshake in Establishing a Connection 1 2 3 CTL = Which control bits in the TCP header are set to 1
Hủy kết nối trong TCP (4 bước) 1 2 3 4
Đặc điểm • 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
Giao thức UDP • 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
Mô hình client/server • 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
Quá trình trao đổi dữ liệu theo client/server 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).
Client/Server 2tầng (two-tier client/server) • 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
Client/Server 3tầng (three-tier client/server) • 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.
Client/Server ntầng (n-tier client/server) • 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).
Dịch vụ từ phía máy chủ. Port • 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ởicổ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.
Liên lạc dữ liệu giữa các máy tính • 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
NetBIOS (Network Basic Input/Output System) • 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.
Liên lạc session SERVER CLIENT 1. ADD NAME 1. ADD NAME 2. LISTEN 3. CALL 5. RECEIVE 4. SEND 6. SEND 7. RECEIVE 8. HANGUP 9. HANGUP
Liên lạc kiểu datagram STATION 1 STATION 2 ADD NAME ADD NAME RECEIVE DATAGRAM RECEIVE_BCST_DATAGRAM_WAIT SEND DATAGRAM SEND_BCST_DATAGRAM_WAIT DELETE NAME DELETE NAME
Pipe • 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.
Lập trình mạng thông qua Socket • 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.
Giới thiệu Socket • Socket API – Socket Application Programming Interface • Ðượcgiớithiệu ở BSD4.1 UNIX, 1981 • Ðược ứng dụng khởitạo, sử dụng và hủybỏ. • Dùng cơ chế client/server • Cung cấphaidịch vụ chuyểndữ liệuthôngqua socket API: • unreliable datagram (UDP) • reliable, byte stream-oriented (TCP)
Các loại Socket • 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.