Mạng máy tính - Chương 2: Tầng ứng dụng – application layer
Bạn đang xem 20 trang mẫu của tài liệu "Mạng máy tính - Chương 2: Tầng ứng dụng – application layer", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- mang_may_tinh_chuong_2_tang_ung_dung_application_layer.pdf
Nội dung text: Mạng máy tính - Chương 2: Tầng ứng dụng – application layer
- Chương 2 TẦNG ỨNG DỤNG – APPLICATION LAYER Nhập mơn mạng máy tính
- Application Layer 2
- The Application Layer 2.1. Một số khái niệm và nguyên tắc. 2.2. Web & Hyper Text Transfer Protocol. 2.3. Web design and HTTP, Web programming. 2.4. File Transfer Protocol. 2.5. Electronic Mail Protocols. 2.6. Domain Name System. 3
- 2.1. Một số khái niệm và nguyên tắc Một số chương trình ứng dụng (network applications) Email (Yahoo! Mail, Gmail, FPT mail ). Web browser (MS Internet Explorer, Netscape Navigator ). Instant messenger (Yahoo! Messenger, ICQ ). P2P file sharing (Napster, KazaA, eMule ). Internet games (Yahoo! Games). Internet telephone (Skype, FPTFone,VNNFone ). Real-time video conference. Massive parallel computing. 4
- Một số giao thức (application-layer protocols) HTTP (Hyper Text Transfer Protocol) Giao thức web. FTP (File Transfer Protocol) Giao thức truyền tệp. SMTP (Simple Mail Transfer Protocol) Giao thức truyền thư điện tử. POP (Post Office Protocol) Giao thức nhận thư điện tử. IMAP (Internet Mail Access Protocol) Giao thức nhận thư điện tử (khác POP3) DNS (Domain Name System) DNS = hệ thống tên miền, giao thức DNS quy định quy tắc sử dụng tên miền. TFTP (Trivial FTP) Một dạng khác của FTP. 5
- Applications và Application-layer protocols Applications: Chương trình ứng dụng chạy trên hệ điều hành => 1 tiến trình Các tiến trình trao đổi với nhau qua các thơng điệp (message) nhằm thực thi vai trị của ứng dụng. Vd: web browser, email client Application-layer protocols: Là một thành phần của chương trình ứng dụng. Định nghĩa các quy tắc trao đổi thơng điệp. Giao tiếp với các dịch vụ được cung cấp bởi tầng dưới (TCP, 6 UDP).
- Các chương trình giao tiếp với nhau ntn? Các chương trình trên cùng một máy tính Sử dụng các dịch vụ được cung cấp bởi hệ điều hành (interprocess communication). Các chương trình trên các máy tính khác nhau Giao tiếp thơng qua giao thức của tầng ứng dụng (application-layer protocol). Chương trình phía người dùng = user agent Giao tiếp với người sử dụng (giao diện sử dụng). Giao tiếp với các giao thức mạng. 7
- Các mơ hình của ứng dụng Client-server Peer-to-peer (P2P) Lai giữa client-server và P2P 8
- Mơ hình khách-phục vụ (client-server ) Mơ hình khách-phục vụ được quen gọi là mơ hình khách - chủ. Mộ t ứng dụng cụ thể bao gồm hai phần: application Client transport network Thiết lập liên kết với server. data link physical Yêu cầu dịch vụ từ server. request Vd: web browser. Server Chờ và cung cấp các dịch vụ khi client yêu cầu. reply Vd: web server. application transport network data link physical 9
- Mơ hình ngang hàng (Peer-to-peer) Khơng cĩ máy dịch vụ cố định, các máy tính trong mạng lúc này là server (nhận yêu cầu kết nối) nhưng lúc khác lại là client (yêu cầu máy khác kết nối). Các máy tính là ngang hàng, tự do kết nối và giao tiếp đơi một. Địa chỉ của các máy tính tham gia giao tiếp liên tục thay đổi. 10
- Mơ hình lai Máy chủ quản lý đăng nhập, thơng tin sử dụng chung Các máy khách trao đổi trực tiếp với nhau sau khi đăng nhập Ví dụ: Yahoo Messenger, Skype, 11
- Client-server & P2P examples CNN.com Client-server Yahoo! Mail Client-server Google Client-server Yahoo! Messenger Client-server & P2P Internet Relay Chat (IRC) Client-server & P2P 12
- Yêu cầu đối với việc vận chuyển dữ liệu Data loss Các ứng dụng audio/video cĩ thể chấp nhận mất mát, sai lệch dữ liệu trong khoảng cho phép. Email, file transfer yêu cầu dữ liệu phải chính xác. Timing Các ứng dụng online cần độ trễ (delay) nhỏ (phone, games). Bandwidth Các ứng dụng multimedia cần đường truyền tốc độ cao để đảm bảo chất lượng. Các ứng dụng email, file transfer mềm dẻo hơn, tuỳ theo tốc độ. 13
- Các yêu cầu giao vận của một số ứng dụng Application Data loss Bandwidth Time Sensitive file transfer no loss elastic no e-mail no loss elastic no Web documents loss-tolerant elastic no real-time audio/video loss-tolerant audio: 5Kb-1Mb yes, 100’s msec video:10Kb-5Mb stored audio/video loss-tolerant same as above yes, few secs interactive games loss-tolerant few Kbps up yes, 100’s msec financial apps no loss elastic yes and no 14
- Internet Transport protocols: TCP & UDP TCP (Transmission Control UDP (User Datagram Protocol) Protocol) Truyền dữ liệu khơng tin cậy Hướng nối : Yêu cầu thiết lập giữa các tiến trình gửi và kết nối giữa client và server. nhận. Truyền dữ liệu tin cậy giữa Khơng hỗ trợ : thiết lập kết tiến trình gửi và nhận nối, độ tin cậy, điều khiển lưu Điều khiển lưu lượng : bên gửi lượng, kiểm sốt tắc nghẽn, sẽ khơng làm “lụt” bên nhận. thời gian, băng thơng tối Kiểm sốt tắc nghẽn: điều thiểu. chỉnh tốc độ gửi khi mạng quá tải. Khơng hỗ trợ : thời gian, băng thơng tối thiểu. 15
- Internet applications: TCP or UDP? Application Underlying Application layer protocol transport protocol e-mail SMTP [RFC 821] TCP remote terminal access telnet [RFC 854] TCP Web HTTP [RFC 2068] TCP file transfer ftp [RFC 959] TCP streaming multimedia proprietary TCP or UDP (e.g. RealNetworks) remote file server NSF TCP or UDP Internet telephony proprietary typically UDP (e.g., Vocaltec) 16
- 2.2. Web & Hyper Text Transfer Protocol. 17
- 2.2. Web & HTTP Trang web (web page): một loại tài liệu cĩ chứa nhiều đối tượng: text, image, audio, Java applet, HTML Về cơ bản, web page = HTML file (base HTML). HTML = Hyper Text Markup Language. HTML sử dụng các thẻ (tag) để mơ tả đối tượng chứa trong nĩ. Mỗi đối tượng được chỉ ra bởi địa chỉ URL (Uniform Resource Locator) 18 Protocol Host name & port Path
- HTTP (Hyper Text Transfer Protocol) Là giao thức tầng ứng dụng. Sử dụng mơ hình client/server. Client (user agent): Trình duyệt web (web browser) Yêu cầu truy cập web thơng qua URL (URL request). Server Máy phục vụ web (web server). Gửi các đối tượng tới client thơng quan phản hồi (response). HTTP version: HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 19
- HTTP: Quá trình trao đổi thơng điệp Client (browser) thiết lập liên kết tới web server (TCP connection) qua cổng 80 (mặc định). Server đồng ý kết nối (accept). Các thơng điệp (HTTP messages) được trao đổi giữa browser và server. Ngắt kết nối. HTTP là giao thức “khơng trạng thái”: khơng lưu lại yêu cầu của client 20
- HTTP example Giả sử người dùng truy cập URL: www.qnu.edu.vn/cs/index.htm (trang web cĩ text và 10 hình ảnh jpeg) 1a. http client thiết lập liên kết ớ TCP v i http server 1b. http server tại máy phục vụ ạ ị ỉ (process) t i đ a ch www.qnu.edu.vn chờ yêu cầu ổ www.qnu.edu.vn, c ng 80 kết nối TCP tại cổng 80, chấp ầ ị ớ (ng m đ nh v i http server). nhận kết nối rồi thơng báo với 2. http client gửi http request client. message (bao gồm cả URL) tới TCP connection socket 3. http server nhận request message, tạo ra http response message cĩ chứa time các đối tượng được yêu cầu rồi gửi vào socket. 21
- 4. http server ngắt liên kết. 5. http client nhận response message cĩ chứa html file, hiển thị html. Sau đĩ, phân tích html file, tìm URL của 10 time hình ảnh jpeg trong tài liệu. 6. Bước 1-5 được lặp lại với từng hình ảnh. 22
- HTTP Connection: Persistent & Non-persistent HTTP Khơng liên tục HTTP liên tục Chỉ cĩ một đối tượng Cho phép nhiều đối tượng web gửi qua liên kết được truyền trên cùng một TCP. liên kết. Sử dụng mặc định Client phân tích, tìm ra và trong HTTP/1.0 gửi yêu cầu tới tất cả các đối tượng ngay sau khi nhận được trang HTML ban đầu (base HTML). HTTP 1.1 sử dụng liên kết loại này ở chế độ mặc định. 23
- HTTP Message Format: request & response Hai loại message: request và response. HTTP request message: dạng ASCII (đọc được!) request line (GET, POST, GET /somedir/page.html HTTP/1.0 HEAD commands) User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg header Accept-language:fr lines Carriage return, (CR,LF) line feed indicates end of message 24
- HTTP request message 25
- HTTP response message status line (protocol status code HTTP/1.0 200 OK status phrase) Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) header Last-Modified: Mon, 22 Jun 1998 lines Content-Length: 6821 Content-Type: text/html data, e.g., requested data data data data data html file 26
- HTTP response message 27
- HTTP response message: status codes 200 OK request succeeded, requested object later in this message 301 Moved Permanently requested object moved, new location specified later in this message (Location:) 400 Bad Request request message not understood by server 404 Not Found requested document not found on this server 505 HTTP Version Not Supported 28
- Ví dụ thực hành 1. Telnet tới web server: telnet www.qnu.edu.vn 80 Mở một kết nối (TCP) tới cổng 80 tại web server của trường ĐHQN. Sau khi kết nối, tất cả ký tự gõ vào sẽ được gửi tới cổng 80. 2. Nhập vào GET http request: GET /cs/index.htm HTTP/1.1 Đây là một http request đơn giản. Nhập xong gõ 2 lần Enter để gửi tới server 3. Kiểm tra kết quả nhận được (http response message)! 29
- User-server interaction: authentication (kiểm chứng) Authenthication client server usual http request msg 401: authorization req. WWW authenticate: usual http request msg + Authorization: usual http response msg usual http request msg + Authorization: time usual http response msg 30
- Trạng thái User-server: các cookie Nhiều Web sites dùng các Ví dụ: cookie Susan truy cập 4 loại: Internet luơn từ một PC 1) cookie header line của She lần đầu tiên vào một thơng điệp phản hồi e-commerce site xác HTTP định 2) cookie header line ầ ở ạ trong thơng điệp yêu Khi yêu c u kh i t o cầu HTTP HTTP đến site, site tạo một ID duy nhất và tạo 3) cookie file lưu trong host của user, quản lý một điểm đăng nhập bởi trình duyệt của user trong cơ sở dữ liệu 4) cơ sở dữ liệu back-end back-end cho ID đĩ 31 tại Web site
- Các cookie: lưu giữ “trạng thái” (tt.) client server Cookie file usual http request msg server usual http response + tạo ID ebay: 8734 Set-cookie: 1678 1678 cho user Cookie file usual http request msg amazon: 1678 cookie: 1678 cookie- ebay: 8734 specific usual http response msg action một tuần sau: Cookie file usual http request msg cookie: 1678 cookie- amazon: 1678 spectific ebay: 8734 usual http response msg action 32
- các cookie (tiếp) ngồi ra ạ các cookie và sự riêng tư: Các cookie đem l i: các cookie cho phép các site biết Khơng cần nhập username và nhiều hơn về bạn password nhiều lần bạn cĩ thể cung cấp tên và e-mail các khuyến cáo cho sites trạng thái phiên làm việc của user (Web e-mail) 33
- Web caches (proxy server) Mục tiêu: thỏa mãn yêu cầu của client khơng cần liên quan đến server nguồn user thiết lập trình server nguồn duyệt: truy cập Web thơng qua cache Proxy server trình duyệt gửi tất cả client yêu cầu HTTP cho cache đối tượng trong cache: cache trả về đối tượng ngược lại cache yêu cầu client đối tượng từ server server nguồn, sau đĩ trả về cho nguồn client 34
- Web caching Cache hoạt động tại cả client và server Tiêu biểu cache được cài đặt bởi ISP (trường học, cơng ty, ISP riêng) Tại sao dùng Web caching? Giảm thời gian đáp ứng cho yêu cầu của client Giảm lưu thơng trên liên kết truy cập Nhà cung cấp khơng quan tâm đến việc triển khai cache trên Internet 35
- GET cĩ điều kiện cache server Mục tiêu: khơng gửi đối tượng nếu cache đã cập HTTP request msg If-modified-since: nhật đối tượng cache: xác định ngày của khơng sửa đổi bản sao cache trong yêu HTTP response HTTP/1.0 cầu HTTP: 304 Not Modified If-modified-since: HTTP request msg server: đáp ứng khơng If-modified-since: đối tượng chứa đối tượng nếu bản sao cĩ cache đã cập nhật: HTTP response sửa đổi HTTP/1.0 304 Not HTTP/1.0 200 OK Modified 36
- Web servers IIS (Microsoft Internet Information Server) Chạy trên mơi trường Windows Đi kèm Windows Server Apache web server Mã nguồn mở. Linux/Windows Web server được dùng nhiều nhất. Tomcat, Netscape, Xitami 37
- 2.3. Web design and HTTP, Web programming. 38
- Web design: HTML Thiết kế web: Tạo ra tài liệu HTML HTML (Hyper Text Markup Language) Trong tài liệu HTML cĩ thể cĩ nhiều đối tượng Text Images Hyper link Sử dụng thẻ (tag) để diễn đạt đối tượng. Thẻ mở, vd: ; ; ; Thẻ đĩng, vd: ; ; ; Cơng cụ: Text editor: Notepad, Ultra Edit Microsoft FrontPage Macromedia Dreamweaver 39
- Web programming HTML = trang web tĩnh (Static web): Web server luơn trả về một trang HTML cố định khi nhận được yêu cầu của người dùng. Lập trình web: tương tác với người sử dụng thơng qua web. Java script, VB script. ASP, JSP, PHP, Perl 40
- HTML Form: Send user requests HTML ASP Simple ASP Simple Form dim welcome dim myName myName=Request.Form("myName") welcome = “ Welcome " & myName & “! ” Response.Write (welcome ) %> 41
- ASP (Active Server Page) Microsoft/IIS. Một tài liệu ASP cĩ thể coi như một tài liệu HTML cĩ nhúng các script ASP, được ghi lại dạng tệp *.asp, đặt tại web server. Mỗi khi được request, các script được chạy ở phía server, kết quả trả về client dạng HTML (client khơng thấy source). Các đối tượng: Request Client request. Response Server response. Application QueryString Cơng cụ: MS Visual InterDev 42
- Mơ hình 3 lớp trong lập trình web req WEB BROWSER WEB SERVER (Apache, IIS) resp Server-side scripts ASP, PHP, JSP Các thủ tục truy xuất CSDL DB API CSDL DB 43
- 2.4 FTP 44
- FTP: giao thức truyền file giao diện truyền file FTP FTP FTP client server user user tại host hệ thống hệ thống file file từ xa cục bộ truyền file đến/từ host từ xa mơ hình client/server client: phía khởi tạo truyền (đến/từ host ở xa) server: host ở xa ftp: RFC 959 ftp server: port 21 45
- FTP: kết nối dữ liệu, điều khiển riêng biệt kết nối điều khiển TCP FTP client tiếp xúc FTP server port 21 tại port 21, xác định TCP như giao thức transport kết nối dữ liệu TCP Client lấy giấy phép thơng qua FTP port 20 FTP kết nối điều khiển client server Client thao tác thư mục ở xa bằng việc gửi các lệnh thơng qua kết nối điều khiển. Server mở kết nối dữ liệu TCP Khi server nhận lệnh truyền file, khác để truyền file khác server mở kết nối TCP thứ 2 Sử dụng kênh điều khiển khác với (cho file) đến client kênh truyền dữ liệu gọi là “out of Sau khi truyền 1 file, server band” đĩng kết nối dữ liệu FTP server giữ lại “trạng thái”: thư mục hiện hành, giấy phép trước đĩ 46
- Các lệnh, phản hồi FTP Ví dụ các lệnh: Ví dụ mã trả về gửi như văn bản ASCII trên mã trạng thái và cụm (như kênh điều khiển HTTP) USER username 331 Username OK, PASS password password required 125 data connection LIST trả về danh sách của already open; transfer file trong thư mục hiện hành starting RETR filename trích chọn 425 Can’t open data (lấy) file connection STOR filename lưu (đặt) 452 Error writing file file vào trong host ở xa 47
- 2.5 Electronic Mail 48
- Electronic Mail outgoing hàng message hộp thư user user 3 thành phần quan trọng: agent user agents mail user server mail servers agent simple mail transfer protocol: SMTP mail SMTP server user SMTP agent User Agent cịn gọi là “mail reader” SMTP mail user viết, sửa đổi, đọc các thơng server agent điệp mail Ví dụ: Eudora, Outlook, elm, user Netscape Messenger agent user các thơng điệp đi và đến được agent lưu trên server 49
- Electronic Mail: mail servers user Mail Servers agent mailbox (hộp thư) chứa các mail user thơng điệp đến user server agent hàng thơng điệp cho các thơng SMTP điệp email ra ngồi (chuẩn bị mail gửi) server user agent giao thức SMTP giữa các mail SMTP servers để gửi các thơng điệp SMTP email mail user agent client: mail server gửi server “server”: mail server nhận user agent user agent 50
- Electronic Mail: SMTP [RFC 2821] dùng TCP để truyền tin cậy thơng điệp email từ client đến server trên port 25 truyền trực tiếp: server gửi đến server nhận 3 giai đoạn bắt tay (chào hỏi) truyền thơng điệp đĩng tương tác lệnh/phản hồi lệnh: văn bản ASCII phản hồi: mã trạng thái và cụm các thơng điệp phải ở dạng mã ASCII 7-bit 51
- Tình huống: Alice gửi cho Bob 1) Alice dùng UA viết thơng điệp 4) SMTP client gửi thơng điệp và “gửi đến” của Alice trên kết nối TCP bob@someschool.edu 5) mail server của Bob đặt 2) UA của Alice gửi thơng điệp thơng điệp vào hộp thư của của cơ ấy đến mail server; Bob thơng điệp được gia nhập vào 6) Bob kích hoạt trình user hàng đợi agent đọc thơng điệp 3) Phía Client của SMTP mở kết nối TCP với mail server của Bob 1 mail mail user user server server agent agent 2 3 6 4 5 52
- 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 alice@crepes.fr Sender ok C: RCPT TO: S: 250 bob@hamburger.edu 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 53
- Thử nghiệm tương tác SMTP: telnet servername 25 thấy 220 trả lời từ server nhập các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT lệnh trên cho phép bạn gửi email khơng cần dùng email client (reader) 54
- SMTP SMTP dùng các kết nối liên So sánh với HTTP: tục HTTP: kéo SMTP yêu cầu các thơng điệp (header & body) phải ở dạng SMTP: đẩy ứ th c 7-bit ASCII tất cả đều cĩ tương tác SMTP server dùng lệnh/đáp ứng, các mã trạng CRLF.CRLF xác định kết thái ASCII thúc thơng điệp HTTP: mỗi đối tượng được đĩng kín trong thơng điệp đáp ứng của nĩ SMTP: nhiều đối tượng được gửi trong thơng điệp nhiều phần 55
- Dạng thức thơng điệp email SMTP: giao thức cho trao đổi các thơng điệp email header dịng RFC 822: chuẩn cho dạng thức trống văn bản: các dịng header, ví dụ: To: body From: Subject: khác với các lệnh HTTP body “thơng điệp”, chỉ cĩ các ký tự ASCII 56
- Dạng thức thơng điệp: các mở rộng multimedia MIME: Multimedia Mail Extension, RFC 2045, 2056 các dịng bổ sung trong header của thơng điệp khai báo kiểu nội dung MIME From: alice@crepes.fr phiên bản MIME To: bob@hamburger.edu Subject: Picture of yummy crepe. phương pháp dùng MIME-Version: 1.0 để mã hĩa dữ liệu Content-Transfer-Encoding: base64 Content-Type: image/jpeg kiểu, kiểu con, khai báo tham số base64 encoded data dữ liệu multimedia base64 encoded data dữ liệu đã mã hĩa 57
- Các giao thức truy cập email SMTP SMTP giao thức user user agent agent truy cập ủ ườ ậ mail server của người gửi mail server c a ng i nh n SMTP: truyền dẫn/lưu trữ vào server của người nhận Giao thức truy cập email: trích xuất từ server POP: Post Office Protocol [RFC 1939] cấp phép (agent server) và download IMAP: Internet Mail Access Protocol [RFC 1730] nhiều tính năng (phức tạp hơn) điều khiển các thơng điệp đã lưu trên server HTTP: Hotmail , Yahoo! Mail, 58
- Giao thức POP3 S: +OK POP3 server ready C: user bob giai đoạn cấp phép S: +OK C: pass hungry các lệnh phía client: S: +OK user successfully logged on user: khai báo username C: list pass: password S: 1 498 các đáp ứng phía server S: 2 912 S: . +OK C: retr 1 -ERR S: S: . giai đoạn giao dịch, client: C: dele 1 list: liệt kê các số thơng C: retr 2 điệp S: retr: trích xuất thơng điệp S: . theo số C: dele 2 C: quit dele: xĩa S: +OK POP3 server signing off quit 59
- POP3 và IMAP nghiên cứu thêm về POP3 IMAP Ví dụ trước dùng chế độ Giữ tất cả thơng điệp tại “tải xuống và xĩa”. 1 vị trí: server Bob khơng thể đọc lại Cho phép user tổ chức email nếu thay đổi client các thơng điệp theo “tải xuống-và-giữ”: sao dạng thư mục chép các thơng điệp IMAP giữ trạng thái trên các client khác xuyên suốt các phiên nhau làm việc: POP3 khơng giữ trạng các tên của thư mục và thái của các phiên làm ánh xạ giữa ID của thơng ệ ư ụ việc đi p và tên th m c 60
- 2.6 DNS - Domain Name System 61
- DNS: Domain Name System Con người: nhiều cách nhận Domain Name System: dạng: cơ sở dữ liệu phân bố hiện thực tên, #hộ chiếu theo tổ chức phân cấp của nhiều servers Internet hosts, routers: Là giao thức lớp application địa chỉ IP (32 bit) dùng cho các gĩi định địa chỉ “tên”, ví dụ: www.yahoo.com – dùng bởi con người Ánh xạ giữa địa chỉ IP và tên? 62
- Các thành phần trong dịch vụ DNS Resource Root “.” Record .com .edu Resource Record DNS Clients DNS Servers DNS Servers trên Internet 63
- DNS Các dịch vụ DNS Tại sao khơng tập trung hĩa DNS? Tên Host chuyển thành địa chỉ IP một điểm chịu lỗi Bí danh Host lưu lượng các tên đúng chuẩn và bí khoảng cách cơ sở dữ liệu danh tập trung Bí danh Mail server bảo trì Tải phân bố Các Web server bản sao: khơng linh hoạt! tập các địa chỉ IP cho 1 tên đúng chuẩn 64
- Cơ sở dữ liệu cấu trúc, phân bố DNS Servers gốc com DNS servers org DNS servers edu DNS servers poly.edu umass.edu yahoo.com pbs.org amazon.com DNS servers DNS servers DNS servers DNS servers DNS servers Client muốn IP cho www.amazon.com: Client hỏi một server gốc (root) để tìm com DNS server Client hỏi com DNS server để lấy amazon.com DNS server Client hỏi amazon.com DNS server để lấy địa chỉ IP của www.amazon.com 65
- Authoritative DNS server & Non-authoritative DNS server DNS Servers gốc com DNS servers org DNS servers edu DNS servers poly.edu umass.edu yahoo.com pbs.org amazon.com DNS servers DNS servers DNS servers DNS servers DNS servers Authoritative DNS server (DNS server cĩ thẩm quyền) sẽ thực hiện: Kiểm tra cache, kiểm tra zone, gởi IP address cho truy vấn. Non-authoritative DNS server sẽ thực hiện: Chuyển yêu cầu truy vấn khơng thể phân giải đến Forwarder server. Sử dụng root hints server để trả lời cho truy vấn. 66
- DNS: các server tên gốc Local name server sẽ hỏi Root name server khi khơng xác định được ánh xạ. Root name server: Hỏi authoritative name server nếu khơng trả lời được Nhận câu trả lời từ authoritative name server Trả lời local name server a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD k RIPE London (also Amsterdam, Frankfurt) g US DoD Vienna, VA h ARL Aberdeen, MD i Autonomica, Stockholm (plus 3 j Verisign, ( 11 locations) other locations) m WIDE Tokyo e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations) 13 name servers gốc trên tồn cầu b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA 67
- Server tên cục bộ Khơng hồn tồn theo cấu trúc phân cấp Mỗi ISP (ISP cá nhân, cơng ty, trường học) cĩ một server cục bộ như vậy. cũng gọi là “server tên mặc nhiên” Khi một host tạo một truy vấn DNS, truy vấn đĩ được gửi tới DNS server cục bộ của nĩ Hoạt động như một proxy, chuyển truy vấn vào cho tổ chức phân cấp 68
- Ví dụ DNS server gốc Host tại cis.poly.edu muốn địa chỉ IP của 2 3 DNS server cĩ thẩm quyền gaia.cs.umass.edu umass.edu 4 5 DNS server cục bộ dns.poly.edu 7 6 1 8 DNS server cĩ thẩm quyền cs.umass.edu host yêu cầu cis.poly.edu gaia.cs.umass.edu 69
- Recursive query recursive query được gởi tới DNS server, trong đĩ DNS client yêu cầu DNS server cung cấp đầy đủ thơng tin cho truy vấn. DNS server kiểm tra forward lookup zone và cache để trả lời truy vấn Recursive query for mail1.yahoo.com 66.8.133.10 Database Computer1 Local DNS Server
- Interactive query interative query là truy vấn được gởi tới DNS server trong đĩ DNS client yêu cầu DNS server cung cấp thơng tin tốt nhất mà nĩ cĩ chứ khơng tìm sự trợ giúp từ Name server khác. ACK của iterative query thường tham chiếu đến DNS server con trong DNS tree. Interative Query Local Ask .com 1 Root Hint (.) DNS Server .com 2 3 Computer1 yahoo.com
- Forwarder forwarder cung cấp cơ chế chuyển yêu cầu truy vấn cho internal DNS servers ra ngồi external DNS server Iterative Query Forwarder Ask .com Root Hint (.) .com yahoo.com Local Computer1 DNS Server
- Caching DNS Server Caching Table Host Name IP Address TTL clientA.vnn.vn. 192.168.8.44 28 seconds Where’sClientA Clientis at 192.168.8.44A? ClientA Client1 Where’sClientA Clientis at Client2 192.168.8.44A? Caching là tiến trình lưu trữ tạm một số thơng tin phân giải trước để cung cấp cho các lần phân giải sau này nhằm làm tăng tốc quá trình phân giải tên miền
- Caching DNS Server Khi “học” được thêm một ánh xạ, name server sẽ “ghi nhớ” ánh xạ này Sau một khoảng thời gian, nếu thành phần nào trong cache khơng được sử dụng thì sẽ bị xĩa bỏ. Cơ chế Cập nhật và Thơng báo do IETF thiết kế: RFC 2136 74
- Các DNS record DNS: cơ sở dữ liệu phân bố lưu trữ các record tài nguyên (RR) dạng thức RR: (name, value, type, ttl) Type=A Type=CNAME name là tên host name là bí danh của tên “chuẩn” value là địa chỉ IP (tên thực) www.ibm.com là tên thực Type=NS servereast.backup2.ibm.com value là tên chuẩn name ề là tên mi n (vd: foo.com) value là tên host của Type=MX server tên cĩ thẩm quyền value là tên của email server cho tên miền này liên kết với name 75
- 2.7 Lập trình socket với TCP 76
- Lập trình socket 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 Socket API socket đã được giới thiệu trong BSD4.1 UNIX, 1981 Là giao diện nằm trên máy sử dụng và giải phĩng bởi ứng tính, do ứng dụng tạo ra và dụng quản lý, nhưng HĐH kiểm ử mơ hình client/server sốt (là “c a”) thơng qua đĩ tiến trình vừa gửi và nhận ể ị ụ ư 2 ki u d ch v l u thơng qua thơng điệp từ các tiến trình socket API: ứng dụng khác (ở trên máy datagram khơng tin cậy tính khác) tin cậy, truyền byte theo streaming 77
- Lập trình socket dùng TCP Socket: một cánh cửa giữa tiến trình ứng dụng và giao thức transport (UCP hoặc TCP) (Socket: a door between application process and end- end-transport protocol (UCP or TCP).) Dịch vụ TCP: truyền tin cậy các bytes từ một tiến trình đến tiến trình khác 78
- Lập trình socket với TCP Client phải liên lạc trước với Khi đã chấp nhận yêu cầu bởi server client, server TCP tạo socket tiến trình server phải chạy mới cho tiến trình server để trước truyền thơng với client server phải tạo socket (cửa) cho phép server “nĩi mời client đến tiếp xúc chuyện” với nhiều client ố ể ệ Client liên lạc server bằng: s port dùng đ phân bi t các client (xem trong tạo socketTCP client cục bộ chương 3) xác định địa chỉ IP, số port của tiến trình server Nhìn dưới gĩc độ ứng dụng Khi client tạo socket: client TCP cung cấp việc truyền các byte TCP thiết lập kết nối với tin cậy và theo thứ tự server TCP giữa client và server 79
- Giao tiếp socket Client/server 80
- Giao tiếp socket Client/server: TCP Server (chạy trên hostid) Client create socket, port=x, for incoming request: welcomeSocket = ServerSocket() TCP wait for incoming create socket, connection request connection setup connect to hostid, port=x connectionSocket = clientSocket = welcomeSocket.accept() Socket() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket . close clientSocket 81
- Thuật ngữ Stream keyboard monitor Một stream là một chuỗi các ký tự được “chảy” vào hoặc ra input khỏi một tiến trình stream inFromUser Một input stream để chỉ Processtiến nguồn vào của một tiến trình, trình vd: bàn phím hoặc socket. Client Một output stream để chỉ output input nguồn ra của một tiến trình, stream stream outToServer vd: màn hình hoặc socket. inFromServer clientclientSocket TCP socket TCP socket to network from network 82
- Lập trình socket dùng TCP Ví dụ ứng dụng client-server : 1) client đọc các dịng từ input chuẩn (inFromUser stream) , gửi đến server thơng qua socket (outToServer stream) 2) server đọc các dịng từ socket 3) server chuyển các dịng thành chữ hoa, gửi ngược trở lại cho client 4) client đọc, in các dịng đã sửa đổi từ socket (inFromServer stream) 83
- Ví dụ: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; tạo BufferedReader inFromUser = input stream new BufferedReader(new InputStreamReader(System.in)); tạo client socket, Socket clientSocket = new Socket("hostname", 6789); kết nối vào server tạo DataOutputStream outToServer = output stream new DataOutputStream(clientSocket.getOutputStream()); gắn vào socket 84
- Ví dụ: Java client (TCP) tạo BufferedReader inFromServer = input stream new BufferedReader(new gắn vào socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Gửi dịng đến server outToServer.writeBytes(sentence + '\n'); đọc dịng modifiedSentence = inFromServer.readLine(); từ server System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } 85
- Ví dụ: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; tạo String capitalizedSentence; socket mời tiếp xúc tại port 6789 ServerSocket welcomeSocket = new ServerSocket(6789); Chờ, client while(true) { tiếp cận với server Socket connectionSocket = welcomeSocket.accept(); Tạo input BufferedReader inFromClient = new BufferedReader(new stream, gắn vào InputStreamReader(connectionSocket.getInputStream())); socket 86
- Ví dụ: Java server (TCP) Tạo output stream, gắn vào DataOutputStream outToClient = socket new DataOutputStream(connectionSocket.getOutputStream()); Đọc dịng từ socket clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; Viết dịng ra outToClient.writeBytes(capitalizedSentence); từ socket } } } kết thúc vịng lặp while quay lại và chờ cho kết nối của client khác 87
- 2.8 Lập trình socket với UDP 88
- 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 người gửi rõ ràng gắn địa chỉ IP và port của đích vào mỗi gĩc nhìn ứng dụng gĩi UDP cung cấp việc truyền khơng tin cậy phải trích địa chỉ IP, port của một nhĩm các byte (“datagrams”) người gửi từ gĩi đã nhận giữa client và server UDP: dữ liệu truyền cĩ thể khơng theo thứ tự, hoặc bị mất mát 89
- Giao tiếp socket Client/server: UDP Server (chạy trên hostid) Client create socket, create socket, port=x, for clientSocket = incoming request: DatagramSocket() serverSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket read request from serverSocket write reply to serverSocket specifying client read reply from host address, clientSocket port number close clientSocket 90
- Ví dụ: Java client (UDP) keyboard monitor input stream inFromUser ProcessClient process Input: nhận gĩi (cịn gọi là UDP ậ Output: gửi gĩi nh n “dịng byte”) (cịn gọi là UDP gửi “dịng byte”) UDP UDP packet packet sendPacket receivePacket clientclientSocket UDP socket UDP socket to network from network 91
- Ví dụ: Java client (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { tạo input stream BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); tạo client socket DatagramSocket clientSocket = new DatagramSocket(); dịch InetAddress IPAddress = InetAddress.getByName("hostname"); hostname thành địa chỉ IP dùng DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); 92
- Ví dụ: Java client (UDP). tạo datagram với DatagramPacket sendPacket = dữ liệu để gửi, new DatagramPacket(sendData, sendData.length, IPAddress, độ dài, địa chỉ IP, port 9876); gửi datagram clientSocket.send(sendPacket); đến server DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); đọc datagram ừ clientSocket.receive(receivePacket); t server String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } 93
- Ví dụ: Java server (UDP) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception Tạo { datagram socket tại port 9876 DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Tạo khơng gian để nhận datagram DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); nhận serverSocket.receive(receivePacket); datagram 94
- Ví dụ: Java server (UDP) String sentence = new String(receivePacket.getData()); lấy địa chỉ IP port #, củ a InetAddress IPAddress = receivePacket.getAddress(); người gửi int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); tạo datagram để gửi tới client DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); viết datagram serverSocket.send(sendPacket); vào socket } } } kết thúc vịng lặp while, quay lại và chờ datagram khác 95
- Bài tập lập trình mạng Bài 1: Hãy lập trình socket TCP & UDP thực hiện: Client: Nhập một mảng số nguyên và gửi đến Server Server: Nhận mảng số nguyên và in ra màn hình. Sau đĩ sắp xếp theo thứ tự tăng dần rồi gửi lại cho client. Client nhận mảng số nguyên sau khi sắp xếp và in ra màn hình cho ngưởi sử dụng. Bài 2: Sửa lại chương trình trên cho phép người dùng cĩ thể lặp lại quá trình gửi dãy số nguyên đến Server. Bài 3: Viết chương trình cho phép 2 người chat với nhau (simpleChat) Bài 4: Viết chương trình cho phép nhiều người chat (MultiChat) 96
- Hết Chương 2 97