Download - Mạng máy tính
1-1
Mạng máy tính
Bộ môn Kỹ thuật máy tính và Mạng
Khoa Công nghệ Thông tin
Đại học Sư phạm Hà Nội
1-2
Chương 3: Tầng ứng dụng
2.1 Các nguyên tắc của ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 E-Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng một Web
server
1-3
Chương 3: Tầng ứng dụng
Mục đích: Các khía cạnh của
các giao thức ứng dụng mạng Mô hình dịch vụ tầng
giao vận Mô hình Client-Server Mô hình peer-to-peer
Học về các giao thức phổ biến mức ứng dụng HTTP FTP SMTP / POP3 / IMAP DNS
Lập trình các ứng dụng mạng Socket API
1-4
Một số ứng dụng mạng
E-mail Web Instant messaging Remote login Chia sẻ file P2P Trò chơi nhiều người
sử dụng qua mạng
Điện thoại qua Internet Hội nghị truyền hình
thời gian thực Tính toán song song
1-5
Tạo một ứng dụng mạng
Viết chương trình Chạy trên các end systems
khác nhau và Giao tiếp qua mạng Ví dụ Web: Phần mềm Web
server giao tiếp với phần mềm trình duyệt
Không có phần mềm viết cho các thiết bị trong Network Core Các thiết bị trong Network
Core không thực hiện chức năng tại lớp ứng dụng
Thiết kế này để sự phát triển ứng dụng nhanh
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
1-6
Chương 3: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-7
Các kiến trúc ứng dụng
Client-Server Peer-to-peer (P2P) Hybrid
1-8
Kiến trúc Client-server
Server: Host ở trạng thái luôn
chạy Địa chỉ IP cố định Server farm để tăng khả
năng phục vụ
Client: Truyền thông với server Có thể không kết nối liên
tục Có thể có địa chỉ IP động Không giao tiếp trực tiếp
với nhau
1-9
Kiến trúc P2P
Server không ở trạng thái luôn chạy
Hệ thống cuối tùy ý truyền thông trực tiếp
Các Peer kết nối không liên tục và thay đổi địa chỉ IP
Ví dụ: Gnutella
Khả năng co giãn quy mô cao
Khó quản lý
1-10
Hybrid
Lai giữa P2P và Client-ServerNapster
Truyền file P2P Tìm kiếm file tập trung:
• Các Peer đăng ký nội dung tại server trung tâm• Các Peer gửi yêu cầu server trung tâm xác định vị trí của nội
dung
Instant Messaging Giao tiếp giữa 2 user là P2P Quản lý tập trung vị trí của user:
• User đăng ký địa chỉ IP với server trung tâm khi kết nối• User thông qua server trung tâm để tìm địa chỉ IP của đối
tượng cần giao tiếp
1-11
Truyền thông của các tiến trình
Tiến trình: chương trình chạy trong một host.
Trong cùng host, 2 tiến trình giao tiếp sử dụng inter-process communication (Do OS định nghĩa).
Các tiến trình trong các host khác nhau giao tiếp bằng cách trao đổi các message
Tiến trình client: tiến trình khởi đầu quá trình truyền thông
Tiến trình server: tiến trình đợi kết nối
Chú ý: Các ứng dụng P2P có cả tiến trình client và tiến trình server
1-12
Socket
Tiến trình gửi nhận messages tới/từ socket của nó
Socket tương tự cửa ra vào Tiến trình gửi đẩy bản tin ra
ngoài cửa Tiến trình gửi dựa vào hạ
tầng giao vận trên phía bên kia của cửa, nó mang message tới socket của tiến trình nhận
Tiến trình
TCP vớibuffer,Biến
socket
host hoặcserver
Tiến trình
TCP với Buffer, biến
socket
host hoặcserver
Internet
Điều khiển bởi OS
Điều khiển bởi người lập trình ứng dụng
API: (1) Chọn giao thức giao vận; (2) Gán giá trị cho một vài tham số (chi tiết phần sau)
1-13
Các tiến trình đánh địa chỉ Đối với một tiến trình
nhận messages, nó phải có một định danh
Một host có một địa chỉ IP duy nhất
Câu hỏi: Địa chỉ IP của host mà tiến trình chạy có đáp ứng được việc định danh tiến trình?
Trả lời: Không, nhiều tiến trình có thể chạy trên cùng host
Định danh bao gồm cả địa chỉ IP và địa chỉ cổng gán cho ứng dụng trên host.
Ví dụ: Giá trị cổng của một số ứng dụng: HTTP server: 80 Mail server: 25
Chi tiết hơn trong phần sau
1-14
Giao thức lớp ứng dụng
Giao thức lớp ứng dụng định nghĩa Kiểu của bản tin trao đổi,
ví dụ bản yêu cầu, bản tin trả lời
Cú pháp của kiểu bản tin: Các trường trong bản tin và mô tả các trường trong bản tin
Ý nghĩa của các trường Quy tắc các tiến trình
gửi/nhận bản tin khi nào và như thế nào
Các giao thức công khai: Định nghĩa trong các
RFC Cho phép phối hợp hoạt
động Ví dụ: HTTP, SMTP
Các giao thức không công khai:
1-15
Các dịch vụ giao vận mà ứng dụng cần
Mất dữ liệu Một số ứng dụng (ví dụ: audio)
có thể chấp nhận một tỷ lệ mất dữ liệu nào đó
Một số ứng dụng khác (ví dụ: Truyền file, telnet) đòi hỏi 100%
dữ liệu truyền là tin cậy
Thời gian Một số ứng dụng (ví dụ: điện
thoại Internet, trò chơi tương tác) đòi hỏi độ trễ thấp
Băng thông Một số ứng dụng (ví dụ: đa
phương tiện) yêu cầu lượng băng thông tối thiểu
Một số ứng dụng khác sử dụng theo băng thông chúng nhận được
1-16
Yêu cầu của ứng dụng giao vận của một số ứng dụng
Ứng dụng
Truyền fileE-mail
WebReal-time audio/video
Stored audio/videoTrò chơi tương tácInstant messaging
Mất dữ liệu
Không cho phépKhông cho phépKhông cho phépCho phép
Cho phépCho phépKhông cho phép
Băng thông
Co giãnCo giãnCo giãnAudio: 5kbps-1MbpsVideo:10kbps-5MbpsTương tự trên Yêu cầu kbpsCo giãn
Thời gian
KhôngKhôngKhôngCó, hàng trăm msec
Có, vài secsCó, hàng trăm msecCó
1-17
Các dịch vụ các giao thức giao vận
Dịch vụ TCP: Hướng kết nối: Đòi hỏi quá
trình thiết lập giữa tiến trình client và tiến trình server
Truyền tin cậy giữa tiến trình gửi và tiến trình nhận
Điều khiển luồng: Bên gửi sẽ không vượt quá khả năng bên nhận
Điều khiển tắc nghẽn: điều chỉnh bên gửi khi mạng quá tải
Không cung cấp: tính thời gian, đảm bảo băng thông tối thiểu
Dịch vụ UDP: Truyền dữ liệu không tin
cậy giữa tiến trình gửi và tiến trình nhận
Không cung cấp: việc thiết lập kết, truyền tin cậy, điều khiển luồng, điều khiển tắc nghẽn, tính thời gian, đảm bảo băng thông
Q: Tại sao cần UDP?
1-18
Các ứng dụng Internet: các giao thức tầng ứng dụng và tầng giao vận
Ứng dụng
Thư điện tửTruy cập từ xa
Web Truyền file
Truyền dòng đa phương tiện
Điện thoại Internet
Giao thứctầng ứng dụng
SMTP [RFC 2821]Telnet [RFC 854]HTTP [RFC 2616]FTP [RFC 959]Không công khai(vd: RealNetworks)Không công khai(vd: Dialpad)
Giao thức tầng giao vận
TCPTCPTCPTCPTCP hoặc UDP
UDP
1-19
Chương 2: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-20
Web và HTTP
Trang Web chứa các đối tượng Đối tượng có thể là file HTML, ảnh JPEG, Java
applet, audio,… Trang Web chứa file HTML, chứa các đối tượng
tham chiếu Mỗi đối tượng được đánh địa chỉ bởi một URL Ví dụ URL:
www.someschool.edu/someDept/pic.gif
host name path name
1-21
HTTP
HTTP: hypertext transfer protocol
Giao thức tầng ứng dụng của Web
Mô hình client/server client: Trình duyệt yêu
cầu, nhận và hiện thị các đối tượng
server: Web server gửi các đối tượng trong trả lời
HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068
Server chạy
Apache Webserver
HTTP request
HTTP request
HTTP response
HTTP response
1-22
HTTP (tiếp)
Sử dụng TCP: Client khởi đầu kết nối TCP (tạo
socket) tới server, cổng 80 Server chấp nhận kết nối TCP từ
client Các bản tin HTTP (bản tin của
giao thức tầng ứng dụng Web) trao đối giứa trình duyệt (HTTP client) và Web server (HTTP server)
Kết nối TCP đóng
HTTP là không hướng trạng thái
Server không duy trì thông tin về các yêu cầu của client trong quá khứ
Các giao thức hướng trạng thái phức tạp hơn giao thức không hướng trạng thái
Quá khứ phải được duy trì Nếu server/client lỗi, các
trạng thái có thể không thống nhất
1-23
Kết nối HTTP
Không kiên trì HTTP Một đối tượng được gửi
qua một kết nối TCP HTTP/1.0 sử dụng
nonpersistent HTTP
Kiên trì HTTP Nhiều đối tượng có thể
gửi qua một kết nối TCP giữa client và server
HTTP/1.1 mặc định sử dụng persistent HTTP
1-24
Nonpersistent HTTPGiả sử người sử dụng nhập vào URL www.someSchool.edu/someDepartment/home.index
1a. HTTP client khởi đầu kết nối TCP tới HTTP server (tiến trình) tại www.someSchool.edu, cổng 80
2. HTTP client gửi bản tin yêu cầu HTTP (chứa URL) vào socket của kết nối TCP. Bản tin chỉ rằng client muốn lấy đối tượng someDepartment/home.index
1b. HTTP server tại host www.someSchool.edu đợi kết nối TCP tại cổng 80.
Chấp nhận kết nối, thông báo cho client
3. HTTP server nhận bản tin yêu cầu, xây dựng bản tin trả lời chứa đối tượng đã yêu cầu và gửi bản tin vào trong socket của nó
Thời gian
(chứa text, tham chiếu tới 10
ảnh jpeg)
1-25
Nonpersistent HTTP (cont.)
5. HTTP client nhận trả lời chứa file html, hiện thị nội dung. Phân tích html, tìm 10 đối tượng ảnh jpeg được tham chiếu
6. Lặp bước 1-5 cho mỗi đối tượng ảnh jpeg
4. HTTP server đóng kết nối TCP
time
1-26
Mô hình thời gian trả lời
RTT: thời gian để gửi một gói tin từ client tới server và trở lại
Thời gian trả lời: 1 RTT để khởi tạo kết nối
TCP 1 RTT cho yêu cầu HTTP
và nhận byte đầu tiên của trả lời HTTP
Thời gian truyền file
total = 2RTT+transmit time
transmit time
Khởi đầukết nối TCP
RTT
file yêu cầu
RTT
file đã nhận
thời gian thời gian
1-27
Persistent HTTP
Nonpersistent HTTP: Yêu cầu 2 RTT cho 1 đối
tượng Hệ điều hành phải cấp phát tài
nguyên cho mỗi kết nối TCP Trình duyệt phải mở song
song nhiều kết nối TCP để lấy đối tượng tham chiếu
Persistent HTTP Server tạm dừng kết nối sau
khi gửi trả lời Các bản tin HTTP sau đó giữa
cùng client/server được gửi qua kết nối
1-28
Bản tin yêu cầu HTTP
Hai kiểu bản tin HTTP: yêu cầu, trả lời Bản tin yêu cầu HTTP:
ASCII
GET /somedir/page.html HTTP/1.1Host: www.someschool.edu User-agent: Mozilla/4.0Connection: close Accept-language:fr
(CR, LF)
Request line(lệnh GET, POST,
HEAD )
header line
1-29
Bản tin yêu cầu HTTP
1-30
Kiểu Method
HTTP/1.0 GET POST HEAD
Hỏi server bỏ đối tượng đã yêu cầu ra khỏi trả lời
HTTP/1.1 GET, POST, HEAD PUT
đưa file trong phần body lên đường dẫn chỉ trong URL
DELETE xóa file trong trường
URL
1-31
Bản tin trả lời HTTP
HTTP/1.1 200 OK Connection closeDate: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html dữ liệu
status line(protocol
status codestatus phrase)
header line
dữ liệu, ví dụ:file HTML đã
yêu cầu
1-32
Mã trạng thái của trả lời HTTP
200 OK Yêu cầu thực hiện thành công, đối tượng trong bản tin
301 Moved Permanently Đối tượng yêu cầu đã di chuyển vị trí, ví trí mới được chỉ ra
trong bản tin (Location:)
400 Bad Request Server không hiểu bản tin yêu cầu
404 Not Found Không tìm thấy đối tượng yêu cầu
505 HTTP Version Not Supported
Trong dòng đầu tiên của trả lời server->client
Ví dụ:
1-33
Thực hành
1. Telnet tới một Web server:
Mở kết nối TCP tới cổng 80 tại cis.poly.edu.Nội dung gõ được gửi tới cổng 80 tại cis.poly.edu
telnet cis.poly.edu 80
2. Gõ lệnh GET
GET /~ross/ HTTP/1.1Host: cis.poly.edu
3. Xem bản tin trả lời gửi bởi HTTP server
1-34
Web cache (proxy server)
Người dùng thiết lập qua trình duyệt
Trình duyệt gửi mọi yêu cầu HTTP qua Cache Đối tượng trong cache:
sẽ được trả về Nếu không: Yêu cầu
được chuyển tới server ban đầu
Mục đích: thực hiện yêu cầu của client không phải yêu cầu tới server ban đầu
client
Proxyserver
client
HTTP request
HTTP request
HTTP response
HTTP response
HTTP request
HTTP response
serverban đầu
serverban đầu
1-35
Web cache
Cache hoạt động như cả client và server
Thông thường, được cài đặt bởi ISP
Lợi ích của Web cache Giảm thời gian trả lời Giảm lưu lượng trên đường
truyền truy cập
1-36
Web cache
Cache hoạt động như cả client và server
Thông thường cache được cài đặt bởi ISP (trường đại học, công ty, nhà cung cấp dịch vụ cho gia đình)
Tại sao dùng Web cache? Giảm thời gian trả lời cho
yêu cầu của client. Giảm lưu lượng trên đường
truy cập của tổ chức.
1-37
Ví dụ caching
Giả sử Kích thước của đối tượng trung
bình = 100,000 bits ~ 960 kbs Tốc độ yêu cầu trung bình từ trình
duyệt của tới server ban đầu = 15 giây
Trễ từ router của tổ chức tới server ban đầu và trở lại = 2 giây
Kết quả Sự sử dụng trong LAN = 15% Sự sử dụng trong đường truyền
truy cập = 100% Total delay = Internet delay +
access delay + LAN delay
= 2 giây + phút + millisecond
Các serverban đầu
public Internet
Mạng của tổ chức 10 Mbps LAN
Đường truyền truy cập 1.5 Mbps
InstitutionalCache
1-38
Ví dụ caching (tiếp)
Giải pháp có thể Tăng băng thông của đường truyền
truy cập: 10 Mbps
Kết quả Sự sử dụng LAN = 15% Sử dụng đường truyền truy cập =
15% Total delay = Internet delay +
access delay + LAN delay
= 2 sec + msecs + msecs
Server ban đầu
public Internet
Mạng củatổ chức 10 Mbps LAN
Đường truyền truy cập10 Mbps
institutionalcache
1-39
Ví dụ caching (tiếp)
Cài đặt cache Hỗ trợ hit rate .4
Kết quả 40% yêu cầu sẽ đáp ứng gần
như ngay lập tức 60% yêu cầu đáp ứng bởi
server ban đầu Sự sử dụng đường truyền
truy cập giảm tới 60%, kết quả độ trễ không đáng kể (10 msec)
total avg delay = Internet delay + access delay + LAN delay = .6*(2.01) secs + milliseconds < 1.4 secs
Server ban đầu
public Internet
Mạng của tổ chức 10 Mbps LAN
Đường truyền truy cập 1.5 Mbps
institutionalcache
1-40
GET có điều kiện
Mục đích: không gửi đối tượng nếu cache có phiên bản cập nhật
Cache: chỉ định ngày của bản sao chép trong cache trong yêu cầu HTTPIf-modified-since: <date>
Server: Trả lời không chứa đối tượng nếu bản sao chép trong cache cập nhật: HTTP/1.0 304 Not Modified
Cache Server
Bản tin yêu cầu HTTP If-modified-since: <date>
Bản tin trả lời HTTPHTTP/1.0
304 Not Modified
Đối tượngkhông bị thay đổi
Bản tin yêu cầu HTTPIf-modified-since: <date>
Bản tin trả lời HTTPHTTP/1.0 200 OK
<data>
Đối tượng đã thay đổi
1-41
Chương 3: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-42
FTP: File Transfer Protocol
Truyền file tới/từ host ở xa Mô hình client/server
client: Phía khởi đầu việc truyền (tới hoặc từ host ở xa) server: host ở xa
ftp: RFC 959 ftp server: port 21
Truyền file FTPserver
Giao diện người sử dụng FTP
FTPclient
Hệ thống file cục bộ
Hệ thống file từ ở xa
user tại host
1-43
FTP: Kết nối dữ liệu và điều khiển riêng biệt
FTP client liên lạc với FTP server tại cổng 21, chỉ định dùng TCP làm giao thức giao vận
Client giành ủy quyền qua kết nối điều khiển
Client xem thư mục từ xa bằng cách gửi lệnh qua kết nối điều khiển
Khi server nhận một lệnh truyền file, server mở một kết nối dữ liệu TCP tới client
Sau khi truyền file, server đóng kết nối.
FTPclient
FTPserver
Kết nối điều khiển TCP cổng 21
Kết nối dữ liệu TCPcổng 20
Server mở một kết nối dữ liệu TCP thứ hai để truyền một file khác.
Kết nối điều khiển: truyền theo đường riêng
FTP server duy trì trạng thái: thư mục hiện tại, ủy quyền trước đó
1-44
Lệnh và trả lời của FTP
Ví dụ một số lệnh: Gửi văn bản mã ASCII
qua kênh điều khiển USER username PASS password LIST trả về một danh
sách các file trong thưc mục hiện tại
RETR filename lấy file
STOR filename đưa file lên remote host
Ví dụ một số mã trả về Status code và status
phrase (như HTTP) 331 Username OK, đòi hỏi mật khẩu
125 kết nối dữ liệu đã mở; bắt đầu truyền
425 Không thể mở kết nối dữ liệu
452 Lỗi ghi file
1-45
Chương 2: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-46
Electronic Mail
Ba thành phần chính: User agent Mail server Simple mail transfer protocol:
SMTP
User Agent Còn gọi là Mail Reader Soạn, sửa, đọc bản tin mail Ví dụ: Eudora, Outlook,
Netscape Messenger Các bản tin gửi tới và gửi đi
đã chứa trên server
User mailbox
Hàng đợi bản tin gửi đi
mailserver
useragent
useragent
useragent
mailserver
useragent
useragent
mailserver
useragent
SMTP
SMTP
SMTP
1-47
Electronic Mail: Mail server
Mail Server mailbox chứa các bản tin
thư điện tử gửi đến cho người sử dụng
message queue của các bản tin thư điện tử gửi đi
SMTP protocol giữa các mail server để gửi các bản tin thư điện tử client: mail server gửi “server”: mail server
nhận
mailserver
useragent
useragent
useragent
mailserver
useragent
useragent
mailserver
useragent
SMTP
SMTP
SMTP
1-48
Electronic Mail: SMTP [RFC 2821]
Sử dụng TCP để truyền tin cậy các bản tin thư điện tử từ client tới server, cổng 25
Gửi trực tiếp: server gửi tới server nhận Ba pha của việc truyền
Bắt tay Truyền các bản tin Kết thúc
Sự tương tác Lệnh/Trả lời Lệnh: văn bản mã ASCII Trả lời: status code và status phrase
Các bản tin phải dùng mã ASCII 7-bit
1-49
Kịch bản: Alice gửi bản tin cho Bob1) Alice dùng UA để soạn bản
tin và gửi cho [email protected]
2) UA của Alice gửi bản tin tới mail server của cô ta; bản tin đặt trong message queue
3) Phía client của SMTP mở kết nối TCP với mail server của Bob
4) SMTP client gửi bản tin của Alice qua kết nối TCP
5) Mail server của Bob chuyển bản tin vào mailbox của Bob
6) Bob chạy user agent để đọc bản tin
useragent
mailserver
mailserver user
agent
1
2 3 4 56
1-50
Ví dụ tương tác SMTP S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection
1-51
SMTP: Một số thông tin khác
SMTP sử dụng persistent connections
SMTP yêu cầu bản tin (header & body) dùng mã ASCII 7-bit
SMTP server sử dụng CRLF.CRLF để xác định kết thúc bản tin
So sánh với HTTP: HTTP: pull SMTP: push
Cả hai có tương tác Lệnh/Trả lời dạng mã ASCII, status code
HTTP: mỗi đối tượng được đóng gói trong chính bản tin trả lời
SMTP: nhiều đối tượng được gửi trong bản tin có nhiều phần
1-52
Định dạng bản tin
SMTP: giao thức để trao đổi các bản tin thư điện tử
RFC 822: chuẩn định dạng bản tin dạng văn bản
Header lines, ví dụ To: From: Subject:
khác Lệnh SMTP body
bản tin, ký tự ASCII
header
body
dòng trống
1-53
Định dạng bản tin: Các mở rộng đa phương tiện
MIME: Multimedia Mail Extension, RFC 2045, 2046 Thêm các dòng trong header của bản tin khai báo kiểu nội
dung MIME
From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg
dữ liệu mã hóa kiểu base64 ..... ......................... ......dữ liệu mã hóa kiểu base64
kiểu dữ liệu đa phương tiện,
kiểu con, khai báo tham số
method sử dụng để mã hóa dữ liệu
MIME version
dữ liệu đã mã hóa
1-54
Thực hành tương tác SMTP
telnet servername 25 Xem trả lời 220 từ server Gõ vào các lệnh HELO, MAIL FROM, RCPT TO,
DATA, QUIT để gửi thư điện tử không sử dụng email client (reader)
1-55
Các giao thức truy cập thư điện tử
SMTP: chuyển/lưu trữ thư tới server của bên nhận Giao thức truy cập thư: lấy thư từ server
POP: Post Office Protocol [RFC 1939]• Ủy quyền (agent <-->server) và tải thư
IMAP: Internet Mail Access Protocol [RFC 1730]• Nhiều tính năng hơn (phức tạp hơn)• Thao tác trên các bản tin lưu trên server
HTTP: Hotmail , Yahoo! Mail, …
useragent
mail server của bên gửi
useragent
SMTP SMTP giao thứctruy cập
mail servercủa bên nhận
1-56
Giao thức POP3
Pha ủy quyền Lệnh của client:
user: khai báo tên người dùng
pass: mật khẩu Trả lời của server
+OK -ERR
Pha giao dịch, client: list: liệt kê các số bản tin retr: lấy bản tin dựa vào số dele: xóa quit
C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK POP3 server chấm dứt phiên làm việc
S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK người sử dụng đăng nhập thành công
1-57
POP3 và IMAPThông tin thêm về POP3 Ví dụ trước sử dụng
chế độ “tải và xóa” Bob không thể đọc lại
các thư điện tử nếu bob chuyển sang client khác
Chế độ “Tải và giữ” sao chép các bản tin trên các client khác nhau
POP3 không lưu trạng thái giữa các phiên
IMAP Giữ tất cả các bản tin
tại một chỗ: server Cho phép người sử
dụng tổ chức các bản tin vào các thư mục
IMAP giữ trạng thái người sử dụng qua các phiên: Tên của các thư mục và
ánh xạ giữa các định danh của bản tin và tên thư mục
1-58
Chương 3: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-59
DNS: Domain Name System
Con người: có nhiều định danh: CMT, tên, hộ chiếu
Host, router trên Internet: Địa chỉ IP (32 bít) để đánh
địa chỉ các đơn vị dữ liệu gửi đi
Tên, ví dụ: www.yahoo.com sử dụng bởi con người
Câu hỏi: Ánh xạ giữa địa chỉ IP và tên ?
Hệ thống tên miền (DNS): Cơ sở dữ liệu phân tán được
thực hiện phân cấp bởi nhiều name server
Giao thức tầng ứng dụng để host, router, name server giao tiếp dịch giữa địa chỉ và tên Chú ý: Chức năng cơ bản
của Internet, thực hiện bởi giao thức ứng dụng
Sự phức tạp tại network edge
1-60
DNS
Tại sao không dùng DNS tập chung ?
Một điểm lỗi Khối lượng lưu lượng Cơ sở dữ liệu tập chung
xa Bảo trì
Không co giãn!
Các dịch vụ DNS Dịch tên host sang địa
chỉ IP Bí danh cho Host
Canonical name và alias names
Bí danh cho Mail server Phân tải
Web server: Một tập các địa chỉ IP cho một canonical name
1-61
Root DNS Servers
com DNS servers org DNS servers edu DNS servers
poly.eduDNS servers
umass.eduDNS servers
yahoo.comDNS servers
amazon.comDNS servers
pbs.orgDNS servers
Cơ sở dữ liệu phân cấp và phân tán
Client muốn biết địa chỉ IP của www.amazon.com: Client yêu cầu root server để tìm com DNS server Client yêu cầu com DNS server để xác định
amazon.com DNS server Client yêu cầu amazon.com DNS server để lấy địa
chỉ IP cho www.amazon.com
1-62
DNS: Root name server Local name server không trả lời được thì nó sẽ liên lạc với Root name server Root name server:
Liên lạc với authoritative name server nếu nó không biết ánh xạ tên Lấy ánh xạ Trả ánh xạ về cho local name server
13 root name server trên toàn thế giới
b USC-ISI Marina del Rey, CAl ICANN Los Angeles, CA
e NASA Mt View, CAf Internet Software C. Palo Alto, CA (and 17 other locations)
i Autonomica, Stockholm (plus 3 other locations)
k RIPE London (also Amsterdam, Frankfurt)
m WIDE Tokyo
a Verisign, Dulles, VAc Cogent, Herndon, VA (also Los Angeles)d U Maryland College Park, MDg US DoD Vienna, VAh ARL Aberdeen, MDj Verisign, ( 11 locations)
1-63
TLD và Authoritative Server
Top-level domain (TLD) server: có vai trò đối với com, org, net, edu,… và tất cả các miền quốc gia mức trên cùng uk, fr, ca, jp,…
Authoritative DNS server: DNS server của các tổ chức cung cấp ánh xạ authoritative hostname thành địa chỉ IP cho server của tổ chức (ví dụ Web và Email). Có thể duy trì bởi tổ chức hoặc nhà cung cấp dịch vụ
1-64
Local Name Server
Không hoàn toàn thuộc vào phân cấp Mỗi ISP (residential ISP, công ty, tổ chức) có
Còn gọi là “default name server”
Khi một host tạo truy vấn DNS, truy vấn được gửi tới Local DNS server của nó Hoạt động như một proxy, chuyển tiếp query vào
trong phân cấp.
1-65
host gửi yêu cầucis.poly.edu
gaia.cs.umass.edu
Root DNS server
Local DNS serverdns.poly.edu
1
23
4
5
6
authoritative DNS serverdns.cs.umass.edu
78
TLD DNS server
Ví dụ
Host tại cis.poly.edu muốn biết địa chỉ IP của gaia.cs.umass.edu
1-66
requesting hostcis.poly.edu
gaia.cs.umass.edu
root DNS server
local DNS serverdns.poly.edu
1
2
45
6
authoritative DNS serverdns.cs.umass.edu
7
8
TLD DNS server
3
Truy vấn đệ quy
Truy vấn đệ quy: Giao toàn bộ việc tìm
tên cho name server liên lạc
Tải lớn?
Truy vấn lặp: Server liên lạc trả về
tên của server cần liên lạc tiếp
“Tôi không biết nhưng anh muốn biết thì đi hỏi server này”
1-67
DNS: lưu giữ tạm và cập nhật bản ghi
Name server nào đó học các ánh xạ, server sẽ lưu giữ tạm các ánh xạ đó Các khe lưu trữ tạm quá hạn (biến mất) sau một khoảng
thời gian Các TLD server thông thường lưu trữ tạm trong các local
name servers• Vì thế, root name server không phải hỏi thường xuyên
Cơ chế cập nhật/thông báo định nghĩa bởi IETF RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html
1-68
Bản ghi DNSDNS: Cơ sở dữ liệu phân tán chứa các bản ghi tài nguyên (Resource record - RR)
Type=NS name là domain (ví dụ
foo.com) value là địa chỉ của
authoritative name server cho domain đó
Định dạng RR: (name, value, type, ttl)
Type=A name là hostname value là địa chỉ IP
Type=CNAME name là tên bí danh cho một số
tên thật (cannonical name) www.ibm.com thật ra là
servereast.backup2.ibm.com value là tên thật
Type=MX value là tên thật của mail
server liên kết với name (bí danh của hostname)
(foo.com, mail.bar.foo.com,
MX)
1-69
Giao thức DNS, bản tin
Giao thức DNS: Bản tin truy vấn và trả lời có chung một định dạng bản tin
Header của bản tin identification: 16 bit, định
cho truy vấn, trả lời sử dụng cùng giá trị
flags: Truy vấn hay trả lời Mong muốn đệ quy Có khả năng đệ quy Trả lời là ủy quyền
1-70
Giao thức DNS, bản tin
Các trường Name, typecho một Truy vấn
Các bản ghi trong trả lời
Các bản ghi choauthoritative server
Các bản ghi cung cấp thông tin khác
1-71
Chèn thêm bản ghi vào DNS
Ví dụ: Tạo “Network Utopia” Đăng ký tên networkuptopia.com tại registrar (ví dụ: nhà
cung cấp giải pháp mạng) Cần cung cấp cho registrar tên và địa chỉ IP của authoritative
name server của mạng (primary và secondary) Registrar chèn thêm hai RR vào trong com TLD server:
(networkutopia.com, dns1.networkutopia.com, NS)(dns1.networkutopia.com, 212.212.212.1, A)
Thêm vào authoritative server bản ghi kiểu A cho www.networkuptopia.com và bản ghi kiểu MX cho networkutopia.com
Người khác xác định địa chỉ IP của Web site này như thế nào?
1-72
Chương 2: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-73
Chia sẻ file P2P
Ví dụ Alice chạy ứng dụng
P2P client Kết nối tới Internet và
nhận một địa chỉ IP mới Tìm “Hey Jude” Ứng dụng các peer
khác có bản sao chép của Hey Jude không.
Alice chọn một peer, Bob File được sao chép từ
máy của Bob tới máy của Alice: HTTP
Trong khi Alice đang tải, người sử dụng khác lấy dữ liệu đã có trên máy Alice
Peer của Alice vừa là Web client vừa là Web server.
Mọi peer là server = quy mô lớn!
1-74
P2P: thư mục trung tâm
Thiết kế của “Napster” ban đầu
1) Khi peer kết nối, nó thông báo server trung tâm: Địa chỉ IP Nội dung
2) Alice yêu cầu “Hey Jude”
3) Alice yêu cầu file từ Bob
Server thư mục trung tâm
peers
Alice
Bob
1
1
1
12
3
1-75
P2P: Vấn đề của thư mục trung tâm
Một điểm chịu lỗi Hiệu năng Xâm phạm bản quyền
Truyền file là không tập trung,xác định vị trí nội dung là không tập chung
1-76
Chương 3: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-77
Lập trình Socket với TCPClient phải liên lạc với server
• Tiến trình server phải đang chạy
• Server phải mở socket (cửa) để client liên lạc
Client liên lạc với server bằng cách:
• Tạo client-local TCP socket
• Gán địa chỉ IP, cổng của tiến trình server
• Khi client tạo socket: client TCP giành kết nối tới server TCP
• Khi nhận được sự liên lạc của client, server TCP tạo một socket mới cho tiến trình server để giao tiếp với client
– Cho phép server nói chuyện với nhiều client
– Giá trị source port dùng để phân biệt các client (chi tiết hơn trong chương sau)
TCP cung cấp dịch vụ truyền tin cậy các byte giữa client và server
Góc nhìn ứng dụng
1-78
Ví dụ: C client (TCP)/* client.c */void main(int argc, char *argv[]){ struct sockaddr_in sad; /* cấu trúc chứa 1 địa chỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char Sentence[128]; char modifiedSentence[128];
host = argv[1]; port = atoi(argv[2]);
clientSocket = socket(PF_INET, SOCK_STREAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length);
connect(clientSocket, (struct sockaddr *)&sad, sizeof(sad));
Tạo client socket, Kết nối tới server
1-79
Ví dụ: C client (TCP) (tiếp)
gets(Sentence);
n=write(clientSocket, Sentence, strlen(Sentence)+1);
n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence)); printf(“TỪ SERVER: %s\n”, modifiedSentence);
close(clientSocket); }
Đọc input stream
từ user
Gửi tới server
Đọc từ server
Đóng kết nối
1-80
Ví dụ: C server (TCP)/* server.c */void main(int argc, char *argv[]){ struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ struct sockaddr_in cad;int welcomeSocket, connectionSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char clientSentence[128]; char capitalizedSentence[128];
port = atoi(argv[1]);
welcomeSocket = socket(PF_INET, SOCK_STREAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP address */ sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */
bind(welcomeSocket, (struct sockaddr *)&sad, sizeof(sad));
Tạo một socket chờ tại một cổng&
Gắn với một địa chỉ cục bộ
1-81
Ví dụ: C server (TCP) (tiếp)
/* Chỉ định số client lớn nhất được xếp hàng */listen(welcomeSocket, 10)
while(1) {
connectionSocket=accept(welcomeSocket, (struct sockaddr *)&cad, &alen); n=read(connectionSocket, clientSentence, sizeof(clientSentence)); /* Chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/
n=write(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1);
close(connectionSocket); } }
Đưa kết quả ra socket
Kết thúc vòng lặp While,Quay trở lại và đợi một kết nối client khác
Đợi client liên lạc
1-82
Chương 3: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-83
Lập trình Socket với UDP
UDP: Không kết nối giữa client và server
• Không bắt tay
• Bên gửi chỉ ra địa chỉ IP và cổng của bên nhận cho mỗi gói tin
• Server phải tìm địa chỉ IP, cổng của bên gửi trong gói tin đã nhận
UDP: dữ liệu đã truyền có thể nhận không theo thứ tự hoặc bị mất
Góc nhìn ứng dụng
UDP cung cấp dịch vụ truyền không tin cậy
một nhóm các byte (“datagrams”) giữa client và server
1-84
Tương tác giữa client socket và server socket: UDP
ĐóngclientSocket
Server (đang chạy trên hostid)
Đọc trả lời từ clientSocket
Tạo socket,clientSocket = DatagramSocket()
Client
Tạo, địa chỉ (hostid, port=x,Gửi yêu cầu datagram sử dụng clientSocket
Tạo socket,Cổng=x, đối vớigói tin đến:serverSocket = DatagramSocket()
Đọc yêu cầu từserverSocket
Ghi trả lời raserverSocketchỉ định địa chỉ host của client và giá trị cổng
1-85
Ví dụ: C client (UDP)/* client.c */void main(int argc, char *argv[]){ struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ int clientSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char Sentence[128]; char modifiedSentence[128];
host = argv[1]; port = atoi(argv[2]);
clientSocket = socket(PF_INET, SOCK_DGRAM, 0);
/* xác định địa chỉ của server */memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_port = htons((u_short)port); ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length);
Tạo client socket, Không kết nối tới server
1-86
Ví dụ: C client (UDP) (tiếp)
gets(Sentence);
addr_len =sizeof(struct sockaddr); n=sendto(clientSocket, Sentence, strlen(Sentence)+1, (struct sockaddr *) &sad, addr_len);
n=recvfrom(clientSocket, modifiedSentence, sizeof(modifiedSentence). (struct sockaddr *) &sad, &addr_len); printf(“TỪ SERVER: %s\n”,modifiedSentence);
close(clientSocket); }
Đọc input stream
từ user
Gửi tới server
Đọc từ server
Đóng kết nối
1-87
Ví dụ: C server (UDP)/* server.c */void main(int argc, char *argv[]){ struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */ struct sockaddr_in cad;int serverSocket; /* mô tả socket */ struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char clientSentence[128]; char capitalizedSentence[128];
port = atoi(argv[1]);
serverSocket = socket(PF_INET, SOCK_DGRAM, 0); memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */ sad.sin_family = AF_INET; /* thiết lập family Internet */ sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP cục bộ */ sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */
bind(serverSocket, (struct sockaddr *)&sad, sizeof(sad));
Tạo socket chờ ở cổng&
Gắn với một địa chỉ cục bộ
1-88
Ví dụ: C server (UDP) (tiếp)
while(1) {
n=recvfrom(serverSocket, clientSentence, sizeof(clientSentence), 0 (struct sockaddr *) &cad, &addr_len ); /* chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/
n=sendto(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1,0 (struct sockaddr *) &cad, &addr_len);
close(connectionSocket); } }
Ghi kết quả ra socket
Kết thúc vòng lặp While,quay trở lại và đợi kết nối client khác
Nhận bản tin từ các client
1-89
Chương 3: Tầng ứng dụng
2.1 Nguyên tắc của các ứng dụng mạng
2.2 Web và HTTP 2.3 FTP 2.4 Electronic Mail
SMTP, POP3, IMAP
2.5 DNS
2.6 Chia sẻ file P2P 2.7 Lập trình Socket với
TCP 2.8 Lập trình Socket với
UDP 2.9 Xây dựng Web Server
1-90
Xây dựng một Web server đơn giản
Điều khiển một yêu cầu HTTP
Chấp nhận yêu cầu Phân tích header Giành file đã yêu cầu từ
hệ thống file của server Tạo bản tin trả lời HTTP:
header lines + file
Gửi trả lời cho client
Sau khi tạo server, có thể yêu cầu file sử dụng một trình duyệt (ví dụ IE explorer)
1-91
Chương 3: Tổng kết
Các kiến trúc ứng dụng Client-Server P2P Hybrid
Các yêu cầu ứng dụng: Tính tin cậy, băng thông, độ trễ
Mô hình dịch vụ giao vận của Internet Tin cậy, hướng kết nối Không tin cậy, datagrams: UDP
Nội dung đã học: Ứng dụng mạng
Các giao thức cụ thể: HTTP FTP SMTP, POP, IMAP DNS
Lập trình socket
1-92
Chương 3: Tổng kết
Trao đổi bản tin yêu cầu/bản tin trả lời: Client yêu cầu thông tin
hoặc dịch vụ Server gửi dữ liệu trả lời,
mã trạng thái
Định dạng bản tin: Header: Các trường mang
thông tin về Data Data: thông tin truyền
thông
Quan trọng: đã học về các giao thức
Bản tin dữ liệu và bản tin điều khiển in-band, out-of-band
Tập chung (centralized) và không tập chung (decentralized)
Không hướng trạng thái (stateless) và hướng trạng thái (stateful)
Truyền bản tin kiểu tin cậy (reliable) và không tin cậy (unreliable)
Sự phức tạp tại network edge