Presentation is loading. Please wait.

Presentation is loading. Please wait.

Mạng máy tính Bộ môn Kỹ thuật máy tính và Mạng

Similar presentations


Presentation on theme: "Mạng máy tính Bộ môn Kỹ thuật máy tính và Mạng"— Presentation transcript:

1 Mạng máy tính Bộ môn Kỹ thuật máy tính và Mạng
Khoa Công nghệ Thông tin Đại học Sư phạm Hà Nội

2 Chương 3: Tầng ứng dụng 2.1 Các nguyên tắc của ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng một Web server

3 Chương 3: Tầng ứng dụng Mục đích:
Các khía cạnh của các giao thức ứng dụng mạng Mô hình dịch vụ tầng giao vận Mô hình Client-Server Mô hình peer-to-peer Học về các giao thức phổ biến mức ứng dụng HTTP FTP SMTP / POP3 / IMAP DNS Lập trình các ứng dụng mạng Socket API

4 Một số ứng dụng mạng E-mail Web Instant messaging Remote login
Chia sẻ file P2P Trò chơi nhiều người sử dụng qua mạng Điện thoại qua Internet Hội nghị truyền hình thời gian thực Tính toán song song

5 Tạo một ứng dụng mạng Viết chương trình
Chạy trên các end systems khác nhau và Giao tiếp qua mạng Ví dụ Web: Phần mềm Web server giao tiếp với phần mềm trình duyệt Không có phần mềm viết cho các thiết bị trong Network Core Các thiết bị trong Network Core không thực hiện chức năng tại lớp ứng dụng Thiết kế này để sự phát triển ứng dụng nhanh application transport network data link physical

6 Chương 3: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

7 Các kiến trúc ứng dụng Client-Server Peer-to-peer (P2P) Hybrid

8 Kiến trúc Client-server
Host ở trạng thái luôn chạy Địa chỉ IP cố định Server farm để tăng khả năng phục vụ Client: Truyền thông với server Có thể không kết nối liên tục Có thể có địa chỉ IP động Không giao tiếp trực tiếp với nhau

9 Kiến trúc P2P Server không ở trạng thái luôn chạy
Hệ thống cuối tùy ý truyền thông trực tiếp Các Peer kết nối không liên tục và thay đổi địa chỉ IP Ví dụ: Gnutella Khả năng co giãn quy mô cao Khó quản lý

10 Hybrid Lai giữa P2P và Client-Server Napster Instant Messaging
Truyền file P2P Tìm kiếm file tập trung: Các Peer đăng ký nội dung tại server trung tâm Các Peer gửi yêu cầu server trung tâm xác định vị trí của nội dung Instant Messaging Giao tiếp giữa 2 user là P2P Quản lý tập trung vị trí của user: User đăng ký địa chỉ IP với server trung tâm khi kết nối User thông qua server trung tâm để tìm địa chỉ IP của đối tượng cần giao tiếp

11 Truyền thông của các tiến trình
Tiến trình client: tiến trình khởi đầu quá trình truyền thông Tiến trình server: tiến trình đợi kết nối Tiến trình: chương trình chạy trong một host. Trong cùng host, 2 tiến trình giao tiếp sử dụng inter-process communication (Do OS định nghĩa). Các tiến trình trong các host khác nhau giao tiếp bằng cách trao đổi các message Chú ý: Các ứng dụng P2P có cả tiến trình client và tiến trình server

12 Socket Tiến trình gửi nhận messages tới/từ socket của nó
TCP với buffer, Biến socket host hoặc server Tiến trình TCP với Buffer, biến socket host hoặc server Tiến trình gửi nhận messages tới/từ socket của nó Socket tương tự cửa ra vào Tiến trình gửi đẩy bản tin ra ngoài cửa Tiến trình gửi dựa vào hạ tầng giao vận trên phía bên kia của cửa, nó mang message tới socket của tiến trình nhận Điều khiển bởi người lập trình ứng dụng Internet Điều khiển bởi OS API: (1) Chọn giao thức giao vận; (2) Gán giá trị cho một vài tham số (chi tiết phần sau)

13 Các tiến trình đánh địa chỉ
Đối với một tiến trình nhận messages, nó phải có một định danh Một host có một địa chỉ IP duy nhất Câu hỏi: Địa chỉ IP của host mà tiến trình chạy có đáp ứng được việc định danh tiến trình? Trả lời: Không, nhiều tiến trình có thể chạy trên cùng host Định danh bao gồm cả địa chỉ IP và địa chỉ cổng gán cho ứng dụng trên host. Ví dụ: Giá trị cổng của một số ứng dụng: HTTP server: 80 Mail server: 25 Chi tiết hơn trong phần sau

