SYN=1, Seq=X
Client Server
SYN=1, ACK=1, Ack=X+1, Seq=Y
Quỏ trỡnh thi t l p k t n i b ng th t c b t tay 3 l n (three-way hand). Client i b n tin v i SYN=1 (yờu c u k t n i). Server nh n c, g i b n tin v i SYN=1 và ACK=1. Client l i ỏp l i v i b n tin ACK=1.
t thỳc k t n i b ng th t c b t tay hai l n (two-way hand). Bờn k t thỳc g i li u, g i b n tin v i FIN=1, TCP cho phộp nh n ti p t c s li u cho n khi bờn kia g i b n tin FIN=1
FIN=1
Client Server
... FIN=1
Ngoài ra, th t c TCP/IP cũn dựng k t n i gi a LAN và WAN nh m t th c cho m ng LAN. 7.2.3 Quỏ trỡnh trao i d li u Send DATA Send ACK Send ACK Send ACK Send ACK Send DATA Send ACK
Hình 7-4. Sơ đồ quá trình trao đổi dữ liệu của TCP.
W= maximun Segment size (W>N) 2W = Windows limit
7.2.4 Th t th c hi n ng d ng TCP/IP
k t h p c a th t c TCP và IP th c s là s k t h p gi a cỏc m ng mỏy tớnh n i v i nhau cho phộp ng i dựng cỏc m ng mỏy tớnh n i v i nhau cho phộp ng i dựng cỏc m ng khỏc nhau liờn l c và làm vi c c v i nhau.
ACK = 1, ACk = Y+W+1 (Windows = W) ACK = 1, Ack = X+N+1 (Window = N)
SEQ = 1, Seq = Y SEQ = 1, Seq = Y+N
SEQ = 1, PSH = 1, Seq = X
ACK = 1, ACk = Y+2W+1(Windows = W) SEQ = 1, Seq = Y+2W
Th t c TCP là th t c t i u cu i, cũn IP dựng ch y trờn m ng. Khi ng i d ng th t c TCP t o c phõn n TCP và k t h p vào IP t o thành IP datagram. Router c n c vào a ch IP trong gúi tin và thụng tin ch a trong b ng nh tuy n chuy n gúi này i t i cỏc router sau. Khi gúi tin IP n router cu i cựng, router này tỡm và chuy n gúi tin n a ch h th ng u cu i.
u IP datagram khụng chuy n t i u cu i c vỡ m t lý do nào ú, nú s b y b và giao th c IP khụng cũn thụng bỏo c u này cho ng i s d ng bi t. Giao th c TCP cung c p m i liờn h tin c y gi a cỏc u cu i, m b o d li u phỏt i ỳng a ch , khụng b thi u hay phỏt l p ngh a là t i m cu i cựng th t c TCP c s th t trong phõn n TCP bi t gúi tin b thi u hay gúi ó nh n r i và bỏo l i cho bờn phỏt bi t.
Gúi tin IP khụng ph thu c vào cỏc giao th c c th c a cỏc m ng khỏc nhau mà nú i qua (X.25 hay Frame relay v.v..). V i IP cỏc m ng ch n thu n là ng n cỏc Router. Ta cú th hỡnh dung IP datagram nh m t phong bỡ bỡnh th ng, ng i g i th khụng quan tõm n b c th n c ng i nh n b ng ụ tụ, tàu h a hay mỏy bay.
k t h p gi a th t c TCP và IP giỳp ng i dựng s d ng c cỏc d ch v trao i trờn Internet th c hi n qua cỏc b c chớnh sau õy:
c 1:Cỏc d li u ng d ng k t h p v i s th t hỡnh thành phõn n TCP. Ng i s d ng dựng d ch v trờn m ng nh th n t , Telnet hay FTP v.v.. cú ngh a là a cỏc d li u c a ng i dựng vào ph n d li u c a gúi tin TCP. Giao th c TCP s a vào ph n header c a gúi tin cỏc thụng tin sau:
- S hi u c ng quy nh c a Internet. - S th t Segment g i i.
- Thụng bỏo cho bờn g i bi t ó nh n c Segment th m y (ACK) - S byte c n phỏt.
c 2: Ki n t o ra gúi tin IP datagram
Trờn c s c a gúi tin TCP, IP thờm cỏc thụng tin sau õy vào t o thành IP Datagram.
- a ch phỏt và nh n : Router s d ng a ch này nh tuy n. - S th t c (Protocol number): nh ngh a th t c mà IP th c hi n.
- Th i gian t n t i (Time to live): nh ngh a s Router b t bu c Datagram ph i i qua tr c khi nú b h y b .
Kớch th c gúi tin thay i tựy thu c vào m ng khỏc nhau, ch ng h n nh kớch th c gúi tin trong m ng Ethernet là 1500 bytes cũn m ng X.25 ch cú 128 bytes.
• Cỏc thụng tin tựy ch n
- Source Routing ( nh tuy n bờn phỏt): cung c p danh sỏch cỏc Router s ng.
- Route recording (Ghi l i tuy n ng ó i qua): Thụng tin s yờu c u m i Router ghi l i a ch IP khi nú chuy n datagram qua, dựng th ng kờ c
li u c a ng d n trong Internet.
- Fragmentation limit (Gi i h n phõn m nh): nh ngh a c l n nh t (tớnh theo byte) c a m t datagram cú th chuy n i mà khụng c n ph i chia nh .
- Routing priority or security ( u tiờn ho c b o m an toàn cho Datagram): ch rừ tuy n nào dành u tiờn hay tuy n nào b o m c an toàn cho datagram.
Hỡnh 7-5. C u trỳc c a IP Datagram.
Nh v y Datagram th c ch t là hỡnh th c m t gúi tin ch a d li u thụng tin c dựng trong internet.
c 4: Chuy n gúi n a ch ớch
Cỏc IP Datagram chuy n qua cỏc l p d i a vào và nh tuy n tỡm t i a ch n qua m ng c n c vào a ch v t lý c a m ng l i vớ d nh a ch
ng X.25, m ng Frame relay ho c ngay b n thõn c a Internet. T t c cỏc thụng tin này u n m trong b ng nh tuy n trong cỏc Router. Cỏc m ng X.25 hay Frame relay ch làm nhi m v chuy n t i cỏc Datagram.
i phớa u cu i thu, TCP tỏch IP datagram l y phõn n TCP x lý d li u thụng tin, i chi u s th t , phỏt hi n nh ng gúi thi u thi u hay ó nh n
c, ng th i c ng nh n c thụng bỏo (ACK) t phớa phỏt bỏo cho bi t bờn y ó nh n c gúi th m y do bờn này phỏt i.
Phớa thu thụng bỏo (ACK) cho bờn phỏt bi t s d li u ó nh n c ng th i ng yờu c u phỏt l i nh ng gúi tin thi u n u cú.
7.3 Giao th c UDP
Giao th c UDP (User Datagram Protocol) cho phộp ng i s d ng g i b n tin mà khụng c n thi t l p liờn k t, do ú khụng b o m vi c giao nh n chớnh xỏc ho c th t b n tin. Giao th c UDP dựng cho d ch v khụng tin c y 100%. Th c t trong cỏc m ng 99% b n tin UDP c giao nh n ỳng ớch. Do ớt ch c n ng ph c
p nờn UDP ho t ng nhanh h n so v i TCP.
Source Port Destination Port
Message Length Checksum
DATA
Hỡnh 7-6. Khuụn d ng c a UDP Datagram.
Cỏc tr ng cú ý ngh a nh sau:
• Source Port - S hi u c ng ngu n (c a mỏy g i): M t tr ng cú th l a ch n c v i s hi u c ng. N u m t s hi u c ng khụng xỏc nh thỡ tr ng này cú giỏ tr là 0.
• Destination Port - S hi u c ng trờn mỏy nh n.
• Message Length - Chi u dài c a d li u trong ú c ph n Header và d li u.
• Tr ng Checksum: là 16 bit bự m t c a phộp t ng bự m t c a tr ng d li u, cú c ph n pseudoHeader gi ng nh c a TCP.
Tr ng checksum c a UDP c ng cú th l a ch n c, nh ng khụng c dựng. Khụng m t checksum nào c dựng cho ph n d li u vỡ ph n checksum c a IP ch dựng cho ph n Header IP mà thụi. N u ph n checksum khụng c dựng thỡ cỏc bit c a tr ng này c thi t l p là 0.
Giao th c UDP c s d ng trong m t s tỡnh hu ng c bi t :
- Khi truy n m t d li u nh thỡ dựng UDP cú hi u qu h n so v i vi c k t n i và h y k t n i khi s d ng TCP.
- Cỏc ng d ng h i ỏp, mong mu n tr l i trong m t th i gian ng n sau khi ng i s d ng g i i yờu c u. Tr l i c ng là m t c ch bỏo nh n. Ng i ta
d ng giao th c UDP nh trong cỏc d ch v ng d ng khụng yờu c u chớnh xỏc cao nh thụng bỏo gi hay cỏc d ch v g i nh n tin, t giỏ .. .
- M t s mụ hỡnh nộn truy n cỏc thụng tin audio, video, cú th ch p nh n c m t vài gúi d li u b h ng hay th t l c.
- M t vài ng d ng cú ụ tin c y riờng trong khi truy n d li u thỡ nờn dựng UDP h n là TCP.
7.4 C ng và Socket
7.4.1 S hi u c ng
Khi m t mỏy khỏch k t n i vào mỏy ch thỡ cú th yờu c u nhi u d ch v khỏc nhau trờn mỏy ch . M i d ch v u cú cỏch g i và nh n d li u theo quy c riờng. TCP và UDP ch ch u trỏch nhi m a d li u t m t mỏy tớnh nỏy n m t mỏy tớnh khỏc, cũn d li u ú c g i n d ch v theo cỏch nào thỡ ph i thụng qua
ng c a d ch v .
ng c c tr ng b i m t s cú giỏ tr t 0 n 65535. Cỏc c ng chu n t 0 - 1023 là c ng c dựng cho cỏc d ch v ph bi n nh FTP, eMAIL, POP3, HTTP, ... Khụng th cú hai ti n trỡnh cựng s d ng chung m t s hi u c ng.
Cỏc s hi u c ng (Port Numbers) c dựng thụng d ng trong th c t :
UDP Port TCP Port
0 Reversed 7 Echo 37 Time
42 Name Server
53 Domain Name Server
69 Trivial File Transfer Program ( TFTP ) 514 System Log . . . . 0 Reversed 1 TCP Multiplexor 20 FTP_ Data Connection 21 FTP_ Command Connection 23 TELNET 25 SMTP 42 Name Server
53 Domain Name Server 79 Finger_ find a active user 80 HTTP
7.4.2 Socket
i socket xỏc nh m t m cu i trong liờn k t truy n thụng hai chi u gi a cỏc ti n trỡnh giao ti p trờn m ng, là i t ng mà qua ú cỏc d ch v ng d ng truy n ho c nh n cỏc gúi d li u trờn m ng. Khi c n g i d li u i, cỏc ti n trỡnh ghi d li u vào socket, khi cú d li u n, cỏc ti n trỡnh s c socket l y d li u. Trong nh ng n m 80, do nhu c u c n cú m t giao di n l p trỡnh ng d ng API (Application Programming Interface) phỏt tri n cỏc trỡnh ng d ng trờn m ng TCP/IP, giao di n socket ó c xõy d ng l n u tiờn trờn h u hành UNIX. Lo i Berkelay Socket (Berkeley Software Distribution - BSD, t i Tr ng i h c
California Berkeley) c thi t k v i nguyờn t c truy n thụng liờn ti n trỡnh (IPC - InterProcess Communication) trờn m ng g n li n v i TCP/IP.
Cỏc Socket cung c p kh n ng g i và nh n d li u thụng qua k t n i m ng mà khụng i sõu vào cỏc m c và khuụn d ng gúi tin, c ch qu n lý b m. C ch trao i Socket c s d ng trong cỏc mụ hỡnh m ng nh sau :
• Mụ hỡnh Client/Server
• Mụ hỡnh m ng ngang hàng, nh cỏc trỡnh ng d ng "chat"
• o cỏc cu c g i th t c t xa ( Remote Procedure Calls - RPC ) Cỏc ki u socket :
1. Stream socket :
d ng v i giao th c TCP, cú thi t l p k t n i gi a hai mỏy tr c khi trao i li u.
Stream socket cung c p c ch trao i d li u theo hai chi u, tin c y, cú th và khụng phỏt l p.
Khụng cú biờn gi i gi a cỏc record.
2. Datagram socket
d ng v i giao th c UDP, khụng c n thi t l p liờn k t gi a hai mỏy tr c khi truy n d li u. Vi c nh v Server và Client s thụng qua a ch ớch trong gúi tin.
Datagram socket cung c p c ch trao i d li u theo hai chi u, khụng b o m tin c y và cú th t , cú th phỏt l p.
Biờn gi i gi a cỏc record trong d li u g i i c b o toàn.
3. Raw socket
Cung c p s truy xu t vào cỏc giao th c giao ti p n n cú h tr socket. Cỏc Socket này tỡnh hu ng là cỏc gúi tin cú nh h ng m c dự tin c y ph thu c vào giao di n c cung c p b i giao th c.
Raw socket ch dành cho cỏc ng i s d ng mu n phỏt tri n cỏc giao th c giao ti p m i ho c mu n truy xu t sõu vào cỏc ti n ớch bớ m t c a giao th c
ú.
t socket cú ba thành ph n chớnh :
• Giao di n c liờn k t : là a ch IP c a mỏy.
• Lo i socket : Stream socket ho c Datagram socket.
t liờn k t gi a hai mỏy trờn v i nhau c xỏc nh b i m t c p socket : Socket (Host1, Port1) và Socket (Host2, Port2). S Socket là duy nh t cho phộp
t ti n trỡnh cú th giao ti p v i m t ti n trỡnh khỏc trờn m ng.
Hỡnh 7-7. Nhi u mỏy ngu n n i v i m t mỏy ớch.
t liờn k t cú th c thi t l p theo m t trong hai cỏch : ch ng (active) ho c b ng. Cỏc th c th t ng trờn s d ng TCP thụng qua b ng cỏch g i cỏc hàm ch v nguyờn th y. D ch v TCP c thi t l p nh m t liờn k t logic gi a m t p Socket. M t Socket cú th tham gia nhi u liờn k t v i cỏc Socket xa khỏc nhau. Vỡ cỏc khung tin c a qua c ng u cú y cỏc thụng tin v socket (v i a ch IP), cho nờn khụng cú xung t d li u x y ra.
7.5 Mụ hỡnh giao ti p Client/Server
TCP/IP ph thu c vào khỏi ni m mỏy khỏch (Client) và mỏy ch (Server). Thu t ng Server dựng ch nh ng ch ng trỡnh cung c p cỏc d ch v thụng qua ng. Cỏc Server nh n m nhi m ch c n ng ỏp ng cỏc yờu c u c a mỏy khỏch, th c hi n vi c ph c v và tr l i k t qu . Thu t ng Client dựng ch cỏc ch ng trỡnh ng d ng g i cỏc yờu c u n Server và ch k t qu tr v .
Cỏc ch ng trỡnh Client và Server th ng th c thi trờn cỏc mỏy khỏc nhau. i ch ng trỡnh Server cú th cựng ỏp ng cho nhi u ch ng trỡnh Client trờn nhi u mỏy tớnh khỏc nhau cựng m t lỳc.
7.5.1 Quỏ trỡnh trao i d li u dựng Stream Socket
Stream socket d a trờn n n giao th c TCP ũi h i ph i t o m t k t n i tr c khi hai bờn cú th truy n ho c nh n d li u cho nhau. Stream Socket cung c p m t dũng cỏc byte d li u khụng cú phõn cỏch cú th truy n hai chi u. Cỏc dũng d li u cú th tin c y c phõn phỏt tu n t , d li u khụng trựng l p, ngh a là cỏc gúi d li u c phõn phỏt theo th t c phỏt, và m i l n ch cú m t gúi riờng bi t
c truy n. Mỏy C Mỏy B hi u c ng ngu n 350, c ng ớch là 23 hi u c ng ngu n 351, c ng ớch là 23 hi u c ng ngu n 352, c ng ớch là 23 Mỏy A Mỏy ớch
ng socket này r t thớch h p v i mụ hỡnh Client/Server. Server s t o m t socket, gỏn cho nú m t tờn (cung c p m t a IP c a mỏy và m t port giao ti p), và i client n i k t n socket. Bờn client c ng t o m t socket và n i k t n tờn socket trờn server. Khi server phỏt hi n cú yờu c u k t n i t client, nú s t o m t socket m i và s d ng socket m i ú giao ti p v i client. Socket c ti p t c i
t n i t cỏc client khỏc.
trao i d li u gi a Client/Server b ng cỏch dựng Socket c bi u di n nh sau : Start connect() send()/recv() socket() Kết thúc close() CLIENT socket() bind() Start End Wait for connections from clients accept() send() / recv() listen() close() SERVER
Hỡnh 7-8. S trao i d li u gi a Client/Server b ng StreamSocket.
7.5.2 Quỏ trỡnh trao i d li u dựng Datagram Socket
Datagram Socket d a trờn giao th c UDP khụng ũi h i ph i thi t l p m t k t i tr c khi truy n và nh n d li u. D li u ch là m t gúi n, vỡ v y d ng socket này th ng dựng truy n cỏc m u tin, khụng c n nhi u cỏc header l p ng d ng. ng socket này cung c p lu ng d li u khụng b o m theo th t ho c khụng b trựng l p, khụng b o m d li u s n c n i nh n. D li u cú th n khụng theo th t c phỏt và cú kh n ng b trựng l p. Nh ng s phõn cỏch gi a cỏc
u tin thỡ c duy trỡ. Trong m ng LAN datagram cú kh n ng tin c y t ng i