Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 92 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
92
Dung lượng
1,93 MB
Nội dung
MẠNG MÁY TÍNH (COMPUTER NETWORKING) J.F Kurose and K.W Ross Computer Networking A Top Down Approach 6th edition, Addision Wesley, 2013 Nội dung môn học Chapter 1: Computer Networks and the Internet Chapter 2: Application Layer Chapter 3: Transport Layer Chapter 4: Network Layer Chapter 5: The Link Layer and Local Area Network Data Link Chapter 6: Wireless and Mobile Networks Chapter 7: Multimedia Networking Chapter 8: Security in Computer Networks Chapter 9: Network Management 1.2 Chapter 2: APPLICATION LAYER Agenda 2.1 Các nguyên lý ứng dụng mạng 2.2 Web HTTP 2.3 FTP 2.4 Electronic mail SMTP, POP3, IMAP 2.5 DNS 2.6 Chia sẻ file P2P (Peer-to-Peer Application) 2.7 Lập trình socket với TCP/UDP 1.4 Mục tiêu Khái niệm, khía cạnh thực giao thức ứng dụng mạng Mơ hình client-server Mơ hình peer-to-peer Nghiên cứu giao thức thơng qua xem xét số giao thức lớp application HTTP, FTP, SMTP/POP3/IMAP, DNS Lập trình ứng dụng mạng Socket API 1.5 Một số ứng dụng mạng Email Web Tin nhắn nhanh Đăng nhập từ xa Chia sẻ file P2P Trò chơi nhiều người mạng Streaming video clips Điện thoại Internet Hội thảo video thời gian thực Tính tốn lớn, tính tốn song song 1.6 Tạo ứng dụng mạng Viết chương trình để Chạy hệ thống đầu cuối, Truyền thông qua mạng Vd: web Phần mềm nhỏ viết cho thiết bị trung tâm mạng Các thiết bị trung tâm mạng không chạy mã ứng dụng người dùng Ứng dụng hệ thống đầu cuối cho phép phát triển ứng dụng nhanh, phổ biến 1.7 Principles of the Network Applications 2.1 CÁC NGUYÊN TẮC CỦA ỨNG DỤNG MẠNG 1.8 1.9 Các kiến trúc ứng dụng Client-Server Peer-to-peer (P2P) Lai Client-Server P2P 1.10 2.7 LẬP TRÌNH SOCKET 1.86 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 Đã giới thiệu BSD4.1, UNIX 1981 Mơ hình client/server kiểu dịch vụ lưu thơng qua socket API Datagram Tin không tin cậy cậy, truyền byte theo streaming Socket Một giao diện host cục bộ, tạo ứng dụng, điều khiển hệ điều hành, interface (một cửa), tiến trình ứng dụng gửi nhận thơng điệp đến/từ tiến trình khác 1.87 Lập trình socket với UDP UDP: không kết nối client server Không bắt tay Người gửi gắn đ/chỉ IP port cùa đích vào gói tin Phải trích đ/chỉ IP, port cửa người gửi từ gói tin nhận UDP: liệu truyền khơng theo thứ tự bị mát Góc nhìn ứng dụng: UDP cung cấp việc truyền “khơng tin cậy” nhóm byte (“datagrams”) client server 1.88 UDP: Giao tiếp socket Client/Server 1.89 Lập trình socket với TCP Client tiếp xúc với server: Tiến trình server sẵn sàng trước client khởi tạo tiếp xúc Server phải có special door/special socket Khi tiến trình server chạy: Tiến trình client khởi tạo kết nối TCP đến server cách tạo socket TCP Khi client tạo socket TCP, client xác định địa “welcome socket” phía server, cụ thể đ/chỉ IP server số port của socket Sau tạo socket, client khởi tạo 3-way handshake thiết lập kết nối TCP với server handshake diễn transport layer hoàn tồn vơ hình với ch/trình client server 3-way 1.90 Lập trình socket với TCP Trong suốt trình 3-way handshake: Khi nghe tiếng gõ cửa tiến trình client, server tạo socket cho client Cho phép server “nói chuyện” với nhiều client Dùng số port để phân biệt client (xem tiếp chương 3) Góc nhìn ứng dụng: TPC cung cấp việc truyền byte “tin cậy” theo thứ tự client server 1.91 Lập trình socket với TCP Tiến trình client vừa gửi đồng thời nhận bytes từ socket Tương tự, tiến trình server vừa nhận đồng thời gởi bytes thơng qua connection socket TCP cung cấp dịch vụ truyền tin cậy client server, đảm bảo tiến trình server nhận byte theo thứ tự gởi 1.92 TCP: Giao tiếp socket Client/Server 1.93 Ví dụ Ứng dụng Client/Server đơn giản sử dụng lập trình socket cho UDP TCP 1) Client đọc dòng ký tự (data) từ bàn phím gởi data cho server 2) Server nhận data chuyển ký tự thành ký tự hoa 3) Server gởi data sửa cho client 4) Client nhận data chỉnh sửa hiển thị thành dịng lên hình 1.94 UDPClient.py from socket import * serverName = ‘hostname’ serverPort = 12000 clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) message = raw_input(’Input lowercase sentence:’) clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print modifiedMessage clientSocket.close() 1.95 UDPServer.py from socket import * 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) 1.96 TCPClient.py from socket import * serverName = ’servername’ serverPort = 12000 clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) sentence = raw_input(‘Input lowercase sentence:’) clientSocket.send(sentence) modifiedSentence = clientSocket.recv(1024) print ‘From Server:’, modifiedSentence clientSocket.close() 1.97 TCPServer.py from socket import * serverPort = 12000 serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.bind((‘’,serverPort)) serverSocket.listen(1) 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() 1.98 TỔNG KẾT TỒNG QUAN MỘT SỐ VĐ VỀ ỨNG DỤNG MẠNG Các kiến trúc ứng dụng client-server P2P lai yêu cầu dịch vụ: tin cậy, bandwidth, trễ mơ hình dịch vụ Internet transport connection-oriented, tin cậy: TCP không tin cậy, datagrams: UDP giao thức đặc biệt: HTTP (cookies, web caching), FTP, SMTP, POP, IMAP, DNS lập trình socket 1.99 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 cầu/trả lời điển hình: client u cầu thơng tin dịch vụ service server đáp ứng với liệu, mã trạng thái dạng thông điệp: headers: trường cho biết thông tin liệu liệu: thông tin để truyền thô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 thông điệp tin cậy không tin cậy 1.100