14 Giao thức lớp ứng dụng Giao thức lớp ứng dụng định nghĩa
Kiểu của bản tin trao đổi, ví dụ bản yêu cầu, bản tin trả lời Cú pháp của kiểu bản tin: Các trường trong bản tin và mô tả các trường trong bản tin Ý nghĩa của các trường Quy tắc các tiến trình gửi/nhận bản tin khi nào và như thế nào Các giao thức công khai: Định nghĩa trong các RFC Cho phép phối hợp hoạt động Ví dụ: HTTP, SMTP Các giao thức không công khai:

15 Các dịch vụ giao vận mà ứng dụng cần
Mất dữ liệu Một số ứng dụng (ví dụ: audio) có thể chấp nhận một tỷ lệ mất dữ liệu nào đó Một số ứng dụng khác (ví dụ: Truyền file, telnet) đòi hỏi 100% dữ liệu truyền là tin cậy Băng thông Một số ứng dụng (ví dụ: đa phương tiện) yêu cầu lượng băng thông tối thiểu Một số ứng dụng khác sử dụng theo băng thông chúng nhận được Thời gian Một số ứng dụng (ví dụ: điện thoại Internet, trò chơi tương tác) đòi hỏi độ trễ thấp

16 Yêu cầu của ứng dụng giao vận của một số ứng dụng
Truyền file Web Real-time audio/video Stored audio/video Trò chơi tương tác Instant messaging Thời gian Không Có, hàng trăm msec Có, vài secs Mất dữ liệu Không cho phép Cho phép Băng thông Co giãn Audio: 5kbps-1Mbps Video:10kbps-5Mbps Tương tự trên Yêu cầu kbps

17 Các dịch vụ các giao thức giao vận
Dịch vụ TCP: Hướng kết nối: Đòi hỏi quá trình thiết lập giữa tiến trình client và tiến trình server Truyền tin cậy giữa tiến trình gửi và tiến trình nhận Điều khiển luồng: Bên gửi sẽ không vượt quá khả năng bên nhận Điều khiển tắc nghẽn: điều chỉnh bên gửi khi mạng quá tải Không cung cấp: tính thời gian, đảm bảo băng thông tối thiểu Dịch vụ UDP: Truyền dữ liệu không tin cậy giữa tiến trình gửi và tiến trình nhận Không cung cấp: việc thiết lập kết, truyền tin cậy, điều khiển luồng, điều khiển tắc nghẽn, tính thời gian, đảm bảo băng thông Q: Tại sao cần UDP?

18 Các ứng dụng Internet: các giao thức tầng ứng dụng và tầng giao vận
SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] Không công khai (vd: RealNetworks) (vd: Dialpad) Giao thức tầng giao vận TCP TCP hoặc UDP UDP Ứng dụng Thư điện tử Truy cập từ xa Web Truyền file Truyền dòng đa phương tiện Điện thoại Internet

19 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

20 Web và HTTP Trang Web chứa các đối tượng
Đối tượng có thể là file HTML, ảnh JPEG, Java applet, audio,… Trang Web chứa file HTML, chứa các đối tượng tham chiếu Mỗi đối tượng được đánh địa chỉ bởi một URL Ví dụ URL: host name path name

21 HTTP HTTP: hypertext transfer protocol Giao thức tầng ứng dụng của Web
Mô hình client/server client: Trình duyệt yêu cầu, nhận và hiện thị các đối tượng server: Web server gửi các đối tượng trong trả lời HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 HTTP request HTTP response HTTP request Server chạy Apache Web server HTTP response

22 HTTP (tiếp) HTTP là không hướng trạng thái Sử dụng TCP:
Client khởi đầu kết nối TCP (tạo socket) tới server, cổng 80 Server chấp nhận kết nối TCP từ client Các bản tin HTTP (bản tin của giao thức tầng ứng dụng Web) trao đối giứa trình duyệt (HTTP client) và Web server (HTTP server) Kết nối TCP đóng HTTP là không hướng trạng thái Server không duy trì thông tin về các yêu cầu của client trong quá khứ Các giao thức hướng trạng thái phức tạp hơn giao thức không hướng trạng thái Quá khứ phải được duy trì Nếu server/client lỗi, các trạng thái có thể không thống nhất

23 Kết nối HTTP Không kiên trì HTTP
Một đối tượng được gửi qua một kết nối TCP HTTP/1.0 sử dụng nonpersistent HTTP Kiên trì HTTP Nhiều đối tượng có thể gửi qua một kết nối TCP giữa client và server HTTP/1.1 mặc định sử dụng persistent HTTP

