Tầng ứng dụng

51
1 Tầng ứng dụng Đỗ Thanh Thủy

description

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 - PowerPoint PPT Presentation

Transcript of Tầng ứng dụng

Page 1: Tầng ứng dụng

1

Tầng ứng dụng

Đỗ Thanh Thủy

Page 2: Tầng ứng dụng

2

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

Page 3: Tầng ứng dụng

3

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)

Page 4: Tầng ứng dụng

4

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.

Page 5: Tầng ứng dụng

5

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

Page 6: Tầng ứng dụng

6

HTTP

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

Bạn đánh địa chỉ trên trình duyệt www.someSchool.edu/someDepartment/home.htm

HTTP client HTTP server

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)

home.htm có tham chiếu đến 10 ảnh JPEG

time

Page 7: Tầng ứng dụng

7

HTTPHTTP client HTTP server

4. HTTP server đóng kết nối TCP5. 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

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

Page 8: Tầng ứng dụng

8

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

(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

Dòng yêu cầu

Page 9: Tầng ứng dụng

9

HTTP

• Thông điệp trả lời

Page 10: Tầng ứng dụng

10

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

Page 11: Tầng ứng dụng

11

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:

Page 12: Tầng ứng dụng

12

HTTP

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 ; }

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ệnh Connectserver

Page 13: Tầng ứng dụng

13

HTTP

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(); }

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)

Page 14: Tầng ứng dụng

14

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.

Page 15: Tầng ứng dụng

15

HTTP

Kết quả chạy chương trình

Page 16: Tầng ứng dụng

16

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.

Page 17: Tầng ứng dụng

17

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

Page 18: Tầng ứng dụng

18

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

Page 19: Tầng ứng dụng

19

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

Page 20: Tầng ứng dụng

20

FTP

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

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

Page 21: Tầng ứng dụng

21

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

Page 22: Tầng ứng dụng

22

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

Page 23: Tầng ứng dụng

23

FTP• Hướng dẫn

– Start FTP server trên windows như cửa sổ sau

Page 24: Tầng ứng dụng

24

FTP• Sử dụng IE/Firefox để browse đến FTP server như sau

Page 25: Tầng ứng dụng

25

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

Page 26: Tầng ứng dụng

26

FTP

Tạo người dùng luvina trong TitanFTPserver

Page 27: Tầng ứng dụng

27

FTP

Nhập các giá trị vào các điều khiển trong hộp thoại

Page 28: Tầng ứng dụng

28

FTP

Page 29: Tầng ứng dụng

29

FTP

Page 30: Tầng ứng dụng

30

FTP

Chạy FileZilla, File/Site Manager

Page 31: Tầng ứng dụng

31

FTP

Chọn New site

Page 32: Tầng ứng dụng

32

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

Page 33: Tầng ứng dụng

33

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

Page 34: Tầng ứng dụng

34

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

Page 35: Tầng ứng dụng

35

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

Page 36: Tầng ứng dụng

36

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

Page 37: Tầng ứng dụng

37

SMTP – ví dụ

telnet 192.168.145.3 25

Tương tác với SMTP server

Page 38: Tầng ứng dụng

38

SMTP – ví dụ

Page 39: Tầng ứng dụng

39

SMTP

telnet gmail-smtp-in.l.google.com 25

Tương tác với SMTP server

Page 40: Tầng ứng dụng

40

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

Page 41: Tầng ứng dụng

41

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ề

Page 42: Tầng ứng dụng

42

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

Page 43: Tầng ứng dụng

43

POP3 – ví dụtelnet 192.168.145.3 110

Xử lý: lấy, xóa, duyệt mail

Kiểm chứng

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

Page 44: Tầng ứng dụng

44

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

Page 45: Tầng ứng dụng

45

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

Page 46: Tầng ứng dụng

46

DNS

Ví dụ:

host surf.eurecom.fr muốn biết địa chỉ IP của gaia.cs.umass.edu

1. Hỏi local DNS server (dns.eurecom.fr)

2. dns.eurecom.fr hỏi root name server nếu cần thiết

3. root name server hỏi authoritative name server, dns.umass.edu nếu cần thiết.

Page 47: Tầng ứng dụng

47

DNSTrê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 Server trung gian, qua đó mới tìm được authoritative name server

Page 48: Tầng ứng dụng

48

DNS

Các loại truy vấn

- Truy vấn đệ quyNS 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ácNế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.

Page 49: Tầng ứng dụng

49

DNSBả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

Page 50: Tầng ứng dụng

50

DNS

Quan sát DNS

Page 51: Tầng ứng dụng

51

DNS

• Bài tập:– Hãy tìm IP address của mail.yahoo.com,

gmail.com