Bài giảng Mạng máy tính - Chương 2: Tầng ứng dụng

pdf 98 trang huongle 8700
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương 2: Tầng ứng dụng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_2_tang_ung_dung.pdf

Nội dung text: Bài giảng Mạng máy tính - Chương 2: Tầng ứng dụng

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