Mạng máy tính - Chương 2: Lớp application
Bạn đang xem 20 trang mẫu của tài liệu "Mạng máy tính - Chương 2: Lớp application", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
        Tài liệu đính kèm:
 mang_may_tinh_chuong_2_lop_application.pdf mang_may_tinh_chuong_2_lop_application.pdf
Nội dung text: Mạng máy tính - Chương 2: Lớp application
- Chương 2 Lớp Application Computer Networking: A Top Down Approach Featuring the Internet, 3rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. Slide này được biên dịch sang tiếng Việt theo sự cho phép của các tác giả All material copyright 1996-2006 J.F Kurose and K.W. Ross, All Rights Reserved Lớp Application 1
- Chương 2: Nội dung trình bày  2.1 Các nguyên lý của  2.6 Chia sẻ file P2P ứng dụng mạng  2.7 Lập trình socket  2.2 Web và HTTP vớiTCP  2.3 FTP  2.8 Lập trình socket với  2.4 Electronic Mail UDP  SMTP, POP3, IMAP  2.9 Xây dựng một Web  2.5 DNS server Lớp Application 2
- Chương 2: Lớp Application Mục tiêu:  Nghiên cứu giao thức  Khái niệm, các khía thông qua xem xét cạnh hiện thực của một số giao thức lớp các giao thức ứng application dụng mạng  HTTP  Các mô hình dịch  FTP vụ lớp transport  SMTP / POP3 / IMAP  DNS  Mô hình client- server  Lập trình ứng dụng  Mô hình peer-to-peer mạng  socket API Lớp Application 3
- Một sốứng dụng mạng  E-mail  Điện thoại Internet  Web  Hội thảo video thời  Tin nhắn nhanh gian thực  Đăng nhập từ xa  Tính toán lớn, tính toán song song  Chia sẻ file P2P  Trò chơi nhiều người trên mạng  Streaming các video clips Lớp Application 4
- Tạo một ứng dụng mạng Viết chương trình để: application transport  network chạy trên các hệ thống đầu data link cuối khác, và physical  truyền thông qua mạng  Ví dụ: Web: phần mềm Web server truyền thông với phần mềm trình duyệt Phần mềm nhỏ viết cho các thiết bị trung tâm mạng  application các thiết bị trung tâm mạng application transport không chạy các mã ứng dụng transport network network data link ủ ườ data link physical c a ng i dùng physical  ứng dụng trên các hệ thống đầu cuối cho phép phát triển ứng dụng nhanh, phổ biến Lớp Application 5
- 2.1 Các nguyên lý của ứng dụng mạng Lớp Application 6
- Các kiến trúc của ứng dụng  Client-server  Peer-to-peer (P2P)  Lai giữa client-server và P2P Lớp Application 7
- Kiến trúc client-server server:  host luôn hoạt động  địa chỉ IP cố định  nhóm các server để chia sẻ công việc clients:  truyền thông với server  có thể kết nối không liên tục  có thể có địa chỉ IP thay đổi  không truyền thông trực tiếp với client khác Lớp Application 8
- Kiến trúc P2P thuần túy  không có server luôn hoạt động  truyền thông trực tiếp với hệ thống đầu cuối bất kỳ  các điểm kết nối không liên tục và thay đổi địa chỉ IP  Ví dụ: Gnutella Độ linh hoạt cao nhưng khó quản lý Lớp Application 9
- Lai giữa client-server và P2P Skype  ứng dụng điện thoại Internet  Tìm địa chỉ của thành viên ở xa: server trung tâm  Kết nối trực tiếp Client-client (không thông qua server) Tin nhắn nhanh  Chat giữa 2 user là P2P  Mô hình client-server: • User đăng ký địa chỉ IP của họ với server trung tâm khi trực tuyến • User tiếp xúc với server trung tâm để tìm địa chỉ IP của bạn Lớp Application 10
- Tiến trình truyền thông Tiến trình: chương trình Tiến trình Client: tiến chạy bên trong 1 host. trình khởi tạo truyền  trong cùng host, 2 tiến thông trình truyền thông dùng Tiến trình Server: tiến truyền thông nội bộ (do trình chờ để được tiếp hệ điều hành xác định). xúc  các tiến trình trong các host khác nhau truyền  Chú ý: các ứng dụng với thông bằng cách trao kiến trúc P2P có cả các đổi các thông điệp tiến trình client và server. Lớp Application 11
- Sockets Host / host /  các tiến trình gửi/nhận server server các thông điệp đến/từ socket của nó điều khiển bởi người  socket tương tự như cửa process phát triển process ứng dụng  tiến trình gửi đẩy thông socket socket điệp ra ngoài cửa TCP với TCP với bộ đệm, Internet bộ đệm,  ế ậ ụ ộ ti n trình nh n ph thu c các biến các biến vào hạ tầng lưu thông mang thông điệp đến socket thích ợ điều khiển h p bởi hệ điều hành  API: (1) lựa chọn giao thức vận chuyển; (2) khả năng chỉnh sửa một vài tham số (xem phần sau) Lớp Application 12
- Tiến trình định địa chỉ  để nhận được thông  Nhân dạng bao gồm cả điệp, tiến trình phải có địa chỉ IP và các số cổng nhân dạng (identifier) (port) liên kết với tiến  thiết bị host phải có địa trình trên host. chỉ IP duy nhất  Ví dụ về số port:  Địa chỉ IP mà trên đó  HTTP server: 80 tiến trình đang chạy có  Mail server: 25 đủ để nhận dạng tiến  Để gửi thông điệp HTTP trình? cho web server  KHÔNG, nhiều tiến trình gaia.cs.umass.edu : có thể chạy trên cùng 1  IP address: 128.119.245.12 host  Port number: 80 Lớp Application 13
- Định nghĩa giao thức lớp ứng dụng  các kiểu của trao đổi Các giao thức Public- thông điệp domain:  ụ ầ ứ Ví d : yêu c u, đáp ng  Định nghĩa trong RFC  Cú pháp thông điệp:  Cho phép cộng tác  Các trường nào trong thông điệp và làm sao mô  Ví dụ: HTTP, SMTP tả? Các giao thức độc quyền:  Ngữ nghĩa thông điệp  ụ  Ý nghĩa của thông tin Ví d : KaZaA trong các trường  Các quy tắc để khi nào và làm sao các tiến trình gửi và đáp ứng các thông điệp Lớp Application 14
- Dịch vụ vận chuyển nào ứng dụng không cần Mất mát dữ liệu Bandwidth (băng thông)  một sốứng dụng (vd:  một sốứng dụng (vd: đa ả ị ỗ audio) có kh năng ch u l i phương tiện) yêu cầu  các ứng dụng khác (vd: băng thông để đạt hiệu ề ầ truy n file, telnet) yêu c u quả dữ liệu tin cậy 100%  các ứng dụng khác mềm dẻo hơn có thể dùng bất ị Đ nh thì kỳ băng thông nào cũng  một sốứng dụng (vd: được điện thoại Internet, trò chơi tương tác) yêu cầu độ trễ thấp để đạt hiệu quả Lớp Application 15
- Một số yêu cầu đối với các ứng dụng phổ biến Application Data loss Bandwidth Time Sensitive Truyền file không mềm dẻo không e-mail không mềm dẻo không Web Không mềm dẻo không audio/video chịu lỗi audio: 5kbps-1Mbps có, 100 mili giây thời gian thực video:10kbps-5Mbps audio/video đã lưu chịu lỗi Như trên có, một vài giây Trò chơi tương tác chịu lỗi Một vài kbps có, 100 mili giây Tin nhắn nhanh không mềm dẻo Có và không Lớp Application 16
- Các dịch vụ giao thức Internet transport TCP: UDP:  connection-oriented: cần thiết  truyền dữ liệu không tin lập tiến trình giữa client và cậy giữa gửi và nhận server  Không hỗ trợ: thiết lập kết  Vận chuyển tin cậy: giữa tiến nối, tin cậy, điều khiển trình gửi và nhận luồng, điều khiển tắc nghẽn,  Điều khiển luồng: người gửi sẽ định thì, bảo đảm băng không lấn át người nhận thông tối thiểu  Điều khiển tắc nghẽn: điều tiết người gửi khi mạng quá tải Thế thì sinh ra UDP để làm  Không hỗ trợ: định thì, bảo gì? đảm băng thông tối thiểu Lớp Application 17
- Các giao thức lớp application, transport Giao thức lớp Giao thức dưới lớp Application Application transport SMTP [RFC 2821] e-mail Telnet [RFC 854] TCP Truy cập terminal từ xa HTTP [RFC 2616] TCP Web FTP [RFC 959] TCP Truyền file độc quyền TCP streaming multimedia (vd: RealNetworks) TCP / UDP độc quyền Điện thoại Internet (vd: Vonage,Dialpad) UDP Lớp Application 18
- 2.2 Web và HTTP Lớp Application 19
- Web và HTTP Một số thuật ngữ chuyên môn  Web page (trang Web) bao gồm các objects (đối tượng)  Đối tượng có thể là file HTML, hình ảnh JPEG image, Java applet, file audio,  Trang Web file HTML cơ bản sẽ chứa một số đối tượng có tham chiếu  Mỗi đối tượng có thể định địa chỉ bằng một URL  Ví dụ URL: www.someschool.edu/someDept/pic.gif Tên host Tên đường dẫn Lớp Application 20
- Tổng quan HTTP HTTP: hypertext Y transfer protocol êu cầu  HT Giao thức lớp ứng dụng của PC chạy Đá TP p ứ Explorer ng Web HT TP  Mô hình client/server  Client: trình duyệt yêu P TT cầu, nhận và hiển thị các ầu H c TP Server êu T đối tượng Web Y g H chạy ứn p Apache Web  Server: Web server gửi Đá server các đối tượng đáp ứng cho yêu cầu Mac chạy  HTTP 1.0: RFC 1945 Navigator  HTTP 1.1: RFC 2068 Lớp Application 21
- Tổng quan HTTP Dùng TCP: HTTP là “không trạng  client khởi tạo kết nối TCP thái” (tạo socket) đến server, port  server không giữ thông 80 tin về các yêu cầu trước đócủa client  ấ ậ ế ố server ch p nh n k t n i TCP vấn đề liên quan ừ t client Các giao thức nào giữ “trạng  Các thông điệp HTTP (thông thái” là phức tạp! ệ ứ ớ đi p giao th c l p  lịch sử quá khứ (trạng thái) ổ ữ application) trao đ i gi a phải giữ lại trình duyệt (HTTP client) và  nếu server/client bị sự cố, Web server (HTTP server) cách nhìn của nó về “trạng  ế ố Đóng k t n i TCP thái” mâu thuẫn, phải được điều chỉnh Lớp Application 22
- Các kết nối HTTP HTTP không bền vững HTTP bền vững  Chỉ có tối đa là 1 đối  Nhiều đối tượng có thể tượng được gửi qua 1 được gửi qua 1 kết nối kết nối TCP. TCP đơn giữa client và  HTTP/1.0 dùng HTTP server. không bền vững  HTTP/1.1 mặc nhiên dùng HTTP bền vững Lớp Application 23
- HTTP không bền vững (chứa text, Giả sử user nhập vào URL như sau: tham chiếu đến www.someSchool.edu/someDepartment/home.index 10 hình) 1a. HTTP client khởi tạo kết nối TCP connection đến HTTP 1b. HTTP server tại host server (tiến trình) tại www.someSchool.edu ờ ế www.someSchool.edu trên port ch k t nối TCP tại port 80. “chấp 80 nhận” kết nối, thông báo cho client 2. HTTP client gửi HTTP thông điệp yêu cầu (chứa URL) vào trong socket kết nối TCP. 3. HTTP server nhận thông điệp Thông điệp chỉ rằng client yêu cầu, định dạng thông điệp muốn các đối tượng đáp ứng chứa đối tượng được someDepartment/home.index yêu cầu và gửi thông điệp vào trong socket của nó Thời gian Lớp Application 24
- HTTP không bền vững 4. HTTP server đóng kết nối TCP. 5. HTTP client nhận thông điệp đáp ứng chứa file HTML, hiển thị nó. Phân tích cú pháp html file, tìm ra 1 tham chiếu đến đối tượng jpeg time 6. Lặp lại các bước từ 1-5 cho các đối tượng jpeg khác Lớp Application 25
- HTTP không bền vững: thời gian đáp ứng Định nghĩa RTT: thời gian để gửi một gói nhỏ đi từ client đến server và quay lại. khởi tạo kết nối Thời gian đáp ứng: TCP RTT  Một RTT để khởi tạo kết yêu cầu Thời nối TCP file gian RTT truyền  Một RTT cho yêu cầu file HTTP và một vài byte đầu nhận file tiên của đáp ứng HTTP ượ ả ề đ c tr v Thời gian Thời gian  Thời gian truyền file Tổng cộng = 2RTT+ Thời gian truyền file Lớp Application 26
- HTTP bền vững Vấn đề với HTTP không bền Bền vững không có pipelining: vững:  client phát ra yêu cầu mới  Yêu cầu 2 RTT mỗi đối tượng chỉ khi đáp ứng trước đó đã  Hệ điều hành liên quan đến nhận xong mỗi kết nối TCP  1 RTT cho mỗi đối tượng  Các trình duyệt thường mở tham chiếu song song các kết nối TCP để đem về các tham chiếu đến Bền vững có pipelining: các đối tượng  mặc nhiên trong HTTP/1.1 HTTP bền vững  client gửi yêu cầu ngay sau  server bỏ kết nối sau khi mở khi gặp một đối tượng tham để gửi đáp ứng leaves chiếu  các thông điệp HTTP của  ít nhất 1 RTT cho tất cả đối tiến trình con cùng mô hình tượng tham chiếu client/server gửi thông qua kết nối mở Lớp Application 27
- Thông điệp yêu cầu HTTP  2 kiểu thông điệp HTTP: yêu cầu, đáp ứng  Thông điệp yêu cầu HTTP:  ASCII ( dạng thức con người có thể đọc được) dòng yêu cầu (các lệnh GET, POST, GET /somedir/page.html HTTP/1.1 HEAD) Host: www.someschool.edu User-agent: Mozilla/4.0 các dòng Connection: close header Accept-language:fr ự ố ký t xu ng dòng, (thêm một ký tự xuống dòng) về đầu dòng mới chỉ điểm cuối cùng của thông điệp Lớp Application 28
- HTTP thông điệp yêu cầu: dạng thức tổng quát Lớp Application 29
- Tải lên form input Phương pháp Post:  Web page thường chứa form input Phương pháp URL:  Input được tải lên vào  Dùng GET server trong thân thực  Input được tải lên thể trong trường URL của dòng yêu cầu: www.somesite.com/animalsearch?monkeys&banana Lớp Application 30
- Các kiểu phương pháp HTTP/1.0 HTTP/1.1  GET  GET, POST, HEAD  POST  PUT  HEAD  tải lên file trong thân thực thể đến đường dẫn  hỏi server để mặc đối được xác định trong tượng yêu cầu mà không trường URL đáp ứng  DELETE  xóa file được xác định trong trường URL Lớp Application 31
- Thông điệp đáp ứng HTTP dòng trạng thái (giao thức mã trạng thái HTTP/1.1 200 OK cụm từ trạng thái) Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) các dòng Last-Modified: Mon, 22 Jun 1998 header Content-Length: 6821 Content-Type: text/html data data data data data Dữ liệu, vd: file HTML yêu cầu Lớp Application 32
- Các mã trạng thái đáp ứng HTTP Trong dòng đầu tiên của thông điệp đáp ứng server-> client. Một số mẫu: 200 OK  yêu cầu thành công, đối tượng yêu cầu nằm ở phía sau thông điệp này 301 Moved Permanently  đối tượng yêu cầu đã di chuyển, vị trí mới xác định ở phía sau thông điệp này (Location:) 400 Bad Request  thông điệp yêu cầu server không hiểu 404 Not Found  tài liệu yêu cầu không có trong server 505 HTTP Version Not Supported Lớp Application 33
- Kiểm tra HTTP (phía client) 1. Telnet đến Web server ưa thích của bạn: telnet cis.poly.edu 80 Mở kết nối TCP ở port 80 (port HTTP server mặc nhiên) tại cis.poly.edu. Mọi thứ nhập vào gửi đến ở port 80 tại cis.poly.edu 2. Nhập vào yêu cầu trong lệnh GET HTTP: GET /~ross/ HTTP/1.1 Do đánh lệnh này (enter 2 lần), Host: cis.poly.edu bạn đã gửi yêu cầu GET tối thiểu (nhưng đầy đủ) đến HTTP server 3. Xem thông điệp đáp ứng gửi từ HTTP server! Lớp Application 34
- Khảo sát hành động của HTTP  telnet  Ethereal Lớp Application 35
- Trạng thái User-server: các cookie Nhiều Web sites dùng Ví dụ: các cookie  Susan truy cập Internet 4 thành phần: luôn từ một PC  She lần đầu tiên vào một 1) cookie header line của e-commerce site xác thông điệp đáp ứng định HTTP  Khi yêu cầu khởi tạo 2) cookie header line HTTP đến site, site tạo trong thông điệp đáp một ID duy nhất và tạo ứng HTTP một điểm đăng nhập ư 3) cookie file l u trong trong cơ sở dữ liệu back- ủ ả host c a user, qu n lý end cho ID đó bởi trình duyệt của user 4) cơ sở dữ liệu back-end tại Web site Lớp Application 36
- các cookie: lưu giữ “trạng thái” (tt.) client server đ iểm Cookie file usual http request msg dữ đ server li ăn ệu g k bac ý usual http response + tạo ID k tro ebay: 8734 en ng Set-cookie: 1678 1678 cho user d cơ sở Cookie file usual http request msg amazon: 1678 cookie- p cookie: 1678 y cậ ebay: 8734 specific tru usual http response msg action ập c y một tuần sau: u tr usual http request msg Cookie file cookie- cookie: 1678 amazon: 1678 spectific ebay: 8734 usual http response msg action Lớp Application 37
- các cookie (tiếp) ngoài ra Các cookie đem lại: các cookie và sự riêng tư:  sự cấp phép  các cookie cho phép  giỏ mua hàng các site biết nhiều hơn  các khuyến cáo về bạn  trạng thái phiên làm việc  bạn có thể cung cấp tên của user (Web e-mail) và e-mail cho sites Làm thế nào để giữ “trạng thái”:  các thời điểm kết thúc giao thức: bảo trì trạng thái tại sender/receiver thông qua nhiều giao tác  các cookie: trạng thái mang các thông điệp http Lớp Application 38
- Web caches (proxy server) Mục tiêu: thỏa mãn yêu cầu của client không cần liên quan đến server nguồn  user thiết lập trình duyệt: server truy cập Web thông qua nguồn cache H Proxy TT ầu  trình duyệt gửi tất cả yêu P server u c yêu yê clientHT cầ TP ng cầu HTTP cho cache TP u HT p ứ đá đá p ứ TP  đối tượng trong cache: ng HT ầu cache trả về đối tượng u c yê g  ngược lại cache yêu cầu TP ứn HT áp đối tượng từ server P đ TT nguồn, sau đótrả về cho H client client server nguồn Lớp Application 39
- Web caching  Cache hoạt động tại cả Tại sao dùng Web client và server caching?  ể ượ Tiêu bi u cache đ c cài  Giảm thời gian đáp ứng cho ặ ở ườ ọ đ t b i ISP (tr ng h c, yêu cầu của client công ty, ISP riêng)  Giảm lưu thông trên liên kết truy cập  Internet rất ngờ nghệch với caches: cho phép những người cung cấp nội dung nghèo nàn phân phát hiệu quả nội dung đó(cũng vậy đối với P2P file sharing) Lớp Application 40
- Ví dụ Caching servers ả ử Gi s nguồn  kích thước trung bình đối tượng= 100,000 bits Internet công cộng  tốc độ trung bình yêu cầu từ trình duyệt đến server = 15/s  độ trễ từ router nơi gửi yêu cầu đến server nguồn rồi quay 1.5 Mbps liên kết truy cập lại = 2 s network gửi Kết quả yêu cầu 10 Mbps LAN  độ khả dụng của LAN = 15%  độ khả dụng trên liên kết truy cập= 100%  tổng thời gian trễ = trễ Internet + cache nơi gửi trễ truy cập+ trễ LAN = 2 s + các yêu cầu phút+ mili s Lớp Application 41
- Ví dụ Caching (tiếp) servers ả ể Gi i pháp có th nguồn  tăng băng thông truy cập lên, ví dụ 10 Mbps Internet công cộng Kết quả  độ khả dụng của LAN = 15%  độ khả dụng trên liên kết truy cập = 15% 10 Mbps liên kết truy cập  tổng thời gian trễ = trễ Internet + trễ truy cập+ trễ LAN = 2 s + mili network gửi yêu cầu s + mili s 10 Mbps LAN  thường tăng chi phí cache nơi gửi yêu cầu Lớp Application 42
- Ví dụ Caching (tiếp) servers cài đặt cache nguồn  tốc độ hỗ trợ là 0.4 Internet kết quả công cộng  40% yêu cầu sẽ được thỏa mãn hầu như ngay lập tức  60% yêu cầu sẽ được thỏa mãn bởi server nguồn 1.5 Mbps liên kết truy cập  độ khả dụng trên liên kết truy cập giảm đến 60%, do network gửi yêu cầu trễ không đáng kể (vd 10 mili 10 Mbps LAN s)  tổng thời gian trễ = trễ Internet + trễ truy cập+ trễ LAN = 0.6*(2.01) s + cache nơi 0.4*mili s < 1.4 s gửi yêu cầu Lớp Application 43
- GET có điều kiện  Mục tiêu: không gửi đối tượng cache server nếu cache đã cập nhật HTTP request msg  cache: xác định ngày của bản If-modified-since: ố ượ đ i t ng sao cache trong yêu cầu không HTTP: sửa đổi If-modified-since: HTTP response HTTP/1.0 304 Not Modified  server: đáp ứng không chứa đối tượng nếu bản sao cache đã cập nhật: HTTP request msg If-modified-since: HTTP/1.0 304 Not đối tượng Modified có HTTP response sửa đổi HTTP/1.0 200 OK Lớp Application 44
- 2.3 FTP Lớp Application 45
- FTP: giao thức truyền file giao diện truyền file FTP FTP FTP client server user user tại host hệ thống hệ thống file file từ xa cục bộ  truyền file đến/từ host từ xa  mô hình client/server  client: phía khởi tạo truyền (đến/từ host ở xa)  server: host ở xa  ftp: RFC 959  ftp server: port 21 Lớp Application 46
- FTP: kết nối dữ liệu, điều khiển riêng biệt kết nối điều khiển TCP  FTP client tiếp xúc FTP port 21 server tại port 21, xác định TCP như giao thức transport kết nối dữ liệu TCP  Client lấy giấy phép thông qua FTP port 20 FTP kết nối điều khiển client server  Client xem thư mục ở xa bằng  ở ế ố ữ ệ việc gửi các lệnh thông qua kết Server m k t n i d li u TCP ể ề nối điều khiển. khác đ truy n file khác  ề ể ế ố  Khi server nhận lệnh truyền Đi u khi n k t n i: “out of file, server mở kết nối TCP band” thứ 2 (cho file) đến client  FTP server giữ lại “trạng ư ụ ệ ấ  Sau khi truyền 1 file, server thái”: th m c hi n hành, gi y ướ đóng kết nối dữ liệu phép tr c đó Lớp Application 47
- Các lệnh, phản hồi FTP Ví dụ các lệnh: Ví dụ mã trả về  gửi như văn bản ASCII trên  mã trạng thái và cụm (như kênh điều khiển HTTP)  USER username  331 Username OK,  PASS password password required  125 data connection  LIST trả về danh sách của already open; file trong thư mục hiện transfer starting hành  425 Can’t open data  RETR filename trích chọn connection (lấy) file  452 Error writing  STOR filename lưu (đặt) file file vào trong host ở xa Lớp Application 48
- 2.4 Electronic Mail Lớp Application 49
- outgoing Electronic Mail hàng message hộp thư user user 3 thành phần quan trọng: agent  user agents mail user server  mail servers agent  simple mail transfer SMTP mail protocol: SMTP server user SMTP agent User Agent  còn gọi là “mail reader” SMTP user  viết, sửa đổi, đọc các thông mail server agent điệp mail  Ví dụ: Eudora, Outlook, elm, user Netscape Messenger agent user  các thông điệp đi và đến agent được lưu trên server Lớp Application 50
- Electronic Mail: mail servers user Mail Servers agent  mailbox (hộp thư) chứa các mail user thông điệp đến user server agent  hàng thông điệp cho các SMTP thông điệp email ra ngoài mail (chuẩn bị gửi) server user agent  giao thức SMTP giữa các SMTP mail servers để gửi các SMTP thông điệp email mail user agent  client: mail server gửi server  “server”: mail server user nhận agent user agent Lớp Application 51
- Electronic Mail: SMTP [RFC 2821]  dùng TCP để truyền tin cậy thông điệp email từ client đến server trên port 25  truyền trực tiếp: server gửi đến server nhận  3 kênh truyền  bắt tay (chào hỏi)  truyền thông điệp  đóng  tương tác lệnh/phản hồi  lệnh: văn bản ASCII  phản hồi: mã trạng thái và cụm  các thông điệp phải ở dạng mã ASCII 7-bit Lớp Application 52
- Tình huống: Alice gửi cho Bob 1) Alice dùng UA viết thông 4) SMTP client gửi thông điệp điệp và “gửi đến” của Alice trên kết nối TCP [email protected] 5) mail server của Bob đặt 2) UA của Alice gửi thông điệp thông điệp vào hộp thư của của cô ấy đến mail server; Bob thông điệp được gia nhập 6) Bob kích hoạt trình user vào hàng đợi agent đọc thông điệp 3) Phía Client của SMTP mở kết nối TCP với mail server của Bob 1 mail mail user user server server agent agent 2 3 6 4 5 Lớp Application 53
- 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: S: 250 [email protected] Sender ok C: RCPT TO: 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 Lớp Application 54
- Thử nghiệm tương tác SMTP:  telnet servername 25  thấy 220 trả lời từ server  nhập các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT lệnh trên cho phép bạn gửi email không cần dùng email client (reader) Lớp Application 55
- SMTP  SMTP dùng các kết nối bền So sánh với HTTP: vững  HTTP: kéo  SMTP yêu cầu các thông điệp (header & body) phải ở  SMTP: đẩy ạ ứ d ng th c 7-bit ASCII  tất cả đều có tương tác  SMTP server dùng lệnh/đáp ứng, các mã trạng CRLF.CRLF xác định kết thái ASCII thúc thông điệp  HTTP: mỗi đối tượng được đóng kín trong thông điệp đáp ứng của nó  SMTP: nhiều đối tượng được gửi trong thông điệp nhiều phần Lớp Application 56
- Dạng thức thông điệp email SMTP: giao thức cho trao đổi các thông điệp email header dòng RFC 822: chuẩn cho dạng thức trống văn bản:  các dòng header, ví dụ:  To: body  From:  Subject: khác với các lệnh SMTP!  body  “thông điệp”, chỉ có các ký tự ASCII Lớp Application 57
- Dạng thức thông điệp: các mở rộng multimedia  MIME: mở rộng email multimedia, RFC 2045, 2056  các dòng bổ sung trong header của thông điệp khai báo kiểu nội dung MIME From: [email protected] phiên bản MIME To: [email protected] Subject: Picture of yummy crepe. phương pháp dùng MIME-Version: 1.0 để mã hóa dữ liệu Content-Transfer-Encoding: base64 Content-Type: image/jpeg kiểu, kiểu con, khai báo tham số base64 encoded data dữ liệu multimedia base64 encoded data dữ liệu đã mã hóa Lớp Application 58
- Các giao thức truy cập email SMTP SMTP giao thức user user agent agent truy cập ủ ườ ậ mail server của người gửi mail server c a ng i nh n  SMTP: truyền dẫn/lưu trữ vào server của người nhận  Giao thức truy cập email: trích xuất từ server  POP: Post Office Protocol [RFC 1939] •cấp phép (agent server) và download  IMAP: Internet Mail Access Protocol [RFC 1730] •nhiều tính năng (phức tạp hơn) • điều khiển các thông điệp đã lưu trên server  HTTP: Hotmail , Yahoo! Mail, Lớp Application 59
- ứ Giao th c POP3 S: +OK POP3 server ready C: user bob giai đoạn cấp phép S: +OK C: pass hungry  các lệnh phía client: S: +OK user successfully logged on  user: khai báo username C: list  pass: password S: 1 498  các đáp ứng phía server S: 2 912 S: .  +OK C: retr 1  -ERR S: giai đoạn giao dịch, client: S: . C: dele 1  list: liệt kê các số thông C: retr 2 điệp S:  retr: trích xuất thông điệp S: . theo số C: dele 2 C: quit  dele: xóa S: +OK POP3 server signing off  quit Lớp Application 60
- POP3 và IMAP nghiên cứu thêm về POP3 IMAP  Ví dụ trước dùng chế  Giữ tất cả thông điệp độ “tải xuống và xóa”. tại 1 vị trí: server  Bob không thể đọc lại  Cho phép user tổ chức email nếu thay đổi các thông điệp theo client dạng thư mục  “tải xuống-và-giữ”: sao  IMAP giữ trạng thái chép các thông điệp xuyên suốt các phiên trên các client khác làm việc: nhau  các tên của thư mục và  POP3 không giữ trạng ánh xạ giữa ID của thái của các phiên làm thông điệp và tên thư mục việc Lớp Application 61
- 2.5 DNS Lớp Application 62
- DNS: Domain Name System Con người: nhiều cách Domain Name System: nhận dạng:  cơ sở dữ liệu phân bố hiện thực  SSN, tên, #hộ chiếu theo tổ chức phân cấp của nhiều servers tên Internet hosts, routers:  giao thức lớp application host,  ị ỉ đ a ch IP (32 bit) dùng routers, name servers để ị ị ỉ cho các gói đ nh đ a ch truyền thông với các tên phân  “tên”, ví dụ: giải (địa chỉ/dịch ra tên) www.yahoo.com – dùng  lưu ý: chức năng lõi ở ườ b i con ng i Internet, hiện thực như Ánh xạ giữa địa chỉ IP và giao thức lớp application tên?  phức tạp ở “biên” mạng Lớp Application 63
- DNS Các dịch vụ DNS Tại sao không tập trung hóa DNS?  Tên Host chuyển thành địa chỉ IP  một điểm chịu lỗi  Bí danh Host  lưu lượng  các tên đúng chuẩn và bí  khoảng cách cơ sở dữ liệu danh tập trung  Bí danh Mail server  bảo trì  Tải phân bố  Các Web server bản không linh hoạt! sao: tập các địa chỉ IP cho 1 tên đúng chuẩn Lớp Application 64
- Cơ sở dữ liệu cấu trúc, phân bố DNS Servers gốc com DNS servers org DNS servers edu DNS servers poly.edu umass.edu yahoo.com pbs.org amazon.com DNS serversDNS servers DNS servers DNS servers DNS servers Client muốn IP cho www.amazon.com:  Client hỏi một server gốc (root) để tìm com DNS server  Client hỏi com DNS server để lấy amazon.com DNS server  Client hỏi amazon.com DNS server để lấy địa chỉ IP của www.amazon.com Lớp Application 65
- DNS: các server tên gốc  tiếp xúc qua server tên cục bộ nào không thể phân giải tên  server tên gốc:  tiếp xúc server tên có thẩm quyền nếu ánh xạ tên không xác định  lấy ánh xạ  trả về ánh xạ đến server tên cục bộ a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD k RIPE London (also Amsterdam, g US DoD Vienna, VA Frankfurt) h ARL Aberdeen, MD i Autonomica, Stockholm (plus 3 j Verisign, ( 11 locations) other locations) m WIDE Tokyo e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations) 13 name servers gốc trên toàn cầu b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA Lớp Application 66
- TLD và Server có thẩm quyền  Các server Top-level domain (TLD) : chịu trách nhiệm cho tên miền com, org, net, edu, và các tên miền quốc gia như uk, fr, ca, jp.  Lĩnh vực giáo dục cho edu TLD  Các DNS server có thẩm quyền: DNS server của tổ chức, cung cấp các tên host có thẩm quyền để ánh xạ IP cho server (ví dụ: Web và mail).  Không thể duy trì bởi tổ chức hoặc người cung cấp dịch vụ Lớp Application 67
- Server tên cục bộ  Không hoàn toàn theo cấu trúc phân cấp  Mỗi ISP (ISP cá nhân, công ty, trường học) có một server cục bộ như vậy.  cũng gọi là “server tên mặc nhiên”  Khi một host tạo một truy vấn DNS, truy vấn đó được gửi tới DNS server cục bộ của nó  Hoạt động như một proxy, chuyển truy vấn vào cho tổ chức phân cấp Lớp Application 68
- Ví dụ DNS server gốc 2  Host tại cis.poly.edu 3 TLD DNS server muốn địa chỉ IP của 4 gaia.cs.umass.edu 5 DNS server cục bộ dns.poly.edu 7 6 1 8 DNS server có thẩm quyền dns.cs.umass.edu host yêu cầu cis.poly.edu gaia.cs.umass.edu Lớp Application 69
- Các truy vấn đệ quy DNS server gốc truy vấn đệ quy: 2  đẩy trách nhiệm phân 3 ả gi i tên cho server 7 6 tên đã tiếp xúc được TLD DNS server  tải quá nặng? truy vấn tuần tự: DNS server cục bộ dns.poly.edu 5 4  tên đã tiếp xúc được trả lời với tên của 1 8 server  “Tôi không biết tên DNS server có thẩm quyền đó, nhưng có thể hỏi dns.cs.umass.edu host yêu cầu server này” cis.poly.edu gaia.cs.umass.edu Lớp Application 70
- DNS: caching và cập nhật các record  một khi server tên học cách ánh xạ, nó cache ánh xạ  điểm đăng nhập cache sẽ thoát ra (biến mất) sau một vài lần  TLD servers điển hình sẽ được cache trong các server tên cục bộ •Do đóserver tên gốc sẽ không thường xuyên được truy cập  cơ chế cập nhật/thông báo bên dưới được thiết kế bởi IETF  RFC 2136  Lớp Application 71
- Các DNS record DNS: cơ sở dữ liệu phân bố lưu trữ các record tài nguyên (RR) dạng thức RR: (name, value, type, ttl)  Type=A  Type=CNAME  name là tên host  name là bí danh của tên  value là địa chỉ IP “chuẩn” (tên thực) www.ibm.com là tên thực  Type=NS servereast.backup2.ibm.com  name là tên miền (vd:  value là tên chuẩn foo.com)  value là tên host của  Type=MX server tên có thẩm quyền  value là tên của email cho tên miền này server liên kết với name Lớp Application 72
- Giao thức và các thông điệp DNS Giao thức DNS: các thông điệp truy vấn và trả lời, đều có cùng dạng thức thông điệp header thông điệp  identification: 16 bit # cho truy vấn, trả lời cho truy vấn dùng cùng #  flags:  truy vấn hoặc trả lời đệ quy mong chờ  đệ quy sẵn sàng  trả lời được cấp phép Lớp Application 73
- Giao thức và các thông điệp DNS các trường Name, type cho 1 truy vấn các RR trong đáp ứng cho truy vấn các record cho các server có thẩm quyền thông tin “hữu ích” bổ sung có thể sẽ dùng Lớp Application 74
- Chèn các record vào DNS  Ví dụ: mới tạo “Network Utopia”  Đăng ký tên miền networkuptopia.com tại một registrar (ví dụ: Network Solutions)  Cần cung cấp cho registrar tên và địa chỉ IP của server tên có thẩm quyền (primary và secondary) của bạn  Registrar chèn 2 RR vào trong com TLD server: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A)  Đưa vào trong server có thẩm quyền record Type A cho www.networkuptopia.com và bản ghi Type MX cho networkutopia.com  Làm sao người khác có thể biết được địa chỉ IP Web site của bạn? Lớp Application 75
- 2.6 Chia sẻ file P2P Lớp Application 76
- Chia sẻ file P2P  Alice chọn 1 trong Ví dụ những peer, là Bob.  ượ ừ  Alice chạy ứng dụng File đ c sao chép t P2P client trên máy máy tính của Bob: tính xách tay của cô HTTP  ả  Kết nối không liên tục Trong khi Alice t i vào Internet; lấy địa xuống, các user khác chỉ IP cho mỗi kết nối tải lên từ Alice.  ả  Hỏi về “Hey Jude” Alice là 1 peer đóng c vai trò Web client và  Ứng dụng sẽ hiển thị Web server tạm thời. những peer khác có bản sao của Hey Jude. Tất cả peer là server = độ linh hoạt cao! Lớp Application 77
- P2P: directory tập trung Bob đầu tiên do “Napster” thiết directory server kế trung tâm 1 1) khi peer kết nối, nó peers thông báo cho server 1 trung tâm: 1 3  địa chỉ IP  nội dung 2 1 2) Alice truy vấn “Hey Jude” 3) Alice yêu cầu file từ Bob Alice Lớp Application 78
- P2P: các vấn đề với directory tập trung  Một điểm chịu lỗi truyền file không tập  Hiện tượng tắc nghẽn trung nhưng tìm kiếm “cổ chai” nội dung thì tập trung ộ  Xâm phạm bản quyền cao đ Lớp Application 79
- Tràn ngập truy vấn: Gnutella  hoàn toàn phân bố overlay network: đồ thị  không có server tập  có cạnh giữa peer X và trung Y nếu có 1 kết nối TCP  giao thức tên miền  tất cả các peer đang chung hoạt động và các cạnh  nhiều Gnutella client là mạng overlay hiện thực giao thức network  cạnh không phải là một liên kết vật lý  peer sẽ kết nối với < 10 peer lân cận Lớp Application 80
- Gnutella: giao thức Truyền File:  ấ Truy v n thông HTTP điệp gửi trên các kết nối TCP đang có Truy vấn  ể peer chuy n thông QueryHit điệp truy vấn n vấ Tr  y uy QueryHit u it v Tr H ấn ry gửi trên đường ue ngược chiều Q Truy vấn QueryHit Tr uy Độ linh hoạt: v ấn hạn chế tràn ngập theo phạm vi Lớp Application 81
- Gnutella: hội tụ Peer 1. Hội tụ peer X phải tìm một số peer khác trong Gnutella network: dùng một danh sách các peer dự tuyển 2. X lần lượt thử tạo TCP với các peer trên danh sách cho đến khi kết nối thiết lập được với Y 3. X gửi thông điệp Ping đến Y; Y chuyển thông điệp Ping. 4. Tất cả các peer nhận thông điệp Ping sẽ trả lời bằng thông điệp Pong 5. X nhận được nhiều thông điệp Pong. Nó sau đócó thể thiết lập thêm các kết nối TCP. Peer leaving: xem một số vấn đề mạng gia đình! Lớp Application 82
- KaZaA  Mỗi peer là một hoặc được gán thành chỉ huy nhóm  TCP kết nối giữa peer và nhóm chỉ huy của nó  TCP kết nối giữa một số cặp nhóm chỉ huy.  Nhóm chỉ huy theo dõi nội dung trong tất cả thành viên bên trong ordinary peer group-leader peer neighoring relationships in overlay network Lớp Application 83
- KaZaA: Truy vấn  Mỗi file có một băm (hash) hoặc một mô tả  Client gửi từ khóa truy vấn đến nhóm chỉ huy của nó  Nhóm chỉ huy đáp ứng với truy vấn của nhóm:  ứng với mỗi so trùng: metadata, hash, địa chỉ IP  Nếu nhóm chỉ huy chuyển truy vấn cho nhóm khác, chúng phản hồi thích hợp  Client sau đóchọn các file để download  Các yêu cầu HTTP dùng hash như một nhân dạng gửi đến cho peer quản lý file mong muốn Lớp Application 84
- KaZaA: các thủ thuật  Hạn chế khi tải lên đồng thời  Xếp hàng yêu cầu  Khích lệ ưu tiên  tải xuống song song Tìm hiểu thêm thông tin ở:  J. Liang, R. Kumar, K. Ross, “Understanding KaZaA,” (Web site: cis.poly.edu/~ross) Lớp Application 85
- 2.7 Lập trình socket vớiTCP (xem thêm slide Lập trình socket) Lớp Application 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 socket  đã được giới thiệu trong một giao diện host-cục bộ, BSD4.1 UNIX, 1981 tạo bởi ứng dụng,  rõ ràng tại, sử dụng và giải điều khiển bởi hệ điều hành phóng bởi ứng dụng interface (một “cửa”)  mô hình client/server trong đótiến trình ứng  2 kiểu dịch vụ lưu thông qua dụng có thể gửi và nhận socket API: các thông điệp đến/từ các tiến trình khác  datagram không tin cậy  tin cậy, truyền byte theo streaming Lớp Application 87
- Lập trình socket dùng TCP Socket: một cánh cửa giữa tiến trình ứng dụng và giao thức transport (UCP hoặc TCP) Dịch vụ TCP: truyền tin cậy các bytes từ một tiến trình đến tiến trình khác điều khiển bởi điều khiển bởi tiến trình tiến trình người phát triển người phát triển ứng dụng ứng dụng socket socket TCP với điều khiển bởi điều khiển bởi TCP với bộ đệm, hệ điều hành hệ điều hành bộ đệm, internet các biến các biến host hoặc host hoặc server server Lớp Application 88
- Lập trình socket với TCP Client phải tiếp xúc với server  Khi đã được tiếp xúc bởi  tiến trình server phải chạy client, server TCP tạo socket trước mới cho tiến trình server để  server phải tạo socket (cửa) truyền thông với client mời client đến tiếp xúc  cho phép server “nói chuyện” với nhiều client Client tiếp xúc server bằng:  số port dùng để phân biệt  tạo socketTCP client cục bộ các client (xem tiếp trong  xác định địa chỉ IP, số port chương 3) của tiến trình server  Khi client tạo socket: client Nhìn dưới góc độứng dụng TCP thiết lập kết nối với TCP cung cấp việc truyền các byte server TCP tin cậy và theo thứ tự giữa client và server Lớp Application 89
- Giao tiếp socket Client/server: TCP Server (chạy trên hostid) Client create socket, port=x, for incoming request: welcomeSocket = ServerSocket() TCP wait for incoming create socket, connection request connection setup connect to hostid, port=x connectionSocket = clientSocket = welcomeSocket.accept() Socket() send request using read request from clientSocket connectionSocket write reply to connectionSocket read reply from clientSocket close connectionSocket close clientSocket Lớp Application 90
- Thuật ngữ Stream keyboard monitor  Một stream là một chuỗi các ký tự được “chảy” vào hoặc ra khỏi một tiến trình input stream  Một input stream để chỉ tiến inFromUser Process nguồn vào của một tiến trình trình, vd: bàn phím hoặc Client socket.  Một output stream để chỉ nguồn ra của một tiến trình, output input vd: màn hình hoặc socket. stream stream outToServer inFromServer clientclientSocket TCP socket TCP socket to network from network Lớp Application 91
- Lập trình socket dùng TCP Ví dụứng dụng client-server : 1) client đọc các dòng từ input chuẩn (inFromUser stream) , gửi đến server thông qua socket (outToServer stream) 2) server đọc các dòng từ socket 3) server chuyển các dòng thành chữ hoa, gửi ngược trở lại cho client 4) client đọc, in các dòng đã sửa đổi từ socket (inFromServer stream) Lớp Application 92
- Ví dụ: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; tạo BufferedReader inFromUser = input stream new BufferedReader(new InputStreamReader(System.in)); tạo client socket, Socket clientSocket = new Socket("hostname", 6789); kết nối vào server tạo DataOutputStream outToServer = output stream new DataOutputStream(clientSocket.getOutputStream()); gắn vào socket Lớp Application 93
- Ví dụ: Java client (TCP) tạo BufferedReader inFromServer = input stream new BufferedReader(new gắn vào socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); Gửi dòng đến server outToServer.writeBytes(sentence + '\n'); đọc dòng modifiedSentence = inFromServer.readLine(); từ server System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } } Lớp Application 94
- Ví dụ: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; tạo String capitalizedSentence; socket mời tiếp xúc ServerSocket welcomeSocket = new ServerSocket(6789); tại port 6789 while(true) { Chờ, client tiếp cận với Socket connectionSocket = welcomeSocket.accept(); server BufferedReader inFromClient = Tạo input new BufferedReader(new stream, gắn vào InputStreamReader(connectionSocket.getInputStream())); socket Lớp Application 95
- Ví dụ: Java server (TCP) Tạo output stream, gắn vào DataOutputStream outToClient = socket new DataOutputStream(connectionSocket.getOutputStream()); Đọc dòng clientSentence = inFromClient.readLine(); từ socket capitalizedSentence = clientSentence.toUpperCase() + '\n'; ế Vi t dòng ra outToClient.writeBytes(capitalizedSentence); ừ t socket } } } kết thúc vòng lặp while quay lại và chờ cho kết nối của client khác Lớp Application 96
- 2.8 Lập trình socket với UDP (xem thêm slide Lập trình socket) Lớp Application 97
- 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  người gửi rõ ràng gắn địa chỉ IP và port của đích vào mỗi gói góc nhìn ứng dụng  phải trích địa chỉ IP, port UDP cung cấp việc truyền không của người gửi từ gói đã nhận tin cậy một nhóm các byte (“datagrams”) UDP: dữ liệu truyền có thể giữa client và server không theo thứ tự, hoặc bị mất mát Lớp Application 98
- Giao tiếp socket Client/server: UDP Server (chạy trên hostid) Client create socket, create socket, port=x, for clientSocket = incoming request: DatagramSocket() serverSocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientSocket read request from serverSocket write reply to serverSocket specifying client read reply from host address, clientSocket port number close clientSocket Lớp Application 99
- Ví dụ: Java client (UDP) keyboard monitor input stream inFromUser ProcessClient process Input: nhận gói (còn gọi là TCP Output: gửi gói nhận “dòng byte”) (còn gọi là TCP UDP UDP gửi “dòng byte”) packet packet sendPacket receivePacket clientclientSocket UDP socket UDP socket to network from network Lớp Application 100
- Ví dụ: Java client (UDP) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { tạo input stream BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); tạo client socket DatagramSocket clientSocket = new DatagramSocket(); dịch InetAddress IPAddress = InetAddress.getByName("hostname"); hostname thành địa chỉ IP dùng DNS byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); Lớp Application 101
- Ví dụ: Java client (UDP). tạo datagram với dữ liệu để gửi, DatagramPacket sendPacket = độ dài, địa chỉ IP, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876); gửi datagram đến server clientSocket.send(sendPacket); DatagramPacket receivePacket = đọc datagram new DatagramPacket(receiveData, receiveData.length); từ server clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } Lớp Application 102
- Ví dụ: Java server (UDP) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception Tạo { datagram socket DatagramSocket serverSocket = new DatagramSocket(9876); tại port 9876 byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { Tạo không gian để DatagramPacket receivePacket = nhận datagram new DatagramPacket(receiveData, receiveData.length); nhận serverSocket.receive(receivePacket); datagram Lớp Application 103
- Ví dụ: Java server (UDP) String sentence = new String(receivePacket.getData()); lấy địa chỉ IP InetAddress IPAddress = receivePacket.getAddress(); port #, của người gửi int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); tạo datagram DatagramPacket sendPacket = ể ử ớ đ g i t i client new DatagramPacket(sendData, sendData.length, IPAddress, port); viết datagram serverSocket.send(sendPacket); vào socket } } } kết thúc vòng lặp while, quay lại và chờ datagram khác Lớp Application 104
- 2.9 Xây dựng một Web server Lớp Application 105
- Xây dựng 1 Web server đơn giản  quản lý 1 yêu cầu HTTP  sau khi tạo server, bạn  chấp nhận yêu cầu có thể yêu cầu file dùng trình duyệt (ví dụ:  phân tích cú pháp IE) header  xem giáo trình để biết  lấy file được yêu cầu từ thêm chi tiết hệ thống file của server  tạo thông điệp đáp ứng HTTP:  các dòng header + file  gửi đáp ứng đến client Lớp Application 106
- Chương 2: Tổng kết Tổng quan một số vấn đề vềứng dụng mạng!  Các kiến trúc ứng dụng  các giao thức đặc biệt:  client-server  HTTP  P2P  FTP  lai  SMTP, POP, IMAP  các yêu cầu dịch vụ:  DNS  tin cậy, bandwidth, trễ  lập trình socket  mô hình dịch vụ Internet transport  connection-oriented, tin cậy: TCP  không tin cậy, datagrams: UDP Lớp Application 107
- Chương 2: 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  ề ể ớ ệ ầ ả ờ ể đi u khi n v i các thông đi p c u/tr l i đi n hình: dữ liệu  client yêu cầu thông tin  in-band, out-of-band hoặc dịch vụ service  tập trung và không tập trung  server đáp ứng với dữ  không trạng thái và có trạng liệu, mã trạng thái thái  ạ ệ các d ng thông đi p:  truyền thông điệp tin cậy và  headers: các trường cho không tin cậy ế ề ữ ệ bi t thông tin v d li u  “sự phức tạp của các vấn đề  dữ liệu: thông tin để liên quan đến mạng” truyền thông Lớp Application 108