24 Nonpersistent HTTP (chứa text, tham chiếu tới 10 ảnh jpeg) Giả sử người sử dụng nhập vào URL 1a. HTTP client khởi đầu kết nối TCP tới HTTP server (tiến trình) tại cổng 80 1b. HTTP server tại host đợi kết nối TCP tại cổng 80. Chấp nhận kết nối, thông báo cho client 2. HTTP client gửi bản tin yêu cầu HTTP (chứa URL) vào socket của kết nối TCP. Bản tin chỉ rằng client muốn lấy đối tượng someDepartment/home.index 3. HTTP server nhận bản tin yêu cầu, xây dựng bản tin trả lời chứa đối tượng đã yêu cầu và gửi bản tin vào trong socket của nó Thời gian

25 Nonpersistent HTTP (cont.)
4. HTTP server đóng kết nối TCP 5. HTTP client nhận trả lời chứa file html, hiện thị nội dung. Phân tích html, tìm 10 đối tượng ảnh jpeg được tham chiếu time 6. Lặp bước 1-5 cho mỗi đối tượng ảnh jpeg

26 Mô hình thời gian trả lời
RTT: thời gian để gửi một gói tin từ client tới server và trở lại Thời gian trả lời: 1 RTT để khởi tạo kết nối TCP 1 RTT cho yêu cầu HTTP và nhận byte đầu tiên của trả lời HTTP Thời gian truyền file total = 2RTT+transmit time transmit time Khởi đầu kết nối TCP RTT file yêu cầu đã nhận thời gian

27 Persistent HTTP Nonpersistent HTTP: Yêu cầu 2 RTT cho 1 đối tượng
Hệ điều hành phải cấp phát tài nguyên cho mỗi kết nối TCP Trình duyệt phải mở song song nhiều kết nối TCP để lấy đối tượng tham chiếu Persistent HTTP Server tạm dừng kết nối sau khi gửi trả lời Các bản tin HTTP sau đó giữa cùng client/server được gửi qua kết nối

28 Bản tin yêu cầu HTTP Hai kiểu bản tin HTTP: yêu cầu, trả lời
ASCII Request line (lệnh GET, POST, HEAD ) GET /somedir/page.html HTTP/1.1 Host: User-agent: Mozilla/4.0 Connection: close Accept-language:fr (CR, LF) header line

29 Bản tin yêu cầu HTTP

30 Kiểu Method HTTP/1.0 GET POST HEAD HTTP/1.1 GET, POST, HEAD PUT DELETE
Hỏi server bỏ đối tượng đã yêu cầu ra khỏi trả lời HTTP/1.1 GET, POST, HEAD PUT đưa file trong phần body lên đường dẫn chỉ trong URL DELETE xóa file trong trường URL

31 Bản tin trả lời HTTP status line (protocol status code status phrase)
HTTP/ OK Connection close Date: Thu, 06 Aug :00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html dữ liệu header line dữ liệu, ví dụ: file HTML đã yêu cầu

32 Mã trạng thái của trả lời HTTP
Trong dòng đầu tiên của trả lời server->client Ví dụ: 200 OK Yêu cầu thực hiện thành công, đối tượng trong bản tin 301 Moved Permanently Đối tượng yêu cầu đã di chuyển vị trí, ví trí mới được chỉ ra trong bản tin (Location:) 400 Bad Request Server không hiểu bản tin yêu cầu 404 Not Found Không tìm thấy đối tượng yêu cầu 505 HTTP Version Not Supported

33 Thực hành 1. Telnet tới một Web server: 2. Gõ lệnh GET
telnet cis.poly.edu 80 Mở kết nối TCP tới cổng 80 tại cis.poly.edu. Nội dung gõ được gửi tới cổng 80 tại cis.poly.edu 2. Gõ lệnh GET GET /~ross/ HTTP/1.1 Host: cis.poly.edu 3. Xem bản tin trả lời gửi bởi HTTP server

34 Web cache (proxy server)
Mục đích: thực hiện yêu cầu của client không phải yêu cầu tới server ban đầu Người dùng thiết lập qua trình duyệt Trình duyệt gửi mọi yêu cầu HTTP qua Cache Đối tượng trong cache: sẽ được trả về Nếu không: Yêu cầu được chuyển tới server ban đầu server ban đầu Proxy server HTTP request HTTP request client HTTP response HTTP response HTTP request HTTP response client server ban đầu

35 Web cache Cache hoạt động như cả client và server
Thông thường, được cài đặt bởi ISP Lợi ích của Web cache Giảm thời gian trả lời Giảm lưu lượng trên đường truyền truy cập

36 Web cache Cache hoạt động như cả client và server
Thông thường cache được cài đặt bởi ISP (trường đại học, công ty, nhà cung cấp dịch vụ cho gia đình) Tại sao dùng Web cache? Giảm thời gian trả lời cho yêu cầu của client. Giảm lưu lượng trên đường truy cập của tổ chức.

