Bài giảng Mạng máy tính - Chương 2: Tầng Application - Nguyễn Duy
Một số ứng dụng mạng
v E-mail
v Web
v Remote access
v Chia sẽ file P2P
v Trò chơi nhiều người
trên mạng
v Stre am ing s to re d
video (YouTube, Hulu,
Netflix)
v Thoại trên nền IP (e.g.,
Skype)
v Hội thảo video thời
gian thực
v Mạng xã hội
v Mạng tìm kiếm
v
v
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 Application - Nguyễn Duy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Mạng máy tính - Chương 2: Tầng Application - Nguyễn Duy
Tầng Application 2-1 Chương 2 Tầng Application Computer Networking: A Top Down Approach 6th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 A note on the use of these ppt slides: We’re making these slides freely available to all (faculty, students, readers). They’re in PowerPoint form so you see the animations; and can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: v If you use these slides (e.g., in a class) that you mention their source (after all, we’d like people to use our book!) v If you post any slides on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR All material copyright 1996-2012 J.F Kurose and K.W. Ross, All Rights Reserved Tầng Application 2-2 Chương 2: Nội dung 2.1 Các nguyên lý của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 E-Mail § SMTP, POP3,IMAP 2.5 DNS 2.6 Các ứng dụng P2P 2.7 Lập trình socket với UDP và TCP Tầng Application 2-3 Chương 2: tầng application Mục tiêu: v Khái niệm và các khía cạnh thực hiện của các giao thức ở ứng dụng mạng § Mô hình client- server § Mô hình peer-to- peer v Tìm hiểu các giao thức phổ biến của tầng application § HTTP § FTP § SMTP / POP3 / IMAP § DNS v Lập trình ứng dụng mạng § socket API Tầng Application 2-4 Một số ứng dụng mạng v E-mail v Web v Remote access v Chia sẽ file P2P v Trò chơi nhiều người trên mạng v Stream ing s tored video (YouTube, Hulu, Netflix) v Thoại trên nền IP (e.g., Skype) v Hội thảo video thời gian thực v Mạng xã hội v Mạng tìm kiếm v v Tầng Application 2-5 Tạo một ứng dụng mạng Viết chương trình để: v Chạy trên các hệ thống đầu cuối khác nhau v Truyền thông qua mạng v Ví du: phần mềm web server giao tiếp với trình duyệt Không cần viết phần mềm cho các thiết bị mạng lõi v Các thiết bị mạng lõi không chạy các ứng dụng của người dùng v Các ứng dụng trên các hệ thống đầu cuối cho phép quảng bá và phát triển ứng dụng nhanh chóng application transport network data link physical application transport network data link physical application transport network data link physical Tầng Application 2-6 Các kiến trúc ứng dụng Cấu trúc có thể của các ứng dụng: v Client-Server v peer-to-peer (P2P) (Mạng ngang hàng) v Lai giữa Client-Server và P2P Tầng Application 2-7 Kiến trúc Client-server server: v Luôn luôn hoạt động v Địa chỉ IP cố định v Trung tâm phục vụ và lưu trữ dữ liệu clients: v Giao tiếp với server v Có thể kết nối không liên tục v Có thể dùng địa chỉ IP động v Không giao tiếp trực tiếp với các client khác client/server Tầng Application 2-8 Kiến trúc P2P (ngang hàng) v Không có server v Các hệ thống đầu cuối bất kỳ truyền thông trực tiếp với nhau v Các peer yêu cầu dịch vụ từ các peer khác và cung cấp dịch vụ ngược lại cho các peer khác § Có khả năng tự mở rộng – các peer mới mang lại năng lực dịch vụ mới, cũng như các nhu cầu về dịch vụ mới v Các peer được kết nối không liên tục và có thể thay đổi địa chỉ IP § Quản lý phức tạp peer-peer Tầng Application 2-9 Các tiến trình liên lạc Tiến trình (process): chương trình chạy trong một host. v Trong cùng một host, hai tiến trình giao tiếp với nhau bằng cách sử dụng truyền thông liên t iế n t r ì n h ( i n t e r - process communication) được định nghĩa bởi hệ điều hành. v Các tiến trình trong các host khác nhau truyền thông với nhau bởi trao đổ i các thông đ iệp (message) Tiến trình client: tiến t r ì n h k h ở i t ạ o truyền thông Tiến trình server: tiến trình chờ đợi để được liên lạc v Chú ý: các ứng dụng với kiến trúc P2P có cả các tiến trình client và server clients, servers Tầng Application 2-10 Sockets v Tiến trình gửi/nhận thông điệp đến/ từ socket của nó v Socket tương tự như cổng ra vào § Tiến trình gởi đẩy thông điệp ra khỏi cửa § Tiến trình gởi dựa trên cổng của hạ tầng truyền thông bên kia để phân phối thông điệp đến socket tại tiến trình nhận Internet Được điều khiển bởi hệ điều hành Được kiểm soát Bởi nhà phát triển ứng dụng transport application physical link network process transport application physical link network process socket Tầng Application 2-11 Tiến trình định địa chỉ v Để nhận thông điệp, tiến trình phải có định danh v Thiết bị host device có địa chỉ IP 32-bit duy nhất v Q: dựa vào địa chỉ IP của host mà tiến trình đang chạy trên đó thì có đủ để xác định tiến trình đó hay không? v Đinh danh (identifier) bao gồm cả địa chỉ IP và số cổng (port numbers) được liên kết với tiến trình trên host. v Ví dụ về số port: § HTTP server: 80 § mail server: 25 v Để gởi thông điệp HTTP đ ế n w e b s e r v e r gaia.cs.umass.edu : § IP address: 128.119.245.12 § port number: 80 v Còn nữa § A: không, có nhiều tiến trình có thể đang được chạy trên cùng một host Tầng Application 2-12 Định nghĩa giao thức tầng Application v Các loại thông điệp được trao đổi § e.g., yêu cầu (request), đáp ứng (response) v Cú pháp thông điệp: § Các trường trong thông điệp và cách mà các trường được định nghĩa v Ngữ nghĩa của thông điệp § Ý nghĩa của thông tin trong các trường v Các quy tắc (rules) khi nào và cách nào mà các tiến trình gởi và đáp ứng các thông điệp Các giao thức mở: v Được định nghĩa trong RFCs v Cho phép khả năng tương tác v e.g., HTTP, SMTP Các giao thức độc quyền: v e.g., Skype Tầng Application 2-13 Dịch vụ vận chuyển nào mà ứng dụng cần? Khả năng mất mát dữ liệu (data loss) v Một số ứng dụng (ví dụ t r u y ề n f i l e , w e b transactions) yêu cầu độ tin cậy 100% khi truyền dữ liệu. v Các ứng dụng khác (ví dụ audio) có thể chịu được một số mất mát. Thời gian (timing) v Một số ứng dụng (ví dụ, thoại Internet, game tương tác) yêu cầu độ trễ thấp để đạt được “hiệu quả” Thông lượng (throughput) v Một số ứng dụng (như là, đa phương tiện) yêu cầu số lượng thông lượng tối thiếu để đạt được “hiệu quả” v Các ứng dụng khác (“ứng dụng mềm dẻo”) có thể dùng bất kỳ thông lượng nào cũng được An ninh v Mã hóa, toàn vẹn dữ liệu, Tầng Application 2-14 Các yêu cầu dịch vụ vận chuyển: các ứng dụng phổ biến ứng dụng Truyền file e-mail Web documents audio/video thời gian thực audio/video đã lưu Game tương tác text messaging mất dữ liệu không không không chịu lỗi chịu lỗi chịu lỗi không thông lượng mềm dẻo mềm dẻo mềm dẻo audio: 5kbps-1Mbps video:10kbps-5Mbps như trên Trên một vài kbps mềm dẻo time sensitive không không không có, 100’s msec có, vài giây Có , 100’s msec Có và không Tầng Application 2-15 Các dịch vụ giao thức Transport Internet Dịch vụ TCP: v reliable transport giữa tiến trình gởi và nhận v flow control: người gởi sẽ không áp đảo người nhận v congestion control: điều tiết người gởi khi mạng quá tải v connection-oriented: thiết lập được yêu cầu giữa tiến trình client và server Dịch vụ UDP: v Truyền dữ liệu không tin cậy giữa tiến trình gởi và nhận v Không hổ trợ: độ tin cậy, điều khiển luồng, điều khiển tắt nghẽn, bảo đảm thông lượng, bảo mật, và thiết lập kết nối. Q: tại sao phải quan tâm? Tại sao có UDP? Tầng Application 2-16 Ứng dụng Internet: Các giao thức tầng application, transport application e-mail remote terminal access Web Truyền file streaming multimedia Thoại Internet Giao thức tầng application SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] HTTP (e.g., YouTube), RTP [RFC 1889] SIP, RTP, độc quyền (e.g., Skype) Giao thức dưới tầng transport TCP TCP TCP TCP TCP or UDP TCP or UDP Bảo mật TCP TCP & UDP v Không mã hóa v Mật mã chưa mã hóa được gởi đến socket để đi qua Internet trong dạng nguyên bản SSL v Hổ trợ kết nối TCP được mã hóa v Toàn vẹn dữ liệu v Chứng thực điểm cuối SSL là giao thức ở tầng Application v Các ứng dụng dùng thư viện SSL, cái mà “nói chuyên” với TCP SSL socket API v Mật mã dạng cleartext được gởi vào trong socket đi qua Internet được mã hóa v Xem chương 7 Tầng Application 2-17 Tầng Application 2-18 Chương 2: Nội dung 2.1 Các nguyên lý của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 thư điện tử § SMTP, POP3, IMAP 2.5 DNS 2.6 các ứng dụng P2P 2.7 lập trình socket với UDP và TCP Tầng Application 2-19 Web và HTTP Ôn lại v web page bao gồm các đối tượng (objects) v Đối tượng có thể là file HTML, hình ảnh JPEG, Java applet, file audio, v Web page bao gồm file HTML cơ bản cái mà bao gồm một số đối tượng được tham chiếu v Mỗi đối tượng có thể được định địa chỉ bởi một URL, ví dụ www.someschool.edu/someDept/pic.gif host name path name Tầng Application 2-20 Tổng quan HTTP HTTP: hypertext transfer protocol § Giao thức web ở tầng Application v Mô hình client/server § client: trình duyệt yêu cầu, nhận (dùng giao thức HTTP) và “hiện thị” các đối tượng Web § server: Web server gởi (dùng giao thức H T T P ) c á c đ ố i tượng để đáp ứng yêu cầu PC chạy trình duyệt Firefox server Chạy web server Apache iphone chạy trình duyệt Safari Tầng Application 2-21 Tổng quan HTTP (tt) Dùng TCP: v Client khởi tạo kết nối TCP (tạo socket) đến server, port 80. v server chấp nhận kết nối TCP từ client. v Các thông điệp HTTP (thông điệp giao thức tầng application) được trao đổi giữa trình duyệt (HTTP client) và web server (HTTP server). v Kết nối TCP được đóng. HTTP là“stateless” v server không duy trì thông tin về các yêu cầu trước đó của client. Các giao thức nào mà duy trì “trạng thái” là phức tạp! v Lịch sử trước đó (trạng thái) phải được duy trì v Nếu server/client bị sự cố, cách nhìn về “trạng thái” của nó có thể bị mâu thuẩn, phải được điều chỉnh Vấn đề liên quan Tầng Application 2-22 Các kết nối HTTP Nonpersistent HTTP v Chỉ tối đa một đối tượng được gởi qua kết nối TCP. § Kết nối sau đó sẽ bị đóng. v HTTP/1.0. Persistent HTTP v Nhiều đối tượng có thể được gởi qua một kết nối TCP g iữ a c l i e n t v à server. v HTTP/1.1. Tầng Application 2-23 HTTP không bền vững Giả sử người dùng vào URL như sau: 1a. HTTP client khởi tạo kết nối TCP đến HTTP server ( t i ế n t r ì n h ) t ạ i www.someSchool.edu trên port 80 2. HTTP client gởi thông điệp yêu cầu HTTP (chứa URL) vào trong socket kết nối TCP. Thông điệp chỉ ra rằng client muốn đối tượng someDepartment/home.index 1b. HTTP server tại host www.someSchool.edu chờ kết nối TCP tại port 80. “chấp nhận” kết nối, thông báo cho client 3. HTTP server nhận thông điệp yêu cầu, định dạng thông điệp phản hồi chứa đối tượng được yêu cầu, và gởi thông điệp đến socket của nó Thời gian (chứa text, tham chiếu đến 10 hình jpeg) www.someSchool.edu/someDepartment/home.index Tầng Application 2-24 HTTP không bền vững(tt) 5. HTTP client nhận thông điệp phản hồi chứa file html, hiển thị html. Phân tích cú pháp file html, tìm ra các đối tượng jpeg được tham chiếu 6. Các bước 1-5 được lặp lại cho mỗi đối tượng trong 10 đối tượng jpeg 4. HTTP server đóng kết nối TCP. time Tầng Application 2-25 HTTP không bền vững: thời gian đáp ứng RTT (định nghĩa): thời gian để cho một gói tin nhỏ đi từ client đến server và quay ngược lại Thời gian đáp ứng HTTP: v Một RTT để khởi tạo kết nối TCP v Một RTT cho yêu cầu HTTP và vài byte dầu tiên của đáp ứng HTTP được trả về v Thời gian truyền file v Thời gian đáp ứng HTTP không bền vững = 2RTT + thời gian truyền file thời gian truyền file Khởi tạo Kết nối TCP RTT yêu cầu file RTT file được nhận Thời gian Thời gian 2: Application Layer 26 Persistent HTTP Nonpersistent HTTP: v Yêu cầu 2 RTTs cho một đối tượng. v Một TCP connection làm việc với 1 đối tượng v Trình duyệt thường mở song song nhiều TCP connections đến các đối tượng được quan tâm. Persistent HTTP v Server giữ lại trạng thái mở của kết nối sau khi gởi response v Nhiều HTTP messages giữa client/server được gởi qua kết nối đang mở Persistent without pipelining: v Client chỉ gởi request khi đã nhận được response trước. v 1 RTT cho 1 đối tượng được quan tâm. Persistent with pipelining: v Client gởi request liên tục đến các đối tượng được quan tâm v Có thể 1 RTT cho tất cả các đối tượng được quân tâm Tầng Application 2-27 Thông điệp yêu cầu HTTP v hai loại thông điệp HTTP: yêu cầu (request), đáp ứng (response) v Thông điệp yêu cầu HTTP: § ASCII (dạng thức con người có thể đọc được) Dòng yêu cầu (các lệnh GET, POST, HEAD) Các dòng header ký tự xuống dòng, về đầu dòng mới chỉ điểm cuối cùng của thông điệp GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html,application/xhtml+xml\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Keep-Alive: 115\r\n Connection: keep-alive\r\n \r\n Ký tự xuống dòng line-feed character Tầng Application 2-28 Thông điệp yêu cầu HTTP: định dạng tổng quát dòng Yêu cầu các dòng header thân method sp sp cr lf version URL cr lf value header field name cr lf value header field name ~ ~ ~ ~ cr lf entity body ~ ~ ~ ~ Tầng Application 2-29 Tải lên form input Phương pháp POST: v web page thường bao gồm form input v input được tải lên server trong body thực thể Phương pháp URL: v Dùng phương thức GET v input được tải trong trường URL của dòng yêu cầu: www.somesite.com/animalsearch?monkeys&banana Tầng Application 2-30 Các phương thức HTTP/1.0: v GET v POST v HEAD § Yêu cầu server để lại đối tượng được yêu cầu ra khỏi sự đáp ứng HTTP/1.1: v GET, POST, HEAD v PUT § Tải file trong body thực thể đến đường dẫn được xác định trong trường URL v DELETE § Xóa file được chỉ định trong trường URL Tầng Application 2-31 Thông điệp đáp ứng HTTP dòng trạng thái (giao thức mã trạng thái cụm từ trạng thái) các dòng header Dữ liệu, ví dụ, file HTML được yêu cầu HTTP/1.1 200 OK\r\n Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n Server: Apache/2.0.52 (CentOS)\r\n Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT \r\n ETag: "17dc6-a5c-bf716880"\r\ ... lời giả tạo đến DNS server Khai thác DNS cho tấn công DDoS v Gởi các truy vấn với địa chỉ nguồn giả tạo: địa chỉ IP mục tiêu v Yêu cầu khuếch đại Application Layer 2-73 Tầng Application 2-74 Chương 2: Nội dung 2.1 Các nguyên lý của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 thư điện tử § SMTP, POP3, IMAP 2.5 DNS 2.6 các ứng dụng P2P 2.7 lập trình socket với UDP và TCP Tầng Application 2-75 Kiến trúc P2P thuần túy v Server không hoạt động liên tục v Các hệ thống đầu cuối bất kỳ giao tiếp trực tiếp với nhau v Các peer được kết nối liên tục và thay đổi địa chỉ IP Ví dụ: § P h â n p h ố i f i l e (BitTorrent) § Streaming (KanKan) § VoIP (Skype) Tầng Application 2-76 Phân phối file: so sánh giữa client-server và P2P Câu hỏi: mất bao lâu để phân phối file (how much time to distribute file) (kích thước F) từ một server đến N peer? § Khả năng tải lên/tải xuống của peer bị giới hạn us uN dN server network (với băng thông phong phú) file, size F us: khả năng upload của server ui: khả năng upload peer i di: khả năng download của peer i u2 d2 u1 d1 di ui Tầng Application 2-77 Thời gian phân phối file: client-server v Truyền máy chủ: phải gửi (tải lên) tuần tự N bản sao file: § Thời gian để gởi một bản sao: F/us § Thời gian để gởi N bản sao: NF/us Tăng tuyến tính trong N Thời gian để phân phối F đến N client dùng phương pháp client-server Dc-s > max{NF/us,,F/dmin} v client: mỗi client phải tải xuống bản sao của file § dmin = tốc độ tối thiêu client download § Thời gian thối thiểu client download: F/dmin us network di ui F Tầng Application 2-78 Thời gian phân phối file: P2P v Truyền server: phải upload ít nhất một bản sao § Thời gian gởi một bản sao: F/us Thời gian phân phối F đến N client dùng phương pháp P2P us network di ui F DP2P > max{F/us,,F/dmin,,NF/(us + Σui)} v client: mỗi client phải download bản sao file § Thời gian tối thiếu client tải xuống: F/dmin v clients: trong khi tổng thể cần phải tải về NF bit § Tốc độ upload tối đa (tốc độ tải về giới hạn tối đa) là us + Sui nhưng để thực hiện điều này, mỗi khi mỗi peer mang lại năng lực dịch vụ Tăng tuyến tính trong N Tầng Application 2-79 0 0.5 1 1.5 2 2.5 3 3.5 0 5 10 15 20 25 30 35 N M in im um D is tri bu tio n Ti m e P2P Client-Server So sánh Client-server với P2P: ví dụ Tốc độ client upload = u, F/u = 1 hour, us = 10u, dmin ≥ us Tầng Application 2-80 Phân phối file P2P: BitTorrent tracker: theo dõi các peers tham gia trong torrent torrent: nhóm các peer trao đổi các khối file Alice đến v File được chia thành các khối 256Kb v Các peer trong in torrent gởi/nhận các khối file có được danh sách của các peer từ tracker và bắt đầu trao đổi các khối fileexchanging với các peer trong torrent Tầng Application 2-81 v Peer tham gia torrent: § Không có các khối, nhưng sẽ tích lũy chúng theo thời gian từ các peer khác § Đăng ký với tracker để lấy danh sách các peer, kết nối với tập hợp của các peer (“các láng giềng”) Phân phối file P2P: BitTorrent v Trong khi tải xuống, peer tải lên các khối dữ liệum mà mình đang có tới các peer khác v Peer có thể thay đổi các peer mà nó đang trao đổi các khối dữ liệu v churn: peers có thể đến và đi v Một khi peer có toàn bộ file, nó có thể rời khỏi hoặc ở lại trong torrent Tầng Application 2-82 BitTorrent: yêu cầu, gởi các khối file Yêu cầu các khối: v Tại bất kỳ thời điểm, các peer khác nhau có các tập con khác nhau của các khối file v Định kỳ, Alice yêu cầu mỗi peer cho danh sách các khối mà các peer có v Alice yêu cầu các khối đang thiếu từ các peer, hiếm trước Gởi các khối: tit-for-tat v Alice gởi các khối cho bốn peer mà hiện tại đang gởi các khối của cô ở tốc độ cao nhất § Các peer khác bị thắt lại bởi Alice (không nhận khối từ cô ta) § Đánh giá lại top 4 mỗi 10 giây v Mỗi 30 giây: chọn ngẫu nhiên một peer khác, bắt đầu gởi các khối § “optimistically unchokes” peer này § Peer mới được chọn có thể tham gia và top 4 Tầng Application 2-83 BitTorrent: tit-for-tat (1) Alice “optimistically unchokes” Bob (2) Alice trở thành một trong bốn nhà cung cấp hàng đầu của Bob’s top-four providers; Bob đáp lại (3) Bob trở thành một trong bốn nhà cung cấp hàng đầu của Alice Tốc độ tải lên cao hơn: tìm đối tác tốc hơn, lấy file nhanh hơn! Distributed Hash Table (DHT) v Bảng Hash v Mô hình DHT v Circular DHT and overlay networks v Peer churn Key Value John Washington 132-54-3570 Diana Louise Jones 761-55-3791 Xiaoming Liu 385-41-0902 Rakesh Gopal 441-89-1956 Linda Cohen 217-66-5609 . Lisa Kobayashi 177-23-0199 Cơ sở dữ liệu đơn giản với cặp(key, value): • key: tên người: số an sinh xã hội Cơ sở dữ liệu đơn giản • key: tên phim; value: địa chỉ IP Original Key Key Value John Washington 8962458 132-54-3570 Diana Louise Jones 7800356 761-55-3791 Xiaoming Liu 1567109 385-41-0902 Rakesh Gopal 2360012 441-89-1956 Linda Cohen 5430938 217-66-5609 . Lisa Kobayashi 9290124 177-23-0199 • thuận tiện hơn để lưu trữ và tìm kiếm trên đại diện số của key • key = hash(original key) Bảng Hash v Phân phối các cặp (key, value) qua hàng triệu các peer § Các cặp được phân bố đều trên các peer v Bất kỳ peer nào cũng có thể truy vấn cơ sở dữ liệu của một key § Cơ sở dữ liệu trả về giá trị cho key đó § Để giải quyết truy vấn, số lượng nhỏ các thông điệp được trao đổi giữa các peer v Mỗi peer chỉ biết một số nhỏ các peer khác Distributed Hash Table (DHT) Chỉ định các cặp key-value cho các peer v Quy tắc: chỉ định cặp key-value đến peer mà có ID gần nhất (closest). v Quy ước: gần nhất(closest) is sự kế thừa ngay lặp tức (immediate successor ) của khóa (key) đó. v Ví dụ: không gian ID {0,1,2,3,,63} v Giả sử 8 peer: 1,12,13,25,32,40,48,60 § Nếu key = 51, thì được chỉ định cho peer 60 § Nếu key = 60, thì được chỉ định cho peer 60 § Nếu key = 61, thì được chỉ định cho peer 1 1 12 13 25 32 40 48 60 DHT vòng tròn • Mỗi peer chỉ nhận thức được người lập tức kế nhiệm và người tiền nhiệk “overlay network” 1 12 13 25 32 40 48 60 Giá trị nào được kết hợp với key 53 ? value O(N) các thông điệp trung bình để giải quyết truy vấn, khi có N peer Giải quyết một truy vấn DHT vòng tròn với đường tắt • Mỗi peer theo dõi đại chỉ IP của người tiền nhiệm, người kế nhiệm, đường tắt. • Giảm từ 6 còn 3 thông điệp. • Có thể thiết kế các đường tắt với O(log N) láng giềng, O(log N) thông điệp trong truy vấn 1 12 13 25 32 40 48 60 Giá trị nào cho key 53 value Peer churn Ví dụ: peer 5 đột ngột rời khỏi 1 3 4 5 8 10 12 15 Xử lý peer churn: v Các peer có thể đến và đi (churn) v Mỗi peer biết địa chỉ của hai kế nhiệm của nó v Mỗi peer định kỳ ping hai kế nhiệm của nó để kiểm tra sự tồn tại v Nếu người vừa kế nhiệm bỏ đi, thì chọn kế nhiệm kế tiếp như là người kế nhiệm tức thời mới Peer churn Ví dụ: peer 5 đột ngột rời khỏi v peer 4 phát hiện sự rời khỏi của peer 5; peer 8 trở thành người kế nhiệm ngay lập tức của nó v 4 yêu cầu 8 là người kế nhiệm tức thời của nó; người kế nhiệm tức thời của 8 trở thành người kế nhiệm thứ 2 của 4. 1 3 4 8 10 12 15 Xử lý peer churn: v Các peer có thể đến và đi (churn) v Mỗi peer biết địa chỉ của hai kế nhiệm của nó v Mỗi peer định kỳ ping hai kế nhiệm của nó để kiểm tra sự tồn tại v Nếu người vừa kế nhiệm bỏ đi, thì chọn kế nhiệm kế tiếp như là người kế nhiệm tức thời mới Tầng Application 2-94 Chương 2: Nội dung 2.1 Các nguyên lý 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 các ứng dụng P2P 2.7 lập trình socket với UDP và TCP Tầng Application 2-95 Lập trình Socket Mục tiêu: tìm hiểu cách xây dựng các ứng dụng client/server cái mà truyền thông dùng sockets socket: một cánh cửa giữa tiến trình ứng dụng và giao thức transport end-end Internet Được điều khiển bởi hệ điều hành Được điều khiển bởi Nhà phát triển ứng dụng transport application physical link network process transport application physical link network process socket Tầng Application 2-96 Lập trình Socket Hai loại socket cho hai dịch vụ transport: § UDP: datagram không tin cậy § TCP: tin cậy, byte được định hướng dòng (stream-oriented) Ví dụ ứng dụng: 1. Client đọc một dòng các ký tự (dữ liệu) từ bàn phím của nó và gởi dữ liêu đó đến server. 2. server nhận được dữ liệu đó và chuyển đổi các ký tự sang chữ hoa. 3. server gởi dữ liệu đã được sửa đổi cho client ở trên. 4. client này nhận được dữ liệu đã bị sửa đổi và hiển thị dòng đó lên màn hình của nó. Tầng Application 2-97 Lập trình Socket với with UDP UDP: không “kết nối” giữa client và server v Không bắt tay trước khi gởi dữ liệu v Bên gửi chỉ rõ địa chỉ IP đích và số port cho mỗi packet v Bên nhận lấy địa chỉ IP và số port của người gởi từ packet được nhận UDP: dữ liệu được truyền có thể bị mất hoặc được nhận không thứ tự Quan điểm ứng dụng: v UDP cung cấp truyền không tin cậy của các nhóm byte (“dâtgrams”) giữa client và server Sự tương tác socket Client/server: UDP đóng clientSocket Đọc datagram từ clientSocket Tạo socket: clientSocket = socket(AF_INET,SOCK_DGRAM) Tạo datagram với địa chỉ IP server Và port=x; gởi datagram thông qua clientSocket Tạo socket, port= x: serverSocket = socket(AF_INET,SOCK_DGRAM) Đọc datagram từ serverSocket Viết trả lời đến serverSocket chỉ định địa chỉ client, port number Application 2-98 server (chạy trên địa chỉ IP server) client Tầng Application 2-99 Ví dụ ứng dụng: UDP client from socket import * serverName = ‘hostname’ serverPort = 12000 clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) message = raw_input(’Input lowercase sentence:’) clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print modifiedMessage clientSocket.close() Python UDPClient Bao gồm thư viện socket của Python’ Tạo socket UDP cho server Nhận thông điệp từ bàn phím người dùng Đính kèm tên server, port đến thông điệp; gởi vào tron socket In ra chuỗi được nhận và đóng socket Đọc các ký tự trả lời từ socket vào chuỗi Tầng Application 2-100 Ví dụ ứng dung: UDP server from socket import * serverPort = 12000 serverSocket = socket(AF_INET, SOCK_DGRAM) serverSocket.bind(('', serverPort)) print “The server is ready to receive” while 1: message, clientAddress = serverSocket.recvfrom(2048) modifiedMessage = message.upper() serverSocket.sendto(modifiedMessage, clientAddress) Python UDPServer Tạo UDP socket Đính kèm socket đến số port cục bộ12000 Lặp mãi mãi Đọc từ UDP socket vào trong thông điệp, lấy địa chỉ IP của client(địa chỉ IP client và port) Gởi chuỗi chữ hoa trở lại cho client này Tầng Application 2-101 Lập trình Socket với TCP client phải tiếp xúc với server v Tiến trình server phải được chạy trước v server phải tạo socket (cửa) để mời client đến liên lạc client tiếp xúc server bằng: v Tạo socket TCP, xác định địa chỉ IP, số port của tiến trình server v Khi client tạo socket: client TCP thiết lập kết nối đến server TCP v Khi đã tiếp xúc với client, server TCP tạo socket mới cho tiến trình serverđể truyền thông với client đó § Cho phép server nói chuyện với nhiều client § Số source port được dùng để phân biệt các client (xem tiếp chương 3) TCP cung cấp việc truyền các byte tin cậy và theo thứ tự giữa client và server Nhìn dưới góc độ ứng dụng: Tầng Application 2-102 Tương tác socket Client/server: TCP wait for incoming connection request connectionSocket = serverSocket.accept() create socket, port=x, for incoming request: serverSocket = socket() create socket, connect to hostid, port=x clientSocket = socket() server (chạy trên hostid) client send request using clientSocket read request from connectionSocket write reply to connectionSocket TCP connection setup close connectionSocket read reply from clientSocket close clientSocket Tầng Application 2-103 Ví dụ ứng dụng: TCP client from socket import * serverName = ’servername’ serverPort = 12000 clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) sentence = raw_input(‘Input lowercase sentence:’) clientSocket.send(sentence) modifiedSentence = clientSocket.recv(1024) print ‘From Server:’, modifiedSentence clientSocket.close() Python TCPClient Tạo TCP socket cho server, port 12000 ở xa Không cần đính kèm tên server, port Tầng Application 2-104 Ví dụ ứng dụng: TCP server from socket import * serverPort = 12000 serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.bind((‘’,serverPort)) serverSocket.listen(1) print ‘The server is ready to receive’ while 1: connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence) connectionSocket.close() Python TCPServer Tạo socket TCP chào đón server bắt đầu lắng nghe các yêu cầu TCP đến Lặp mãi mãi server đợi accept() cho yêu cầu đến, socket mới được tạo trở về Đọc các byte từ socket nhưng không đọc địa chỉ như UDP) Đóng kết nối đến client này(nhưng không đóng socket chào đón) Tầng Application 2-105 Chương 2: tóm tắt v Các kiến trúc ứng dụng § client-server § P2P v Các yêu cầu dịch vụ ứng dụng: § Độ tin cậy, băng thông, độ trễ v Mô hình dịch vụ vận chuyển Internet § Kết nối định hướng, tin cậy: TCP § Không tin c, datagrams: UDP v Các giao thức: § HTTP § FTP § SMTP, POP, IMAP § DNS § P2P: BitTorrent, DHT v Lập trình socket : TCP, UDP sockets Tầng Application 2-106 v trao đổi thông điệp yêu cầu /trả lời điển hình: § client yêu cầu thông tin hoặc dịch vụ § server đáp ứng với dữ liệu, mã trạng thái v Các định dạng thông điệp: § headers: các trường cho biết thông tin về dữ liệu § data: thông tin để truyền thông Các chủ đề quan trọng: v Điều khiển với các thông điệp dữ liệu § in-band, out-of-band v Tập trung và không tập trung v Không trạng thái và có trạng thái v Truyền tin cậy và không tin cậy v “sự phức tạp tại mạng biên” Chương 2: tóm tắt Quan trọng: tìm hiểu về các giao thức!
File đính kèm:
- bai_giang_mang_may_tinh_chuong_2_tang_application_nguyen_duy.pdf