T ẰNG ỨNG DỤNG •
2.1. GIAO THỨC TẦNG ỨNG DỤNG Trong hơn ba mươi năm qua, cĩ nhiều phát minh đột phá trong việc
Trong hơn ba mươi năm qua, cĩ nhiều phát minh đột phá trong việc
phát triển các ứ n g d ụ n g m ạ n g . Bắt đầ u từ thập n i ê n 80 của t h ế kỷ X X , . những ứng dụng đ ơ n g i ả n t ư ơ n g tác v ớ i n g ườ i d ù n g qua c h ế độ l ệ n h (text - based) đã trở n ê n p h ổ b i ế n , n h ư truy cập m áỹ tính từ xa (telnet), t h ư điện tử (email), t r u y ề n file ( f t p ) , n h ĩ m t h ơ n g t i n (newsgroup) v à trị chuyện tị xa (chát). H i ệ n nay, những ứ n g dụng đ a p h ư ơ n g t i ệ n phức tạp h ơ n n h ư World Wide Web, đ iệ n thoại trực t u y ế n , h ộ i thảo từ xa, chia sẻ file,... đã ngày càng ừ ở n ê n quen thuộc.
Phần m ề m ứ n g d ụ n g m ạ n g được cài đặt trên các thiết bị đầiưcuổi (end - system) n h ư m á y tính, đ iệ n thoại d i động,... V í d ụ , v ĩ i Web, cĩ hai phần m ề m t ư ơ n g tác v ớ i nhau là phần m ề m t r ì n h duyệt trong m á y tính của n g ườ i d ù n g (PC, hay t r ạ m l à m v i ệ c ) v à phần m ề m W e b server.
Trong thuật n g ữ h ệ đ iề u h à n h , việc k ế t n ố i được thực h i ệ n giữa c á c tiến
trình (process) chứ k h ơ n g p h ả i giữa các c h ư ơ n g trình phần m ề m . T i ế n t r ì n h
là một c h ư ơ n g trình chạy trên t h i ế t bị đầu/cuối. K h i các t i ế n t r ì n h chạy trên cùng m ộ t t h i ế t bị, c h ú n g sẽ k ế t n ố i , trao đổ i d ữ l i ệ u v ớ i nhau t h ơ n g qua c ơ
' 2 ĩ
chê t r u y ê n t h ơ n g l i ê n t i ê n t r ì n h (interprocess c o m m u n i c a t i o n ) của h ệ đ iề u hành. Trong cuốn sách n à y quan t â m đế n việc k ế t n ố i giữa các t i ế n t r ì n h t r ê n những t h i ế t bị k h á c nhau (và cĩ t hể trên những h ệ đ iề u h à n h k h á c nhau). Việc k ế t n ố i n h ư v ậ y sẽ được thực h i ệ n bằng c á c h trao đổ i t h ơ n g đ iệ p qua mạng m á y tính. T i ế n t r ì n h gửi sẽ tạo v à gửi t h ơ n g điệp, t i ế n t r ì n h nhận sẽ nhận t h ơ n g điệp (message) v à cĩ thể phản hồi l ạ i b à n g c á c h gửi m ộ t t h ơ n g điệp trả l ờ i ( H ì n h 2.1). ứ n g dụng m ạ n g cĩ các giao thức định nghĩa k h u ơ n
dạng, t h ứ t ự trao đổ i các t h ơ n g điệp cũng n h ư h à n h v i của mỗi b ê n k h i nhận đ ược t h ơ n g điệp.
2 . 1 . 1 . G i a o t h ứ c t ầ n g ứ n g d ụ n g
Giao thức tầng ứ n g dụng chỉ là m ộ t p h ầ n (cho d ù là p h ầ n quan trọng) c ù a ứ n g dụng mạng. V í d ụ , Web - ứ n g dụng m ạ n g cho p h é p n g ườ i d ù n g lấy các đố i t ượn g từ Web server, bao gồm n h i ề u t h à n h phần, n h ư t i ê u chuẩn định dạng v ă n b ả n ( H T M L ) , trình duyệt W e b (Netscape Navigator hay M i c r o s o ữ Internet Explorer), Web server (Apache, M i c r o s o ữ v à Netscape server) v à giao thức tầng ứ n g dụng. Giao thức tầng ứ n g d ụ n g của W e b - H T T P (HyperText Transfer Protocol [RFC 2616]), đị n h nghĩa c á c h thức chuyển t h ơ n g đ iệ p giữa Web client (trình duyệt) v à Web server.
N h ư đã nĩi ở trên, giao thức tầng ứng dụng định nghĩa c á c h thức t r u y ề n t h ơ n g đ iệ p giữa c á c t i ế n t r ì n h ứng dụng chạy trên c á c t h i ế t bị k h á c nhau. N ĩ x á c định:
<*• K iểu t h ơ n g điệp trao đổ i , ví d ụ n h ư t h ơ n g điệp y ê u cẩu hay t h ơ n g đ iệ p trà l ờ i .
* • C ú p h á p của t h ơ n g đ iệ p , ví d ụ các t r ườ n g trong t h ơ n g điệp c ũ n g n h ư c á c h x á c định c h ú n g .
** Ý nghĩa của các trường.
<*• Quy tắc x á c định k h i n à o v à n h ư t h ế n à o t i ế n t r ì n h gửi v à trả l ờ i t h ơ n g điệp?
N h i ề u giao thức tầng ứ n g dụng được đặc tả trong c á c RPC. V í d ụ , đặc tả của H T T P là H T T P R Í C .
à) Mơ hình khách hàng/ngưịiphục vụ (ClienƯServer)
Giao thức ứng d ụ n g m ạ n g t h ườ n g chia ra hai phía, p h í a client v à p h í a server ( H ì n h 2.2). P h í a client trong t h i ế t bị n à y liên lạc v ớ i p h í a server ư ơ n g thiết bị k h á c . V í d ụ , trình duyệt Web là p h í a client, Web server là p h í a server của H T T P .
Clènt
Hình 2.2. Tương tác clienơserver
T r o n g n h i ề u ứ n g dụng, m á y tính sẽ thực h i ệ n cả p h ầ n client v à p h â n server của ứng dụng. V í d ụ , xét p h i ê n l à m việc Telnet giữa m á y A v à m á y B (Telnet là ứng d ụ n g đ ă n g nhập từ xa). N ế u m á y A bắt đầ u trước (cĩ nghĩa là n g ườ i d ù n g ở m á y A đ ă n g nhập v à o m á y B ) , k h i đ ĩ m á y A chạy p h í a client v à m á y B chạy p h í a server của ứ n g dụng. Mặt k h á c , n ê u m á y B bát đ â u trước thì m á y B chạy p h í a client của ứng dụng.
b) Truyền thơng giữa các tiến trình
ứ n g dụng bao gồm hai t i ế n t r ì n h t r ê n hai t h i ế t bị k h á c nhau v à liên lạc v ớ i nhau qua m ạ n g . H a i t i ế n t r ì n h l i ê n lạc v ớ i nhau bằng c á c h gửi v à n h ậ n t h ơ n g điệp qua socket của c h ú n g . Socket c ĩ thể xem n h ư "cửa" của t i ế n t r ì n h , vì t i ế n t r ì n h nhận v à gửi t h ơ n g điệp t h ơ n g qua "cửa". K h i m u ố n gửi t h ơ n g điệp t ớ i t i ế n t r ì n h k h á c , t i ế n t r ì n h đẩ y t h ơ n g đ iệ p cần gửi qua "cửa" v ớ i g i ả định rằng, thục t hể giao v ậ n nằm b ê n kia "cửa" sẽ c h u yển t h ơ n g đ iệ p đế n "cửa" của t i ế n t r ì n h nhận. Ưng dụng kiềm sốt ỉ HĐH kiểm sốt TCB lAiith buỉĩers, variables Inlemet . ứng dụng * kiểm sốt TCRrịth buỉíers, variables HĐH kiểm sốt Ho si or server Ho si orserver
Hình 2.3. Tiến trình ứng dụng, socket và giao thức giao vận
H ì n h 2.3 m i n h hoa t r u y ề n t h ơ n g qua socket giữa hai t i ế n t r ì n h t r ê n Internet (Tầng giao v ậ n trên h ì n h 2.3 là TCP, mặc d ù ở đ â y c ĩ t hể sử d ụ n g giao thức k h á c n h ư Ư D P ) . Qua h ì n h 2.3 ta thấy, socket là giao d i ệ n giữa tầng ứ n g dụng v à tầng giao v ậ n trong m á y tính. N ĩ đ ược x e m là A P I (giao d i ệ n lập trình ứng dụng) giữa ứng dụng v à m ạ n g . N g ườ i t h i ế t k ế ứ n g dụng k iểm sốt mọi k h í a cạnh p h í a b ê n trên socket - là tầng ứ n g d ụ n g n h ư n g chỉ cĩ k h ả n ă n g k iểm sốt rất ít tầng giao v ậ n p h í a d ướ i socket. V ớ i tầng giao v ậ n , n g ườ i lập trình ứng dụng chỉ c ĩ t hể k iểm sốt đ ược : (1) c họn giao thức giao v ậ n n à o ; (2) x á c định m ộ t vài tham số ờ tầng giao v ậ n n h ư độ lem bộ đệ m v à kích thước t ố i đ a của gĩi t i n . K h i n g ườ i lập trình lựa chọn giao thức giao v ậ n n à o , ứng dụng được tạo ra sử d ụ n g tầng giao v ậ n ứ n g v ớ i giao thức đỏ.
c) Địa chỉ tiến trình
Để gửi t h ơ n g đ iệ p cho t i ế n t r ì n h t r ê n m á y t í n h k h á c , t i ế n t r ì n h gửi p h ả i x á c định đ ược t i ế n t r ì n h nhận. T i ế n t r ì n h được x á c định qua hai phần: (1) t ê n hay địa chỉ của m á y tính; (2) định danh x á c định t i ế n t r ì n h t r ê n m á y t í n h nhận.
Trong ứ n g d ụ n g Internet, m á y tính được x á c định qua địa chỉ IP (Địa chỉ IP sẽ đ ược trình b à y trong C h ư ơ n g 4). B â y g i ờ c h ú n g ta chỉ cần b i ế t địa chỉ IP là m ộ t số 32 bít, d ù n g để x á c định duy nhất m ộ t t h i ế t bị ( c h í n h x á c h ơ n , n ĩ x á c định duy nhất giao d i ệ n (interíace) của t h i ế t bị k ế t n ố i v à o Internet). Vì địa chỉ IP của t h i ế t bị mang tính x á c định duy nhất, n ê n v i ệ c p h â n p h ố i địa chỉ IP đ ược quản lý chặt c h ẽ . M ạ n g A T M c ĩ m ộ t chuẩn địa chỉ k h á c . I T U - T lấy số đ iệ n thoại làm địa chỉ, gọi là địa chỉ E.164 sử dụng trên m ạ n g A T M .
N g o à i địa chỉ t h i ế t bị nhận, p h í a gửi phải t h ê m v à o t h ơ n g t i n g i ú p p h í a nhận chuyển t i ế p t h ơ n g đ iệ p cho t i ế n t r ì n h p h ù họp (vì trong m á y tính nhận cĩ thể cĩ n h i ề u t i ế n t r ì n h đồn g t h ờ i hoạt động). T h ơ n g t i n n à y là cổng p h í a nhận (destination port). C á c giao thức tầng ứ n g dụng p h ổ b i ế n đề u được g á n số hiệu cổng (port number) là m ộ t số cụ t hể. V í d ụ , t i ế n t r ì n h W e b server (giao thức H T T P ) sử dụng cổng 80. T i ế n t r ì n h m a i l server (giao thức SMTP) sử dụng cổng 25. Danh sách các cổng cho tất cả giao thức t h ườ n g gặp trên Internet đ ược l i ệ t k ê trong RFC 1700. K h i x â y d ự n g ứng dụng mạng m ớ i thì ứng d ụ n g đ ĩ phải được đ ă n g k ý m ộ t số h i ệ u cổng m ớ i .
2.1.2. Các yêu cầu của ứng dụng
Socket là giao d i ệ n giữa t i ế n t r ì n h ứng dụng v à thực thể giao v ậ n . ứ n g dụng gửi t h ơ n g điệp qua "cửa", ở sau c á n h cửa thực thể giao v ậ n c ĩ t r á c h n h i ệ m chuyển t h ơ n g đ iệ p qua mạng m á y tính t ớ i "cửa" t i ế n t r ì n h nhận. N h i ề u k iểu mạng, kể cả Internet, cĩ n h i ề u k iểu giao thức giao v ậ n k h á c nhau. K h i t h i ế t k ế ứ n g dụng, phải lựa chọn m ộ t giao thức giao v ậ n cĩ sẵn nào đ ĩ , bằng c á c h n g h i ê n cứu c ác dịch v ụ được c á c giao thức giao v ậ n cung cáp v à sau đ ĩ sẽ chọn giao thức n à o đ á p ứng đầ y đủ nhất c á c y ê u cầu của mình. N h ì n chung, c h ú n g ta cĩ thể p h â n loại theo ba n h ĩ m là mất m á t d ữ l i ệ u , b ă n g t h ơ n g v à t h ờ i gian.
a) Mất mát dữ liệu (Data loss)
M ộ t số ứng dụng n h ư t h ư đ iệ n tử, t r u y ề n fíle, t r u y cập từ xa, t r u y ề n c á c đố i t ượn g Web v à ứ n g dụng tài c h í n h địi hỏi d ữ l i ệ u p h ả i đ ược t r u y ề n c h í n h x á c v à đầ y đủ, tức là k h ơ n g được mất m á t d ữ l i ệ u . Đặc biệt, mất m á t íìle d ữ l i ệ u , hoặc d ữ l i ệ u trong cá c giao dịch tài c h í n h cĩ t hể g â y n ê n h ậ u q u ả n g h i ê m trọng. T u y n h i ê n , m ộ t số ứng dụng k h á c n h ư ứ n g d ụ n g đ a p h ư ơ n g t i ệ n (real - time audio/video hay stored audio/video) chấp nhận m á t m á t d ữ l i ệ u . Trong c á c ứ n g d ụ n g k iểu n à y , mất d ữ l i ệ u c ĩ t hể g â y n ê n m ộ t số n h iễu trong d ữ l i ệ u đ a p h ư ơ n g t i ệ n , n h ư n g đ iề u n à y c ĩ t hể chấp n h ậ n đ ược trong g i ớ i hạn n à o đ ĩ . Ả n h h ưởn g do mất m á t d ữ l i ệ u t ớ i chất l ượn g ứ n g d ụ n g c ũ n g n h ư số lượng cho p h é p các gĩi d ữ l i ệ u bị mất p h ụ thuộc v à o c h í n h ứng dụng v à p h ư ơ n g p h á p m ã hoa.
b) Băng thơng (bandwith)
Để hoạt độ n g h i ệ u quả, m ộ t số ứng dụng phải t r u y ề n d ữ l i ệ u v ớ i m ộ t tốc độ nhất định. Ví d ụ , ứng dụng gọi đ iệ n thoại qua Intemet (Intemet telephony) m ã hoa â m thanh v ớ i tốc độ 32Kbs, thì sau đ ĩ d ữ l i ệ u tạo ra p h ả i được chuyển t ớ i ứng dụng nhận v ớ i tốc độ trên. N ế u k h ơ n g c ĩ đủ b ă n g t h ơ n g cần t h i ế t , ứng dụng cần phải m ã hoa â m thanh v ớ i tốc độ k h á c hay phải k ế t t h ú c - bởi vì n ế u k h ơ n g đủ b ă n g t h ơ n g thì ứng d ụ n g k h ơ n g t hể đ á p ứng y ê u cầu n g ườ i sử dụng. N h ữ n g ứng dụng đ a p h ư ơ n g t i ệ n h i ệ n nay là ứng dụng p h ụ thuộc v à o b ă n g t h ơ n g (bandvvidth sensitive), n h ư n g trong t ư ơ n g lai ứ n g dụng đ a p h ư ơ n g t i ệ n sẽ sử dụng c á c kỹ thuật m ã hoa thích nghi để m ã hoa tốc độ cho p h ù hợp v ớ i d ả i tần h i ệ n c ĩ .
c) Thời gian (timing)
N h ữ n g ứ n g dụng t h ờ i gian thực (real - time) mang t í n h chất t ư ơ n g tác, n h ư Internet telephone, h ộ i thảo qua đ iệ n thoại, hay c á c t r ị choi n h i ề u n g ườ i tham gia c ù n g m ộ t lúc (multiplayer game) y ê u cầu những r à n g buộc chặt chẽ v ề t h ờ i gian trong việc trao đổ i d ữ l i ệ u . V í d ụ , những ứ n g d ụ n g n à y địi hỏi độ trễ (delay) từ t i ế n t r ì n h gửi đế n t i ế n t r ì n h nhận k h ơ n g v ượt q u á vài t r ă m phần n g h ì n giây. Độ trễ l ớ n trong ứ n g d ụ n g Internet telephone k h i ế n cuộc đ à m thoại bị đứ t đ oạ n giữa chừng. Trong trị choi n h i ề u n g ườ i c ù n g tham gia, hay trong m ơ i trường t ư ơ n g tác ảo, độ trễ từ lúc đ ư a ra y ê u cầu cho đế n k h i nhận được k ế t quả phản ứ n g từ m ơ i t r ườ n g (ví d ụ , từ m ộ t n g ườ i chơi k h á c ) l ớ n sẽ l à m g i ả m tính c h â n thực của trị c h ơ i . Đố i v ớ i ứ n g dụng
k h ơ n g t í n h đế n y ế u t ố t h ờ i gian thực, n g ườ i ta vẫn m o n g m u ố n c ĩ m ộ t độ trê thấp, song k h ơ n g c ĩ r à n g buộc chặt c h ẽ đố i v ĩ i độ trễ.
H ì n h 2.4 t ĩ m tắt c á c y ế u t ố n h ư độ t i n cậy, b ă n g t h ơ n g v à c á c địi hỏi v ề t h ờ i gian của m ộ t số ứ n g dụng Internet p h ổ b i ế n . H ì n h 2.4 chỉ p h á c hoa m ộ t vài đị i hỏi quan trọng của những ứ n g dụng Internet n à y . Ở đ â y , c h ú n g ta k h ơ n g c ĩ đ â y đủ c á c p h â n l o ạ i h o à n chỉnh, n h ư n g c ũ n g đủ đ ê nhận biêt m ộ t vài đặc t r ư n g quan t rọn g nhất để p h â n l o ạ i ứ n g dụng.
- Ị ĩ Ị
ứ n g d ụ n g Mất m á t d ữ liệu B ă n g t ầ n T h ờ i gian
File transfer Khơng Elastic Khơng
E-mail Khơng Elastic Khơng
Web Documents Khơng Elastic (few Kbps) Khơng
Real-time Audio/Video Chấp nhận mất mát Audio: Few Kbps - 1Mb Video: 10Kb-5 Mb Cĩ: 100s of msec stored Audio/Video Chấp nhận mất mát
Same as Above Cĩ: Few Seconds Interactive games Chấp nhận mất mát Few K b p s - 1 0 K b Cĩ: 100sof msec Financial Applications
Khơng Elastic Cĩ hoặc khơng
Hình 2.4. C á c yêu cầu cho một số ứng dụng 2 . 1 . 3 . D ị c h v ụ c ủ a c á c g i a o t h ứ c g i a o v ậ n I n t e r n e t
Internet ( v à n ĩ i chung TCP/IP) cung cấp hai giao thức giao v ậ n cho tầng ứ n g dụng là Ư D P v à TCP. K h i x â y dựng ứ n g dụng cho Internet,
m ộ t trong những q u y ế t định đầ u tiên m à n h à t h i ế t k ế p h ả i đ ư a ra là sử d ụ n g Ư D P hay TCP. Mỗi giao thức cung cấp m ộ t k iểu phục v ụ k h á c nhau cho ứ n g dụng.
a) Đích vu TCP
Đặc trung của giao thức TCP là h ướ n g k ế t n ố i v à cung cấp dịch v ụ t r u y ề n d ữ l i ệ u t i n cậy. K h i sử dụng giao thức giao v ậ n TCP, ứ n g d ụ n g sẽ nhận được cả hai l o ạ i dịch v ụ này.
« • D ị c h v ụ h ướ n g n ố i (connection o r i e n t e d ) : T C P client v à T C P server trao đổ i c á c t h ơ n g t i n đ iề u k h iển v ớ i nhau t r ướ c k h i t r u y ê n d ữ l i ệ u ứ n g dụng. Q u á trình "bắt tay" giữa client v à server n h ư v ậ y cho p h é p cả hai b ê n sẵn s à n g xử lý c á c gĩi d ữ l i ệ u . Sau q u á t r ì n h này, xuất h i ệ n m ộ t đ ườ n g k ế t n ố i T C P (TCP connection) giữa socket của hai t i ế n t r ì n h . Đ â y là kết nổi hai chiều (song cơng - f u l l
duplex) vì cho p h é p hai t i ế n t r ì n h c ĩ t hể đồn g t h ờ i gửi v à nhận t h ơ n g điệp. K h i ứ n g dụng k ế t t h ú c v i ệ c gửi t h ơ n g đ iệ p , n ĩ đ ĩ n g k ế t n ố i l ạ i . D ị c h v ụ n à y chỉ là h ướ n g k ế t n ổ i c h ứ k h ơ n g p h ả i m ạ c h ảo (virtual circuit), bởi vì hai t i ế n t r ì n h đ ược k ế t n ố i m ộ t c á c h lỏng lẻo. Trong C h ư ơ n g 3, sẽ ưì n h b à y c h i t i ế t v ề dịch v ụ h ướ n g n ố i v à c á c h thực h i ệ n c h ú n g .
f ì ... *
«° D ị c h v ụ giao v ậ n t i n cậy: T i ê n trình gửi c ĩ t h ê sử d ụ n g T C P đê t r u y ề n d ữ l i ệ u c h í n h x á c v à đ ú n g t h ứ tự. Gửi đi m ộ t l uồn g byte qua socket, t i ế n t r ì n h ứng dụng cĩ t hể t i n t ưởn g T C P sẽ c h u yển luồng byte n à y đế n socket nhận, k h ơ n g bị lỗi hay t r ù n g lặp byte.
TCP c ũ n g c ĩ c ơ c h ế k iểm sốt tắc n g h ẽ n , c ơ c h ế n à y đ á p ứ n g cho cả Internet chứ k h ơ n g phải cho hai t i ế n t r ì n h t r u y ề n t h ơ n g v ớ i nhau. Kỹ thuật k iểm sốt tắc n g h ẽ n của TCP là g i ả m tốc độ gửi d ữ l i ệ u của mỗi t i ế n t r ì n h (client hay server) k h i mạng bị tắc n g h ẽ n . Đặc b i ệ t , n h ư c h ú n g ta sẽ thấy trong C h ư ơ n g 3, c ơ c h ế k iểm sốt tắc n g h ẽ n của T C P cổ gắng g i ĩ i h ạ n mỗi k ế t n ố i TCP để chia sẻ c ơ n g bằng b ă n g t h ơ n g giữa c á c t i ế n t r ì n h .
G i ớ i hạn tốc độ t r u y ề n c ĩ t hể k h ơ n g thoa m ã n v ớ i c á c ứ n g d ụ n g audio v à video theo t h ờ i gian thực, những ứ n g d ụ n g đị i hỏi p h ả i c ĩ m ộ t b ă n g t h ơ n g t ố i t h iểu . Hom nữa, ứ n g dụng t h ờ i gian thực chấp n h ậ n mất m á t d ữ l i ệ u v à k h ơ n g thực sự cần đế n m ộ t dịch v ụ giao v ậ n t i n cậy h o à n t o à n . V ì các lý do đ ĩ , c ác ứ n g dụng t h ờ i gian thực t h ườ n g chạy trên n ề n U D P .