37 Ví dụ caching Giả sử Kết quả
Các server ban đầu Giả sử Kích thước của đối tượng trung bình = 100,000 bits ~ 960 kbs Tốc độ yêu cầu trung bình từ trình duyệt của tới server ban đầu = 15 giây Trễ từ router của tổ chức tới server ban đầu và trở lại = 2 giây Kết quả Sự sử dụng trong LAN = 15% Sự sử dụng trong đường truyền truy cập = 100% Total delay = Internet delay + access delay + LAN delay = 2 giây + phút + millisecond public Internet Đường truyền truy cập 1.5 Mbps Mạng của tổ chức 10 Mbps LAN Institutional Cache

38 Ví dụ caching (tiếp) Giải pháp có thể Kết quả
Server ban đầu Giải pháp có thể Tăng băng thông của đường truyền truy cập: 10 Mbps Kết quả Sự sử dụng LAN = 15% Sử dụng đường truyền truy cập = 15% Total delay = Internet delay + access delay + LAN delay = 2 sec + msecs + msecs public Internet Đường truyền truy cập10 Mbps Mạng của tổ chức 10 Mbps LAN institutional cache

39 Ví dụ caching (tiếp) Cài đặt cache Kết quả Hỗ trợ hit rate .4
Server ban đầu Cài đặt cache Hỗ trợ hit rate .4 Kết quả 40% yêu cầu sẽ đáp ứng gần như ngay lập tức 60% yêu cầu đáp ứng bởi server ban đầu Sự sử dụng đường truyền truy cập giảm tới 60%, kết quả độ trễ không đáng kể (10 msec) total avg delay = Internet delay + access delay + LAN delay = .6*(2.01) secs + milliseconds < 1.4 secs public Internet Đường truyền truy cập 1.5 Mbps Mạng của tổ chức 10 Mbps LAN institutional cache

40 If-modified-since: <date>
GET có điều kiện Cache Server Mục đích: không gửi đối tượng nếu cache có phiên bản cập nhật Cache: chỉ định ngày của bản sao chép trong cache trong yêu cầu HTTP If-modified-since: <date> Server: Trả lời không chứa đối tượng nếu bản sao chép trong cache cập nhật: HTTP/ Not Modified Bản tin yêu cầu HTTP If-modified-since: <date> Đối tượng không bị thay đổi Bản tin trả lời HTTP HTTP/1.0 304 Not Modified Bản tin yêu cầu HTTP If-modified-since: <date> Đối tượng đã thay đổi Bản tin trả lời HTTP HTTP/ OK <data>

41 Chương 3: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

42 FTP: File Transfer Protocol
Giao diện người sử dụng FTP FTP client Truyền file FTP server user tại host Hệ thống file cục bộ Hệ thống file từ ở xa Truyền file tới/từ host ở xa Mô hình client/server client: Phía khởi đầu việc truyền (tới hoặc từ host ở xa) server: host ở xa ftp: RFC 959 ftp server: port 21

43 FTP: Kết nối dữ liệu và điều khiển riêng biệt
client server Kết nối điều khiển TCP cổng 21 Kết nối dữ liệu TCP cổng 20 FTP client liên lạc với FTP server tại cổng 21, chỉ định dùng TCP làm giao thức giao vận Client giành ủy quyền qua kết nối điều khiển Client xem thư mục từ xa bằng cách gửi lệnh qua kết nối điều khiển Khi server nhận một lệnh truyền file, server mở một kết nối dữ liệu TCP tới client Sau khi truyền file, server đóng kết nối. Server mở một kết nối dữ liệu TCP thứ hai để truyền một file khác. Kết nối điều khiển: truyền theo đường riêng FTP server duy trì trạng thái: thư mục hiện tại, ủy quyền trước đó

44 Lệnh và trả lời của FTP Ví dụ một số lệnh: Ví dụ một số mã trả về
Gửi văn bản mã ASCII qua kênh điều khiển USER username PASS password LIST trả về một danh sách các file trong thưc mục hiện tại RETR filename lấy file STOR filename đưa file lên remote host Ví dụ một số mã trả về Status code và status phrase (như HTTP) 331 Username OK, đòi hỏi mật khẩu 125 kết nối dữ liệu đã mở; bắt đầu truyền 425 Không thể mở kết nối dữ liệu 452 Lỗi ghi file

45 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

46 Electronic Mail Ba thành phần chính: SMTP SMTP SMTP User agent
User mailbox Hàng đợi bản tin gửi đi user agent Ba thành phần chính: User agent Mail server Simple mail transfer protocol: SMTP User Agent Còn gọi là Mail Reader Soạn, sửa, đọc bản tin mail Ví dụ: Eudora, Outlook, Netscape Messenger Các bản tin gửi tới và gửi đi đã chứa trên server mail server user agent SMTP mail server user agent SMTP mail server SMTP user agent user agent user agent

