Giáo trình Mạng máy tính - Chương 2: Tầng ứng dụng
2.1 Các nguyên tắc của
ứng dụng mạng
2.2 Web và HTTP
2.3 FTP
2.4 E-Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P
2.7 Lập trình Socket với
TCP
2.8 L 2.8 Lậ ập trình Socket v p trình Socket vớ ớii
Lập trình Socket với UDP
UD
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình 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 hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Giáo trình Mạng máy tính - Chương 2: Tầng ứng dụng
1-1 Mạng máy tính Bộ môn Kỹ thuật máy tính và Mạng Khoa Công nghệ Thông tin 1-2 Chương 2: Tầng ứng dụng 2.1 Các nguyên tắc của ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 E-Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với 2.8 Lập trình Socket với Lập trình Socket với UDP UDP 1-3 Chương 2: Tầng ứng dụng Mục đích: Các khía cạnh của các giao thức ứng dụng mạng Mô hình dịch vụ tầng giao vận Mô hình Client-Server Mô hình peer-to-peer Học về các giao thức phổ biến mức ứng dụng HTTP FTP SMTP / POP3 / IMAP DNS Lập trình các ứng dụng mạng Socket API 1-4 Một số ứng dụng mạng E-mail Web Instant messaging Remote login Chia sẻ file P2P Trò chơi nhiều người sử dụng qua mạng Điện thoại qua Internet Hội nghị truyền hình thời gian thực Tính toán song song 1-5 Tạo một ứng dụng mạng Viết chương trình Chạy trên các end systems khác nhau và Giao tiếp qua mạng Ví dụWeb: Phần mềm Web server giao tiếp với phần mềm trình duyệt Không có phần mềm viết cho các thiết bị trong Network Core Các thiết bị trong Network Core không thực hiện chức năng tại lớp ứng dụng Thiết kế này để sự phát triển ứng dụng nhanh application transport network data link physical application transport network data link physical application transport network data link physical 1-6 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-7 Các kiến trúc ứng dụng Client-Server Peer-to-peer (P2P) Hybrid 1-8 Kiến trúc Client-server Server: Host ở trạng thái luôn chạy Địa chỉ IP cố định Server farm để tăng khả năng phục vụ Client: Truyền thông với server Có thể không kết nối liên tục Có thể có địa chỉ IP động Không giao tiếp trực tiếp với nhau 1-9 Kiến trúc P2P Server không ở trạng thái luôn chạy Hệ thống cuối tùy ý truyền thông trực tiếp Các Peer kết nối không liên tục và thay đổi địa chỉ IP Ví dụ: Gnutella Khả năng co giãn quy mô cao Khó quản lý 1-10 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ửi yêu cầu server trung tâm xác định vị trí của nội dung Instant Messaging Giao tiếp giữa 2 user là P2P Quản lý tập trung vị trí của user: • User đăng ký địa chỉ IP với server trung tâm khi kết nối • User thông qua server trung tâm để tìm địa chỉ IP của đối tượng cần giao tiếp 1-11 Truyền thông của các tiến trình Tiến trình: chương trình chạy trong một host. Trong cùng host, 2 tiến trình giao tiếp sử dụng inter-process communication (Do OS định nghĩa). Các tiến trình trong các host khác nhau giao tiếp bằng cách trao đổi các message Tiến trình client: tiến trình khởi đầu quá trình truyền thông Tiến trình server: tiến trình đợi kết nối Chú ý: Các ứng dụng P2P có cả tiến trình client và tiến trình server 1-12 Socket Tiến trình gửi nhận messages tới/từ socket của nó Socket tương tự cửa ra vào Tiến trình gửi đẩy bản tin ra ngoài cửa Tiến trình gửi dựa vào hạ tầng giao vận trên phía bên kia của cửa, nó mang message tới socket của tiến trình nhận Tiến trình TCP với buffer, Biến socket host hoặc server Tiến trình TCP với Buffer, biến socket host hoặc server Internet Điều khiển bởi OS Điều khiển bởi người lập trình ứng dụng API: (1) Chọn giao thức giao vận; (2) Gán giá trị cho một vài tham số (chi tiết phần sau) 1-13 Các tiến trình đánh địa chỉ Đối với một tiến trình nhận messages, nó phải có một định danh Một host có một địa chỉ IP duy nhất Câu hỏi: Địa chỉ IP của host mà tiến trình chạy có đáp ứng được việc định danh tiến trình? Trả lời: Không, nhiều tiến trình có thể chạy trên cùng host Định danh bao gồm cả địa chỉ IP và địa chỉ cổng gán cho ứng dụng trên host. Ví dụ: Giá trị cổng của một số ứng dụng: HTTP server: 80 Mail server: 25 Chi tiết hơn trong phần sau 1-14 Giao thức lớp ứng dụng Giao thức lớp ứng dụng định nghĩa Kiểu của bản tin trao đổi, ví dụ bản yêu cầu, bản tin trả lời Cú pháp của kiểu bản tin: Các trường trong bản tin và mô tả các trường trong bản tin Ý nghĩa của các trường Quy tắc các tiến trình gửi/nhận bản tin khi nào và như thế nào Các giao thức công khai: Định nghĩa trong các RFC Cho phép phối hợp hoạt động Ví dụ: HTTP, SMTP Các giao thức không công khai: Ví dụ: KaZaA 1-15 Các dịch vụ giao vận mà ứng dụng cần Mất dữ liệu Một số ứng dụng (ví dụ: audio) có thể chấp nhận một tỷ lệ mất dữ liệu nào đó Một số ứng dụng khác (ví dụ: Truyền file, telnet) đòi hỏi 100% dữ liệu truyền là tin cậy Thời gian Một số ứng dụng (ví dụ: điện thoại Internet, trò chơi tương tác) đòi hỏi độ trễ thấp Băng thông Một số ứng dụng (ví dụ: đa phương tiện) yêu cầu lượng băng thông tối thiểu Một số ứng dụng khác sử dụng theo băng thông chúng nhận được 1-16 Yêu cầu của ứng dụng giao vận của một số ứng dụng Ứng dụng Truyền file E-mail Web Real-time audio/video Stored audio/video Trò chơi tương tác Instant messaging Mất dữ liệu Không cho phép Không cho phép Không cho phép Cho phép Cho phép Cho phép Không cho phép Băng thông Co giãn Co giãn Co giãn Audio: 5kbps-1Mbps Video:10kbps-5Mbps Tương tự trên Yêu cầu kbps Co giãn Thời gian Không Không Không Có, hàng trăm msec Có, vài secs Có, hàng trăm msec Có 1-17 Các dịch vụ các giao thức giao vận Dịch vụ TCP: Hướng kết nối: Đòi hỏi quá trình thiết lập giữa tiến trình client và tiến trình server Truyền tin cậy giữa tiến trình gửi và tiến trình nhận Điều khiển luồng: Bên gửi sẽ không vượt quá khả năng bên nhận Điều khiển tắc nghẽn: điều chỉnh bên gửi khi mạng quá tải Không cung cấp: tính thời gian, đảm bảo băng thông tối thiểu Dịch vụ UDP: Truyền dữ liệu không tin cậy giữa tiến trình gửi và tiến trình nhận Không cung cấp: việc thiết lập kết, truyền tin cậy, điều khiển luồng, điều khiển tắc nghẽn, tính thời gian, đảm bảo băng thông Q: Tại sao cần UDP? 1-18 Các ứng dụng Internet: các giao thức tầng ứng dụng và tầng giao vận Ứng dụng Thư điện tử Truy cập từ xa Web Truyền file Truyền dòng đa phương tiện Điện thoại Internet Giao thức tầng ứng dụng SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] Không công khai (vd: RealNetworks) Không công khai (vd: Dialpad) Giao thức tầng giao vận TCP TCP TCP TCP TCP hoặc UDP UDP 1-19 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-20 Web và HTTP Trang Web chứa các đối tượng Đối tượng có thể là file HTML, ảnh JPEG, Java applet, audio, Trang Web chứa file HTML, chứa các đối tượng tham chiếu Mỗi đối tượng được đánh địa chỉ bởi một URL Ví dụ URL: www.someschool.edu/someDept/pic.gif host name path name 1-21 HTTP HTTP: hypertext transfer protocol Giao thức tầng ứng dụng của Web Mô hình client/server client: Trình duyệt yêu cầu, nhận và hiện thị các đối tượng server:Web server gửi các đối tượng trong trả lời HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 Server chạy Apache Web server HTTP request H T T P r e q u e s t HTTP response H T T P r e s p o n s e 1-22 HTTP (tiếp) Sử dụng TCP: Client khởi đầu kết nối TCP (tạo socket) tới server, cổng 80 Server chấp nhận kết nối TCP từ client Các bản tin HTTP (bản tin của giao thức tầng ứng dụng Web) trao đối giứa trình duyệt (HTTP client) và Web server (HTTP server) Kết nối TCP đóng HTTP là không hướng trạng thái Server không duy trì thông tin về các yêu cầu của client trong quá khứ Các giao thức hướng trạng thái phức tạp hơn giao thức không hướng trạng thái Quá khứ phải được duy trì Nếu server/client lỗi, các trạng thái có thể không thống nhất 1-23 Kết nối HTTP Nonpersistent HTTP Một đối tượng được gửi qua một kết nối TCP HTTP/1.0 sử dụng nonpersistent HTTP Persistent HTTP Nhiều đối tượng có thể gửi qua một kết nối TCP giữa client và server HTTP/1.1 mặc định sử dụng persistent HTTP 1-24 Nonpersistent HTTP Giả sử người sử dụng nhập vào URL www.someSchool.edu/someDepartment/home.index 1a. HTTP client khởi đầu kết nối TCP tới HTTP server (tiến trình) tại www.someSchool.edu, cổng 80 2. HTTP client gửi bản tin yêu cầu HTTP (chứa URL) vào socket của kết nối TCP. Bản tin chỉ rằng client muốn lấy đối tượng someDepartment/home.index 1b. HTTP server tại host www.someSchool.edu đợi kết nối TCP tại cổng 80. Chấp nhận kết nối, thông báo cho client 3. HTTP server nhận bản tin yêu cầu, xây dựng bản tin trả lời chứa đối tượng đã yêu cầu và gửi bản tin vào trong socket của nó Thời gian (chứa text, tham chiếu tới 10 ảnh jpeg) 1-25 Nonpersistent HTTP (cont.) 5. HTTP client nhận trả lời chứa file html, hiện thị nội dung. Phân tích html, tìm 10 đối tượng ảnh jpeg được tham chiếu 6. Lặp bước 1-5 cho mỗi đối tượng ảnh jpeg 4. HTTP server đóng kết nối TCP time 1-26 Mô hình thời gian trả lời RTT: thời gian để gửi một gói tin từ client tới server và trở lại Thời gian trả lời: 1 RTT để khởi tạo kết nối TCP 1 RTT cho yêu cầu HTTP và nhận byte đầu tiên của trả lời HTTP Thời gian truyền file total = 2RTT+transmit time transmit time Khởi đầu kết nối TCP RTT file yêu cầu RTT file đã nhận thời gian thời gian 1-27 Persistent HTTP Nonpersistent HTTP: Yêu cầu 2 RTT cho 1 đối tượng Hệ điều hành phải cấp phát tài nguyên cho mỗi kết nối TCP Trình duyệt phải mở song song nhiều kết nối TCP để lấy đối tượng tham chiếu Persistent HTTP Server tạm dừng kết nối sau khi gửi trả lời Các bản tin HTTP sau đó giữa cùng client/server được gửi qua kết nối 1-28 Bản tin yêu cầu HTTP Hai kiểu bản tin HTTP: yêu cầu, trả lời Bản tin yêu cầu HTTP: ASCII GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (CR, LF) Request line (lệnh GET, POST, HEAD ) header line 1-29 Bản tin yêu cầu HTTP 1-30 Kiểu Method HTTP/1.0 GET POST HEAD Hỏi server bỏ đối tượng đã yêu cầu ra khỏi trả lời HTTP/1.1 GET, POST, HEAD PUT đưa file trong phần body lên đường dẫn chỉ trong URL DELETE xóa file trong trường URL 1-31 Bản tin trả lời HTTP HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 ... Content-Length: 6821 Content-Type: text/html dữ liệu status line (protocol status code status phrase) header line dữ liệu, ví dụ: file HTML đã yêu cầu 1-32 Mã trạng thái của trả lời HTTP 200 OK Yêu cầu thực hiện thành công, đối tượng trong bản tin 301 Moved Permanently Đối tượng yêu cầu đã di chuyển vị trí, ví trí mới được chỉ ra trong bản tin (Location:) 400 Bad Request Server không hiểu bản tin yêu cầu 404 Not Found Không tìm thấy đối tượng yêu cầu 505 HTTP Version Not Supported Trong dòng đầu tiên của trả lời server->client Ví dụ: 1-33 Thực hành 1. Telnet tới một Web server: Mở kết nối TCP tới cổng 80 tại cis.poly.edu. Nội dung gõ được gửi tới cổng 80 tại cis.poly.edu telnet cis.poly.edu 80 2. Gõ lệnh GET GET /~ross/ HTTP/1.1 Host: cis.poly.edu 3. Xem bản tin trả lời gửi bởi HTTP server 1-34 Web cache (proxy server) Người dùng thiết lập qua trình duyệt Trình duyệt gửi mọi yêu cầu HTTP qua Cache Đối tượng trong cache: sẽ được trả về Nếu không: Yêu cầu được chuyển tới server ban đầu Mục đích: thực hiện yêu cầu của client không phải yêu cầu tới server ban đầu client Proxy server client HTTP request H T T P r e q u e s t HTTP response H T T P r e s p o n s e H T T P r e q u e s t H T T P r e s p o n s e server ban đầu server ban đầu 1-35 Web cache Cache hoạt động như cả client và server Thông thường, được cài đặt bởi ISP Lợi ích của Web cache Giảm thời gian trả lời Giảm lưu lượng trên đường truyền truy cập 1-36 Web cache Cache hoạt động như cả client và server Thông thường cache được cài đặt bởi ISP (trường đại học, công ty, nhà cung cấp dịch vụ cho gia đình) Tại sao dùng Web cache? Giảm thời gian trả lời cho yêu cầu của client. Giảm lưu lượng trên đường truy cập của tổ chức. 1-37 Ví dụ caching Giả sử Kích thước của đối tượng trung bình = 100,000 bits Tốc độ yêu cầu trung bình từ trình duyệt của tới server ban đầu = 15 giây Trễ từ router của tổ chức tới server ban đầu và trở lại = 2 giây Kết quả Sự sử dụng trong LAN = 15% Sự sử dụng trong đường truyền truy cập = 100% Total delay = Internet delay + access delay + LAN delay = 2 giây + phút + millisecond Các server ban đầu public Internet Mạng của tổ chức 10 Mbps LAN Đường truyền truy cập 1.5 Mbps Institutional Cache 1-38 Ví dụ caching (tiếp) Giải pháp có thể Tăng băng thông của đường truyền truy cập: 10 Mbps Kết quả Sự sử dụng LAN = 15% Sử dụng đường truyền truy cập = 15% Total delay = Internet delay + access delay + LAN delay = 2 sec + msecs + msecs Server ban đầu public Internet Mạng của tổ chức 10 Mbps LAN Đường truyền truy cập10 Mbps institutional cache 1-39 Ví dụ caching (tiếp) Cài đặt cache Hỗ trợ hit rate .4 Kết quả 40% yêu cầu sẽ đáp ứng gần như ngay lập tức 60% yêu cầu đáp ứng bởi server ban đầu Sự sử dụng đường truyền truy cập giảm tới 60%, kết quả độ trễ không đáng kể (10 msec) total avg delay = Internet delay + access delay + LAN delay = .6*(2.01) secs + milliseconds < 1.4 secs Server ban đầu public Internet Mạng của tổ chức 10 Mbps LAN Đường truyền truy cập 1.5 Mbps institutional cache 1-40 GET có điều kiện Mục đích: không gửi đối tượng nếu cache có phiên bản cập nhật Cache: chỉ định ngày của bản sao chép trong cache trong yêu cầu HTTP If-modified-since: Server: Trả lời không chứa đối tượng nếu bản sao chép trong cache cập nhật: HTTP/1.0 304 Not Modified Cache Server Bản tin yêu cầu HTTP If-modified-since: Bản tin trả lời HTTP HTTP/1.0 304 Not Modified Đối tượng không bị thay đổi Bản tin yêu cầu HTTP If-modified-since: Bản tin trả lời HTTP HTTP/1.0 200 OK Đối tượng đã thay đổi 1-41 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-42 FTP: File Transfer Protocol Truyền file tới/từ host ở xa Mô hình client/server client: Phía khởi đầ ... 1-63 TLD và Authoritative Server Top-level domain (TLD) server: có vai trò đối với com, org, net, edu, và tất cả các miền quốc gia mức trên cùng uk, fr, ca, jp, Authoritative DNS server: DNS server của các tổ chức cung cấp ánh xạ authoritative hostname thành địa chỉ IP cho server của tổ chức (ví dụ Web và Email). Có thể duy trì bởi tổ chức hoặc nhà cung cấp dịch vụ 1-64 Local Name Server Không hoàn toàn thuộc vào phân cấp Mỗi ISP (residential ISP, công ty, tổ chức) có Còn gọi là “default name server” Khi một host tạo truy vấn DNS, truy vấn được gửi tới Local DNS server của nó Hoạt động như một proxy, chuyển tiếp query vào trong phân cấp. 1-65 host gửi yêu cầu cis.poly.edu gaia.cs.umass.edu Root DNS server Local DNS server dns.poly.edu 1 2 3 4 5 6 authoritative DNS server dns.cs.umass.edu 78 TLD DNS server Ví dụ Host tại cis.poly.edu muốn biết địa chỉ IP của gaia.cs.umass.edu 1-66 requesting host cis.poly.edu gaia.cs.umass.edu root DNS server local DNS server dns.poly.edu 1 2 45 6 authoritative DNS server dns.cs.umass.edu 7 8 TLD DNS server 3 Truy vấn đệ quy Truy vấn đệ quy: Giao toàn bộ việc tìm tên cho name server liên lạc Tải lớn? Truy vấn lặp: Server liên lạc trả về tên của server cần liên lạc tiếp “Tôi không biết nhưng anh muốn biết thì đi hỏi server này” 1-67 DNS: lưu giữ tạm và cập nhật bản ghi Name server nào đó học các ánh xạ, server sẽ lưu giữ tạm các ánh xạ đó Các khe lưu trữ tạm quá hạn (biến mất) sau một khoảng thời gian Các TLD server thông thường lưu trữ tạm trong các local name servers • Vì thế, root name server không phải hỏi thường xuyên Cơ chế cập nhật/thông báo định nghĩa bởi IETF RFC 2136 1-68 Bản ghi DNS DNS: Cơ sở dữ liệu phân tán chứa các bản ghi tài nguyên (Resource record - RR) Type=NS name là domain (ví dụ foo.com) value là địa chỉ của authoritative name server cho domain đó Định dạng RR: (name, value, type, ttl) Type=A name là hostname value là địa chỉ IP Type=CNAME name là tên bí danh cho một số tên thật (cannonical name) www.ibm.com thật ra là servereast.backup2.ibm.com value là tên thật Type=MX value là tên thật của mail server liên kết với name (bí danh của hostname) (foo.com, mail.bar.foo.com, MX) 1-69 Giao thức DNS, bản tin Giao thức DNS: Bản tin truy vấn và trả lời có chung một định dạng bản tin Header của bản tin identification: 16 bit, định cho truy vấn, trả lời sử dụng cùng giá trị flags: Truy vấn hay trả lời Mong muốn đệ quy Có khả năng đệ quy Trả lời là ủy quyền 1-70 Giao thức DNS, bản tin Các trường Name, type cho một Truy vấn Các bản ghi trong trả lời Các bản ghi cho authoritative server Các bản ghi cung cấp thông tin khác 1-71 Chèn thêm bản ghi vào DNS Ví dụ: Tạo “Network Utopia” Đăng ký tên networkuptopia.com tại registrar (ví dụ: nhà cung cấp giải pháp mạng) Cần cung cấp cho registrar tên và địa chỉ IP của authoritative name server của mạng (primary và secondary) Registrar chèn thêm hai RR vào trong com TLD server: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 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ểu MX cho networkutopia.com Người khác xác định địa chỉ IP của Web site này như thế nào? 1-72 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-73 Chia sẻ file P2P Ví dụ Alice chạy ứng dụng P2P client Kết nối tới Internet và nhận một địa chỉ IP mới Tìm “Hey Jude” Ứng dụng các peer khác có bản sao chép của Hey Jude không. Alice chọn một peer, Bob File được sao chép từ máy của Bob tới máy của Alice: HTTP Trong khi Alice đang tải, người sử dụng khác lấy dữ liệu đã có trên máy Alice Peer của Alice vừa là Web client vừa là Web server. Mọi peer là server = quy mô lớn! 1-74 P2P: thư mục trung tâm Thiết kế của “Napster” ban đầu 1) Khi peer kết nối, nó thông báo server trung tâm: Địa chỉ IP Nội dung 2) Alice yêu cầu “Hey Jude” 3) Alice yêu cầu file từ Bob Server thư mục trung tâm peers Alice Bob 1 1 1 12 3 1-75 P2P: Vấn đề của thư mục trung tâm Một điểm chịu lỗi Hiệu năng Xâm phạm bản quyền Truyền file là không tập trung, xác định vị trí nội dung là không tập chung 1-76 Phát tán các query: Gnutella Hoàn toàn phân tán Không có server trung tâm Giao thức công khai Nhiều Gnutella clients cài đặt giao thức Mạng bao phủ: đồ thị Cạnh giữa peer X và Y: nếu có một kết nối TCP Tất cả peer hoạt động và các cạnh là mạng bao phủ Các cạnh không là đường truyền vật lý Peer thường kết nối với < 10 hàng xóm 1-77 Gnutella: Giao thức Query QueryHit Query Query QueryHit Q u e r y Query Q u e r y H i t Truyền file: HTTP Query gửi qua kết nối TCP đã có Các peers chuyển tiếp bản tin Query QueryHit gửi theo đường ngược lại Ổn định: giới hạn phạm vi phát tán 1-78 Gnutella: Peer gia nhập 1. Peer gia nhập X phải tìm một số 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ạo kết nối TCP với peer khác trong danh sách tới khi thiết lập được kết nối với Y 3. X gửi bản tin Ping tới Y; Y chuyển tiếp bản tin Ping . 4. Mọi peer nhận được bản tin Ping sẽ trả lời bằng bản tin Pong 5. X nhận nhiều bản tin Pong. Nó có thể thiết lập thêm các kết nối TCP 1-79 Lai: KaZaA Mỗi peer là đứng đầu của một nhóm hoặc là con của một nhóm. Kết nối TCP giữa peer và các đứng đầu của nhóm. Kết nối TCP giữa các cặp đứng đầu nhóm. Đứng đầu nhóm theo dõi nội dung của tất cả các con của nó. ordinary peer group-leader peer neighoring relationships in overlay network 1-80 KaZaA: Truy vấn Mỗi file có một hash và một mô tả Client gửi từ khóa tới đứng đầu nhóm Đứng đầu nhóm trả lời các kết quả: Mỗi kết quả: metadata, hash, địa chỉ IP Nếu đứng đầu nhóm chuyển tiếp truy vấn tới đứng đầu nhóm khác, đứng đầu nhóm khác trả lời Sau đó, client chọn file để tải xuống Yêu cầu HTTP sử dụng hash làm định danh để gửi tới peer giữ file đó 1-81 Kazaa Hạn chế số upload đồng thời Xếp hàng yêu cầu Ưu tiên Download song song 1-82 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-83 Lập trình Socket với TCP Client phải liên lạc với server • Tiến trình server phải đang chạy • Server phải tạo socket (cửa) để client liên lạc Client liên lạc với server bằng cách: • Tạo client-local TCP socket • Gán địa chỉ IP, cổng của tiến trình server • Khi client tạo socket: client TCP giành kết nối tới server TCP • Khi nhận được sự liên lạc của client, server TCP tạo một socket mới cho tiến trình server để giao tiếp với client – Cho phép server nói chuyện với nhiều client – Giá trị source port dùng để phân biệt các client (chi tiết hơn trong chương 3) TCP cung cấp dịch vụ truyền tin cậy các byte giữa client và server Góc nhìn ứng dụng 1-84 Ví dụ: C client (TCP) /* client.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấu trúc chứa 1 địa chỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char Sentence[128]; char modifiedSentence[128]; host = argv[1]; port = atoi(argv[2]); clientSocket = socket(PF_INET, SOCK_STREAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */ memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); connect(clientSocket, (struct sockaddr *)&sad, sizeof(sad)); Tạo client socket, Kết nối tới server 1-85 Ví dụ: C client (TCP) (tiếp) gets(Sentence); n=write(clientSocket, Sentence, strlen(Sentence)+1); n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence printf(“TỪ SERVER: %s\n”, modifiedSentence); close(clientSocket); } Đọc input stream từ user Gửi tới server Đọc từ server Đóng kết nối 1-86 Ví dụ: C server (TCP) /* server.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ struct sockaddr_in cad; int welcomeSocket, connectionSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char clientSentence[128]; char capitalizedSentence[128]; port = atoi(argv[1]); welcomeSocket = socket(PF_INET, SOCK_STREAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP address */ sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */ bind(welcomeSocket, (struct sockaddr *)&sad, sizeof(sad)); Tạo một socket chờ tại một cổng & Gắn với một địa chỉ cục bộ 1-87 Ví dụ: C server (TCP) (tiếp) /* Chỉ định số client lớn nhất được xếp hàng */ listen(welcomeSocket, 10) while(1) { connectionSocket=accept(welcomeSocket, (struct sockaddr *)&cad, &alen); n=read(connectionSocket, clientSentence, sizeof(clientSentence)); /* Chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/ n=write(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1); close(connectionSocket); } } Đưa kết quả ra socket Kết thúc vòng lặp While, Quay trở lại và đợi một kết nối client khác Đợi client liên lạc 1-88 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-89 Lập trình Socket với UDP UDP: Không kết nối giữa client và server • Không bắt tay • Bên gửi chỉ ra địa chỉ IP và cổng của bên nhận cho mỗi gói tin • Server phải tìm địa chỉ IP, cổng của bên gửi trong gói tin đã nhận UDP: dữ liệu đã truyền có thể nhận không theo thứ tự hoặc bị mất Góc nhìn ứng dụng UDP cung cấp dịch vụ truyền không tin cậy một nhóm các byte (“datagrams”) giữa client và server 1-90 Tương tác giữa client socket và server socket: UDP Đóng clientSocket Server (đang chạy trên hostid) Đọc trả lời từ clientSocket Tạo socket, clientSocket = DatagramSocket() Client Tạo, địa chỉ (hostid, port=x, Gửi yêu cầu datagram sử dụng clientSocket Tạo socket, Cổng=x, đối với gói tin đến: serverSocket = DatagramSocket() Đọc yêu cầu từ serverSocket Ghi trả lời ra serverSocket chỉ định địa chỉ host của client và giá trị cổng 1-91 Ví dụ: C client (UDP) /* client.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char Sentence[128]; char modifiedSentence[128]; host = argv[1]; port = atoi(argv[2]); clientSocket = socket(PF_INET, SOCK_DGRAM, 0); /* xác định địa chỉ của server */ memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */ memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length); Tạo client socket, Không kết nối tới server 1-92 Ví dụ: C client (UDP) (tiếp) gets(Sentence); addr_len =sizeof(struct sockaddr); n=sendto(clientSocket, Sentence, strlen(Sentence)+1, (struct sockaddr *) &sad, addr_len); n=recvfrom(clientSocket, modifiedSentence, sizeof(modifiedSentence). (struct sockaddr *) &sad, &addr_len); printf(“TỪ SERVER: %s\n”,modifiedSentence); close(clientSocket); } Đọc input stream từ user Gửi tới server Đọc từ server Đóng kết nối 1-93 Ví dụ: C server (UDP) /* server.c */ void main(int argc, char *argv[]) { struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ struct sockaddr_in cad; int serverSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */ char clientSentence[128]; char capitalizedSentence[128]; port = atoi(argv[1]); serverSocket = socket(PF_INET, SOCK_DGRAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP cục bộ */ sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */ bind(serverSocket, (struct sockaddr *)&sad, sizeof(sad)); Tạo socket chờ ở cổng & Gắn với một địa chỉ cục bộ 1-94 Ví dụ: C server (UDP) (tiếp) while(1) { n=recvfrom(serverSocket, clientSentence, sizeof(clientSentence), 0 (struct sockaddr *) &cad, &addr_len ); /* chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/ n=sendto(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1,0 (struct sockaddr *) &cad, &addr_len); close(connectionSocket); } } Ghi kết quả ra socket Kết thúc vòng lặp While, quay trở lại và đợi kết nối client khác Nhận bản tin từ các client 1-95 Chương 2: Tầng ứng dụng 2.1 Nguyên tắc của các ứng dụng mạng 2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P 2.7 Lập trình Socket với TCP 2.8 Lập trình Socket với UDP 2.9 Xây dựng Web Server 1-96 Xây dựng một Web server đơn giản Điều khiển một yêu cầu HTTP Chấp nhận yêu cầu Phân tích header Giành file đã yêu cầu từ hệ thống file của server Tạo bản tin trả lời HTTP: header lines + file Gửi trả lời cho client Sau khi tạo server, có thể yêu cầu file sử dụng một trình duyệt (ví dụ IE explorer) 1-97 Chương 2: Tổng kết Các kiến trúc ứng dụng Client-Server P2P Hybrid Các yêu cầu ứng dụng: Tính tin cậy, băng thông, độ trễ Mô hình dịch vụ giao vận của Internet Tin cậy, hướng kết nối Không tin cậy, datagrams: UDP Nội dung đã học: Ứng dụng mạng Các giao thức cụ thể: HTTP FTP SMTP, POP, IMAP DNS Lập trình socket 1-98 Chương 2: Tổng kết Trao đổi bản tin yêu cầu/bản tin trả lời: Client yêu cầu thông tin hoặc dịch vụ Server gửi dữ liệu trả lời, mã trạng thái Định dạng bản tin: Header: Các trường mang thông tin về Data Data: thông tin truyền thông Quan trọng: đã học về các giao thức Bản tin dữ liệu và bản tin điều khiển in-band, out-of-band Tập chung (centralized) và không tập chung (decentralized) Không hướng trạng thái (stateless) và hướng trạng thái (stateful) Truyền bản tin kiểu tin cậy (reliable) và không tin cậy (unreliable) Sự phức tạp tại network edge
File đính kèm:
- giao_trinh_mang_may_tinh_chuong_2_tang_ung_dung.pdf