Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 111 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
111
Dung lượng
2,9 MB
Nội dung
Chương Lớp ứng dụng (Application layer) A note on the use of these ppt slides: We’re making these slides freely available to all (faculty, students, readers) They’re in PowerPoint form so you see the animations; and can add, modify, and delete slides (including this one) and slide content to suit your needs They obviously represent a lot of work on our part In return for use, we only ask the following: If you use these slides (e.g., in a class) that you mention their source (after all, we’d like people to use our book!) If you post any slides on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material Thanks and enjoy! JFK/KWR All material copyright 1996-2012 J.F Kurose and K.W Ross, All Rights Reserved Computer Networking: A Top Down Approach 6th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 lớp ứng dụng 2-1 Chương 2: Nội dung 2.1 Các nguyên lý ứng dụng mạng 2.2 Web HTTP 2.3 FTP 2.4 Thư điện thử 2.6 Các ứng dụng P2P 2.7 Lập trình socket với UDP TCP SMTP, POP3, IMAP 2.5 DNS lớp ứng dụng 2-2 Chương 2: lớp Ứng dụng (application layer) Mục tiêu: Khái niệm, phương diện áp dụng giao thức ứng dụng mạng Các mơ hình dịch vụ tầng transport Mơ hình máy khách-máy chủ Mơ hình peer-topeer Tìm hiểu giao thức thơng qua việc xem xét giao thức phổ biến lớp ứng dụng HTTP FTP SMTP / POP3 / IMAP DNS Lập trình ứng mạng Socket API dụng lớp ứng dụng 2-3 Các thuật ngữ Client Server Application Process Socket Message Request Response Rules Cookies Web cache lớp ứng dụng 2-4 Các từ viết tắt P2P: peer-to-peer TCP: Transmission Control Protocol UDP: User Datagram Protocol SSL: Secure Sockets Layer HTTP: HyperText Transfer Protocol HTML: HyperText Markup Language URL: Uniform Resource Locator RTT: Round-trip time lớp ứng dụng 2-5 Một số ứng dụng mạng Thư điện tử Web Nhắn tin Đăng nhập từ xa Chia sẻ tập tin P2P Trò chơi trực tuyến với nhiều người tham gia Truyền hình trực tuyến (streaming stored video – Vd: YouTube, Hulu, Netflix) Đàm thoại mạng IP (Vd: Skype) Hội thảo video thời gian thực Mạng xã hội Tìm kiếm … … lớp ứng dụng 2-6 Tạo ứng dụng mạng Viết chương trình để: Chạy hệ thống đầu cuối (khác nhau) Liên lạc qua mạng Ví du: phần mềm web máy chủ giao tiếp với trình duyệt Khơng cần viết phần mềm cho thiết bị lõi mạng Các thiết bị lõi mạng không chạy ứng dụng người dùng Các ứng dụng hệ thống đầu cuối cho phép phát triển ứng dụng quảng bá nhanh chóng application transcổng network data liên kết physical application transcổng network data liên kết physical application transcổng network data liên kết physical lớp ứng dụng 2-7 Các kiến trúc ứng dụng Kiến trúc phù hợp ứng dụng: Khách-chủ (client-server) Mạng ngang hàng (peer-to-peer (P2P) ) lớp ứng dụng 2-8 Kiến trúc máy khách-máy chủ Máy chủ (server): Máy khách/máy chủ Máy luôn hoạt động Địa IP cố định Tổ chức thành trung tâm liệu để mở rộng quy mô Máy khách (client): Giao tiếp với máy chủ Có thể kết nối khơng liên tục Có thể thay đổi địa IP Không giao tiếp trực tiếp với máy khách khác lớp ứng dụng 2-9 Kiến trúc P2P (ngang hàng) Khơng có máy chủ Các hệ thống đầu cuối (peer) truyền thông trực tiếp với Các peer yêu cầu dịch vụ từ bên khác cung cấp dịch vụ ngược lại cho bên khác Có khả tự mở rộng – peer cung cấp thêm dịch vụ mới, có thêm nhu cầu dịch vụ Các peer kết nối khơng liên tục thay đổi địa IP Quản lý phức tạp Ngang hàng lớp ứng dụng 2-10 Peer churn Xử lý peer churn: Các bên tham gia rời khỏi (churn) nhóm 15 Mỗi bên biết địa hai kế nhiệm Mỗi bên định kỳ ping hai kế 12 nhiệm để kiểm tra tồn 10 Nếu người vừa kế nhiệm bỏ đi, chọn kế nhiệm Ví dụ: peer đột ngột rời khỏi người kế nhiệm tức thời Xử lý peer churn: Peer churn 15 12 10 Các bên tham gia rời khỏi (churn) nhóm Mỗi bên biết địa hai kế nhiệm Mỗi bên định kỳ ping hai kế nhiệm để kiểm tra tồn Nếu người vừa kế nhiệm bỏ đi, chọn kế nhiệm người kế nhiệm tức thời Ví dụ: bên (peer) đột ngột rời khỏi Bên (peer) phát rời khỏi bên (peer) 5; bên (peer) trở thành người kế nhiệm yêu cầu người kế nhiệm tức thời nó; người kế nhiệm tức thời trở thành người kế nhiệm thứ Chương 2: Nội dung 2.1 Các nguyên lý ứng dụng mạng 2.2 Web HTTP 2.3 FTP 2.4 Thư điện tử 2.6 Các ứng dụng P2P 2.7 Lập trình socket với UDP TCP SMTP, POP3, IMAP 2.5 DNS lớp ứng dụng 2-99 Lập trình Socket Mục tiêu: tìm hiểu cách xây dựng ứng dụng máy khách/máy chủ liên lạc sockets socket: cánh cửa tiến trình ứng dụng giao thức vận chuyển đầu cuối application process socket application process transport transport network network datalink datalink physical Internet physical Được điều khiển Nhà phát triển ứng dụng Được điều khiển hệ điều hành lớp ứng dụng 2-100 Lập trình Socket Hai loại socket cho hai dịch vụ transport: UDP: chuyển gói tin khơng đảm bảo TCP: chuyển luồng tin có đảm bảo (streamoriented) Ứng dụng ví dụ: Máy khách nhận dịng ký tự (dữ liệu) từ bàn phím gởi liêu đến máy chủ Máy chủ nhận liệu chuyển đổi ký tự sang chữ hoa Máy chủ gởi liệu sửa đổi cho máy khách Máy khách nhận liệu bị sửa đổi hiển thị dịng lên hình lớp ứng dụng 2-101 Lập trình Socket với UDP UDP: không “kết nối” máy khách máy chủ Không bắt tay trước gởi liệu Bên gửi rõ địa IP đích số cổng cho gói (packet) Bên nhận lấy địa IP số cổng bên gửi từ gói nhận UDP: liệu truyền bị nhận không thứ tự Quan điểm ứng dụng: UDP cung cấp chế truyền nhóm bytes (“datagrams”) không tin cậy máy khách máy chủ lớp ứng dụng 2-102 Sự tương tác socket máy khách/máy chủ: UDP Máy chủ (chạy với địa máy chủ IP) create socket, cổng= x: Máy chủ socket = socket(AF_INET,SOCK_DGRAM) read datagram from Máy chủ socket write reply to Máy chủ socket specifying máy kháchIP, số hiệu cổng Máy khách create socket: Máy khách socket = socket(AF_INET,SOCK_DGRAM) create datagram with máy chủ IP and cổng=x; send datagram via Máy khách socket read datagram from Máy khách socket close Máy khách socket Lớp ứng dụng2-103 Ứng dụng ví dụ: UDP máy khách Bao gồm thư viện socket Python’ Python UDP client from socket import * serverName = ‘hostname’ Tạo socket UDP cho máy chủ serverPort= 12000 clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) Nhận thơng điệp từ bàn phím người dùng message = raw_input(’Input lowercase sentence:’) Đính kèm tên máy chủ, cổng đến thông điệp; gởi vào socket clientsocket.sendto(message,(serverName, Đọc ký tự trả lời từ socket vào chuỗi modifiedMessage, serverAddress = In chuỗi nhận đóng socket print modifiedMessage serverPort)) clientSocket.recvfrom(2048) clientSocket.close() lớp ứng dụng 2-104 Ứng dụng ví dụ : UDP server Python UDP server from socket import * Tạo UDP socket Gắn kết socket đến số cổng cục bộ12000 Lặp mãi Đọc từ UDP socket vào message, lấy địa IP máy khách (địa IP máy khách cổng) Gởi chuỗi chữ hoa trở lại cho máy khách serverPort = 12000 serverSocket = socket(AF_INET, SOCK_DGRAM) serverSocket.bind(('', serverPort)) print “The server is ready to receive” while 1: message, clientAddress = serverSocket.recvfrom(2048) modifiedMessage = message.upper() serverSocket.sendto(modifiedMessage, clientAddress) lớp ứng dụng 2-105 Lập trình Socket với TCP Máy khách phải liên lạc với máy chủ Tiến trình máy chủ phải chạy trước Máy chủ phải tạo socket để mời máy khách đến liên lạc Máy khách tiếp xúc máy chủ bằng: Tạo socket TCP, xác định địa IP, số cổng tiến trình máy chủ Khi máy khách tạo socket: máy khách TCP thiết lập kết nối đến máy chủ TCP Khi máy khách liên lạc, máy chủ TCP tạo socket cho tiến trình máy chủ để trao đổi với máy khách Cho phép máy chủ nói chuyện với nhiều máy khách Số cổng nguồn dùng để phân biệt máy khách (xem tiếp chương 3) Quan điểm ứng dụng: TCP cung cấp việc truyền byte đáng tin cậy theo thứ tự máy khách máy chủ lớp ứng dụng 2-106 Tương tác socket máy khách/máy chủ: TCP Máy chủ (chạy hostid) Máy khách create socket, port=x, for incoming request: serverSocket = socket() wait for incoming TCP connection request connectionSocket = connection serverSocket.accept() read request from connectionSocket write reply to connectionSocket close connectionSocket setup create socket, connect to hostid, port=x clientSocket = socket() send request using clientSocket read reply from clientSocket close clientSocket lớp ứng dụng 2-107 Ứng dụng ví dụ : TCP client Python TCP client from socket import * serverName = ’servername’ Tạo TCP socket cho máy chủ, cổng 12000 serverPort = 12000 clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) sentence = raw_input(‘Input lowercase sentence:’) Khơng cần đính kèm tên máy chủ, cổng clientSocket.send(sentence) modifiedSentence = clientSocket.recv(1024) print ‘From Server:’, modifiedSentence clientSocket.close() lớp ứng dụng 2-108 Ví dụ ứng dụng: TCP máy chủ Python TCPmáy chủ Tạo socket TCP chào đón Máy chủ bắt đầu lắng nghe yêu cầu TCP đến Lặp mãi Máy chủ đợi accept() cho yêu cầu đến, socket tạo trở Đọc byte từ socket (nhưng không đọc địa UDP) Đóng kết nối đến máy khách này(nhưng khơng đóng socket chào đón) from socket import * serverPort = 12000 serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.bind((‘’,serverPort)) serverSocket.listen(10) print ‘The server is ready to receive’ while 1: connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence) connectionSocket.close() lớp ứng dụng 2-109 Chương 2: Tóm tắt Các kiến trúc ứng dụng Máy khách-máy chủ P2P Các yêu cầu dịch vụ ứng dụng: Độ tin cậy, băng thơng, độ trễ Mơ hình dịch vụ vận chuyển Internet Kết nối định hướng, tin cậy: TCP Không tin cậy, datagrams: UDP Các giao thức: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT Lập trình socket : TCP, UDP sockets lớp ứng dụng 2-110 Chương 2: Tóm tắt Quan trọng: tìm hiểu giao thức! Trao đổi thơng điệp u cầu /trả lời điển hình: Máy khách yêu cầu thông tin dịch vụ Máy chủ đáp ứng với liệu, mã trạng thái Các định dạng thông điệp: Phần đầu (headers): trường cho biết thông tin liệu Dữ liệu: thông tin để truyền thông Các chủ đề quan trọng: Điều khiển với thông điệp liệu in-band, out-of-band Tập trung khơng tập trung Khơng trạng thái có trạng thái Truyền tin cậy không tin cậy “sự phức tạp mạng biên” lớp ứng dụng 2-111 ... kết nối Q: Tại phải quan tâm? Tại có UDP? lớp ứng dụng 2-17 Ứng dụng Internet: Các giao thức lớp ứng dụng Ứng dụng Giao thức lớp Ứng dụng Giao thức lớp Vận chuyển Thư điện tử SMTP [RFC 2821]... lý ứng dụng mạng 2.2 Web HTTP 2.3 FTP 2.4 Thư điện thử 2.6 Các ứng dụng P2P 2.7 Lập trình socket với UDP TCP SMTP, POP3, IMAP 2.5 DNS lớp ứng dụng 2-2 Chương 2: lớp Ứng dụng (application layer). .. ” thực thi Các ứng dụng khác (? ?ứng dụng mềm dẻo”) dùng thơng lượng An ninh Mã hóa, tồn vẹn liệu, … lớp ứng dụng 2-15 Các yêu cầu dịch vụ vận chuyển: ứng dụng phổ biến Ứng dụng Mất liệu Thông