47 Electronic Mail: Mail server
user agent Mail Server mailbox chứa các bản tin thư điện tử gửi đến cho người sử dụng message queue của các bản tin thư điện tử gửi đi SMTP protocol giữa các mail server để gửi các bản tin thư điện tử client: mail server gửi “server”: mail server nhận mail server user agent SMTP mail server user agent SMTP mail server SMTP user agent user agent user agent

48 Electronic Mail: SMTP [RFC 2821]
Sử dụng TCP để truyền tin cậy các bản tin thư điện tử từ client tới server, cổng 25 Gửi trực tiếp: server gửi tới server nhận Ba pha của việc truyền Bắt tay Truyền các bản tin Kết thúc Sự tương tác Lệnh/Trả lời Lệnh: văn bản mã ASCII Trả lời: status code và status phrase Các bản tin phải dùng mã ASCII 7-bit

49 Kịch bản: Alice gửi bản tin cho Bob
1) Alice dùng UA để soạn bản tin và gửi cho 2) UA của Alice gửi bản tin tới mail server của cô ta; bản tin đặt trong message queue 3) Phía client của SMTP mở kết nối TCP với mail server của Bob 4) SMTP client gửi bản tin của Alice qua kết nối TCP 5) Mail server của Bob chuyển bản tin vào mailbox của Bob 6) Bob chạy user agent để đọc bản tin mail server mail server 1 user agent user agent 2 3 6 4 5

50 Ví dụ tương tác SMTP S: 220 hamburger.edu C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: S: 250 Sender ok C: RCPT TO: S: Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection

51 SMTP: Một số thông tin khác
SMTP sử dụng persistent connections SMTP yêu cầu bản tin (header & body) dùng mã ASCII 7-bit SMTP server sử dụng CRLF.CRLF để xác định kết thúc bản tin So sánh với HTTP: HTTP: pull SMTP: push Cả hai có tương tác Lệnh/Trả lời dạng mã ASCII, status code HTTP: mỗi đối tượng được đóng gói trong chính bản tin trả lời SMTP: nhiều đối tượng được gửi trong bản tin có nhiều phần

52 Định dạng bản tin header body
SMTP: giao thức để trao đổi các bản tin thư điện tử RFC 822: chuẩn định dạng bản tin dạng văn bản Header lines, ví dụ To: From: Subject: khác Lệnh SMTP body bản tin, ký tự ASCII header dòng trống body

53 Định dạng bản tin: Các mở rộng đa phương tiện
MIME: Multimedia Mail Extension, RFC 2045, 2046 Thêm các dòng trong header của bản tin khai báo kiểu nội dung MIME From: To: Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg dữ liệu mã hóa kiểu base ......dữ liệu mã hóa kiểu base64 MIME version method sử dụng để mã hóa dữ liệu kiểu dữ liệu đa phương tiện, kiểu con, khai báo tham số dữ liệu đã mã hóa

54 Thực hành tương tác SMTP
telnet servername 25 Xem trả lời 220 từ server Gõ vào các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT để gửi thư điện tử không sử dụng client (reader)

55 Các giao thức truy cập thư điện tử
SMTP SMTP giao thức truy cập user agent user agent mail server của bên gửi mail server của bên nhận SMTP: chuyển/lưu trữ thư tới server của bên nhận Giao thức truy cập thư: lấy thư từ server POP: Post Office Protocol [RFC 1939] Ủy quyền (agent <-->server) và tải thư IMAP: Internet Mail Access Protocol [RFC 1730] Nhiều tính năng hơn (phức tạp hơn) Thao tác trên các bản tin lưu trên server HTTP: Hotmail , Yahoo! Mail, …

56 Giao thức POP3 Pha ủy quyền C: list Pha giao dịch, client:
S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK người sử dụng đăng nhập thành công Pha ủy quyền Lệnh của client: user: khai báo tên người dùng pass: mật khẩu Trả lời của server +OK -ERR Pha giao dịch, client: list: liệt kê các số bản tin retr: lấy bản tin dựa vào số dele: xóa quit C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> C: dele 1 C: retr 2 C: dele 2 C: quit S: +OK POP3 server chấm dứt phiên làm việc

57 POP3 và IMAP Thông tin thêm về POP3 IMAP
Ví dụ trước sử dụng chế độ “tải và xóa” Bob không thể đọc lại các thư điện tử nếu bob chuyển sang client khác Chế độ “Tải và giữ” sao chép các bản tin trên các client khác nhau POP3 không lưu trạng thái giữa các phiên IMAP Giữ tất cả các bản tin tại một chỗ: server Cho phép người sử dụng tổ chức các bản tin vào các thư mục IMAP giữ trạng thái người sử dụng qua các phiên: Tên của các thư mục và ánh xạ giữa các định danh của bản tin và tên thư mục

58 Chương 3: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

