Bài giảng Mạng máy tính - Chương 2: Tầng ứng dụng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương 2: Tầng ứng dụng", để 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:
- bai_giang_mang_may_tinh_chuong_2_tang_ung_dung.pdf
Nội dung text: Bài giảng Mạng máy tính - Chương 2: Tầng ứng dụng
- 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 1-1
- Chương 2: Tầng ứng dụng 2.1 Các nguyên tắccủa 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 E-Mail Lập trình Socket với UDP SMTP, POP3, IMAP UDP 2.5 DNS 1-2
- Chương 2: Tầng ứng dụng Mục đích: Họcvề các giao thức Các khía cạnh của phổ biếnmức ứng các giao thức ứng dụng dụng mạng HTTP Mô hình dịch vụ tầng FTP giao vận SMTP / POP3 / IMAP Mô hình Client-Server DNS Mô hình peer-to-peer Lậptrìnhcácứng dụng mạng Socket API 1-3
- Mộtsốứng dụng mạng E-mail Điệnthoại qua Internet Web Hội nghị truyềnhình Instant messaging thờigianthực Remote login Tính toán song song Chia sẻ file P2P Trò chơi nhiềungười sử dụng qua mạng 1-4
- Tạomột ứng dụng mạng Viếtchương trình application transport network Chạy trên các end systems data link khác nhau và physical Giao tiếp qua mạng Ví dụ Web: Phầnmềm Web server giao tiếpvớiphần mềmtrìnhduyệt Không có phầnmềmviếtcho các thiếtbị trong Network application Core application transport transport network Các thiếtbị trong Network network data link data link physical Core không thựchiệnchức physical năng tạilớp ứng dụng Thiếtkế này để sự phát triển ứng dụng nhanh 1-5
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-6
- Các kiếntrúcứng dụng Client-Server Peer-to-peer (P2P) Hybrid 1-7
- Kiến trúc Client-server Server: Host ở trạng thái luôn chạy Địachỉ IP cốđịnh Server farm để tăng khả năng phụcvụ Client: Truyền thông vớiserver Có thể không kếtnốiliên tục Có thể có địachỉ IP động Không giao tiếptrựctiếp vớinhau 1-8
- KiếntrúcP2P Server không ở trạng thái luôn chạy Hệ thống cuối tùy ý truyền thông trựctiếp Các Peer kếtnối không liên tục và thay đổi địachỉ IP Ví dụ: Gnutella Khả năng co giãn quy mô cao Khó quảnlý 1-9
- Hybrid Lai giữa P2P và Client-Server Napster 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ửiyêucầu server trung tâm xác định vị trí củanội dung Instant Messaging Giao tiếpgiữa 2 user là P2P Quảnlýtập trung vị trí củauser: •User đăng ký địachỉ IP với server trung tâm khi kếtnối • User thông qua server trung tâm để tìm địachỉ IP của đối tượng cầngiaotiếp 1-10
- Truyền thông củacáctiếntrình Tiếntrình:chương trình Tiến trình client: tiếntrình chạy trong mộthost. khởi đầu quá trình Trong cùng host, 2 tiến truyền thông trình giao tiếpsử dụng Tiến trình server: tiếntrình inter-process đợikếtnối communication (Do OS định nghĩa). Các tiến trình trong các Chú ý: Các ứng dụng host khác nhau giao tiếp P2P có cả tiến trình client bằng cách trao đổicác và tiến trình server message 1-11
- Socket host hoặc host hoặc Tiếntrìnhgửinhận server server messages tới/từ socket củanó Điềukhiểnbởi ngườilậptrình Socket tương tự cửara Tiếntrình ứng dụng Tiếntrình vào socket socket Tiếntrìnhgửi đẩybảntin ra TCP với TCP với ngoài cửa buffer, Internet Buffer, Tiếntrìnhgửidựavàohạ Biến biến tầng giao vận trên phía bên kia củacửa, nó mang message tới socket củatiến Điềukhiển bởiOS trình nhận API: (1) Chọngiaothứcgiaovận; (2) Gán giá trị cho một vài tham số (chi tiếtphầnsau) 1-12
- Các tiếntrìnhđánh địachỉ Đốivớimộttiếntrình Định danh bao gồmcả nhận messages, nó phải địachỉ IP và địachỉ có một định danh cổng gán cho ứng dụng Một host có một địachỉ trên host. IP duy nhất Ví dụ: Giá trị cổng của Câu hỏi: Địachỉ IP của mộtsốứng dụng: host mà tiếntrìnhchạy HTTP server: 80 có đáp ứng đượcviệc Mail server: 25 định danh tiếntrình? Chi tiếthơn trong phần Trả lời: Không, nhiều sau tiếntrìnhcóthể chạy trên cùng host 1-13
- Giao thứclớp ứng dụng Giao thứclớp ứng dụng Các giao thức công khai: định nghĩa Định nghĩa trong các Kiểucủabảntin traođổi, RFC ví dụ bảnyêucầu, bản tin trả lời Cho phép phốihợp Cú pháp củakiểubảntin: hoạt động Các trường trong bảntin Ví dụ: HTTP, SMTP và mô tả các trường Các giao thức không công trong bảntin khai: Ý nghĩacủacáctrường Quy tắccáctiếntrình Ví dụ: KaZaA gửi/nhậnbản tin khi nào và như thế nào 1-14
- Các dịch vụ giao vậnmàứng dụng cần Mấtdữ liệu Băng thông Mộtsốứng dụng (ví dụ: audio) Mộtsốứng dụng (ví dụ: đa có thể chấpnhậnmộttỷ lệ mất phương tiện) yêu cầulượng dữ liệu nào đó băng thông tốithiểu Mộtsốứng dụng khác (ví dụ: Mộtsốứng dụng khác sử Truyền file, telnet) đòi hỏi 100% dụng theo băng thông chúng dữ liệutruyềnlàtin cậy nhận được Thờigian Mộtsốứng dụng (ví dụ: điện thoại Internet, trò chơitương tác) đòi hỏi độ trễ thấp 1-15
- Yêu cầucủa ứng dụng giao vậncủamộtsốứng dụng Ứng dụng Mấtdữ liệu Băng thông Thờigian Truyền file Không cho phép Co giãn Không E-mail Không cho phép Co giãn Không Web Không cho phép Co giãn Không Real-time audio/video Cho phép Audio: 5kbps-1Mbps Có, hàng trăm msec Video:10kbps-5Mbps Stored audio/video Cho phép Tương tự trên Có, vài secs Trò chơitương tác Cho phép Yêu cầu kbps Có, hàng trăm msec Instant messaging Không cho phép Co giãn Có 1-16
- Các dịch vụ các giao thức giao vận Dịch vụ TCP: Dịch vụ UDP: Hướng kếtnối: Đòi hỏi quá Truyềndữ liệu không tin cậygiữatiếntrìnhgửivà trình thiếtlậpgiữatiếntrình tiến trình nhận client và tiến trình server Không cung cấp: việcthiết Truyềntin cậy giữatiếntrình lậpkết, truyềntin cậy, điều gửivàtiến trình nhận khiểnluồng, điềukhiểntắc Điềukhiểnluồng: Bên gửisẽ nghẽn, tính thời gian, đảm không vượtquákhả năng bên bảobăng thông nhận Điềukhiểntắc nghẽn: điều Q: Tạisaocần UDP? chỉnh bên gửikhimạng quá tải Không cung cấp: tính thời gian, đảmbảobăng thông tốithiểu 1-17
- Các ứng dụng Internet: các giao thứctầng ứng dụng và tầng giao vận Giao thức Giao thức Ứng dụng tầng ứng dụng tầng giao vận Thưđiệntử SMTP [RFC 2821] TCP Truy cậptừ xa Telnet [RFC 854] TCP Web HTTP [RFC 2616] TCP Truyền file FTP [RFC 959] TCP Truyền dòng Không công khai TCP hoặc UDP đaphương tiện (vd: RealNetworks) Không công khai Điệnthoại Internet (vd: Dialpad) UDP 1-18
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-19
- Web và HTTP Trang Web chứacácđốitượng Đốitượng có thể là file HTML, ảnh JPEG, Java applet, audio, Trang Web chứa file HTML, chứacácđốitượng tham chiếu Mỗi đốitượng được đánh địachỉ bởimộtURL Ví dụ URL: www.someschool.edu/someDept/pic.gif host name path name 1-20
- HTTP HTTP: hypertext transfer H protocol TT P re qu Giao thứctầng ứng dụng HT es TP t re củaWeb spo nse Mô hình client/server client: Trình duyệtyêu st ue eq cầu, nhậnvàhiệnthị các r se Server TP on đốitượng HT sp chạy re TP Apache Web server: Web server gửi HT server các đốitượng trong trả lời HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 1-21
- HTTP (tiếp) Sử dụng TCP: HTTP là không hướng Client khởi đầukếtnốiTCP (tạo trạng thái socket) tới server, cổng 80 Server không duy trì Server chấpnhậnkếtnốiTCP từ thông tin về các yêu cầu client của client trong quá khứ Các bản tin HTTP (bảntin của giao thứctầng ứng dụng Web) trao đốigiứa trình duyệt(HTTP Các giao thứchướng trạng thái client) và Web server (HTTP phứctạphơngiaothức server) không hướng trạng thái KếtnốiTCP đóng 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 1-22
- KếtnốiHTTP Nonpersistent HTTP Persistent HTTP Một đốitượng đượcgửi Nhiều đốitượng có thể qua mộtkếtnốiTCP gửi qua mộtkếtnối HTTP/1.0 sử dụng TCP giữaclient và nonpersistent HTTP server HTTP/1.1 mặc định sử dụng persistent HTTP 1-23
- Nonpersistent HTTP (chứa text, Giả sử ngườisử dụng nhập vào URL tham chiếutới 10 www.someSchool.edu/someDepartment/home.index ảnh jpeg) 1a. HTTP client khởi đầukếtnối TCP tới HTTP server (tiến trình) 1b. HTTP server tại host tại www.someSchool.edu, cổng www.someSchool.edu đợikết 80 nốiTCP tạicổng 80. Chấpnhậnkếtnối, thông báo cho client 2. HTTP client gửibảntin yêucầu HTTP (chứa URL) vào socket củakếtnốiTCP. Bảntin chỉ 3. HTTP server nhậnbản tin yêu rằng client muốnlấy đốitượng cầu, xây dựng bảntin trả lời someDepartment/home.index chứa đốitượng đãyêucầuvà gửibản tin vào trong socket của nó Thờigian 1-24
- Nonpersistent HTTP (cont.) 4. HTTP server đóng kếtnốiTCP 5. HTTP client nhậntrả lờichứafile html, hiệnthị nội dung. Phân tích html, tìm 10 đốitượng ảnh jpeg được tham chiếu time 6. Lặpbước1-5 chomỗi đốitượng ảnh jpeg 1-25
- Mô hình thờigiantrả lời RTT: thờigianđể gửimột gói tin từ client tớiserver và trở lại Thờigiantrả lời: Khởi đầu kếtnốiTCP 1 RTT để khởitạokếtnối RTT TCP file yêu cầu transmit time 1 RTT cho yêu cầu HTTP RTT và nhậnbyte đầutiêncủa trả lời HTTP file đãnhận Thờigiantruyền file total = 2RTT+transmit time thờigian thờigian 1-26
- Persistent HTTP Nonpersistent HTTP: Yêu cầu2 RTT cho1 đối tượng Hệđiều hành phảicấp phát tài nguyên cho mỗikếtnối TCP Trình duyệtphảimở song song nhiềukếtnốiTCP để lấy đốitượng tham chiếu Persistent HTTP Server tạmdừng kếtnốisau khi gửitrả lời Các bản tin HTTP sau đó giữa cùng client/server được gửiqua kếtnối 1-27
- Bảntin yêucầu HTTP Hai kiểubảntin HTTP: yêucầu, trả lời Bảntin yêucầu HTTP: ASCII Request line (lệnh GET, POST, GET /somedir/page.html HTTP/1.1 HEAD ) Host: www.someschool.edu User-agent: Mozilla/4.0 header Connection: close line Accept-language:fr (CR, LF) 1-28
- Bảntin yêucầu HTTP 1-29
- Kiểu Method HTTP/1.0 HTTP/1.1 GET GET, POST, HEAD POST PUT HEAD đưa file trong phần body lên đường dẫnchỉ trong Hỏiserver bỏđốitượng URL đãyêucầurakhỏitrả lời DELETE xóa file trong trường URL 1-30
- Bản tin trả lời HTTP status line (protocol status code HTTP/1.1 200 OK status phrase) Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) header Last-Modified: Mon, 22 Jun 1998 line Content-Length: 6821 Content-Type: text/html dữ liệu, ví dụ: dữ liệu file HTML đã yêu cầu 1-31
- Mã trạng thái củatrả lời HTTP Trong dòng đầutiêncủatrả lời server->client Ví dụ: 200 OK Yêu cầuthựchiện thành công, đốitượng trong bảntin 301 Moved Permanently Đốitượng yêu cầu đã di chuyểnvị trí, ví trí mới đượcchỉ ra trong bản tin (Location:) 400 Bad Request Server không hiểubảntin yêucầu 404 Not Found Không tìm thấy đốitượng yêu cầu 505 HTTP Version Not Supported 1-32
- Thựchành 1. Telnet tớimột Web server: telnet cis.poly.edu 80 Mở kếtnốiTCP tớicổng 80 tại cis.poly.edu. Nội dung gõ đượcgửitớicổ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ờigửibởiHTTP server 1-33
- Web cache (proxy server) Mục đích: thựchiệnyêucầucủa client không phảiyêucầu tới server ban đầu Người dùng thiếtlập server ban đầu qua trình duyệt Proxy HT t Trình duyệtgửimọi TP s re server eque H qu P r e yêu cầu HTTP qua client TT est TT ns P r H spo es re pons TP Cache e HT t es Đốitượng trong cache: qu re se TP on sẽđượctrả về HT sp re TP Nếu không: Yêu cầu HT được chuyểntới client server ban đầu server ban đầu 1-34
- Web cache Cache hoạt động như Lợi ích của Web cache cả client và server Giảmthờigiantrả lời Thông thường, được Giảmlưulượng trên đường cài đặtbởiISP truyềntruycập 1-35
- Web cache Cache hoạt động như Tại sao dùng Web cache? cả client và server Giảmthờigiantrả lờicho Thông thường cache yêu cầucủaclient. đượccàiđặtbởiISP Giảmlưulượng trên đường truy cậpcủatổ chức. (trường đạihọc, công ty, nhà cung cấpdịch vụ cho gia đình) 1-36
- Ví dụ caching Các server Giả sử ban đầu Kích thướccủa đốitượng trung bình = 100,000 bits public Internet Tốc độ yêu cầu trung bình từ trình duyệtcủatới server ban đầu = 15 giây Trễ từ router củatổ chứctớiserver Đường truyềntruycập ban đầuvàtrở lại = 2 giây 1.5 Mbps Kếtquả Mạng của tổ chức Sự sử dụng trong LAN = 15% 10 Mbps LAN Sự sử dụng trong đường truyền truy cập = 100% Total delay = Internet delay + access delay + LAN delay Institutional Cache = 2 giây + phút + millisecond 1-37
- Ví dụ caching (tiếp) Server Giải pháp có thể ban đầu Tăng băng thông của đường truyền truy cập: 10 Mbps public Internet Kếtquả Sự sử dụng LAN = 15% Sử dụng đường truyềntruycập= 15% Đường truyền truy cập10 Mbps Total delay = Internet delay + access delay + LAN delay Mạng của tổ chức = 2 sec + msecs + msecs 10 Mbps LAN institutional cache 1-38
- Ví dụ caching (tiếp) Server Cài đặt cache ban đầu Hỗ trợ hit rate .4 public Kếtquả Internet 40% yêu cầusẽđáp ứng gần như ngay lậptức 60% yêu cầu đáp ứng bởi server ban đầu Đường truyền truy cập1.5 Mbps Sự sử dụng đường truyền truy cậpgiảmtới 60%, kết Mạng của tổ chức quảđộtrễ không đáng kể (10 10 Mbps LAN msec) total avg delay = Internet delay + access delay + LAN delay = .6*(2.01) secs + milliseconds < 1.4 secs institutional cache 1-39
- GET có điềukiện Mục đích: không gửi đối Cache Server tượng nếu cache có phiên Bảntin yêucầu HTTP bảncậpnhật If-modified-since: Cache: chỉđịnh ngày của Đốitượng bản sao chép trong cache không bị trong yêu cầu HTTP Bản tin trả lời HTTP thay đổi If-modified-since: HTTP/1.0 Server: Trả lời không chứa 304 Not Modified đốitượng nếubảnsao chép trong cache cậpnhật: Bảntin yêucầu HTTP HTTP/1.0 304 Not Modified If-modified-since: Đốitượng đã thay đổi Bản tin trả lời HTTP HTTP/1.0 200 OK 1-40
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-41
- FTP: File Transfer Protocol Truyền file Giao diện FTP FTP ngườisử client server dụng FTP user tại host Hệ thống Hệ thống file file cụcbộ từởxa Truyền file tới/từ host ở xa Mô hình client/server client: Phía khởi đầuviệctruyền(tớihoặctừ host ở xa) server: host ở xa ftp: RFC 959 ftp server: port 21 1-42
- FTP: Kếtnốidữ liệuvàđiềukhiển riêng biệt Kếtnối điềukhiểnTCP FTP client liên lạcvới FTP cổng 21 server tạicổng 21, chỉđịnh dùng TCP làm giao thứcgiao Kếtnốidữ liệuTCP vận FTP cổng 20 FTP Client giành ủy quyền qua kết client server nối điềukhiển Server mở mộtkếtnốidữ liệu Client xem thư mụctừ xa bằng cách gửilệnh qua kếtnối điều TCP thứ hai để truyềnmột file khiển khác. Kếtnối điềukhiển: truyền theo Khi server nhậnmộtlệnh truyền file, server mở mộtkết đường riêng nốidữ liệuTCP tới client FTP server duy trì trạng thái: thư mụchiệntại, ủy quyền Sau khi truyền file, server đóng kếtnối. trước đó 1-43
- Lệnh và trả lờicủaFTP Ví dụ mộtsố lệnh: Ví dụ mộtsố mã trả về GửivănbảnmãASCII Status code và status qua kênh điềukhiển phrase (như HTTP) USER username 331 Username OK, PASS password đòi hỏimậtkhẩu LIST trả về một danh 125 kếtnốidữ sách các file trong thưc liệu đãmở; bắt mụchiệntại đầu truyền RETR filename lấy 425 Không thể mở file kếtnốidữ liệu STOR filename đưa 452 Lỗi ghi file file lên remote host 1-44
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-45
- Hàng đợi Electronic Mail bảntin gửi đi User mailbox user Ba thành phầnchính: agent User agent mail user server Mail server agent Simple mail transfer protocol: SMTP mail SMTP server user SMTP agent User Agent Còn gọi là Mail Reader SMTP user Soạn, sửa, đọcbảntin mail mail server agent Ví dụ: Eudora, Outlook, Netscape Messenger user agent Các bảntin gửitớivàgửi đi user đãchứatrênserver agent 1-46
- Electronic Mail: Mail server user Mail Server agent mailbox chứacácbảntin mail user server thưđiệntử gửi đếncho agent ngườisử dụng SMTP mail message queue củacác server user bản tin thưđiệntử gửi đi SMTP agent SMTP protocol giữacác mail server để gửicác SMTP mail user bản tin thưđiệntử server agent client: mail server gửi user “server”: mail server agent nhận user agent 1-47
- Electronic Mail: SMTP [RFC 2821] Sử dụng TCP để truyềntin cậycácbảntin thưđiệntử từ client tớiserver, cổng 25 Gửitrựctiếp: server gửitới server nhận Ba pha củaviệctruyền Bắttay Truyềncácbảntin Kếtthúc Sự tương tác Lệnh/Trả lời Lệnh: vănbản mã ASCII Trả lời: status code và status phrase Các bảntin phải dùng mã ASCII 7-bit 1-48
- Kịch bản: Alice gửibảntin choBob 1) Alice dùng UA để soạnbản 4) SMTP client gửibảntin của tin và gửicho Alice qua kếtnốiTCP bob@someschool.edu 5) Mail server của Bob chuyển 2) UA của Alice gửibảntin tới bảntin vàomailbox củaBob mail server củacôta; bảntin 6) Bob chạy user agent để đọc đặt trong message queue bảntin 3) Phía client của SMTP mở kết nốiTCP vớimail server của Bob 1 mail mail user user server server agent agent 2 3 6 4 5 1-49
- 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 1-50
- SMTP: Mộtsố thông tin khác SMTP sử dụng persistent So sánh với HTTP: connections HTTP: pull SMTP yêu cầubảntin (header & body) dùng mã SMTP: push ASCII 7-bit Cả hai có tương tác SMTP server sử dụng Lệnh/Trả lờidạng mã ASCII, CRLF.CRLF để xác định kết status code thúc bảntin HTTP: mỗi đốitượng được đóng gói trong chính bảntin trả lời SMTP: nhiều đốitượng đượcgửi trong bảntin có nhiềuphần 1-51
- Định dạng bảntin SMTP: giao thức để trao đổi các bảntin thưđiệntử header dòng RFC 822: chuẩn định dạng bản trống tin dạng vănbản Header lines, ví dụ To: body From: Subject: khác Lệnh SMTP body bản tin, ký tự ASCII 1-52
- Định dạng bản tin: Các mở rộng đaphương tiện MIME: Multimedia Mail Extension, RFC 2045, 2046 Thêm các dòng trong header củabản tin khai báo kiểunội dung MIME From: alice@crepes.fr MIME version To: bob@hamburger.edu Subject: Picture of yummy crepe. method sử dụng MIME-Version: 1.0 để mã hóa dữ liệu Content-Transfer-Encoding: base64 Content-Type: image/jpeg kiểudữ liệu đaphương tiện, dữ liệumãhóakiểu base64 kiểu con, khai báo tham số dữ liệu mã hóa kiểu base64 dữ liệu đã mã hóa 1-53
- Thựchànhtương tác SMTP telnet servername 25 Xem trả lời220 từ server Gõ vào các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT để gửithưđiệntử không sử dụng email client (reader) 1-54
- Các giao thứctruycậpthưđiệntử SMTP SMTP giao thức user user agent agent truy cập mail server mail server của bên gửi của bên nhận SMTP: chuyển/lưutrữ thư tớiserver của bên nhận Giao thứctruycậpthư: lấythư từ server POP: Post Office Protocol [RFC 1939] • Ủyquyền (agent server) và tảithư IMAP: Internet Mail Access Protocol [RFC 1730] •Nhiềutínhnăng hơn(phứctạphơn) • Thao tác trên các bảntin lưutrênserver HTTP: Hotmail , Yahoo! Mail, 1-55
- Giao thứcPOP3 S: +OK POP3 server ready C: user bob Pha ủy quyền S: +OK C: pass hungry Lệnh của client: S: +OK ngườisử dụng user: khai báo tên người đăng nhập thành công C: list dùng S: 1 498 pass: mậtkhẩu S: 2 912 Trả lờicủaserver S: . C: retr 1 +OK S: -ERR S: . Pha giao dịch, client: C: dele 1 C: retr 2 list: liệtkêcácsố bảntin S: retr: lấybảntin dựavàosố S: . C: dele 2 dele: xóa C: quit quit S: +OK POP3 server chấmdứt phiên làm việc 1-56
- POP3 và IMAP Thông tin thêm về POP3 IMAP Ví dụ trướcsử dụng Giữ tấtcả các bảntin chếđộ“tảivàxóa” tạimộtchỗ: server Bob không thểđọclại Cho phép ngườisử các thưđiệntử nếu bob dụng tổ chứccácbản chuyển sang client khác tin vào các thư mục Chếđộ“Tảivàgiữ”sao IMAP giữ trạng thái chép các bản tin trên ngườisử dụng qua các các client khác nhau phiên: POP3 không lưutrạng Tên củacácthư mụcvà thái giữa các phiên ánh xạ giữacácđịnh danh củabản tin và tên thư mục 1-57
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-58
- DNS: Domain Name System Con người: có nhiều định danh: Hệ thống tên miền(DNS): CMT, tên, hộ chiếu Cơ sở dữ liệu phân tán được Host, router trên Internet: thựchiện phân cấpbởinhiều Địachỉ IP (32 bít) để đánh name server địachỉ các đơnvị dữ liệu Giao thứctầng ứng dụng để gửi đi host, router, name server giao Tên, ví dụ: www.yahoo.com tiếpdịch giữa địachỉ và tên sử dụng bởi con người Chú ý: Chứcnăng cơ bản Câu hỏi: Ánh xạ giữa địachỉ IP của Internet, thựchiệnbởi và tên ? giao thức ứng dụng Sự phứctạptại network edge 1-59
- DNS Các dịch vụ DNS Tại sao không dùng DNS tập chung ? Dịch tên host sang địa chỉ IP Một điểmlỗi Bí danh cho Host Khốilượng lưulượng Canonical name và alias Cơ sở dữ liệutập chung names xa Bí danh cho Mail server Bảotrì Phân tải Web server: Mộttậpcác Không co giãn! địachỉ IP cho một canonical name 1-60
- 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 umass.edu yahoo.com pbs.org amazon.com DNS serversDNS servers DNS servers DNS servers DNS servers Client muốnbiết địachỉ IP củawww.amazon.com: 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 www.amazon.com 1-61
- DNS: Root name server Local name server không trả lời được thì nó sẽ liên lạcvới Root name server Root name server: Liên lạcvới authoritative name server nếu nó không biết ánh xạ tên Lấyánhxạ Trả ánh xạ về cho local name server a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD g US DoD Vienna, VA k RIPE London (also Amsterdam, Frankfurt) 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 root name server trên toàn thế giới b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA 1-62
- TLD và Authoritative Server Top-level domain (TLD) server: có vai trò đối với com, org, net, edu, và tấtcả các miền quốcgiamức trên cùng uk, fr, ca, jp, Authoritative DNS server: DNS server củacác tổ chức cung cấp ánh xạ authoritative hostname thành địachỉ IP cho server củatổ chức(vídụ Web và Email). Có thể duy trì bởitổ chứchoặc nhà cung cấpdịch vụ 1-63
- 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ạotruyvấnDNS, truyvấn được gửitới Local DNS server củanó Hoạt động như một proxy, chuyểntiếp query vào trong phân cấp. 1-64
- Ví dụ Root DNS server 2 Host tại cis.poly.edu 3 TLD DNS server muốnbiết địachỉ IP 4 của 5 gaia.cs.umass.edu Local DNS server dns.poly.edu 7 6 1 8 authoritative DNS server dns.cs.umass.edu host gửiyêucầu cis.poly.edu gaia.cs.umass.edu 1-65
- Truy vấn đệ quy root DNS server Truy vấn đệ quy: 2 3 Giao toàn bộ việctìm tên cho name server 7 6 liên lạc TLD DNS server Tảilớn? Truy vấnlặp: local DNS server dns.poly.edu 5 4 Server liên lạctrả về tên củaserver cầnliên 1 8 lạctiếp “Tôi không biếtnhưng authoritative DNS server anh muốnbiếtthìđi dns.cs.umass.edu requesting host hỏi server này” cis.poly.edu gaia.cs.umass.edu 1-66
- DNS: lưugiữ tạmvàcậpnhậtbảnghi Name server nào đóhọc các ánh xạ, server sẽ lưugiữ tạm các ánh xạđó Các khe lưutrữ tạm quá hạn(biếnmất) sau mộtkhoảng thờigian Các TLD server thông thường lưutrữ tạm trong các local name servers •Vìthế, root name server không phảihỏithường xuyên Cơ chế cậpnhật/thông báo định nghĩabởiIETF RFC 2136 1-67
- BảnghiDNS DNS: Cơ sở dữ liệu phân tán chứacácbản ghi tài nguyên (Resource record - RR) Định dạng RR: (name, value, type, ttl) Type=A Type=CNAME name là hostname name là tên bí danh cho mộtsố value là địachỉ IP tên thật (cannonical name) www.ibm.com thậtralà Type=NS servereast.backup2.ibm.com name là domain (ví dụ value là tên thật foo.com) Type=MX value là địachỉ của authoritative name server value là tên thậtcủamail cho domain đó server liên kếtvới name (bí danh của hostname) (foo.com, mail.bar.foo.com, 1-68 MX)
- Giao thứcDNS, bảntin Giao thức DNS: Bảntin truy vấn và trả lời có chung một định dạng bảntin Header củabảntin identification: 16 bit, định cho truy vấn, trả lờisử 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ờilàủy quyền 1-69
- Giao thứcDNS, bảntin Các trường Name, type cho mộtTruyvấ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 1-70
- 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ấpgiải pháp mạng) Cần cung cấp cho registrar tên và địachỉ IP của authoritative name server củamạ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, 212.212.212.1, A) Thêm vào authoritative server bản ghi kiểu A cho www.networkuptopia.com và bản ghi kiểuMX cho networkutopia.com Người khác xác định địachỉ IP của Web site này như thế nào? 1-71
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-72
- Chia sẻ file P2P Alice chọnmột peer, Ví dụ Bob Alice chạy ứng dụng File được sao chép từ P2P client máy củaBob tớimáy của Alice: HTTP Kếtnốitới Internet và nhậnmột địachỉ IP mới Trong khi Alice đang tải, ngườisử dụng khác lấy Tìm “Hey Jude” dữ liệu đãcótrênmáy Ứng dụng các peer Alice khác có bản sao chép Peer của Alice vừalà của Hey Jude không. Web client vừalàWeb server. Mọi peer là server = quy mô lớn! 1-73
- P2P: thư mục trung tâm Bob Thiếtkế của “Napster” ban Server thư mục đầu trung tâm 1 1) Khi peer kếtnối, nó thông peers báo server trung tâm: 1 Địachỉ IP 1 3 Nộidung 2) Alice yêu cầu “Hey Jude” 2 1 3) Alice yêu cầu file từ Bob Alice 1-74
- P2P: Vấn đề củathư mụctrungtâm Một điểmchịulỗi Truyền file là không Hiệunăng tập trung, Xâm phạmbảnquyền xác định vị trí nội dung là không tập chung 1-75
- Phát tán các query: Gnutella Hoàn toàn phân tán Mạng bao phủ: đồ thị Không có server trung Cạnh giữa peer X và Y: tâm nếucómộtkếtnốiTCP Giao thức công khai Tấtcả peer hoạt động Nhiều Gnutella clients và các cạnh là mạng cài đặtgiaothức bao phủ Các cạnh không là đường truyềnvậtlý Peer thường kếtnốivới < 10 hàng xóm 1-76
- Gnutella: Giao thức Truyền file: Query gửiqua kếtnốiTCP đãcó HTTP Các peers chuyểntiếp bản tin Query QueryHit gửi theo Query đường ngượclại QueryHit ry Q ue ue it ry Q H ry ue Q QueryHit Query Q Ổn định: ue ry giớihạnphạm vi phát tán 1-77
- Gnutella: Peer gia nhập 1. Peer gia nhậpX phải tìm mộtsố peer khác trong mạng Gnutella: sử dụng danh sách các peer ứng viên 2. X cố gắng tạokếtnốiTCP với peer khác trong danh sách tớikhithiếtlập đượckếtnốivớiY 3. X gửibảntin Ping tớiY; Y chuyểntiếpbản tin Ping . 4. Mọi peer nhận đượcbảntin Ping sẽ trả lờibằng bản tin Pong 5. X nhận nhiềubản tin Pong. Nó có thể thiếtlậpthêm các kếtnốiTCP 1-78
- Lai: KaZaA Mỗi peer là đứng đầu củamột nhóm hoặclà con củamột nhóm. KếtnốiTCP giữa peer và các đứng đầucủa nhóm. KếtnốiTCP giữacáccặp đứng đầunhóm. Đứng đầu nhóm theo dõi nội dung củatấtcả các con của nó. ordinary peer group-leader peer neighoring relationships in overlay network 1-79
- KaZaA: Truy vấn Mỗi file có một hash và mộtmôtả Client gửitừ khóa tới đứng đầu nhóm Đứng đầu nhóm trả lờicáckếtquả: Mỗikếtquả: metadata, hash, địachỉ IP Nếu đứng đầu nhóm chuyểntiếptruyvấntới đứng đầu nhóm khác, đứng đầu nhóm khác trả lời Sau đó, client chọn file để tảixuống Yêu cầu HTTP sử dụng hash làm định danh để gửitới peer giữ file đó 1-80
- Kazaa Hạnchế số upload đồng thời Xếp hàng yêu cầu Ưutiên Download song song 1-81
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-82
- Lập trình Socket với TCP Client phảiliênlạcvới server • Khi nhận đượcsự liên lạccủa •Tiến trình server phải đang chạy client, server TCP tạomột socket • Server phảitạo socket (cửa) để client mới cho tiến trình server để giao liên lạc tiếpvới client – Cho phép server nói chuyện Client liên lạcvới server bằng cách: vớinhiều client •Tạo client-local TCP socket –Giátrị source port dùng để •Gánđịachỉ IP, cổng củatiếntrình phân biệt các client (chi tiết server hơn trong chương 3) •Khiclient tạo socket: client TCP giành kếtnốitớiserver TCP Góc nhìn ứng dụng TCP cung cấpdịch vụ truyền tin cậy các byte giữa client và server 1-83
- Ví dụ: C client (TCP) /* client.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấutrúcchứa1 địachỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tớimột entry trong host table */ char Sentence[128]; Tạo client socket, char modifiedSentence[128]; Kếtnốitớiserver 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ếtlập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địachỉ IP */ memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); connect(clientSocket, (struct sockaddr *)&sad, sizeof(sad)); 1-84
- Ví dụ: C client (TCP) (tiếp) Đọc input stream gets(Sentence); từ user Gửitới server n=write(clientSocket, Sentence, strlen(Sentence)+1); n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence Đọctừ server printf(“TỪ SERVER: %s\n”, modifiedSentence); Đóng close(clientSocket); kếtnối } 1-85
- Ví dụ: C server (TCP) /* server.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấutrúcchứamột địachỉ IP */ struct sockaddr_in cad; int welcomeSocket, connectionSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tớimột entry trong host table */ char clientSentence[128]; Tạomột socket chờ tạimộtcổng char capitalizedSentence[128]; & Gắnvớimột địachỉ cụcbộ 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ếtlập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiếtlập địachỉ IP address */ sad.sin_port = htons((u_short)port);/* thiếtlậpgiátrị cổng */ bind(welcomeSocket, (struct sockaddr *)&sad, sizeof(sad)); 1-86
- Ví dụ: C server (TCP) (tiếp) /* Chỉđịnh số client lớnnhất đượcxếphàng*/ listen(welcomeSocket, 10) Đợi client liên lạc while(1) { connectionSocket=accept(welcomeSocket, (struct sockaddr *)&cad, &alen); n=read(connectionSocket, clientSentence, sizeof(clientSentence)); /* Chuyển clientSentence thành chữ hoa, chứakếtquả trong capitalizedSentence*/ n=write(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1); close(connectionSocket); } Đưakếtquả ra socket } Kết thúc vòng lặpWhile, Quay trở lạivàđợimộtkếtnối client khác 1-87
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-88
- Lập trình Socket với UDP UDP: Không kếtnốigiữa client và server • Không bắttay •Bêngửichỉ ra địachỉ IP và cổng của bên nhậnchomỗi gói Góc nhìn ứng dụng tin UDP cung cấp • Server phải tìm địachỉ IP, cổng dịch vụ truyền không tin cậy củabêngửi trong gói tin đã một nhóm các byte (“datagrams”) nhận giữa client và server UDP: dữ liệu đãtruyềncóthể nhận không theo thứ tự hoặcbị mất 1-89
- Tương tác giữa client socket và server socket: UDP Server (đang chạytrênhostid) Client Tạosocket, Tạosocket, Cổng=x, đốivới clientSocket = gói tin đến: DatagramSocket() serverSocket = DatagramSocket() Tạo, địachỉ (hostid, port=x, Gửiyêucầu datagram sử dụng clientSocket Đọcyêucầutừ serverSocket Ghi trả lờira serverSocket Đọctrả lờitừ chỉđịnh địachỉ host của client clientSocket và giá trị cổng Đóng clientSocket 1-90
- Ví dụ: C client (UDP) /* client.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấutrúcchứamột địachỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tớimột entry trong host table */ char Sentence[128]; char modifiedSentence[128]; Tạo client socket, Không kếtnốitớiserver host = argv[1]; port = atoi(argv[2]); clientSocket = socket(PF_INET, SOCK_DGRAM, 0); /* xác định địachỉ củaserver */ memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiếtlập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địachỉ IP */ memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); 1-91
- Ví dụ: C client (UDP) (tiếp) Đọc input stream gets(Sentence); từ user Gửi addr_len =sizeof(struct sockaddr); tớiserver n=sendto(clientSocket, Sentence, strlen(Sentence)+1, (struct sockaddr *) &sad, addr_len); n=recvfrom(clientSocket, modifiedSentence, sizeof(modifiedSentence). Đọc (struct sockaddr *) &sad, &addr_len); từ server printf(“TỪ SERVER: %s\n”,modifiedSentence); Đóng close(clientSocket); kếtnối } 1-92
- Ví dụ: C server (UDP) /* server.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấutrúcchứamột địachỉ IP */ struct sockaddr_in cad; int serverSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tớimột entry trong host table */ char clientSentence[128]; Tạo socket chờởcổng char capitalizedSentence[128]; & Gắnvớimột địachỉ cụcbộ 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ếtlập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiếtlập địachỉ IP cụcbộ */ sad.sin_port = htons((u_short)port);/* thiếtlậpgiátrị cổng */ bind(serverSocket, (struct sockaddr *)&sad, sizeof(sad)); 1-93
- Ví dụ: C server (UDP) (tiếp) while(1) { Nhậnbảntin từ các client n=recvfrom(serverSocket, clientSentence, sizeof(clientSentence), 0 (struct sockaddr *) &cad, &addr_len ); /* chuyển clientSentence thành chữ hoa, chứakếtquả trong capitalizedSentence*/ n=sendto(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1,0 (struct sockaddr *) &cad, &addr_len); close(connectionSocket); } Ghi kếtquả ra socket } Kết thúc vòng lặpWhile, quay trở lạivàđợikếtnối client khác 1-94
- Chương 2: Tầng ứng dụng 2.1 Nguyên tắccủacác 2.6 Chia sẻ file P2P ứng dụng mạng 2.7 Lập trình Socket với 2.2 Web và HTTP TCP 2.3 FTP 2.8 Lập trình Socket với 2.4 Electronic Mail UDP SMTP, POP3, IMAP 2.9 Xây dựng Web Server 2.5 DNS 1-95
- Xây dựng một Web server đơngiản Điềukhiểnmộtyêucầu Sau khi tạoserver, có HTTP thể yêu cầufile sử dụng Chấpnhậnyêucầu mộttrìnhduyệt (ví dụ IE explorer) Phân tích header Giành file đãyêucầutừ hệ thống file của server Tạobản tin trả lờiHTTP: header lines + file Gửitrả lờichoclient 1-96
- Chương 2: Tổng kết Nội dung đãhọc: Ứng dụng mạng Các kiếntrúcứng dụng Các giao thứccụ thể: Client-Server HTTP P2P FTP Hybrid SMTP, POP, IMAP DNS Các yêu cầu ứng dụng: Tính tin cậy, băng thông, độ Lập trình socket trễ Mô hình dịch vụ giao vận của Internet Tin cậy, hướng kếtnối Không tin cậy, datagrams: UDP 1-97
- Chương 2: Tổng kết Quan trọng: đãhọcvề các giao thức Trao đổibản tin yêu Bảntin dữ liệuvàbảntin điều cầu/bản tin trả lời: khiển in-band, out-of-band Client yêu cầu thông tin hoặcdịch vụ Tập chung (centralized) và không tập chung Server gửidữ liệutrả lời, (decentralized) mã trạng thái Không hướng trạng thái Định dạng bảntin: (stateless) và hướng trạng Header: Các trường thái (stateful) mang thông tin về Data Truyềnbảntin kiểutin cậy Data: thông tin truyền (reliable) và không tin cậy thông (unreliable) Sự phứctạptại network edge 1-98