Bài giảng Mạng máy tính - Chương 2: Lớp Application

pdf 108 trang ngocly 1030
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: Lớp Application", để 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:

  • pdfbai_giang_mang_may_tinh_chuong_2_lop_application.pdf

Nội dung text: Bài giảng Mạng máy tính - Chương 2: Lớp Application

  1. Chương 2 Lớp Application Computer Networking: A Top Down Approach Featuring the Internet, 3rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. Slide này được biên dịch sang tiếng Việt theo sự cho phép của các tác giả All material copyright 1996-2006 J.F Kurose and K.W. Ross, All Rights Reserved Lớp Application 1
  2. Chương 2: Nội dung trình bày ˆ 2.1 Các nguyên lý của ˆ 2.6 Chia sẻ file P2P ứng dụng mạng ˆ 2.7 Lập trình socket ˆ 2.2 Web và HTTP vớiTCP ˆ 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 một Web ˆ 2.5 DNS server Lớp Application 2
  3. Chương 2: Lớp Application Mục tiêu: ˆ Nghiên cứu giao thức ˆ Khái niệm, các khía thông qua xem xét cạnh hiện thực của một số giao thức lớp các giao thức ứng application dụng mạng ™ HTTP ™ Các mô hình dịch ™ FTP vụ lớp transport ™ SMTP / POP3 / IMAP ™ DNS ™ Mô hình client- server ˆ Lập trình ứng dụng ™ Mô hình peer-to-peer mạng ™ socket API Lớp Application 3
  4. Một sốứng dụng mạng ˆ E-mail ˆ Điện thoại Internet ˆ Web ˆ Hội thảo video thời ˆ Tin nhắn nhanh gian thực ˆ Đăng nhập từ xa ˆ Tính toán lớn, tính toán song song ˆ Chia sẻ file P2P ˆ Trò chơi nhiều người trên mạng ˆ Streaming các video clips Lớp Application 4
  5. Tạo một ứng dụng mạng Viết chương trình để: application transport ™ network chạy trên các hệ thống đầu data link cuối khác, và physical ™ truyền thông qua mạng ™ Ví dụ: Web: phần mềm Web server truyền thông với phần mềm trình duyệt Phần mềm nhỏ viết cho các thiết bị trung tâm mạng ™ application các thiết bị trung tâm mạng application transport không chạy các mã ứng dụng transport network network data link ủ ườ data link physical c a ng i dùng physical ™ ứng dụng trên các hệ thống đầu cuối cho phép phát triển ứng dụng nhanh, phổ biến Lớp Application 5
  6. 2.1 Các nguyên lý của ứng dụng mạng Lớp Application 6
  7. Các kiến trúc của ứng dụng ˆ Client-server ˆ Peer-to-peer (P2P) ˆ Lai giữa client-server và P2P Lớp Application 7
  8. Kiến trúc client-server server: ™ host luôn hoạt động ™ địa chỉ IP cố định ™ nhóm các server để chia sẻ công việc clients: ™ truyền thông với server ™ có thể kết nối không liên tục ™ có thể có địa chỉ IP thay đổi ™ không truyền thông trực tiếp với client khác Lớp Application 8
  9. Kiến trúc P2P thuần túy ˆ không có server luôn hoạt động ˆ truyền thông trực tiếp với hệ thống đầu cuối bất kỳ ˆ các điểm kết nối không liên tục và thay đổi địa chỉ IP ˆ Ví dụ: Gnutella Độ linh hoạt cao nhưng khó quản lý Lớp Application 9
  10. Lai giữa client-server và P2P Skype ™ ứng dụng điện thoại Internet ™ Tìm địa chỉ của thành viên ở xa: server trung tâm ™ Kết nối trực tiếp Client-client (không thông qua server) Tin nhắn nhanh ™ Chat giữa 2 user là P2P ™ Mô hình client-server: • User đăng ký địa chỉ IP của họ với server trung tâm khi trực tuyến • User tiếp xúc với server trung tâm để tìm địa chỉ IP của bạn Lớp Application 10
  11. Tiến trình truyền thông Tiến trình: chương trình Tiến trình Client: tiến chạy bên trong 1 host. trình khởi tạo truyền ˆ trong cùng host, 2 tiến thông trình truyền thông dùng Tiến trình Server: tiến truyền thông nội bộ (do trình chờ để được tiếp hệ điều hành xác định). xúc ˆ các tiến trình trong các host khác nhau truyền ˆ Chú ý: các ứng dụng với thông bằng cách trao kiến trúc P2P có cả các đổi các thông điệp tiến trình client và server. Lớp Application 11
  12. Sockets Host / host / ˆ các tiến trình gửi/nhận server server các thông điệp đến/từ socket của nó điều khiển bởi người ˆ socket tương tự như cửa process phát triển process ứng dụng ™ tiến trình gửi đẩy thông socket socket điệp ra ngoài cửa TCP với TCP với bộ đệm, Internet bộ đệm, ™ ế ậ ụ ộ ti n trình nh n ph thu c các biến các biến vào hạ tầng lưu thông mang thông điệp đến socket thích ợ điều khiển h p bởi hệ điều hành ˆ API: (1) lựa chọn giao thức vận chuyển; (2) khả năng chỉnh sửa một vài tham số (xem phần sau) Lớp Application 12
  13. Tiến trình định địa chỉ ˆ để nhận được thông ˆ Nhân dạng bao gồm cả điệp, tiến trình phải có địa chỉ IP và các số cổng nhân dạng (identifier) (port) liên kết với tiến ˆ thiết bị host phải có địa trình trên host. chỉ IP duy nhất ˆ Ví dụ về số port: ˆ Địa chỉ IP mà trên đó ™ HTTP server: 80 tiến trình đang chạy có ™ Mail server: 25 đủ để nhận dạng tiến ˆ Để gửi thông điệp HTTP trình? cho web server ™ KHÔNG, nhiều tiến trình gaia.cs.umass.edu : có thể chạy trên cùng 1 ™ IP address: 128.119.245.12 host ™ Port number: 80 Lớp Application 13
  14. Định nghĩa giao thức lớp ứng dụng ˆ các kiểu của trao đổi Các giao thức Public- thông điệp domain: ™ ụ ầ ứ Ví d : yêu c u, đáp ng ˆ Định nghĩa trong RFC ˆ Cú pháp thông điệp: ˆ Cho phép cộng tác ™ Các trường nào trong thông điệp và làm sao mô ˆ Ví dụ: HTTP, SMTP tả? Các giao thức độc quyền: ˆ Ngữ nghĩa thông điệp ˆ ụ ™ Ý nghĩa của thông tin Ví d : KaZaA trong các trường ˆ Các quy tắc để khi nào và làm sao các tiến trình gửi và đáp ứng các thông điệp Lớp Application 14
  15. Dịch vụ vận chuyển nào ứng dụng không cần Mất mát dữ liệu Bandwidth (băng thông) ˆ một sốứng dụng (vd: ˆ một sốứng dụng (vd: đa ả ị ỗ audio) có kh năng ch u l i phương tiện) yêu cầu ˆ các ứng dụng khác (vd: băng thông để đạt hiệu ề ầ truy n file, telnet) yêu c u quả dữ liệu tin cậy 100% ˆ các ứng dụng khác mềm dẻo hơn có thể dùng bất ị Đ nh thì kỳ băng thông nào cũng ˆ một sốứng dụng (vd: được điện thoại Internet, trò chơi tương tác) yêu cầu độ trễ thấp để đạt hiệu quả Lớp Application 15
  16. Một số yêu cầu đối với các ứng dụng phổ biến Application Data loss Bandwidth Time Sensitive Truyền file không mềm dẻo không e-mail không mềm dẻo không Web Không mềm dẻo không audio/video chịu lỗi audio: 5kbps-1Mbps có, 100 mili giây thời gian thực video:10kbps-5Mbps audio/video đã lưu chịu lỗi Như trên có, một vài giây Trò chơi tương tác chịu lỗi Một vài kbps có, 100 mili giây Tin nhắn nhanh không mềm dẻo Có và không Lớp Application 16
  17. Các dịch vụ giao thức Internet transport TCP: UDP: ˆ connection-oriented: cần thiết ˆ truyền dữ liệu không tin lập tiến trình giữa client và cậy giữa gửi và nhận server ˆ Không hỗ trợ: thiết lập kết ˆ Vận chuyển tin cậy: giữa tiến nối, tin cậy, điều khiển trình gửi và nhận luồng, điều khiển tắc nghẽn, ˆ Điều khiển luồng: người gửi sẽ định thì, bảo đảm băng không lấn át người nhận thông tối thiểu ˆ Điều khiển tắc nghẽn: điều tiết người gửi khi mạng quá tải Thế thì sinh ra UDP để làm ˆ Không hỗ trợ: định thì, bảo gì? đảm băng thông tối thiểu Lớp Application 17
  18. Các giao thức lớp application, transport Giao thức lớp Giao thức dưới lớp Application Application transport SMTP [RFC 2821] e-mail Telnet [RFC 854] TCP Truy cập terminal từ xa HTTP [RFC 2616] TCP Web FTP [RFC 959] TCP Truyền file độc quyền TCP streaming multimedia (vd: RealNetworks) TCP / UDP độc quyền Điện thoại Internet (vd: Vonage,Dialpad) UDP Lớp Application 18
  19. 2.2 Web và HTTP Lớp Application 19
  20. Web và HTTP Một số thuật ngữ chuyên môn ˆ Web page (trang Web) bao gồm các objects (đối tượng) ˆ Đối tượng có thể là file HTML, hình ảnh JPEG image, Java applet, file audio, ˆ Trang Web file HTML cơ bản sẽ chứa một số đối tượng có tham chiếu ˆ Mỗi đối tượng có thể định địa chỉ bằng một URL ˆ Ví dụ URL: www.someschool.edu/someDept/pic.gif Tên host Tên đường dẫn Lớp Application 20
  21. Tổng quan HTTP HTTP: hypertext Y transfer protocol êu cầu ˆ HT Giao thức lớp ứng dụng của PC chạy Đá TP p ứ Explorer ng Web HT TP ˆ Mô hình client/server ™ Client: trình duyệt yêu P TT cầu, nhận và hiển thị các ầu H c TP Server êu T đối tượng Web Y g H chạy ứn p Apache Web ™ Server: Web server gửi Đá server các đối tượng đáp ứng cho yêu cầu Mac chạy ˆ HTTP 1.0: RFC 1945 Navigator ˆ HTTP 1.1: RFC 2068 Lớp Application 21
  22. Tổng quan HTTP Dùng TCP: HTTP là “không trạng ˆ client khởi tạo kết nối TCP thái” (tạo socket) đến server, port ˆ server không giữ thông 80 tin về các yêu cầu trước đócủa client ˆ ấ ậ ế ố server ch p nh n k t n i TCP vấn đề liên quan ừ t client Các giao thức nào giữ “trạng ˆ Các thông điệp HTTP (thông thái” là phức tạp! ệ ứ ớ đi p giao th c l p ˆ lịch sử quá khứ (trạng thái) ổ ữ application) trao đ i gi a phải giữ lại trình duyệt (HTTP client) và ˆ nếu server/client bị sự cố, Web server (HTTP server) cách nhìn của nó về “trạng ˆ ế ố Đóng k t n i TCP thái” mâu thuẫn, phải được điều chỉnh Lớp Application 22
  23. Các kết nối HTTP HTTP không bền vững HTTP bền vững ˆ Chỉ có tối đa là 1 đối ˆ Nhiều đối tượng có thể tượng được gửi qua 1 được gửi qua 1 kết nối kết nối TCP. TCP đơn giữa client và ˆ HTTP/1.0 dùng HTTP server. không bền vững ˆ HTTP/1.1 mặc nhiên dùng HTTP bền vững Lớp Application 23
  24. HTTP không bền vững (chứa text, Giả sử user nhập vào URL như sau: tham chiếu đến www.someSchool.edu/someDepartment/home.index 10 hình) 1a. HTTP client khởi tạo kết nối TCP connection đến HTTP 1b. HTTP server tại host server (tiến trình) tại www.someSchool.edu ờ ế www.someSchool.edu trên port ch k t nối TCP tại port 80. “chấp 80 nhận” kết nối, thông báo cho client 2. HTTP client gửi HTTP thông điệp yêu cầu (chứa URL) vào trong socket kết nối TCP. 3. HTTP server nhận thông điệp Thông điệp chỉ rằng client yêu cầu, định dạng thông điệp muốn các đối tượng đáp ứng chứa đối tượng được someDepartment/home.index yêu cầu và gửi thông điệp vào trong socket của nó Thời gian Lớp Application 24
  25. HTTP không bền vững 4. HTTP server đóng kết nối TCP. 5. HTTP client nhận thông điệp đáp ứng chứa file HTML, hiển thị nó. Phân tích cú pháp html file, tìm ra 1 tham chiếu đến đối tượng jpeg time 6. Lặp lại các bước từ 1-5 cho các đối tượng jpeg khác Lớp Application 25
  26. HTTP không bền vững: thời gian đáp ứng Định nghĩa RTT: thời gian để gửi một gói nhỏ đi từ client đến server và quay lại. khởi tạo kết nối Thời gian đáp ứng: TCP RTT ˆ Một RTT để khởi tạo kết yêu cầu Thời nối TCP file gian RTT truyền ˆ Một RTT cho yêu cầu file HTTP và một vài byte đầu nhận file tiên của đáp ứng HTTP ượ ả ề đ c tr v Thời gian Thời gian ˆ Thời gian truyền file Tổng cộng = 2RTT+ Thời gian truyền file Lớp Application 26
  27. HTTP bền vững Vấn đề với HTTP không bền Bền vững không có pipelining: vững: ˆ client phát ra yêu cầu mới ˆ Yêu cầu 2 RTT mỗi đối tượng chỉ khi đáp ứng trước đó đ㠈 Hệ điều hành liên quan đến nhận xong mỗi kết nối TCP ˆ 1 RTT cho mỗi đối tượng ˆ Các trình duyệt thường mở tham chiếu song song các kết nối TCP để đem về các tham chiếu đến Bền vững có pipelining: các đối tượng ˆ mặc nhiên trong HTTP/1.1 HTTP bền vững ˆ client gửi yêu cầu ngay sau ˆ server bỏ kết nối sau khi mở khi gặp một đối tượng tham để gửi đáp ứng leaves chiếu ˆ các thông điệp HTTP của ˆ ít nhất 1 RTT cho tất cả đối tiến trình con cùng mô hình tượng tham chiếu client/server gửi thông qua kết nối mở Lớp Application 27
  28. Thông điệp yêu cầu HTTP ˆ 2 kiểu thông điệp HTTP: yêu cầu, đáp ứng ˆ 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, GET /somedir/page.html HTTP/1.1 HEAD) Host: www.someschool.edu User-agent: Mozilla/4.0 các dòng Connection: close header Accept-language:fr ự ố ký t xu ng dòng, (thêm một 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 Lớp Application 28
  29. HTTP thông điệp yêu cầu: dạng thức tổng quát Lớp Application 29
  30. Tải lên form input Phương pháp Post: ˆ Web page thường chứa form input Phương pháp URL: ˆ Input được tải lên vào ˆ Dùng GET server trong thân thực ˆ Input được tải lên thể trong trường URL của dòng yêu cầu: www.somesite.com/animalsearch?monkeys&banana Lớp Application 30
  31. Các kiểu phương pháp HTTP/1.0 HTTP/1.1 ˆ GET ˆ GET, POST, HEAD ˆ POST ˆ PUT ˆ HEAD ™ tải lên file trong thân thực thể đến đường dẫn ™ hỏi server để mặc đối được xác định trong tượng yêu cầu mà không trường URL đáp ứng ˆ DELETE ™ xóa file được xác định trong trường URL Lớp Application 31
  32. Thông điệp đáp ứng HTTP dòng trạng thái (giao thức mã trạng thái HTTP/1.1 200 OK cụm từ trạng thái) Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) các dòng Last-Modified: Mon, 22 Jun 1998 header Content-Length: 6821 Content-Type: text/html data data data data data Dữ liệu, vd: file HTML yêu cầu Lớp Application 32
  33. Các mã trạng thái đáp ứng HTTP Trong dòng đầu tiên của thông điệp đáp ứng server-> client. Một số mẫu: 200 OK ™ yêu cầu thành công, đối tượng yêu cầu nằm ở phía sau thông điệp này 301 Moved Permanently ™ đối tượng yêu cầu đã di chuyển, vị trí mới xác định ở phía sau thông điệp này (Location:) 400 Bad Request ™ thông điệp yêu cầu server không hiểu 404 Not Found ™ tài liệu yêu cầu không có trong server 505 HTTP Version Not Supported Lớp Application 33
  34. Kiểm tra HTTP (phía client) 1. Telnet đến Web server ưa thích của bạn: telnet cis.poly.edu 80 Mở kết nối TCP ở port 80 (port HTTP server mặc nhiên) tại cis.poly.edu. Mọi thứ nhập vào gửi đến ở port 80 tại cis.poly.edu 2. Nhập vào yêu cầu trong lệnh GET HTTP: GET /~ross/ HTTP/1.1 Do đánh lệnh này (enter 2 lần), Host: cis.poly.edu bạn đã gửi yêu cầu GET tối thiểu (nhưng đầy đủ) đến HTTP server 3. Xem thông điệp đáp ứng gửi từ HTTP server! Lớp Application 34
  35. Khảo sát hành động của HTTP ˆ telnet ˆ Ethereal Lớp Application 35
  36. Trạng thái User-server: các cookie Nhiều Web sites dùng Ví dụ: các cookie ™ Susan truy cập Internet 4 thành phần: luôn từ một PC ™ She lần đầu tiên vào một 1) cookie header line của e-commerce site xác thông điệp đáp ứng định HTTP ™ Khi yêu cầu khởi tạo 2) cookie header line HTTP đến site, site tạo trong thông điệp đáp một ID duy nhất và tạo ứng HTTP một điểm đăng nhập ư 3) cookie file l u trong trong cơ sở dữ liệu back- ủ ả host c a user, qu n lý end cho ID đó bởi trình duyệt của user 4) cơ sở dữ liệu back-end tại Web site Lớp Application 36
  37. các cookie: lưu giữ “trạng thái” (tt.) client server đ iểm Cookie file usual http request msg dữ đ server li ăn ệu g k bac ý usual http response + tạo ID k tro ebay: 8734 en ng Set-cookie: 1678 1678 cho user d cơ sở Cookie file usual http request msg amazon: 1678 cookie- p cookie: 1678 y cậ ebay: 8734 specific tru usual http response msg action ập c y một tuần sau: u tr usual http request msg Cookie file cookie- cookie: 1678 amazon: 1678 spectific ebay: 8734 usual http response msg action Lớp Application 37
  38. các cookie (tiếp) ngoài ra Các cookie đem lại: các cookie và sự riêng tư: ˆ sự cấp phép ˆ các cookie cho phép ˆ giỏ mua hàng các site biết nhiều hơn ˆ các khuyến cáo về bạn ˆ trạng thái phiên làm việc ˆ bạn có thể cung cấp tên của user (Web e-mail) và e-mail cho sites Làm thế nào để giữ “trạng thái”: ˆ các thời điểm kết thúc giao thức: bảo trì trạng thái tại sender/receiver thông qua nhiều giao tác ˆ các cookie: trạng thái mang các thông điệp http Lớp Application 38
  39. Web caches (proxy server) Mục tiêu: thỏa mãn yêu cầu của client không cần liên quan đến server nguồn ˆ user thiết lập trình duyệt: server truy cập Web thông qua nguồn cache H Proxy TT ầu ˆ trình duyệt gửi tất cả yêu P server u c yêu yê clientHT cầ TP ng cầu HTTP cho cache TP u HT p ứ đá đá p ứ TP ™ đối tượng trong cache: ng HT ầu cache trả về đối tượng u c yê g ™ ngược lại cache yêu cầu TP ứn HT áp đối tượng từ server P đ TT nguồn, sau đótrả về cho H client client server nguồn Lớp Application 39
  40. Web caching ˆ Cache hoạt động tại cả Tại sao dùng Web client và server caching? ˆ ể ượ Tiêu bi u cache đ c cài ˆ Giảm thời gian đáp ứng cho ặ ở ườ ọ đ t b i ISP (tr ng h c, yêu cầu của client công ty, ISP riêng) ˆ Giảm lưu thông trên liên kết truy cập ˆ Internet rất ngờ nghệch với caches: cho phép những người cung cấp nội dung nghèo nàn phân phát hiệu quả nội dung đó(cũng vậy đối với P2P file sharing) Lớp Application 40
  41. Ví dụ Caching servers ả ử Gi s nguồn ˆ kích thước trung bình đối tượng= 100,000 bits Internet công cộng ˆ tốc độ trung bình yêu cầu từ trình duyệt đến server = 15/s ˆ độ trễ từ router nơi gửi yêu cầu đến server nguồn rồi quay 1.5 Mbps liên kết truy cập lại = 2 s network gửi Kết quả yêu cầu 10 Mbps LAN ˆ độ khả dụng của LAN = 15% ˆ độ khả dụng trên liên kết truy cập= 100% ˆ tổng thời gian trễ = trễ Internet + cache nơi gửi trễ truy cập+ trễ LAN = 2 s + các yêu cầu phút+ mili s Lớp Application 41
  42. Ví dụ Caching (tiếp) servers ả ể Gi i pháp có th nguồn ˆ tăng băng thông truy cập lên, ví dụ 10 Mbps Internet công cộng Kết quả ˆ độ khả dụng của LAN = 15% ˆ độ khả dụng trên liên kết truy cập = 15% 10 Mbps liên kết truy cập ˆ tổng thời gian trễ = trễ Internet + trễ truy cập+ trễ LAN = 2 s + mili network gửi yêu cầu s + mili s 10 Mbps LAN ˆ thường tăng chi phí cache nơi gửi yêu cầu Lớp Application 42
  43. Ví dụ Caching (tiếp) servers cài đặt cache nguồn ˆ tốc độ hỗ trợ là 0.4 Internet kết quả công cộng ˆ 40% yêu cầu sẽ được thỏa mãn hầu như ngay lập tức ˆ 60% yêu cầu sẽ được thỏa mãn bởi server nguồn 1.5 Mbps liên kết truy cập ˆ độ khả dụng trên liên kết truy cập giảm đến 60%, do network gửi yêu cầu trễ không đáng kể (vd 10 mili 10 Mbps LAN s) ˆ tổng thời gian trễ = trễ Internet + trễ truy cập+ trễ LAN = 0.6*(2.01) s + cache nơi 0.4*mili s < 1.4 s gửi yêu cầu Lớp Application 43
  44. GET có điều kiện ˆ Mục tiêu: không gửi đối tượng cache server nếu cache đã cập nhật HTTP request msg ˆ cache: xác định ngày của bản If-modified-since: ố ượ đ i t ng sao cache trong yêu cầu không HTTP: sửa đổi If-modified-since: HTTP response HTTP/1.0 304 Not Modified ˆ server: đáp ứng không chứa đối tượng nếu bản sao cache đã cập nhật: HTTP request msg If-modified-since: HTTP/1.0 304 Not đối tượng Modified có HTTP response sửa đổi HTTP/1.0 200 OK Lớp Application 44
  45. 2.3 FTP Lớp Application 45
  46. FTP: giao thức truyền file giao diện truyền file FTP FTP FTP client server user user tại host hệ thống hệ thống file file từ xa cục bộ ˆ truyền file đến/từ host từ xa ˆ mô hình client/server ™ client: phía khởi tạo truyền (đến/từ host ở xa) ™ server: host ở xa ˆ ftp: RFC 959 ˆ ftp server: port 21 Lớp Application 46
  47. FTP: kết nối dữ liệu, điều khiển riêng biệt kết nối điều khiển TCP ˆ FTP client tiếp xúc FTP port 21 server tại port 21, xác định TCP như giao thức transport kết nối dữ liệu TCP ˆ Client lấy giấy phép thông qua FTP port 20 FTP kết nối điều khiển client server ˆ Client xem thư mục ở xa bằng ˆ ở ế ố ữ ệ việc gửi các lệnh thông qua kết Server m k t n i d li u TCP ể ề nối điều khiển. khác đ truy n file khác ˆ ề ể ế ố ˆ Khi server nhận lệnh truyền Đi u khi n k t n i: “out of file, server mở kết nối TCP band” thứ 2 (cho file) đến client ˆ FTP server giữ lại “trạng ư ụ ệ ấ ˆ Sau khi truyền 1 file, server thái”: th m c hi n hành, gi y ướ đóng kết nối dữ liệu phép tr c đó Lớp Application 47
  48. Các lệnh, phản hồi FTP Ví dụ các lệnh: Ví dụ mã trả về ˆ gửi như văn bản ASCII trên ˆ mã trạng thái và cụm (như kênh điều khiển HTTP) ˆ USER username ˆ 331 Username OK, ˆ PASS password password required ˆ 125 data connection ˆ LIST trả về danh sách của already open; file trong thư mục hiện transfer starting hành ˆ 425 Can’t open data ˆ RETR filename trích chọn connection (lấy) file ˆ 452 Error writing ˆ STOR filename lưu (đặt) file file vào trong host ở xa Lớp Application 48
  49. 2.4 Electronic Mail Lớp Application 49
  50. outgoing Electronic Mail hàng message hộp thư user user 3 thành phần quan trọng: agent ˆ user agents mail user server ˆ mail servers agent ˆ simple mail transfer SMTP mail protocol: SMTP server user SMTP agent User Agent ˆ còn gọi là “mail reader” SMTP user ˆ viết, sửa đổi, đọc các thông mail server agent điệp mail ˆ Ví dụ: Eudora, Outlook, elm, user Netscape Messenger agent user ˆ các thông điệp đi và đến agent được lưu trên server Lớp Application 50
  51. Electronic Mail: mail servers user Mail Servers agent ˆ mailbox (hộp thư) chứa các mail user thông điệp đến user server agent ˆ hàng thông điệp cho các SMTP thông điệp email ra ngoài mail (chuẩn bị gửi) server user agent ˆ giao thức SMTP giữa các SMTP mail servers để gửi các SMTP thông điệp email mail user agent ™ client: mail server gửi server ™ “server”: mail server user nhận agent user agent Lớp Application 51
  52. Electronic Mail: SMTP [RFC 2821] ˆ dùng TCP để truyền tin cậy thông điệp email từ client đến server trên port 25 ˆ truyền trực tiếp: server gửi đến server nhận ˆ 3 kênh truyền ™ bắt tay (chào hỏi) ™ truyền thông điệp ™ đóng ˆ tương tác lệnh/phản hồi ™ lệnh: văn bản ASCII ™ phản hồi: mã trạng thái và cụm ˆ các thông điệp phải ở dạng mã ASCII 7-bit Lớp Application 52
  53. Tình huống: Alice gửi cho Bob 1) Alice dùng UA viết thông 4) SMTP client gửi thông điệp điệp và “gửi đến” của Alice trên kết nối TCP bob@someschool.edu 5) mail server của Bob đặt 2) UA của Alice gửi thông điệp thông điệp vào hộp thư của của cô ấy đến mail server; Bob thông điệp được gia nhập 6) Bob kích hoạt trình user vào hàng đợi agent đọc thông điệp 3) Phía Client của SMTP mở kết nối TCP với mail server của Bob 1 mail mail user user server server agent agent 2 3 6 4 5 Lớp Application 53
  54. 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 Lớp Application 54
  55. Thử nghiệm tương tác SMTP: ˆ telnet servername 25 ˆ thấy 220 trả lời từ server ˆ nhập các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT lệnh trên cho phép bạn gửi email không cần dùng email client (reader) Lớp Application 55
  56. SMTP ˆ SMTP dùng các kết nối bền So sánh với HTTP: vững ˆ HTTP: kéo ˆ SMTP yêu cầu các thông điệp (header & body) phải ở ˆ SMTP: đẩy ạ ứ d ng th c 7-bit ASCII ˆ tất cả đều có tương tác ˆ SMTP server dùng lệnh/đáp ứng, các mã trạng CRLF.CRLF xác định kết thái ASCII thúc thông điệp ˆ HTTP: mỗi đối tượng được đóng kín trong thông điệp đáp ứng của nó ˆ SMTP: nhiều đối tượng được gửi trong thông điệp nhiều phần Lớp Application 56
  57. Dạng thức thông điệp email SMTP: giao thức cho trao đổi các thông điệp email header dòng RFC 822: chuẩn cho dạng thức trống văn bản: ˆ các dòng header, ví dụ: ™ To: body ™ From: ™ Subject: khác với các lệnh SMTP! ˆ body ™ “thông điệp”, chỉ có các ký tự ASCII Lớp Application 57
  58. Dạng thức thông điệp: các mở rộng multimedia ˆ MIME: mở rộng email multimedia, RFC 2045, 2056 ˆ các dòng bổ sung trong header của thông điệp khai báo kiểu nội dung MIME From: alice@crepes.fr phiên bản MIME To: bob@hamburger.edu Subject: Picture of yummy crepe. phương pháp dùng MIME-Version: 1.0 để mã hóa dữ liệu Content-Transfer-Encoding: base64 Content-Type: image/jpeg kiểu, kiểu con, khai báo tham số base64 encoded data dữ liệu multimedia base64 encoded data dữ liệu đã mã hóa Lớp Application 58
  59. Các giao thức truy cập email SMTP SMTP giao thức user user agent agent truy cập ủ ườ ậ mail server của người gửi mail server c a ng i nh n ˆ SMTP: truyền dẫn/lưu trữ vào server của người nhận ˆ Giao thức truy cập email: trích xuất từ server ™ POP: Post Office Protocol [RFC 1939] •cấp phép (agent server) và download ™ IMAP: Internet Mail Access Protocol [RFC 1730] •nhiều tính năng (phức tạp hơn) • điều khiển các thông điệp đã lưu trên server ™ HTTP: Hotmail , Yahoo! Mail, Lớp Application 59
  60. ứ Giao th c POP3 S: +OK POP3 server ready C: user bob giai đoạn cấp phép S: +OK C: pass hungry ˆ các lệnh phía client: S: +OK user successfully logged on ™ user: khai báo username C: list ™ pass: password S: 1 498 ˆ các đáp ứng phía server S: 2 912 S: . ™ +OK C: retr 1 ™ -ERR S: giai đoạn giao dịch, client: S: . C: dele 1 ˆ list: liệt kê các số thông C: retr 2 điệp S: ˆ retr: trích xuất thông điệp S: . theo số C: dele 2 C: quit ˆ dele: xóa S: +OK POP3 server signing off ˆ quit Lớp Application 60
  61. POP3 và IMAP nghiên cứu thêm về POP3 IMAP ˆ Ví dụ trước dùng chế ˆ Giữ tất cả thông điệp độ “tải xuống và xóa”. tại 1 vị trí: server ˆ Bob không thể đọc lại ˆ Cho phép user tổ chức email nếu thay đổi các thông điệp theo client dạng thư mục ˆ “tải xuống-và-giữ”: sao ˆ IMAP giữ trạng thái chép các thông điệp xuyên suốt các phiên trên các client khác làm việc: nhau ™ các tên của thư mục và ˆ POP3 không giữ trạng ánh xạ giữa ID của thái của các phiên làm thông điệp và tên thư mục việc Lớp Application 61
  62. 2.5 DNS Lớp Application 62
  63. DNS: Domain Name System Con người: nhiều cách Domain Name System: nhận dạng: ˆ cơ sở dữ liệu phân bố hiện thực ™ SSN, tên, #hộ chiếu theo tổ chức phân cấp của nhiều servers tên Internet hosts, routers: ˆ giao thức lớp application host, ™ ị ỉ đ a ch IP (32 bit) dùng routers, name servers để ị ị ỉ cho các gói đ nh đ a ch truyền thông với các tên phân ™ “tên”, ví dụ: giải (địa chỉ/dịch ra tên) www.yahoo.com – dùng ™ lưu ý: chức năng lõi ở ườ b i con ng i Internet, hiện thực như Ánh xạ giữa địa chỉ IP và giao thức lớp application tên? ™ phức tạp ở “biên” mạng Lớp Application 63
  64. DNS Các dịch vụ DNS Tại sao không tập trung hóa DNS? ˆ Tên Host chuyển thành địa chỉ IP ˆ một điểm chịu lỗi ˆ Bí danh Host ˆ lưu lượng ™ các tên đúng chuẩn và bí ˆ khoảng cách cơ sở dữ liệu danh tập trung ˆ Bí danh Mail server ˆ bảo trì ˆ Tải phân bố ™ Các Web server bản không linh hoạt! sao: tập các địa chỉ IP cho 1 tên đúng chuẩn Lớp Application 64
  65. Cơ sở dữ liệu cấu trúc, phân bố DNS Servers gốc com DNS servers org DNS servers edu DNS servers poly.edu umass.edu yahoo.com pbs.org amazon.com DNS serversDNS servers DNS servers DNS servers DNS servers Client muốn IP cho www.amazon.com: ˆ Client hỏi một server gốc (root) để tìm com DNS server ˆ Client hỏi com DNS server để lấy amazon.com DNS server ˆ Client hỏi amazon.com DNS server để lấy địa chỉ IP của www.amazon.com Lớp Application 65
  66. DNS: các server tên gốc ˆ tiếp xúc qua server tên cục bộ nào không thể phân giải tên ˆ server tên gốc: ™ tiếp xúc server tên có thẩm quyền nếu ánh xạ tên không xác định ™ lấy ánh xạ ™ trả về ánh xạ đến server tên cục bộ a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD k RIPE London (also Amsterdam, g US DoD Vienna, VA 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 name servers gốc trên toàn cầu b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA Lớp Application 66
  67. TLD và Server có thẩm quyền ˆ Các server Top-level domain (TLD) : chịu trách nhiệm cho tên miền com, org, net, edu, và các tên miền quốc gia như uk, fr, ca, jp. ™ Lĩnh vực giáo dục cho edu TLD ˆ Các DNS server có thẩm quyền: DNS server của tổ chức, cung cấp các tên host có thẩm quyền để ánh xạ IP cho server (ví dụ: Web và mail). ™ Không thể duy trì bởi tổ chức hoặc người cung cấp dịch vụ Lớp Application 67
  68. Server tên cục bộ ˆ Không hoàn toàn theo cấu trúc phân cấp ˆ Mỗi ISP (ISP cá nhân, công ty, trường học) có một server cục bộ như vậy. ™ cũng gọi là “server tên mặc nhiên” ˆ Khi một host tạo một truy vấn DNS, truy vấn đó được gửi tới DNS server cục bộ của nó ™ Hoạt động như một proxy, chuyển truy vấn vào cho tổ chức phân cấp Lớp Application 68
  69. Ví dụ DNS server gốc 2 ˆ Host tại cis.poly.edu 3 TLD DNS server muốn địa chỉ IP của 4 gaia.cs.umass.edu 5 DNS server cục bộ dns.poly.edu 7 6 1 8 DNS server có thẩm quyền dns.cs.umass.edu host yêu cầu cis.poly.edu gaia.cs.umass.edu Lớp Application 69
  70. Các truy vấn đệ quy DNS server gốc truy vấn đệ quy: 2 ˆ đẩy trách nhiệm phân 3 ả gi i tên cho server 7 6 tên đã tiếp xúc được TLD DNS server ˆ tải quá nặng? truy vấn tuần tự: DNS server cục bộ dns.poly.edu 5 4 ˆ tên đã tiếp xúc được trả lời với tên của 1 8 server ˆ “Tôi không biết tên DNS server có thẩm quyền đó, nhưng có thể hỏi dns.cs.umass.edu host yêu cầu server này” cis.poly.edu gaia.cs.umass.edu Lớp Application 70
  71. DNS: caching và cập nhật các record ˆ một khi server tên học cách ánh xạ, nó cache ánh xạ ™ điểm đăng nhập cache sẽ thoát ra (biến mất) sau một vài lần ™ TLD servers điển hình sẽ được cache trong các server tên cục bộ •Do đóserver tên gốc sẽ không thường xuyên được truy cập ˆ cơ chế cập nhật/thông báo bên dưới được thiết kế bởi IETF ™ RFC 2136 ™ Lớp Application 71
  72. Các DNS record DNS: cơ sở dữ liệu phân bố lưu trữ các record tài nguyên (RR) dạng thức RR: (name, value, type, ttl) ˆ Type=A ˆ Type=CNAME ™ name là tên host ™ name là bí danh của tên ™ value là địa chỉ IP “chuẩn” (tên thực) www.ibm.com là tên thực ˆ Type=NS servereast.backup2.ibm.com ™ name là tên miền (vd: ™ value là tên chuẩn foo.com) ™ value là tên host của ˆ Type=MX server tên có thẩm quyền ™ value là tên của email cho tên miền này server liên kết với name Lớp Application 72
  73. Giao thức và các thông điệp DNS Giao thức DNS: các thông điệp truy vấn và trả lời, đều có cùng dạng thức thông điệp header thông điệp ˆ identification: 16 bit # cho truy vấn, trả lời cho truy vấn dùng cùng # ˆ flags: ™ truy vấn hoặc trả lời đệ quy mong chờ ™ đệ quy sẵn sàng ™ trả lời được cấp phép Lớp Application 73
  74. Giao thức và các thông điệp DNS các trường Name, type cho 1 truy vấn các RR trong đáp ứng cho truy vấn các record cho các server có thẩm quyền thông tin “hữu ích” bổ sung có thể sẽ dùng Lớp Application 74
  75. Chèn các record vào DNS ˆ Ví dụ: mới tạo “Network Utopia” ˆ Đăng ký tên miền networkuptopia.com tại một registrar (ví dụ: Network Solutions) ™ Cần cung cấp cho registrar tên và địa chỉ IP của server tên có thẩm quyền (primary và secondary) của bạn ™ Registrar chèn 2 RR vào trong com TLD server: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) ˆ Đưa vào trong server có thẩm quyền record Type A cho www.networkuptopia.com và bản ghi Type MX cho networkutopia.com ˆ Làm sao người khác có thể biết được địa chỉ IP Web site của bạn? Lớp Application 75
  76. 2.6 Chia sẻ file P2P Lớp Application 76
  77. Chia sẻ file P2P ˆ Alice chọn 1 trong Ví dụ những peer, là Bob. ˆ ượ ừ ˆ Alice chạy ứng dụng File đ c sao chép t P2P client trên máy máy tính của Bob: tính xách tay của cô HTTP ˆ ả ˆ Kết nối không liên tục Trong khi Alice t i vào Internet; lấy địa xuống, các user khác chỉ IP cho mỗi kết nối tải lên từ Alice. ˆ ả ˆ Hỏi về “Hey Jude” Alice là 1 peer đóng c vai trò Web client và ˆ Ứng dụng sẽ hiển thị Web server tạm thời. những peer khác có bản sao của Hey Jude. Tất cả peer là server = độ linh hoạt cao! Lớp Application 77
  78. P2P: directory tập trung Bob đầu tiên do “Napster” thiết directory server kế trung tâm 1 1) khi peer kết nối, nó peers thông báo cho server 1 trung tâm: 1 3 ™ địa chỉ IP ™ nội dung 2 1 2) Alice truy vấn “Hey Jude” 3) Alice yêu cầu file từ Bob Alice Lớp Application 78
  79. P2P: các vấn đề với directory tập trung ˆ Một điểm chịu lỗi truyền file không tập ˆ Hiện tượng tắc nghẽn trung nhưng tìm kiếm “cổ chai” nội dung thì tập trung ộ ˆ Xâm phạm bản quyền cao đ Lớp Application 79
  80. Tràn ngập truy vấn: Gnutella ˆ hoàn toàn phân bố overlay network: đồ thị ™ không có server tập ˆ có cạnh giữa peer X và trung Y nếu có 1 kết nối TCP ˆ giao thức tên miền ˆ tất cả các peer đang chung hoạt động và các cạnh ˆ nhiều Gnutella client là mạng overlay hiện thực giao thức network ˆ cạnh không phải là một liên kết vật lý ˆ peer sẽ kết nối với < 10 peer lân cận Lớp Application 80
  81. Gnutella: giao thức Truyền File: ˆ ấ Truy v n thông HTTP điệp gửi trên các kết nối TCP đang có Truy vấn ˆ ể peer chuy n thông QueryHit điệp truy vấn n vấ Tr ˆ y uy QueryHit u it v Tr H ấn ry gửi trên đường ue ngược chiều Q Truy vấn QueryHit Tr uy Độ linh hoạt: v ấn hạn chế tràn ngập theo phạm vi Lớp Application 81
  82. Gnutella: hội tụ Peer 1. Hội tụ peer X phải tìm một số peer khác trong Gnutella network: dùng một danh sách các peer dự tuyển 2. X lần lượt thử tạo TCP với các peer trên danh sách cho đến khi kết nối thiết lập được với Y 3. X gửi thông điệp Ping đến Y; Y chuyển thông điệp Ping. 4. Tất cả các peer nhận thông điệp Ping sẽ trả lời bằng thông điệp Pong 5. X nhận được nhiều thông điệp Pong. Nó sau đócó thể thiết lập thêm các kết nối TCP. Peer leaving: xem một số vấn đề mạng gia đình! Lớp Application 82
  83. KaZaA ˆ Mỗi peer là một hoặc được gán thành chỉ huy nhóm ™ TCP kết nối giữa peer và nhóm chỉ huy của nó ™ TCP kết nối giữa một số cặp nhóm chỉ huy. ˆ Nhóm chỉ huy theo dõi nội dung trong tất cả thành viên bên trong ordinary peer group-leader peer neighoring relationships in overlay network Lớp Application 83
  84. KaZaA: Truy vấn ˆ Mỗi file có một băm (hash) hoặc một mô tả ˆ Client gửi từ khóa truy vấn đến nhóm chỉ huy của nó ˆ Nhóm chỉ huy đáp ứng với truy vấn của nhóm: ™ ứng với mỗi so trùng: metadata, hash, địa chỉ IP ˆ Nếu nhóm chỉ huy chuyển truy vấn cho nhóm khác, chúng phản hồi thích hợp ˆ Client sau đóchọn các file để download ™ Các yêu cầu HTTP dùng hash như một nhân dạng gửi đến cho peer quản lý file mong muốn Lớp Application 84
  85. KaZaA: các thủ thuật ˆ Hạn chế khi tải lên đồng thời ˆ Xếp hàng yêu cầu ˆ Khích lệ ưu tiên ˆ tải xuống song song Tìm hiểu thêm thông tin ở: ˆ J. Liang, R. Kumar, K. Ross, “Understanding KaZaA,” (Web site: cis.poly.edu/~ross) Lớp Application 85
  86. 2.7 Lập trình socket vớiTCP (xem thêm slide Lập trình socket) Lớp Application 86
  87. Lập trình socket Mục tiêu: nghiên cứu cách xây dựng ứng dụng truyền thông client/server dùng sockets Socket API socket ˆ đã được giới thiệu trong một giao diện host-cục bộ, BSD4.1 UNIX, 1981 tạo bởi ứng dụng, ˆ rõ ràng tại, sử dụng và giải điều khiển bởi hệ điều hành phóng bởi ứng dụng interface (một “cửa”) ˆ mô hình client/server trong đótiến trình ứng ˆ 2 kiểu dịch vụ lưu thông qua dụng có thể gửi và nhận socket API: các thông điệp đến/từ các tiến trình khác ™ datagram không tin cậy ™ tin cậy, truyền byte theo streaming Lớp Application 87
  88. Lập trình socket dùng TCP Socket: một cánh cửa giữa tiến trình ứng dụng và giao thức transport (UCP hoặc TCP) Dịch vụ TCP: truyền tin cậy các bytes từ một tiến trình đến tiến trình khác điều khiển bởi điều khiển bởi tiến trình tiến trình người phát triển người phát triển ứng dụng ứng dụng socket socket TCP với điều khiển bởi điều khiển bởi TCP với bộ đệm, hệ điều hành hệ điều hành bộ đệm, internet các biến các biến host hoặc host hoặc server server Lớp Application 88
  89. Lập trình socket với TCP Client phải tiếp xúc với server ˆ Khi đã được tiếp xúc bởi ˆ tiến trình server phải chạy client, server TCP tạo socket trước mới cho tiến trình server để ˆ server phải tạo socket (cửa) truyền thông với client mời client đến tiếp xúc ™ cho phép server “nói chuyện” với nhiều client Client tiếp xúc server bằng: ™ số port dùng để phân biệt ˆ tạo socketTCP client cục bộ các client (xem tiếp trong ˆ xác định địa chỉ IP, số port chương 3) của tiến trình server ˆ Khi client tạo socket: client Nhìn dưới góc độứng dụng TCP thiết lập kết nối với TCP cung cấp việc truyền các byte server TCP tin cậy và theo thứ tự giữa client và server Lớp Application 89
  90. Giao tiếp socket Client/server: TCP Server (chạy trên hostid) Client create socket, port=x, for incoming request: welcomeSocket = ServerSocket() TCP wait for incoming create socket, connection request connection setup connect to hostid, port=x connectionSocket = clientSocket = welcomeSocket.accept() Socket() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket Lớp Application 90
  91. Thuật ngữ Stream keyboard monitor ˆ Một stream là một chuỗi các ký tự được “chảy” vào hoặc ra khỏi một tiến trình input stream ˆ Một input stream để chỉ tiến inFromUser Process nguồn vào của một tiến trình trình, vd: bàn phím hoặc Client socket. ˆ Một output stream để chỉ nguồn ra của một tiến trình, output input vd: màn hình hoặc socket. stream stream outToServer inFromServer clientclientSocket TCP socket TCP socket to network from network Lớp Application 91
  92. Lập trình socket dùng TCP Ví dụứng dụng client-server : 1) client đọc các dòng từ input chuẩn (inFromUser stream) , gửi đến server thông qua socket (outToServer stream) 2) server đọc các dòng từ socket 3) server chuyển các dòng thành chữ hoa, gửi ngược trở lại cho client 4) client đọc, in các dòng đã sửa đổi từ socket (inFromServer stream) Lớp Application 92
  93. Ví dụ: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; tạo BufferedReader inFromUser = input stream new BufferedReader(new InputStreamReader(System.in)); tạo client socket, Socket clientSocket = new Socket("hostname", 6789); kết nối vào server tạo DataOutputStream outToServer = output stream new DataOutputStream(clientSocket.getOutputStream()); gắn vào socket Lớp Application 93
  94. Ví dụ: Java client (TCP) tạo BufferedReader inFromServer = input stream new BufferedReader(new gắn vào socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Gửi dòng đến server outToServer.writeBytes(sentence + '\n'); đọc dòng modifiedSentence = inFromServer.readLine(); từ server System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Lớp Application 94
  95. Ví dụ: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; tạo String capitalizedSentence; socket mời tiếp xúc ServerSocket welcomeSocket = new ServerSocket(6789); tại port 6789 while(true) { Chờ, client tiếp cận với Socket connectionSocket = welcomeSocket.accept(); server BufferedReader inFromClient = Tạo input new BufferedReader(new stream, gắn vào InputStreamReader(connectionSocket.getInputStream())); socket Lớp Application 95
  96. Ví dụ: Java server (TCP) Tạo output stream, gắn vào DataOutputStream outToClient = socket new DataOutputStream(connectionSocket.getOutputStream()); Đọc dòng clientSentence = inFromClient.readLine(); từ socket capitalizedSentence = clientSentence.toUpperCase() + '\n'; ế Vi t dòng ra outToClient.writeBytes(capitalizedSentence); ừ t socket } } } kết thúc vòng lặp while quay lại và chờ cho kết nối của client khác Lớp Application 96
  97. 2.8 Lập trình socket với UDP (xem thêm slide Lập trình socket) Lớp Application 97
  98. Lập trình socket với UDP UDP: không “kết nối” giữa client và server ˆ không bắt tay ˆ người gửi rõ ràng gắn địa chỉ IP và port của đích vào mỗi gói góc nhìn ứng dụng ˆ phải trích địa chỉ IP, port UDP cung cấp việc truyền không của người gửi từ gói đã nhận tin cậy một nhóm các byte (“datagrams”) UDP: dữ liệu truyền có thể giữa client và server không theo thứ tự, hoặc bị mất mát Lớp Application 98
  99. Giao tiếp socket Client/server: UDP Server (chạy trên hostid) Client create socket, create socket, port=x, for clientSocket = incoming request: DatagramSocket() serverSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket read request from serverSocket write reply to serverSocket specifying client read reply from host address, clientSocket port number close clientSocket Lớp Application 99
  100. Ví dụ: Java client (UDP) keyboard monitor input stream inFromUser ProcessClient process Input: nhận gói (còn gọi là TCP Output: gửi gói nhận “dòng byte”) (còn gọi là TCP UDP UDP gửi “dòng byte”) packet packet sendPacket receivePacket clientclientSocket UDP socket UDP socket to network from network Lớp Application 100
  101. Ví dụ: Java client (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { tạo input stream BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); tạo client socket DatagramSocket clientSocket = new DatagramSocket(); dịch InetAddress IPAddress = InetAddress.getByName("hostname"); hostname thành địa chỉ IP dùng DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); Lớp Application 101
  102. Ví dụ: Java client (UDP). tạo datagram với dữ liệu để gửi, DatagramPacket sendPacket = độ dài, địa chỉ IP, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876); gửi datagram đến server clientSocket.send(sendPacket); DatagramPacket receivePacket = đọc datagram new DatagramPacket(receiveData, receiveData.length); từ server clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } Lớp Application 102
  103. Ví dụ: Java server (UDP) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception Tạo { datagram socket DatagramSocket serverSocket = new DatagramSocket(9876); tại port 9876 byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Tạo không gian để DatagramPacket receivePacket = nhận datagram new DatagramPacket(receiveData, receiveData.length); nhận serverSocket.receive(receivePacket); datagram Lớp Application 103
  104. Ví dụ: Java server (UDP) String sentence = new String(receivePacket.getData()); lấy địa chỉ IP InetAddress IPAddress = receivePacket.getAddress(); port #, của người gửi int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); tạo datagram DatagramPacket sendPacket = ể ử ớ đ g i t i client new DatagramPacket(sendData, sendData.length, IPAddress, port); viết datagram serverSocket.send(sendPacket); vào socket } } } kết thúc vòng lặp while, quay lại và chờ datagram khác Lớp Application 104
  105. 2.9 Xây dựng một Web server Lớp Application 105
  106. Xây dựng 1 Web server đơn giản ˆ quản lý 1 yêu cầu HTTP ˆ sau khi tạo server, bạn ˆ chấp nhận yêu cầu có thể yêu cầu file dùng trình duyệt (ví dụ: ˆ phân tích cú pháp IE) header ˆ xem giáo trình để biết ˆ lấy file được yêu cầu từ thêm chi tiết hệ thống file của server ˆ tạo thông điệp đáp ứng HTTP: ™ các dòng header + file ˆ gửi đáp ứng đến client Lớp Application 106
  107. Chương 2: Tổng kết Tổng quan một số vấn đề vềứng dụng mạng! ˆ Các kiến trúc ứng dụng ˆ các giao thức đặc biệt: ™ client-server ™ HTTP ™ P2P ™ FTP ™ lai ™ SMTP, POP, IMAP ˆ các yêu cầu dịch vụ: ™ DNS ™ tin cậy, bandwidth, trễ ˆ lập trình socket ˆ mô hình dịch vụ Internet transport ™ connection-oriented, tin cậy: TCP ™ không tin cậy, datagrams: UDP Lớp Application 107
  108. Chương 2: Tổng kết Phần quan trọng: nghiên cứu về các giao thức ˆ trao đổi thông điệp yêu ˆ ề ể ớ ệ ầ ả ờ ể đi u khi n v i các thông đi p c u/tr l i đi n hình: dữ liệu ™ client yêu cầu thông tin ™ in-band, out-of-band hoặc dịch vụ service ˆ tập trung và không tập trung ™ server đáp ứng với dữ ˆ không trạng thái và có trạng liệu, mã trạng thái thái ˆ ạ ệ các d ng thông đi p: ˆ truyền thông điệp tin cậy và ™ headers: các trường cho không tin cậy ế ề ữ ệ bi t thông tin v d li u ˆ “sự phức tạp của các vấn đề ™ dữ liệu: thông tin để liên quan đến mạng” truyền thông Lớp Application 108