59 DNS: Domain Name System
Con người: có nhiều định danh: CMT, tên, hộ chiếu Host, router trên Internet: Địa chỉ IP (32 bít) để đánh địa chỉ các đơn vị dữ liệu gửi đi Tên, ví dụ: sử dụng bởi con người Câu hỏi: Ánh xạ giữa địa chỉ IP và tên ? Hệ thống tên miền (DNS): Cơ sở dữ liệu phân tán được thực hiện phân cấp bởi nhiều name server Giao thức tầng ứng dụng để host, router, name server giao tiếp dịch giữa địa chỉ và tên Chú ý: Chức năng cơ bản của Internet, thực hiện bởi giao thức ứng dụng Sự phức tạp tại network edge

60 DNS Tại sao không dùng DNS tập chung ? Các dịch vụ DNS
Một điểm lỗi Khối lượng lưu lượng Cơ sở dữ liệu tập chung xa Bảo trì Không co giãn! Các dịch vụ DNS Dịch tên host sang địa chỉ IP Bí danh cho Host Canonical name và alias names Bí danh cho Mail server Phân tải Web server: Một tập các địa chỉ IP cho một canonical name

61 Cơ sở dữ liệu phân cấp và phân tán
Root DNS Servers com DNS servers org DNS servers edu DNS servers poly.edu DNS servers umass.edu yahoo.com amazon.com pbs.org Client muốn biết địa chỉ IP của Client yêu cầu root server để tìm com DNS server Client yêu cầu com DNS server để xác định amazon.com DNS server Client yêu cầu amazon.com DNS server để lấy địa chỉ IP cho

62 DNS: Root name server Local name server không trả lời được thì nó sẽ liên lạc với Root name server Root name server: Liên lạc với authoritative name server nếu nó không biết ánh xạ tên Lấy ánh xạ Trả ánh xạ về cho local name server b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations) i Autonomica, Stockholm (plus 3 other locations) k RIPE London (also Amsterdam, Frankfurt) m WIDE Tokyo a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD g US DoD Vienna, VA h ARL Aberdeen, MD j Verisign, ( 11 locations) 13 root name server trên toàn thế giới

63 TLD và Authoritative Server
Top-level domain (TLD) server: có vai trò đối với com, org, net, edu,… và tất cả các miền quốc gia mức trên cùng uk, fr, ca, jp,… Authoritative DNS server: DNS server của các tổ chức cung cấp ánh xạ authoritative hostname thành địa chỉ IP cho server của tổ chức (ví dụ Web và ). Có thể duy trì bởi tổ chức hoặc nhà cung cấp dịch vụ

64 Local Name Server Không hoàn toàn thuộc vào phân cấp
Mỗi ISP (residential ISP, công ty, tổ chức) có Còn gọi là “default name server” Khi một host tạo truy vấn DNS, truy vấn được gửi tới Local DNS server của nó Hoạt động như một proxy, chuyển tiếp query vào trong phân cấp.

65 authoritative DNS server
Ví dụ Root DNS server 2 Host tại cis.poly.edu muốn biết địa chỉ IP của gaia.cs.umass.edu 3 TLD DNS server 4 5 Local DNS server dns.poly.edu 7 6 1 8 authoritative DNS server dns.cs.umass.edu host gửi yêu cầu cis.poly.edu gaia.cs.umass.edu

66 authoritative DNS server
Truy vấn đệ quy requesting host cis.poly.edu gaia.cs.umass.edu root DNS server local DNS server dns.poly.edu 1 2 4 5 6 authoritative DNS server dns.cs.umass.edu 7 8 TLD DNS server 3 Truy vấn đệ quy: Giao toàn bộ việc tìm tên cho name server liên lạc Tải lớn? Truy vấn lặp: Server liên lạc trả về tên của server cần liên lạc tiếp “Tôi không biết nhưng anh muốn biết thì đi hỏi server này”

67 DNS: lưu giữ tạm và cập nhật bản ghi
Name server nào đó học các ánh xạ, server sẽ lưu giữ tạm các ánh xạ đó Các khe lưu trữ tạm quá hạn (biến mất) sau một khoảng thời gian Các TLD server thông thường lưu trữ tạm trong các local name servers Vì thế, root name server không phải hỏi thường xuyên Cơ chế cập nhật/thông báo định nghĩa bởi IETF RFC 2136

68 Định dạng RR: (name, value, type, ttl)
Bản ghi DNS DNS: Cơ sở dữ liệu phân tán chứa các bản ghi tài nguyên (Resource record - RR) Định dạng RR: (name, value, type, ttl) Type=A name là hostname value là địa chỉ IP Type=CNAME name là tên bí danh cho một số tên thật (cannonical name) thật ra là servereast.backup2.ibm.com value là tên thật Type=NS name là domain (ví dụ foo.com) value là địa chỉ của authoritative name server cho domain đó Type=MX value là tên thật của mail server liên kết với name (bí danh của hostname) (foo.com, mail.bar.foo.com, MX)

