Mạng máy tính - Bài 5: Tầng ứng dụng (tt)

pdf 43 trang vanle 2250
Bạn đang xem 20 trang mẫu của tài liệu "Mạng máy tính - Bài 5: Tầng ứng dụng (tt)", để 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:

  • pdfmang_may_tinh_bai_5_tang_ung_dung_tt.pdf

Nội dung text: Mạng máy tính - Bài 5: Tầng ứng dụng (tt)

  1. Trường Đại Học Bách Khoa Tp.HCM Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng Mạng máy tính ThS. NGUYỄN CAO ĐẠT E-mail:dat@cse.hcmut.edu.vn
  2. Bài giảng 5: Tầng ứng dụng (tt) Tham khảo: Chương 2: “Computer Networking – A top-down approach” Kurose & Ross, 5th ed., Addison Wesley, 2010. Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 2
  3. Chương 2: Tầng ứng dụng  2.1 Các nguyên lý của tầng ứng dụng  2.6 Ứng dụng P2P  2.2 Web và HTTP  2.7 Lập trình Socket với  2.3 FTP TCP  2.4 Thư điện tử  2.8 Lập trình Socket với  SMTP, POP3, IMAP UDP  2.5 DNS Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 3
  4. Cấu trúc P2P thuần túy  máy chủ không luôn luôn mở  nhiều máy đầu cuối khác nhau giao tiếp trực tiếp với nhau  các bên kết nối không liên tục và thay đổi địa chỉ IP  Ba chủ đề: peer-peer  Phân phối tệp tin  Tìm kiếm thông tin  Tình huống nghiên cứu: Skype Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 4
  5. Phân phối tệp tin: Chủ-khách so với P2P Câu hỏi : Cần bao nhiêu thời gian để phân phối tệp từ 1 máy chủ tới N người dùng? us: băng thông tải lên của máy chủ máy chủ ui: băng thông tải lên của mỗi khách u1 d1 u2 u d2 s di: băng thông tải Tệp, kích xuống của mỗi khách thước F dN Mạng(băng thông rộng) uN Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 5
  6. Thời gian phân phối tệp: chủ-khách  chủ lần lượt gửi N bản sao: máy chủ  NF/us s u F u d 2  1 1 d khách i cần F/di t/g để tải us 2 xuống Mạng(băng dN thông rộng) uN tăng tuyến tính theo N (với N lớn) Thời gian để phân phối F tới N khách sử dụng = d = max { NF/u , F/min(d ) } mô hình khách/chủ cs s i i Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 6
  7. Phân phối tệp tin: P2P  máy chủ phải gửi một máy chủ phản sao: F/us đvtg u F u d 2  1 1 d khách i cần F/di t/g để us 2 tải về d Mạng(băng  NF bit phải được tải về N thông rộng) uN Vận tốc tải lên nhanh nhất có thể: us + Sui dP2P = max { F/us, F/min(di) , NF/(us + Sui) } i Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 7
  8. Khách-chủ so với P2P: ví dụ tốc độ tải lên của n/d = u, F/u = 1 hour, us = 10u, dmin ≥ us 3.5 P2P 3 Client-Server 2.5 2 1.5 1 0.5 Minimum Distribution Time 0 0 5 10 15 20 25 30 35 N
  9. Phân phối tệp tin: BitTorrent phân phối tệp kiểu P2P máy chủ (tracker): theo dõi các torrent: nhóm các cá nhân chia sẻ những cá nhân tham gia vào torrent đoạn tệp lấy danh sách người tham gia trao đổi các đoạn tệp peer Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 9
  10. BitTorrent (1)  tệp được chia thành đoạn 256KB.  cá nhân tham gia torrent:  ko có đoạn nào, nhưng sẽ tích lũy chúng theo t/g  đăng kí với tracker để lấy danh sách thành viên, liên kết tới một nhóm nhỏ thành viên (“hàng xóm”)  trong khi tải về, người tải đồng thời chia sẻ đoạn tệp cho những người khác.  cá nhân có thể tham gia hoặc từ bỏ torrent  một khi n/d tải xong tệp, họ có thể rời mạng torrent hoặc ở lại để chia sẻ cho người khác Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 10
  11. BitTorrent (2) Kéo các đoạn tệp Gửi các đoạn tệp: tit-for-tat  tại bất kì thời điểm nào, các Alice gửi các đoạn cho 4 thành viên khác nhau sẽ có hàng xóm mà đang gửi những đoạn khác nhau của đoạn cho cô ta ở vận tốc một tệp cao nhất  một cách định kì, một thành  đánh giá lại tóp 4 sau viên (Alice) sẽ yêu cầu từ mỗi 10 s các hàng xóm danh sách sau mỗi 30 s: chọn ngẫu các đoạn mà họ có. nhiên một thành viên khác, và gửi đoạn cho nó  Alice gửi yêu cầu tới các  thành viên mới này có đoạn mà cô ta thiếu thể vào tóp 4  đoạn hiếm nhất trước Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 11
  12. BitTorrent: Tit-for-tat (1) Alice “khai thông một cách lạc quan” cho Bob (2) Alice trở thành 1 trong tóp 4 nhà cung cấp của Bob; Bob trả ơn (3) Bob trở thành 1 trong tóp 4 nhà cung cấp của Alice Với vận tốc tải lên cao hơn, có thể tìm được đối tác truyền tải tốt hơn và tải tệp tin nhanh hơn! Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 12
  13. Bảng băm phân tán (DHT)  DHT = cơ sở dữ liệu P2P phân tán  CSDL có các cặp (khóa, giá trị);  khóa: số CMND; giá trị: tên người  khóa: loại nội dung; giá trị: đ/c IP  Các thành viên truy vấn CSDL với khóa  CSDL trả lại giá trị mà có khóa trùng hợp  Thành viên cũng có thể chèn các cặp (khóa, giá trị) vào CSDL Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 13
  14. Định danh DHT  Gán cho mỗi thành viên một số nguyên định danh trong khoảng [0,2n-1].  Mỗi định danh có thể được biểu diễn bằng n bít.  Yêu cầu mỗi khóa cũng là một số nguyên trong cùng khoảng trên.  Để tạo ra khóa số nguyên ta băm khóa nguyên thủy.  vd: key = h(“Led Zeppelin IV”)  Vì vậy gọi là bảng “băm” phân tán Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 14
  15. Làm sao để gán khóa cho các thành viên?  Vấn đề trọng tâm:  gán các cặp (khóa, giá trị) cho các thành viên.  Qui luật: gán khóa cho thành viên mà có ID gần nhất.  Qui ước đơn giản: gần nhất là số đứng ngay sau của khóa.  Vd: n=4; thành viên: 1,3,4,5,8,10,12,14;  khóa = 13, thành viên gần nhất = 14  key = 15, thành viên gần nhất = 1 Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 15
  16. DHT xoay vòng (1) 1 15 3 4 12 5 10 8  Mỗi thành viên chỉ nắm thông tin của người đứng ngay trước hoặc ngay sau nó.  “Mạng bao phủ” Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 16
  17. Circle DHT (2) trung bình O(N) thông 0001 Ai chịu trách nhiệm điệp để tìm ra vị trí cho khóa 1110 ? thành viên Tôi 0011 1111 1110 1110 0100 1110 1100 1110 1110 0101 Định nghĩa gần nhất 1110 là người liền sau gần 1010 nhất 1000 Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 17
  18. Circle DHT (2) trung bình O(N) thông 0001 Ai chịu trách nhiệm điệp để tìm ra vị trí cho khóa 1110 ? thành viên Tôi 0011 1111 1110 1110 0100 1110 1100 1110 Định nghĩa gần nhất 1110 0101 là người liền sau gần 1110 nhất 1010 1000 Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 18
  19. DHT xoay vòng với liên kết tắt 1 Ai quản lý khóa 1110? 3 15 4 12 5 10 8  Mỗi thành viên lưu dấu của địa chỉ IP của người liền trước, liền sau và vài liên kết tắt.  Giảm từ 6 xuống còn 2 thông điệp.  Có thể thiết kế liên kết tắt sao cho có O(log N) hàng xóm, O(log N) thông điệp cho mỗi truy vấn Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 19
  20. Peer Churn 1 •Để xử lý peer churn, yêu cầu mỗi 3 t/viên phải biết địa chỉ của 2 người 15 liền sau nó. • Mỗi t/viên theo định kì ping 2 4 người liền kề nó để xem họ còn trên mạng ko. 12 5 1. Thành viên số 5 đột nhiên rời 10 khỏi mạng 8  Thành viên 4 nhận ra; nhận 8 làm người liền sau chính thức; hỏi 8 ai là người liền sau chính thức của nó; nhận người liền sau chính thức của 8 làm người liền sau thứ 2.  Chuyện gì xảy ra nếu 13 muốn gia nhập? Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 20
  21. Trường hợp nghiên cứu P2P: Skype khách Skype(SC)  có tính chất P2P: các cặp n/dùng liên lạc với nhau. Máy chủ đăng nhập Skype  giao thức tầng ứng Supernode dụng sở hữu (SN)  hệ thống bao phủ phân cấp với Supernode (SN)  Chỉ mục ánh xạ tên người dùng với địa chỉ IP; phân tán thông qua SN Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 21
  22. Các thành viên như là trạm chuyển tiếp  Vấn đề khi cả Alice và Bob đứng sau các “NAT”.  NAT ngăn cản những t/viên bên ngoài khởi đầu cuộc gọi vào t/viên bên trong  Giải pháp:  Sử dụng SN của Alice và Bob, Chế độ chuyển tiếp được chọn  Mỗi thành viên khởi đầu phiên làm việc với SN “chuyển tiếp”.  Các t/viên có thể liên lạc xuyên qua NAT bằng “trạm chuyển tiếp” Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 22
  23. Chương 2: Tầng ứng dụng  2.1 Các nguyên lý của tầng ứng dụng  2.6 Ứng dụng P2P  2.2 Web và HTTP  2.7 Lập trình Socket với  2.3 FTP TCP  2.4 Thư điện tử  2.8 Lập trình Socket với  SMTP, POP3, IMAP UDP  2.5 DNS Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 23
  24. Lập trình hốc kết nối Mục tiêu: học cách xây dựng ứng dụng khách/chủ sử dụng hốc kết nối (HKN - socket) Giao diện lập trình ứng dụng hkn (gdltưd - API) HKN một giao diện trên máy cục  được giới thiệu trong BSD4.1 UNIX, 1981 bộ, tạo bởi ứng dụng, điều khiển bởi OS (một  được khởi tạo, sử dụng, và giải “cánh cửa”) thông qua đó phóng bởi các ứng dụng tiến trình ứng dụng có thể  mô hình khách/chủ vừa gửi và nhận tin nhắn  hai loại dịch vụ truyền tải thông tới/từ một tiến trình ứng qua gdltưd hkn: dụng khác  không tin cậy  tin cậy, hướng kết nối Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 24
  25. Lập trình Socket sử dụng TCP Socket: một cánh cửa giữa tiến trình ứng dụng và giao thức truyền tải đầu cuối-đầu cuối (UCP hoặc TCP) Dịch vụ TCP: truyền tải tin cậy của bytes (bai) từ một tiến trình tới 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 l p trình viên lập trình viên ứng dụng ứng dụng socket socket TCP với TCP với điều khiển bởi điều khiển bởi ộ ớ bộ nhớ, b nh , hệ điều hành hệ điều hành internet ế biến bi n máy cá nhân máy cá nhân hoặc máy chủ hoặc máy chủ Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 25
  26. Lập trình Socket với TCP Khách phải liên hệ chủ  Khi được liên hệ bởi khách,  tiến trình chủ phải khởi chạy máy chủ TCP tạo một socket từ đầu mới để tiến hành liên lạc với khách  máy chủ phải khởi tạo socket (cửa) và sẵn sàng  cho phép chủ có thể nói nhận sự liên hệ từ khách chuyện với nhiều khách Khách liên hệ chủ bằng cách:  số cổng nguồn được dùng để phân biệt người dùng  tạo ra một socket TCP cục bộ trên máy khách từ góc nhìn của ứ/d  chỉ rõ địa chỉ IP, số cổng của tiến trình chủ TCP cung cấp dịch vụ truyền tải  Khi khách tạo socket: khách tin cậy, theo thứ tự của TCP thiết lập kết nối tới máy các byte giữa khách và chủ chủ TCP Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 26
  27. Tương tác socket Khách/Chủ: TCP Chủ (chạy trên hostid) Khách tạo socket, cổng=x, cho các truy vấn tới: welcomeSocket = ServerSocket() TCP chờ các yêu cầu create socket, khởi tạo kết nối thiết lập kết nối connect to hostid, port=x connectionSocket = clientSocket = welcomeSocket.accept() Socket() gửi yêu cầu sử dụng đọc yêu cầu từ clientSocket connectionSocket viết phản hồi vào connectionSocket đọc phản hồi từ clientSocket đóng connectionSocket đóng clientSocket Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 27
  28. Thuật ngữ Stream – luồng  Một luồng là một chuỗi các kí tự keyboard monitor chảy (đi) vào hoặc ra từ một tiến trình.  Một luồng đầu vào được gắn vào input stream nguồn đầu vào nào đó của tiến Tiến inFromUser Process trình, vd: bàn phím hoặc socket trình  Một luồng đầu ra được gắn vào khách một nguồn đầu ra, vd: màn hình hoặc socket. output input stream stream outToServer inFromServer socketclientSocket TCP khách TCP socket to network from network Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 28
  29. Lập trình Socket với TCP Ví dụ ứng dụng khách-chủ: 1) khách đọc từng dòng từ đầu vào chuẩn (luồng inFromUser) , gửi cho chủ thông qua socket (luồng outToServer) 2) chủ đọc từng dòng từ socket 3) chủ chuyển từng dòng sang dạng viết HOA, gửi lại cho khách 4) khách đọc, in dòng đã được chỉnh sửa từ socket (luồng inFromServer) Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 29
  30. Ví dụ: khách Java (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 = luồng đầu vào new BufferedReader(new InputStreamReader(System.in)); Tạo socket khách, Socket clientSocket = new Socket("hostname", 6789); kết nối tới chủ Tạo DataOutputStream outToServer = luồng đầu ra new DataOutputStream(clientSocket.getOutputStream()); gắn vào Socket Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 30
  31. Ví dụ: Khách Java (TCP), tt. Tạo BufferedReader inFromServer = luồng đầu vào new BufferedReader(new gắn với socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Gửi dòng tới chủ outToServer.writeBytes(sentence + '\n'); Đọc dòng modifiedSentence = inFromServer.readLine(); từ chủ System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 31
  32. Ví dụ: chủ Java (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; Tạo String capitalizedSentence; Socket đón khách ServerSocket welcomeSocket = new ServerSocket(6789); tại cổng 6789 while(true) { Chờ khách tới liên hệ tại Socket Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = Tạo new BufferedReader(new luồng đầu vào, InputStreamReader(connectionSocket.getInputStream())); gắn với socket Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 32
  33. Ví dụ: máy chủ Java (TCP), tt Tạo luồng đầu ra, gắn vào socket DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); Đọc vào 1 clientSentence = inFromClient.readLine(); dòng từ socket capitalizedSentence = clientSentence.toUpperCase() + '\n'; ế ộ Vi t m t outToClient.writeBytes(capitalizedSentence); dòng ra socket } } } đoạn cuối vòng lặp “while”, quay trở lại và chờ kết nối của khách khác Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 33
  34. Chương 2: Tầng ứng dụng  2.1 Các nguyên lý của tầng ứng dụng  2.6 Ứng dụng P2P  2.2 Web và HTTP  2.7 Lập trình Socket với  2.3 FTP TCP  2.4 Thư điện tử  2.8 Lập trình Socket với  SMTP, POP3, IMAP UDP  2.5 DNS Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 34
  35. Lập trình Socket với UDP UDP: không “kết nối” giữa khách và chủ  không bắt tay  người gửi gán địa chỉ IP và cổng của người nhận vào mỗi gói tin từ góc nhìn của ứ/d  máy chủ phải tách địa chỉ IP và cổng của người gửi từ gói tin UDP cung cấp sự truyền tải nhận được không tin cậy của một nhóm byte UDP: dữ liệu truyền tải có thể bị lộn (“datagrams”) giữa khách và chủ xộn trật tự hoặc là bị mất Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 35
  36. Tương tác socket khách/chủ: UDP Máy chủ (chạy trên hostid) Khách tạo socket, tạo socket, port= x. clientSocket = serverSocket = DatagramSocket() DatagramSocket() tạo gói tin với IP máy chủ và port=x; gửi gói tin thông qua đọc gói tin từ clientSocket serverSocket viết phản hồi tới serverSocket đọc gói tin từ chỉ rõ địa chỉ, clientSocket số cổng của khách đóng clientSocket Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 36
  37. Ví dụ: Khách Java (UDP) keyboard monitor input stream inFromUser ProcessTiến trình khách Đầu vào: nhận gói tin (nhắc lại: TCP Đầu ra: gửi gói tin nhận “luồng byte”) (nhắc lại: TCP gửi “luồng byte”) UDP UDP packet packet sendPacket receivePacket socketclientSocket UDP khách UDP socket to network from network Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 37
  38. Ví dụ: khách Java (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { Tạo luồng đầu vào BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Tạo socket khách DatagramSocket clientSocket = new DatagramSocket(); Dịch tên máy InetAddress IPAddress = InetAddress.getByName("hostname"); sang địa chỉ IP sử dụng DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 38
  39. Ví dụ: khách Java client (UDP), tt. Tạo gói tin với dữ liệu, DatagramPacket sendPacket = độ dài, IP, cổng new DatagramPacket(sendData, sendData.length, IPAddress, 9876); Gửi gói tin clientSocket.send(sendPacket); tới máy chủ DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Đọc gói tin clientSocket.receive(receivePacket); ừ ủ t máy ch String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 39
  40. Ví dụ: máy chủ Java (UDP) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception Tạo { socket UDP DatagramSocket serverSocket = new DatagramSocket(9876); ạ ổ t i c ng 9876 byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Tạo bộ nhớ cho DatagramPacket receivePacket = gói tin đến new DatagramPacket(receiveData, receiveData.length); Nhận serverSocket.receive(receivePacket); gói tin Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 40
  41. Ví dụ: Máy chủ Java (UDP), tt String sentence = new String(receivePacket.getData()); Lấy địa chỉ IP InetAddress IPAddress = receivePacket.getAddress(); ố ổ ủ s c ng, c a người gử i int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); Tạo ra gói tin DatagramPacket sendPacket = ể ử ớ đ g i t i khách new DatagramPacket(sendData, sendData.length, IPAddress, port); Viết gói tin ra socket serverSocket.send(sendPacket); } } } Đoạn cuối vòng lặp, quay lại và chờ gói tin khác Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 41
  42. Chương 2: Tổng kết Kết thúc tìm hiểu về các ứng dụng mạng!  kiến trúc ứng dụng các giao thức cụ thể:  HTTP  khách-chủ  FTP  P2P  SMTP, POP, IMAP  lai  DNS  các yêu cầu dịch vụ của ứng  P2P: BitTorrent, Skype dụng: lập trình hốc kết nối  sự tin cậy, băng thông, độ trễ  mô hình dịch vụ truyền tải Internet  hướng kết nối, tin cậy:: TCP  ko tin cậy, gói tin: UDP Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 42
  43. Chương 2: Tổng kết Quan trọng nhất: hiểu về các giao thức  sự trao đổi truy vấn/phản Các chủ đề quan trọng: hồi phổ biến: . t/điệp điều khiển vs. dữ liệu  khách yêu cầu thông tin . nội tuyến, ngoại tuyến hoặc dịch vụ . tập trung vs. phân tán  máy chủ phản hồi với dữ . ko trạng thái vs. có trạng liệu, mã trạng thái thái  các định dạng t/điệp: . truyền tải t/điệp tin cậy vs.  mào đầu: các trường mang ko tin cậy thông tin về dữ liệu  dữ liệu: thông tin được trao đổi Trường Đại Học Bách Khoa Tp.HCM MẠNG MÁY TÍNH CĂN BẢN Khoa Khoa Học và Kỹ Thuật Máy Tính Bài giảng 3 - Chương 2: Tầng ứng dụng © 2011 43