tầng ứng dụng

Post on 28-Jan-2016

112 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

1

Tầng ứng dụng

Đỗ Thanh Thủy

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

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)

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.

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

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

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

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

9

HTTP

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

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

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:

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

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)

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.

15

HTTP

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

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.

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

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

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

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

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

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

23

FTP• Hướng dẫn

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

24

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

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

26

FTP

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

27

FTP

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

28

FTP

29

FTP

30

FTP

Chạy FileZilla, File/Site Manager

31

FTP

Chọn New site

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

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

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

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

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

37

SMTP – ví dụ

telnet 192.168.145.3 25

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

38

SMTP – ví dụ

39

SMTP

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

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

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

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ề

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

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

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

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

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.

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

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.

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

50

DNS

Quan sát DNS

51

DNS

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

gmail.com

top related