69 Giao thức DNS, bản tin Giao thức DNS: Bản tin truy vấn và trả lời có chung một định dạng bản tin Header của bản tin identification: 16 bit, định cho truy vấn, trả lời sử dụng cùng giá trị flags: Truy vấn hay trả lời Mong muốn đệ quy Có khả năng đệ quy Trả lời là ủy quyền

70 Giao thức DNS, bản tin Các trường Name, type cho một Truy vấn
Các bản ghi trong trả lời Các bản ghi cho authoritative server Các bản ghi cung cấp thông tin khác

71 Chèn thêm bản ghi vào DNS
Ví dụ: Tạo “Network Utopia” Đăng ký tên networkuptopia.com tại registrar (ví dụ: nhà cung cấp giải pháp mạng) Cần cung cấp cho registrar tên và địa chỉ IP của authoritative name server của mạng (primary và secondary) Registrar chèn thêm hai RR vào trong com TLD server: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, , A) Thêm vào authoritative server bản ghi kiểu A cho và bản ghi kiểu MX cho networkutopia.com Người khác xác định địa chỉ IP của Web site này như thế nào?

72 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

73 Chia sẻ file P2P Alice chọn một peer, Bob
File được sao chép từ máy của Bob tới máy của Alice: HTTP Trong khi Alice đang tải, người sử dụng khác lấy dữ liệu đã có trên máy Alice Peer của Alice vừa là Web client vừa là Web server. Mọi peer là server = quy mô lớn! Ví dụ Alice chạy ứng dụng P2P client Kết nối tới Internet và nhận một địa chỉ IP mới Tìm “Hey Jude” Ứng dụng các peer khác có bản sao chép của Hey Jude không.

74 P2P: thư mục trung tâm Thiết kế của “Napster” ban đầu
Server thư mục trung tâm peers Alice Bob 1 2 3 Thiết kế của “Napster” ban đầu 1) Khi peer kết nối, nó thông báo server trung tâm: Địa chỉ IP Nội dung 2) Alice yêu cầu “Hey Jude” 3) Alice yêu cầu file từ Bob

75 P2P: Vấn đề của thư mục trung tâm
Một điểm chịu lỗi Hiệu năng Xâm phạm bản quyền Truyền file là không tập trung, xác định vị trí nội dung là không tập chung

76 Chương 3: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

77 Lập trình Socket với TCP
Client phải liên lạc với server Tiến trình server phải đang chạy Server phải mở socket (cửa) để client liên lạc Client liên lạc với server bằng cách: Tạo client-local TCP socket Gán địa chỉ IP, cổng của tiến trình server Khi client tạo socket: client TCP giành kết nối tới server TCP Khi nhận được sự liên lạc của client, server TCP tạo một socket mới cho tiến trình server để giao tiếp với client Cho phép server nói chuyện với nhiều client Giá trị source port dùng để phân biệt các client (chi tiết hơn trong chương sau) TCP cung cấp dịch vụ truyền tin cậy các byte giữa client và server Góc nhìn ứng dụng

78 Ví dụ: C client (TCP) /* client.c */ void main(int argc, char *argv[])
{ struct sockaddr_in sad; /* cấu trúc chứa 1 địa chỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char Sentence[128]; char modifiedSentence[128]; host = argv[1]; port = atoi(argv[2]); clientSocket = socket(PF_INET, SOCK_STREAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */ memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); connect(clientSocket, (struct sockaddr *)&sad, sizeof(sad)); Tạo client socket, Kết nối tới server

79 Ví dụ: C client (TCP) (tiếp)
input stream từ user gets(Sentence); n=write(clientSocket, Sentence, strlen(Sentence)+1); n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence)); printf(“TỪ SERVER: %s\n”, modifiedSentence); close(clientSocket); } Gửi tới server Đọc từ server Đóng kết nối

