610 likes | 991 Views
Tầng ứng dụng. Đỗ Thanh Thủy. Nội dung. Trình ứng dụng và giao thức tầng ứng dụng HTTP, HTTPS Telnet FTP, FTPS SMTP, POP3 DNS Lập trình web Lập trình socket Lab. Trình ứng dụng, giao thức …. Trình ứng dụng: các tiến trình phân tán truyền thông với nhau Chạy trên các thiết bị đầu cuối
E N D
Tầng ứng dụng Đỗ Thanh Thủy 1
Nội dung • Trình ứng dụng và giao thức tầng ứng dụng • HTTP, HTTPS • Telnet • FTP, FTPS • SMTP, POP3 • DNS • Lập trình web • Lập trình socket • Lab 2
Trình ứng dụng, giao thức … • Trình ứng dụng: các tiến trình phân tán truyền thông với nhau • Chạy trên các thiết bị đầu cuối • Trao đổi thông điệp với nhau • Giao thức ứng dụng • Là 1 phần của trình ứng dụng • Xác định thông điệp trao đổi giữa các ứng dụng • Sử dụng dịch vụ do giao vận cung cấp (TCP, UDP) 3
HTTP • Giao thức truyền siêu văn bản • Làm việc theo mô hình client/server • Client: web browser yêu cầu, nhận, hiển thị các đối tượng web • Server: web server nhận, phân tích, xử lý yêu cầu, trả về cho web browser đối tượng web. • Sử dụng TCP: các bước như sau • HTTP server phải chạy trước và nghe ở cổng 80 • HTTP client khởi tạo một kết nối TCP (socket) đến HTTP server qua cổng 80 • HTTP server chấp nhận kết nối TCP từ HTTP client • HTTP client gửi thông điệp yêu cầu đối tượng web • HTTP server phân tích, tìm kiếm đối tượng và trả về cho client • HTTP server đóng kết nối TCP. 4
HTTP • Lắng nghe ở 1 cổng (80), phục vụ ở nhiều cổng • Các connection sẽ xếp hàng ở cổng 80 • Mỗi khi server accept 1 connection, nó sẽ phục vụ ở 1 cổng khác • Sau khi phục vụ xong, cổng được thu hồi để phục vụ yêu cầu khác. • Giao thức không trạng thái (stateless) • server không lưu trạng thái của client sau khi đã trả kết quả về cho client => server có thể phục vụ nhiều yêu cầu của các client cùng một lúc. • HTTP 1.0: RFC 1945 • HTTP 1.1: RFC 2068 5
Bạn đánh địa chỉ trên trình duyệt www.someSchool.edu/someDepartment/home.htm HTTP client HTTP server 1a. HTTP client khởi tạo kết nối TCP tới HTTP server tại địa chỉ www.someSchool.edu. Cổng mặc định là 80 1b. HTTP server ở địa chỉ www.someSchool.edu đợi kết nối TCP ở cổng 80, chấp nhận kết nối, thông báo lại cho client 2. HTTP client gửi thông điệp HTTP yêu cầu (bao gồm URL) qua kết nối TCP vừa thiết lập 3. HTTP server nhận thông điệp yêu cầu, lấy đối tượng được yêu cầu (someDepartment/home.htm) gửi vào trong thông điệp trả lời (socket khác) time HTTP home.htm có tham chiếu đến 10 ảnh JPEG 6
HTTP client HTTP server 5. HTTP client nhận thông điệp trả lời bao gồm tệp htm. Phân tích tệp htm, tìm 10 đối tượng JPEG được tham chiếu. Hiển thị tệp htm 4. HTTP server đóng kết nối TCP 6. Lặp lại các bước từ 1-5 cho mỗi đối tượng JPEG trong 10 đối tượng JPEG time HTTP 7
Dòng yêu cầu (Lệnh GET, POST, HEAD) Các dòng header Kết thúc thông điệp GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr CR,LF HTTP • Định dạng thông điệp yêu cầu và trả lời • Thông điệp HTTP request: dạng ASCII 8
HTTP • Thông điệp trả lời 9
HTTP • Thực hành: • Viết thông điệp HTTP request, lấy 1 đối tượng web trên localhost (127.0.0.1:80) • Viết thông điệp HTTP request, lấy đối tượng msdn.microsoft.com/en-us/default.aspx 10
HTTP • Hướng dẫn • Thiết kế 1 form (xem giao diện kết quả chạy chương trình slide sau) • Viết code cho 2 nút lệnh như sau: 11
HTTP Hàm này để connect với web server. Được gọi khi có sự kiện click chuột trên nút lệnhConnectserver private void Connectserver_Click(object sender, EventArgs e) { IPAddress ip = IPAddress.Parse(txtIP.Text); IPEndPoint ipep = new IPEndPoint(ip, 80); clsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); string retval = ""; try { clsock.Connect(ipep); retval = "Connect server successfully!"; } catch (SocketException ske) { retval = ske.Message ; } lbl1.Text = retval ; } 12
HTTP Hàm này để lấy đối tượng web/en-us/default.aspx (gọi khi hàm connect thành công và có sự kiện click chuột trên nút lệnh getHTTPserver) private void getHTTPserver_Click(object sender, EventArgs e) { byte[] data = new byte[10*1024]; string str = ""; str = "GET /en-us/default.aspx HTTP/1.0 \n\n"; data = Encoding.ASCII.GetBytes(str); clsock.Send(data, data.Length, SocketFlags.None); data = new byte[1024]; clsock.Receive(data, SocketFlags.None); str = ""; str = Encoding.ASCII.GetString(data); richTextBox1.Text = richTextBox1.Text + "\n" + str; clsock.Close(); } 13
HTTP • Bài tập: • Hãy thay hộp nhập địa chỉ IP của web server bằng địa chỉ tên miền => cần dùng lớp Dns để phân giải • Hãy lấy các đối tượng web khác trên Internet. 14
HTTP Kết quả chạy chương trình 15
HTTP Secure • Là sự kết hợp giữa HTTP và SSL/TLS • Mã hóa dữ liệu theo thuật toán mã hóa công khai (RSA) trong quá trình truyền thông giữa http client và http server. 16
Telnet • Dịch vụ cho phép người dùng từ một máy tính ở xa đăng nhập vào 1 host • Hoạt động theo mô hình client/server • Sử dụng giao thức TCP • Telnet server nghe mặc định ở cổng 23 17
FTP • Là giao thức trao đổi file với máy tính ở xa (remote host) • Sử dụng mô hình client/server • client: khởi tạo kết nối. • server: máy tính ở xa (remote host) • FTP được đặc tả trong RFC 959 • FTP server nghe ở port 21 18
FTP • FTP client kết nối với FTP server qua cổng 21. • Hai kết nối TCP đồng thời được tạo: • Kiểm soát : trao đổi lệnh, phản hồi giữa client và server. “out of band control” • Dữ liệu : kết nối tải file từ client đến server hay từ server về client. • FTP server lưu lại trạng thái : thư mục hiện thời, lần truy nhập gần đây nhất 19
FTP Các mã trả về thường gặp • 331 chấp nhận username, yêu cầu password • 125 kết nối dữ liệu được thiết lập, chuẩn bị truyền dữ liệu. • 425 Không thể thiết lập kết nối dữ liệu • 452 Lỗi ghi file Các lệnh thường gặp Được mã hoá bằng mã ASCII • USER username • PASS password • LIST trả về danh sách các file và thư mục trong thư mục hiện thời. • RETR filename lấy file từ thư mục hiện thời. • STOR filename Tải file vào thư mục hiện thời trên máy tính ở xa 20
FTP • Một số phần mềm FTP server phổ biến: • Trong windows, linux đều có • Titan FTP server • FileZilla server • Một số phần mềm FTP client • Windows explorer, IE, windows commander • FileZilla 21
FTP • Thực hành: • Upload/download file với FTP server và Windows explorer của window • Upload/download file với TitanFTPserver và FileZilla 22
FTP • Hướng dẫn • Start FTP server trên windows như cửa sổ sau 23
FTP • Sử dụng IE/Firefox để browse đến FTP server như sau 24
FTP • Download và cài đặt TitanFTPserver (trên máy ảo) • Download và cài đặt FileZilla (trên máy thật) • Tạo một vài tài khoản người dùng tại TitanFTPserver. Ví dụ luvina 25
FTP Tạo người dùng luvina trong TitanFTPserver 26
FTP Nhập các giá trị vào các điều khiển trong hộp thoại 27
FTP 28
FTP 29
FTP Chạy FileZilla, File/Site Manager 30
FTP Chọn New site 31
FTP Nhập tên site, account tùy ý sao cho dễ nhớ. Host: địa chỉ IP của FTP server, port nghe là 21 32
FTP Connect thành công, kết quả là cửa sổ hiển thị bên trái là các file và thư mục ở máy client, cửa sổ hiển thị bên phải là các file và thư mục của người dùng đó trên FTP server. Trong cửa sổ này, có thể upload/download file giữa client và server 33
Email • Hoạt động theo mô hình client/server • Gồm 3 thành phần chính • User agent • Mail server • SMTP • User agent • Mail reader • Giúp người dùng soạn và đọc thư (POP3) • Các thông điệp mail (đến và đi) được lưu trên mail server • Ví dụ: outlook 34
Email • SMTP là giao thức để các mail server trao đổi mail • Là client khi gửi mail • Là server khi nhận mail • Mail server • Hộp thư lưu lại các email của người dùng • Hàng đợi chứa các thư sẽ được gửi đi 35
Email • Mail server: RFC 821 • Sử dụng dịch vụ TCP truyền email tin cậy từ SMTP client -> SMTP server, port 25. • Truyền trực tiếp từ server gửi -> server nhận • Ba giai đoạn • Bắt tay • Truyền các thông điệp • Đóng kết nối • Tương tác • Lệnh: client -> server • Thông điệp trả lời: server – client • Các thông điệp được mã theo bảng mã ASCII 7 bit • Tương tác giữa user agent và mail server bằng giao thức POP3 36
SMTP – ví dụ telnet 192.168.145.3 25 Tương tác với SMTP server 37
SMTP – ví dụ 38
SMTP telnet gmail-smtp-in.l.google.com 25 Tương tác với SMTP server 39
SMTP • SMTP sử dụng kết nối bền vững • SMTP yêu cầu thông điệp (header và body) phải được mã hóa bằng ASCII 7 bit • SMTP sử dụng CRLF.CRLF để đánh dấu kết thúc thông điệp 40
POP3 • Là giao thức để tải thư từ mail server về user agent • Có 2 giai đoạn: • Kiểm chứng user agent <-> server • Tải mail về 41
POP3 • Giai đoạn kiểm chứng: • Các lệnh client gửi: • User: user name • Pass: password • Server trả lời: • +OK • -ERR • Giai đoạn xử lý, cập nhật mail: • List: in ra các thư được đánh số (ID) • Retr: lấy mail có ID là số được nhập vào • Dele: xóa mail có ID là số nhập vào • Quit: kết thúc phiên làm việc 42
Kiểm chứng Xử lý: lấy, xóa, duyệt mail List: duyệt các mail, các mail sẽ được hiển thị theo cặp (ID, sizeof(mail)) Retr mailID: lấy mail theo ID Dele mailID: xóa mail theo ID Quit: kết thúc phiên làm việc POP3 – ví dụtelnet 192.168.145.3 110 43
DNS • Hệ thống tên miền • Ánh xạ địa chỉ IP <-> tên miền • CSDL phân tán được cài đặt bởi nhiều name server phân cấp • Hoạt động theo mô hình client/server • Name server (NS) • Đối với host: lưu địa chỉ IP và tên miền tương ứng của host • Có thể tìm tên miền ứng với địa chỉ IP và ngược lại • 3 loại NS: Local NS, Root NS, Authoritative NS 44
DNS • Local NS: • mỗi ISP có NS • Câu hỏi truy vấn của host về DNS sẽ được chuyển tới local NS • Local NS sẽ hỏi Root NS nếu không tìm được ánh xạ • Root NS • Nhận câu hỏi của local NS • Hỏi Authoritative NS nếu không có ánh xạ • Nhận câu trả lời từ authoritative NS • Trả lời local NS • Thế giới có 13 Root NS • Authoritative NS (ANS) • Mỗi máy tính phải đăng ký tới 1 ANS • ANS của 1 máy tính là NS trong miền ISP của máy tính đó • ANS luôn lưu bản ghi DNS ánh xạ: IP address <-> host name • Nhận truy vấn từ root NS và gửi thông điệp trả lời cho root NS 45
DNS • Ví dụ: • host surf.eurecom.fr muốn biết địa chỉ IP của gaia.cs.umass.edu • Hỏi local DNS server (dns.eurecom.fr) • dns.eurecom.fr hỏi root name server nếu cần thiết • root name server hỏi authoritative name server, dns.umass.edu nếu cần thiết. 46
DNS Trên thực tế, DNS có các NS trung gian (intermediate NS) Root name server: - Có thể không biết authoritative name server - Chỉ biết Name Servertrung gian, qua đó mới tìm được authoritative name server 47
DNS Các loại truy vấn - Truy vấn đệ quy NS là nơi giải mã địa chỉ <-> tên miền. Nếu không tự mình giải mã được nó sẽ gửi yêu cầu đến NS khác. =>Root name server liệu có bị quá tải - Truy vấn tương tác Nếu không phân giải được địa chỉ IP, gửi thông điệp “Tôi không biết, hãy hỏi bạn tôi là A”. A là địa chỉ IP của NS kế tiếp. 48
DNS Bản ghi DNS • DNS là cơ sở dữ liệu phân tán lưu các Bản ghi Tài nguyên (RR) Định dạng RR(name, value, type, TTL) • Type=NS • name : domain (ví dụ foo.com) • value : địa chỉ IP của authoritative name server ứng với miền đó • Type=A • name : hostname • value : IP address • Type=CNAME • name : tên bí danh cho một tên thực nào đó : ví dụ www.ibm.com là tên bí danh của servereast.backup2.ibm.com • value : tên thực • Type=MX • Name: tên miền • value : tên của mailserver 49
DNS Quan sát DNS 50