Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1 vұn chuyӇn dӳ liӋu tin cұy
kiӇm soát luӗng
kiӇm soát tҳc nghӁn
vұn chuyӇn trên Internet:
UDP: vұn chuyӇn phi kӃt nӕi
TCP: vұn chuyӇn hѭӟng kӃt nӕi
KiӇm soát tҳc nghӁn trong TCP
Trang 2 truyӅn dӳ liӋu tin cұy
kiӇm soát luӗng
trong TCP
Transport Layer 7-2
Trang 3L ѭu ý, Tҫng 4 và các tҫng phía trên ÿѭӧc
t ҥo ra bӣi các thiӃt bӏ ÿҫu cuӕi (computer).
Tҫng Vұn chuyӇn cho phép mӝt thiӃt bӏ cӫa ngѭӡi sӱ dөng phân āoҥn dӳ liӋu cӫa các ӭng dөng ӣ tҫng trên āӇ āһt vào cùng dòng
dӳ liӋu tҫng 4, và cho phép thiӃt bӏ nhұn ráp nӕi lҥi các āoҥn dӳ liӋu āó āӇ chuyӇn lên cho tҫng trên.
Dòng dӳ liӋu tҫng 4 là mӝt kӃt nӕi logic giӳa các āiӇm cuӕi cӫa mҥng, và cung cҩp các dӏch vө vұn chuyӇn tӯ mӝt trҥm āӃn mӝt āích nào āó.
Trang 4Các dӏch vө vұn chuyӇn và giao thӭc
cung cҩp truy͉n thông logic
giӳa các tiӃn trình ӭng dөng
chҥy trên các trҥm khác nhau
các giao thӭc vұn chuyӇn chҥy
trên các hӋ thӕng āҫu cuӕi
bên gӣi: chҿ các thông āiӋp
tҫng ӭng dөng thành
segments, āѭa chúngxuӕng cho tҫng mҥng
bên nhұn: ráp nӕi các
segments lҥi thành cácthông āiӋp, āѭa lên chotҫng ӭng dөng
application
transport
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical network
data link physical
logi ca
l e nd -e nd
tr an sp
ort
Transport Layer 7-4
Trang 6Các giao thӭc tҫng Vұn chuyӇn trên
kiӇm soát luӗng
phân phát không tin cұy,
application
transport
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical network
data link physical
logi ca
l e nd -e nd
tr an sp
ort
Transport Layer 7-6
Trang 7 truyӅn dӳ liӋu tin cұy
kiӇm soát luӗng
trong TCP
Trang 8phân phát các segments nhұnāѭӧc āӃn āúng socket
Demultiplexing tҥi trҥm nhұn:
tұp hӧp dӳ liӋu tӯ nhiӅu
sockets, bao bӑc dӳ liӋu vӟi
thông tin āiӅu khiӇn (āӇ phөc
vө cho demultiplexing sau này)
Multiplexing tҥi trҥm gӣi:
link physical
application transport network link physical
P2
Transport Layer 7-8
Trang 9Demultiplexing làm viӋc nhѭ thӃ nào
TCP/UDP segment format
Trang 10Demultiplexing trong phi kӃt nӕi
Tҥo sockets vӟi các sӕ hiӋu
Transport Layer 7-10
Trang 11Demultiplexing trong phi kӃt nӕi (tiӃp)
DatagramSocket serverSocket = new DatagramSocket(6428);
serverIP: C
SP: 6428 DP: 9157
SP: 9157 DP: 6428
SP: 6428 DP: 5775
SP: 5775 DP: 6428
SP cung cҩp “āӏa chӍ trӣ lҥi”
Trang 12Multiplexing và demultiplexing
Transport Layer 7-12
Trang 13Demultiplexing trong hѭӟng kӃt nӕi
Mӛi socket āѭӧc āӏnh danh
Trang 14Demultiplexing trong hѭӟng kӃt nӕi
serverIP: C
SP: 80 DP: 9157
SP: 9157 DP: 80
SP: 80 DP: 5775
SP: 5775 DP: 80 P4
Transport Layer 7-14
Trang 15Multiplexing và demultiplexing
Trang 16 truyӅn dӳ liӋu tin cұy
kiӇm soát luӗng
trong TCP
Transport Layer 7-16
Trang 17V ӏ trí cӫa UDP trong chӗng giao thӭc TCP/IP
Trang 18UDP: User Datagram Protocol [RFC 768]
Tҥi sao lҥi cҫn āӃn UDP?
không thiӃt lұp kӃt nӕi (kӃtnӕi làm tĉng thêm āӝ trӉ)
āѫn giҧn: không trҥng tháikӃt nӕi tҥi bên gӣi và bênnhұn
thông tin āiӅu khiӇn cӫasegment nhӓ
không kiӇm soát tҳc nghӁn:
UDP có thӇ āi nhanh nhҩttrong khҧ nĉng
Transport Layer 7-18
Trang 19UDP: tiӃp theo
vұn chuyӇn tin cұy qua UDP:
bә sung sӵ tin cұy tҥi tҫng
UDP segment format
Trang 21Encapsulation và decapsulation
Encapsulation and decapsulation
Trang 22UDP so v ӟi IP
UDP versus IP
Transport Layer 7-22
Trang 23S ӕ hiӋu cәng
Port numbers
Trang 24Ĉӏa chӍ IP so vӟi sӕ hiӋu cәng
IP addresses versus port numbers
Trang 25D ҧi sӕ hiӋu cәng do IANA quy ÿӏnh IANA ranges
More later!
IANA: Internet Assigned Numbers Authority
Trang 26Ĉӏa chӍ Socket
Socket addresses
Transport Layer 7-26
Trang 27 cҩu trúc segment
quҧn lý kӃt nӕi
truyӅn dӳ liӋu tin cұy
kiӇm soát luӗng
trong TCP
Trang 28V ӏ trí cӫa TCP trong chӗng giao thӭc TCP/IP
Transport Layer 7-28
Trang 29 kiӇm soát luӗng:
bên gӣi sӁ không làmngұp/lөt bên nhұn
āiӇm-āӃn-āiӇm:
mӝt bên gӣi, mӝt bên nhұn
tin cұy, dòng byte có thӭ
tӵ :
không “ranh giӟi thông
āiӋp”
āѭӡng ӕng dүn:
kiӇm soát tҳc nghӁn trong
TCP và kiӇm soát luӗng āһtkích cӥ cӱa sә
vùng ā ͏ m g ͧ i và nh ̵ n
socket
door
TCP send buffer
TCP receive buffer
socket door
application
writes data
application reads data
Trang 30Cҩu trúc TCP segment
source port # dest port #
32 bits
applicationdata(variable length)
sequence numberacknowledgement number
Receive window Urg data pnter checksum
F S R P A U
head len
not used
Options (variable length)
URG: dӳ liӋu khҭn
(thѭӡng không dùng āӃn)
ACK: sӕ ACK
có hiӋu lӵc PSH: āҭy dl ngay
ĎӇ xác āӏnh các bytes dӳ liӋu (không phҧi segments!)
Internet checksum (tѭѫng tӵ nhѭ UDP)
giúp āӏnh danh các āiӇm āҫu cuӕi cӫa kӃt nӕi
Transport Layer 7-30
Trang 31 source port – sӕ hiӋu cәng nguӗn (bên gӑi)
destination port – sӕ hiӋu cәng āích (bên āѭӧc gӑi)
sequence number – sӕ chuӛi, āѭӧc sӱ dөng āӇ āҧm bҧo dӳ liӋu āӃn āúng theo
thӭ tӵ
acknowledgment number – byte tiӃp theo mà bên nhұn āang āӧi
HLEN – chiӅu dài header, tính bҵng āѫn vӏ tӯ (32 bits)
reserved – āѭӧc āһt là 0
code bits – chӭc nĉng āiӅu khiӇn (vd: thiӃt lұp và kӃt thúc mӝt kӃt nӕi)
window – sӕ octets mà bên nhұn āang sҹn sàng tiӃp nhұn
checksum – tәng kiӇm tra cӫa phҫn thông tin āiӅu khiӇn và dӳ liӋu
urgent pointer – chӍ vӏ trí kӃt thúc cӫa dӳ liӋu khҭn
TCP Segment Header
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
Trang 32TCP Segment Header
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number
4-bit Header Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size
16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP (Transmission Control Protocol)
Giao thӭc hѭӟng kӃt nӕi, tin cұy
Cung cҩp:
1 kiӇm soát luӗng āѭӧc cung cҩp thông qua cѫ chӃ cӱa sә trѭӧt,
2 tin cұy by āѭӧc cung cҩp thông qua các sӕ chuӛi và cѫ chӃ hӗi báo (ACKs).
TCP gӣi lҥi bҩt cӭ āoҥn dӳ liӋu nào mà bên kia không nhұn āѭӧc và cung
cҩp mӝt kênh ҧo giӳa các ӭng dөng cӫa các hӋ thӕng āҫu cuӕi.
Ѭu āiӇm cӫa TCP là nó cung cҩp dӏch vө phân phát āҧm bҧo các
segments
Transport Layer 7-32
Trang 33Encapsulation và decapsulation
Encapsulation and decapsulation
Trang 3416-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number
4-bit Header Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Segment Header
Trang 35TCP so v ӟi IP
TCP versus IP
Trang 36S ӕ hiӋu cәng
Port numbers
Transport Layer 7-36
Trang 370 15 16 31
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
HTTP is Port 80
Trang 38Application Header + data
Transport Layer 7-38
Application Header + data
Trang 390 15 16 31
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
HTTP is Port 80
nhau trong viӋc sӱ dөng các well-known port numbers
(cәng thông dөng) āѭӧc āӏnh nghŝa trong RFC 1700.
Ví dө, bҩt kƖ hӝi thoҥi nào gҳn vӟi mӝt ӭng dөng FTP āӅu
Trang 400 15 16 31
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
HTTP is Port 80
well-known port number thì āѭӧc gán sӕ hiӋu cәng ngүu nhiên, āѭӧc lӵa chӑn tӯ mӝt dҧi cө thӇ.
và āӏa chӍ āích trong TCP segment.
Transport Layer 7-40
Trang 41 Mӝt sӕ cәng dành riêng cho cҧ TCP và UDP, mһc dù các ӭng dөng có thӇ không āѭӧc viӃt āӇ hӛ trӧ chúng.
Dҧi sӕ hiӋu cәng āѭӧc gán āѭӧc quҧn lý bӣi IANA là 0-1023:
http://www.iana.org/assignments/port-numbers
Các cәng thông dөng (The Well Known Ports) có sӕ tӯ 0 āӃn 1023 (Ďѭӧc cұp nhұt
cho āӃn 11-13-2002 Trѭӟc āó, 0 – 255 āѭӧc xem là các cәng thông dөng.)
Các cәng āѭӧc āĉng ký (The Registered Ports) là nhӳng cәng tӯ 1024 āӃn 49151
(thѭӡng āѭӧc āĉng ký cho các ӭng dөng āӏnh trѭӟc cӫa các nhà cung cҩp thiӃt bӏ)
Các cәng āӝng (The Dynamic and/or Private Ports) là nhӳng cәng tӯ 49152 āӃn
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
Trang 42TCP Header
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
Trang 431028 23 23 1028
Chú ý sӵ khác nhau trong viӋc sӕ hiӋu cәng nguӗn và āích āѭӧc sӱ dөng nhѭ thӃ nào vӟi clients và servers:
Client (khӣi tҥo dӏch vө Telnet):
Trang 44Ví dө chӍ ra hai cӱa sә trình duyӋt có cùng URL TCP/IP sӱ dөng các
sӕ hiӋu cәng nguӗn āӇ biӃt thông tin āѭӧc chuyӇn āӃn cӱa sә nào
Trang 45YӃu tӕ nào xác āӏnh tính duy nhҩt cho mӛi kӃt nӕi?
KӃt nӕi āѭӧc āӏnh nghŝa bӣi cһp các sӕ:
Ďӏa chӍ IP nguӗn, Sӕ cәng nguӗn
Ďӏa chӍ IP āích, Sӕ cәng āích
Các kӃt nӕi khác nhau có thӇ dùng cùng sӕ hiӋu cәng āích trên trҥm chӫ miӉn là các sӕ cәng nguӗn hay āӏa chӍ IP
Trang 46 Lѭu ý: Trên thӵc tӃ, khi ta mӣ mӝt trang html āѫn, thông
thѭӡng có nhiӅu phiên TCP āѭӧc tҥo ra, chӭ không chӍ là mӝt.
Hình trên minh hӑa nhiӅu kӃt nӕi TCP cӫa mӝt phiên http āѫn.
Trang 47 truyӅn dӳ liӋu tin cұy
kiӇm soát luӗng
trong TCP
Trang 48B ҳt tay ba bѭӟc
Three-way handshaking
Transport Layer 7-48
Trang 49Quҧn lý kӃt nӕi cӫa TCP
không chӭa dӳ liӋu
Step 2: server nhұn SYN, trҧ lӡivӟi SYNACK segment
Nhҳc lҥi: Bên gӣi và nhұn (sӱ
dөng TCP) thiӃt lұp “kӃt nӕi”
trѭӟc khi trao āәi các segments
dӳ liӋu
Khӣi tҥo các tham sӕ cho TCP:
sӕ chuӛi (sequence number)
thông tin vӅ bӝ āӋm, kiӇm
soát luӗng (vd: cӱa sә nhұn)
client: bên khӣi tҥo kӃt nӕi
Socket clientSocket = new
Trang 50TCP Header
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size
16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
Trang 510 15 16 31
16-bit S ource Port N um ber 16-bit D estination Port N um ber
32-bit S equence N um ber
32 bit A cknow ledgem ent N um ber
A C K
P S H
R S T
S Y N
F I
N 16-bit W indow Size 16-bit TC P C hecksum 16-bit U rgent P ointer
O ptions (if any)
D ata (if any)
TCP Header
S ā͛ng b͡ āѭӧc thiӃt lұp bҵng cách trao āәi các segments có mang các
sӕ chuӛi khӣi tҥo và bit āiӅu khiӇn SYN āѭӧc bұt, có nghŝa là synchronize (ā͛ng b͡) (Các segments mang bit SYN còn āѭӧc gӑi là SYNs.)
KӃt nӕi thành công āòi hӓi mӝt cѫ chӃ phù hӧp āӇ chӑn mӝt sӕ chuӛi khӣitҥo và mӝt cách liên quan āӃn viӋc “bҳt tay” āӇ trao āәi sӕ chuӛi khӣi tҥo (ISNs)
Sӵ āӗng bӝ yêu cҫu rҵng mӛi bên gӣi sӕ chuӛi khӣi tҥo (ISN) cӫa nó và
nhұn mӝt sӵ xác nhұn và ISN tӯ phía bên kia cӫa kӃt nӕi
Mӛi bên phҧi nhұn ISN cӫa phía bên kia và gӣi báo nhұn (ACK) trong mӝtthӭ tӵ cө thӇ
Trang 52 ĎӇ thiӃt lұp kӃt nӕi, ba packets āѭӧc gӣi giӳa hai trҥm āҫu cuӕi.
Bҳt tay ba bѭӟc là cҫn thiӃt vì TCPs (trên các hӋ thӕng āҫu cuӕi) cóthӇ sӱ dөng các cѫ chӃ khác nhau āӇ chӑn ra mӝt sӕ chuӛi khӣi tҥo(ISN)
Ngѭӡi nhұn gói SYN āҫu tiên không có cách nào āӇ biӃt āѭӧc nó cóphҧi là mӝt segment cź bӏ trӉ hay không trӯ khi nó nhӟ āѭӧc sӕ chuӛicuӕi cùng āѭӧc sӱ dөng cho kӃt nӕi āó, āiӅu này không phҧi lúc nào
cźng có thӇ thӵc hiӋn āѭӧc, và nó phҧi yêu cҫu ngѭӡi gӣi xác minh lҥigói SYN này
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
Transport Layer 7-52
Trang 53TCP Header
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
Tҥi thӡi āiӇm này, cҧ hai bên āӅu có thӇ bҳt āҫu truyӅn
thông, và cҧ hai āӅu có thӇ ngҳt mӕi liên kӃt truyӅn
thông này vì TCP là phѭѫng thӭc truyӅn thông āӗng āҷng (cân bҵng).
Trang 54Quҧn lý kӃt nӕi cӫa TCP (tiӃp theo)
Ďóng mӝt kӃt nӕi:
āóng client socket:
clientSocket.close();
Bѭӟc 1: client gӣi segment
āiӅu khiӇn TCP FIN āӃn
Trang 55Quҧn lý kӃt nӕi cӫa TCP (tiӃp theo)
Bѭӟc 3: client nhұn FIN, trҧ
lӡi vӟi ACK
Vào trҥng thái “chӡ āӧi
Trang 56B ҳt tay Bӕn bѭӟc
Four-way handshaking
Transport Layer 7-56
Trang 57Quҧn lý kӃt nӕi cӫa TCP (tiӃp theo)
TCP Connection Management (cont.)
TCP serverlifecycleTCP client
lifecycle
Trang 58 truyӅn dӳ liӋu tin cұy &
kiӇm soát luӗng
trong TCP
Transport Layer 7-58
Trang 59TCP Header
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
KiӇm soát luӗng và sӵ tin cұy
ĎӇ kiӇm soát luӗng dӳ liӋu giӳa các thiӃt bӏ, TCP dùng mӝt cѫ chӃ kiӇm soát luӗng āӗng āҷng (peer-to-peer).
Tҫng TCP cӫa trҥm nhұn thông báo mӝt kích thѭӟc cӱa sә cho
tҫng TCP cӫa trҥm gӣi.
Kích thѭӟc cӱa sә này āӏnh rõ sӕ bytes, bҳt āҫu tӯ sӕ báo nhұn
(ACK number), mà tҫng TCP ӣ bên nhұn hiӋn tҥi āang chuҭn bӏ āӇ
Trang 600 15 16 31
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
Transport Layer 7-60
TCP – mӝt giao thӭc hѭӟng kӃt nӕi, tin cұy; cung cҩp kiӇm
soát luӗng qua viӋc cung cҩp các cӱa sә trѭӧt, và tin cұy bҵng
cách cung cҩp các sӕ chuӛi và hӗi báo.
kênh ҧo “TCP” giӳa các ӭng dөng cӫa ngѭӡi dùng āҫu cuӕi.
āҧm các segment.
Trang 61 Kích cӥ cӱa sә nói āӃn sӕ bytes có thӇ āѭӧc truyӅn āi trѭӟc
khi nhұn mӝt hӗi báo (ACK).
sә, nó phҧi nhұn mӝt hӗi báo trѭӟc khi thêm bҩt kƖ dӳ liӋu nào
có thӇ āѭӧc gӣi.
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
Trang 620 15 16 31
16-bit Source Port Number 16-bit Destination Port Number
32-bit Sequence Number
32 bit Acknowledgement Number 4-bit Header
Length
6-bit (Reserved)
U R G
A C K
P S H
R S T
S Y N
F I
N 16-bit Window Size 16-bit TCP Checksum 16-bit Urgent Pointer
Options (if any)
Data (if any)
TCP Header
Transport Layer 7-62
byte dӳ liӋu và phҧi āѭӧc hӗi báo trѭӟc khi segment khác āѭӧc truyӅn.