80 Ví dụ: C server (TCP) /* server.c */ void main(int argc, char *argv[])
{ struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ struct sockaddr_in cad; int welcomeSocket, connectionSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char clientSentence[128]; char capitalizedSentence[128]; port = atoi(argv[1]); welcomeSocket = socket(PF_INET, SOCK_STREAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP address */ sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */ bind(welcomeSocket, (struct sockaddr *)&sad, sizeof(sad)); Tạo một socket chờ tại một cổng & Gắn với một địa chỉ cục bộ

81 Ví dụ: C server (TCP) (tiếp)
/* Chỉ định số client lớn nhất được xếp hàng */ listen(welcomeSocket, 10) while(1) { connectionSocket=accept(welcomeSocket, (struct sockaddr *)&cad, &alen); n=read(connectionSocket, clientSentence, sizeof(clientSentence)); /* Chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/ n=write(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1); close(connectionSocket); } Đợi client liên lạc Đưa kết quả ra socket Kết thúc vòng lặp While, Quay trở lại và đợi một kết nối client khác

82 Chương 3: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

83 Lập trình Socket với UDP
UDP: Không kết nối giữa client và server Không bắt tay Bên gửi chỉ ra địa chỉ IP và cổng của bên nhận cho mỗi gói tin Server phải tìm địa chỉ IP, cổng của bên gửi trong gói tin đã nhận UDP: dữ liệu đã truyền có thể nhận không theo thứ tự hoặc bị mất Góc nhìn ứng dụng UDP cung cấp dịch vụ truyền không tin cậy một nhóm các byte (“datagrams”) giữa client và server

84 Server (đang chạy trên hostid)
Tương tác giữa client socket và server socket: UDP Server (đang chạy trên hostid) Tạo socket, clientSocket = DatagramSocket() Client Tạo, địa chỉ (hostid, port=x, Gửi yêu cầu datagram sử dụng clientSocket Tạo socket, Cổng=x, đối với gói tin đến: serverSocket = DatagramSocket() Đọc yêu cầu từ serverSocket Đóng clientSocket Đọc trả lời từ clientSocket Ghi trả lời ra serverSocket chỉ định địa chỉ host của client và giá trị cổng

85 Không kết nối tới server
Ví dụ: C client (UDP) /* client.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char Sentence[128]; char modifiedSentence[128]; host = argv[1]; port = atoi(argv[2]); clientSocket = socket(PF_INET, SOCK_DGRAM, 0); /* xác định địa chỉ của server */ memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */ memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); Tạo client socket, Không kết nối tới server

86 Ví dụ: C client (UDP) (tiếp)
input stream từ user gets(Sentence); addr_len =sizeof(struct sockaddr); n=sendto(clientSocket, Sentence, strlen(Sentence)+1, (struct sockaddr *) &sad, addr_len); n=recvfrom(clientSocket, modifiedSentence, sizeof(modifiedSentence). (struct sockaddr *) &sad, &addr_len); printf(“TỪ SERVER: %s\n”,modifiedSentence); close(clientSocket); } Gửi tới server Đọc từ server Đóng kết nối

87 Gắn với một địa chỉ cục bộ
Ví dụ: C server (UDP) /* server.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ struct sockaddr_in cad; int serverSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char clientSentence[128]; char capitalizedSentence[128]; port = atoi(argv[1]); serverSocket = socket(PF_INET, SOCK_DGRAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP cục bộ */ sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */ bind(serverSocket, (struct sockaddr *)&sad, sizeof(sad)); Tạo socket chờ ở cổng & Gắn với một địa chỉ cục bộ

88 Nhận bản tin từ các client
Ví dụ: C server (UDP) (tiếp) while(1) { n=recvfrom(serverSocket, clientSentence, sizeof(clientSentence), 0 (struct sockaddr *) &cad, &addr_len ); /* chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/ n=sendto(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1,0 (struct sockaddr *) &cad, &addr_len); close(connectionSocket); } Nhận bản tin từ các client Ghi kết quả ra socket Kết thúc vòng lặp While, quay trở lại và đợi kết nối client khác

89 Chương 3: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server

90 Xây dựng một Web server đơn giản
Điều khiển một yêu cầu HTTP Chấp nhận yêu cầu Phân tích header Giành file đã yêu cầu từ hệ thống file của server Tạo bản tin trả lời HTTP: header lines + file Gửi trả lời cho client Sau khi tạo server, có thể yêu cầu file sử dụng một trình duyệt (ví dụ IE explorer)

91 Chương 3: Tổng kết Nội dung đã học: Ứng dụng mạng
Các giao thức cụ thể: HTTP FTP SMTP, POP, IMAP DNS Lập trình socket Các kiến trúc ứng dụng Client-Server P2P Hybrid Các yêu cầu ứng dụng: Tính tin cậy, băng thông, độ trễ Mô hình dịch vụ giao vận của Internet Tin cậy, hướng kết nối Không tin cậy, datagrams: UDP

92 Chương 3: Tổng kết Quan trọng: đã học về các giao thức
Trao đổi bản tin yêu cầu/bản tin trả lời: Client yêu cầu thông tin hoặc dịch vụ Server gửi dữ liệu trả lời, mã trạng thái Định dạng bản tin: Header: Các trường mang thông tin về Data Data: thông tin truyền thông Bản tin dữ liệu và bản tin điều khiển in-band, out-of-band Tập chung (centralized) và không tập chung (decentralized) Không hướng trạng thái (stateless) và hướng trạng thái (stateful) Truyền bản tin kiểu tin cậy (reliable) và không tin cậy (unreliable) Sự phức tạp tại network edge


Download ppt "Mạng máy tính Bộ môn Kỹ thuật máy tính và Mạng"

Similar presentations


Ads by Google