Tải bản đầy đủ (.pdf) (22 trang)

Chương 3. Giao thức tầng giao vận (transport layer) ĐH CNTT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (675.01 KB, 22 trang )

MMT_Chuong03

9/30/2011

Chương 3.
Giao thức tầng giao vận (transport layer)
Mạng Máy Tính
Nguyễn Duy
Khoa Mạng Máy Tính và Truyền Thông
Trường ĐH Công Nghệ Thông Tin

9/30/2011





2 of 44

1


MMT_Chuong03

9/30/2011

Ch3. The Transport Layer
1.

Transport Layer Services & Principles.


2.

Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).

4.

Principles of Reliable Data Transfer (RDT).

5.

Connection-oriented Transport (TCP).

6.

Congestion Control.

7.

Sử dụng TCP hay UDP

9/30/2011

3 of 44




Transport Layer Services & Principles




Cung cấp phương tiện truyền
thông logic (logical
communication) giữa các
applications.
PDUs

application
transport
network
data link
physical

 application:

messages.
 transport: segments (đoạn).




Các msg từ tầng application gửi
xuống được chia nhỏ thành các
đoạn (segments).
Transport protocol được thực thi
tại các trạm cuối (end system).


9/30/2011





network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical
application
transport
network
data link

physical

4 of 44

2


MMT_Chuong03

9/30/2011

Transport & Network layers


Network layer:
 Truyền

thông logic giữa
các trạm làm việc (host).
 PDUs = packets (gói).
 IP (Internet Protocol) là
giao thức truyền không tin
cậy.


Transport layer:
 Tạo phương

thức truyền
thông logic giữa các ứng

dụng (application/process).
 Nhận các gói tin từ tầng
Network gửi lên.
9/30/2011

Household analogy:
12 kids sending letters to 12 kids
 processes = kids
 app messages = letters in
envelopes
 hosts = houses
 transport protocol = Ann and
Bill
 network-layer protocol =
postal service



5 of 44

Transport Protocols


TCP (Transmission Control Protocol)
(có liên kết).
 Flow control (điều khiển luồng).
 Congestion control (điều khiển chống nghẽn mạng).
 reliable transport protocol (tin cậy)
 Connection-oriented




UDP (User Datagram Protocol)
 Connectionless.
 Không

có kiểm soát luồng và kiểm soát nghẽn mạng.
 unreliable transport protocol.
9/30/2011





6 of 44

3


MMT_Chuong03

9/30/2011

Ch3. The Transport Layer
1.

Transport Layer Services & Principles.

2.


Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).

4.

Principles of Reliable Data Transfer (RDT).

5.

Connection-oriented Transport (TCP).

6.

Congestion Control.

7.

Sử dụng TCP hay UDP
7 of 44



9/30/2011

Multiplexing/demultiplexing (mux/demux)
sender
application-layer

data
segment
header
segment





M

receiver
M

M

application
transport
network

application
transport
network

P4

sender

M


P2

application
transport
network

Multiplexing (chia kênh): Các msgs từ các apps (P1,P2)
được chia nhỏ và đóng thành các segments.
Demultiplexing (dồn kênh): Các segments nhận được được
gửi tới apps tương ứng (P3, P4).

9/30/2011



Ht M
Hn segment

P1

P3



8 of 44

4


MMT_Chuong03


9/30/2011

Dồn và chia kênh thế nào?
source port number: ứng
dụng gửi dữ liệu.
 destination port number:
ứng dụng nhận dữ liệu.
 Port number:


 0-1023:

well-known port
number (đã được giữ cho các
apps phổ biến).
 1024 – 65535.

32 bits
source port #

dest port #

other header fields

application
data
(message)

TCP/UDP segment format


9 of 44



9/30/2011

Mux/demux: Ví dụ
host A

source port: x
dest. port: 23

server B

source port:23
dest. port: x

Source IP: C
Dest IP: B
source port: y
dest. port: 80

port use: simple telnet app

Web client
host A

Web client
host C


Source IP: A
Dest IP: B
source port: x
dest. port: 80

Source IP: C
Dest IP: B
source port: x
dest. port: 80

Web
server B
port use: Web server

9/30/2011





10 of 44

5


MMT_Chuong03

9/30/2011


Ch3. The Transport Layer
1.

Transport Layer Services & Principles.

2.

Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).

4.

Principles of Reliable Data Transfer (RDT).

5.

Connection-oriented Transport (TCP).

6.

Congestion Control.

7.

Sử dụng TCP hay UDP

9/30/2011




11 of 44

Connectionless Transport (UDP).



User Datagram Protocol [RFC 768]
“no frill”, “bare bones” Internet transport protocol.
 chỉ

cần những thủ tục cơ bản nhất.
 thông tin điều khiển cũng chỉ cần cơ bản nhất.




“best effort” service: dữ liệu có thể mất mát, sai sót nhưng
luôn “cố gắng hết sức” để giảm thiểu.
Connectionless:
có cơ chế bắt tay (handshaking): thiết lập  truyền dữ
liệu  kết thúc.
 Không nắm giữ trạng thái.
 Các segments được xử lý độc lập với nhau.
 Không

9/30/2011






12 of 44

6


MMT_Chuong03

9/30/2011

UDP: Segment structure
source port.
 dest port.
 length.
 application data.
 checksum: mã kiểm
tra lỗi (phục vụ cho
cơ chế nhận biết lỗi
– error detection)


9/30/2011

32 bits
Length, in
bytes of
UDP

segment,
including

source port #

dest port #

length

checksum

header

Application
data
(message)

UDP segment format



13 of 44

UDP checksum
Mã kiểm tra phục vụ cho cơ chế nhận biết lỗi.
 Sender:


 Coi segment


như chuỗi các số nguyên 16-bit.
 checksum = số bù một (1’s complement) của tổng các
số nguyên đó.


Receiver:
 Tính

toán checksum của segment nhận được.
 So sánh với checksum chứa trong trường checksum của
segment nhận được  nếu sai khác tức là có lỗi.
9/30/2011





14 of 44

7


MMT_Chuong03

9/30/2011

UDP checksum: example
Phép cộng các số 16-bit liên tiếp là phép cộng có nhớ.
Kiểm tra checksum: Lấy tổng các số 16-bit (có nhớ) cộng
với checksum: Kết quả là 1111 1111 1111 1111 thì không

có lỗi, nếu khác là có lỗi.




1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
(bù 1)
9/30/2011



15 of 44

Ch3. The Transport Layer
1.

Transport Layer Services & Principles.

2.

Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).


4.

Principles of Reliable Data Transfer (RDT).

5.

Connection-oriented Transport (TCP).

6.

Congestion Control.

7.

Sử dụng TCP hay UDP

9/30/2011





16 of 44

8


MMT_Chuong03

9/30/2011


Principles of Reliable Data Transfer (RDT)



Truyền dữ liệu tin cậy là vấn đề vô cùng quan trọng (top
10 list of important networking topics).
Cần thiết đối với app, transport, datalink layer.

17 of 44



9/30/2011

RDT
rdt_send(): called from above,
(e.g., by app.). Passed data to

deliver_data(): called by
rdt to deliver data to upper

deliver to receiver upper layer

send
side

udt_send(): called by rdt,
to transfer packet over
unreliable channel to receiver

9/30/2011



receive
side

rdt_rcv(): called when packet
arrives on rcv-side of channel


18 of 44

9


MMT_Chuong03

9/30/2011

Finite State Machine (FSM)

event causing state transition
actions taken on state transition

state: when in this
“state” next state
uniquely determined
by next event


state
1

state
2

event
actions

19 of 44



9/30/2011

RDT1.0: reliable data transfer over reliable channel


Tầng dưới:
 Không

có lỗi.
 Không mất mát dữ liệu (gói tin).

Sender gửi dữ liệu xuống tầng dưới.
 Receiver nhận dữ liệu gửi từ tầng dưới lên.


Wait for
call from

above

rdt_send(data)
packet = make_pkt(data)
udt_send(packet)

Wait for
call from
below

sender
9/30/2011



rdt_rcv(packet)
extract (packet,data)
deliver_data(data)

receiver


20 of 44

10


MMT_Chuong03

9/30/2011


RDT2.0: channel with bit errors


Tầng dưới có thể có lỗi bit (0   1)
 UDP



checksum có khả năng phát hiện lỗi bit.

Khắc phục lỗi (error recover) thế nào?
(ACKs): receiver thông báo đã nhận gói dữ
liệu tốt (không có lỗi).
 negative acknowledgements (NAKs): receiver thông báo gói dữ
liệu nhận được có lỗi.
 Nếu nhận được NAK, sender cần gửi lại gói tin bị lỗi.
 human scenarios using ACKs, NAKs? (telephone talking!)
 acknowledgements



rdt2.0 so với rdt1.0:
 error detection
 receiver

feedback: control msgs (ACK,NAK) rcvr->sender.
21 of 44




9/30/2011

RDT2.0: FSM specification
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for
Wait for
call from
ACK or
udt_send(sndpkt)
above
NAK

rdt_rcv(rcvpkt) && isACK(rcvpkt)

receiver
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)

Wait for
call from
below




sender

rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
9/30/2011





22 of 44

11


MMT_Chuong03

9/30/2011

RDT2.0: operation with no errors
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for
Wait for

call from
ACK or
udt_send(sndpkt)
above
NAK

rdt_rcv(rcvpkt) && isACK(rcvpkt)

rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)

Wait for
call from
below



rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
23 of 44



9/30/2011

RDT2.0: error scenario

rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for
Wait for
call from
ACK or
udt_send(sndpkt)
above
NAK

rdt_rcv(rcvpkt) && isACK(rcvpkt)

rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)

Wait for
call from
below



rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)

9/30/2011





24 of 44

12


MMT_Chuong03

9/30/2011

RDT2.0: problems


Nếu ACK, NAK bị lỗi?
 Sender

không biết kết quả gửi gói tin thế nào.
 Cũng chẳng thể gửi lại gói tin vì có thể gây hiện tượng lặp gói
tin.


Giải pháp:
 Sender

truyền lại nếu như ACK/NAK bị lỗi.

 Kiểm soát lặp gói tin (duplicate handling)


Thêm vào gói tin trường số thứ tự (sequence number).

 Căn

cứ vào số thứ tự gói tin, receiver bỏ qua những gói tin bị lặp.
 Sender sẽ không gửi gói tin tiếp theo nếu như chưa chắc chắn
receiver nhận được gói trước đó (stop and wait protocol).
25 of 44



9/30/2011

RDT2.1: sender, handles garbled ACK/NAKs
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait for
Wait for
isNAK(rcvpkt) )
ACK
or
call 0 from
udt_send(sndpkt)
NAK 0

above

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)



rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
udt_send(sndpkt)

9/30/2011




Wait for
ACK or
NAK 1

Wait for
call 1 from
above


rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)



26 of 44

13


MMT_Chuong03

9/30/2011

RDT2.1: receiver, handles garbled ACK/NAKs
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
Wait for

0 from
below

rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq1(rcvpkt)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

Wait for
1 from
below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)

sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq0(rcvpkt)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

27 of 44




9/30/2011

RDT2.2: a NAK-free protocol
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait for
Wait for
isACK(rcvpkt,1) )
ACK
call 0 from
0
udt_send(sndpkt)
above

sender FSM
fragment

rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)

Wait for
0 from

below

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)


receiver FSM
fragment

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)
9/30/2011





28 of 44

14


MMT_Chuong03

9/30/2011


RDT3.0: channels with errors and loss


Tầng dưới:
 Có thể

có lỗi.
 Có thể gây mất mát gói tin.


Giải pháp:
 Sender

truyền lại gói tin nếu như chờ ACK một thời
gian nhất định nào đó mà không thấy (cần countdown
timer).
 Nếu ACK hay gói tin chỉ bị chậm thôi?
truyền lại sẽ gây ra hiện tượng lặp gói tin.
 cần sequence number.


29 of 44



9/30/2011

RDT3.0 sender
rdt_send(data)


rdt_rcv(rcvpkt)



rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )

sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
start_timer



Wait
for
ACK0

Wait for
call 0from
above

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,1)

timeout
udt_send(sndpkt)
start_timer

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)

stop_timer

stop_timer
timeout
udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,0) )


9/30/2011



Wait
for
ACK1

Wait for
call 1 from
above
rdt_send(data)

rdt_rcv(rcvpkt)




sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
start_timer



30 of 44

15


MMT_Chuong03

9/30/2011

RDT3.0 in action

9/30/2011



31 of 44

RDT3.0 in action (cont)

9/30/2011






32 of 44

16


MMT_Chuong03

9/30/2011

Ch3. The Transport Layer
1.

Transport Layer Services & Principles.

2.

Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).

4.

Principles of Reliable Data Transfer (RDT).

5.


Connection-oriented Transport (TCP).

6.

Congestion Control.

7.

Sử dụng TCP hay UDP

9/30/2011

33 of 44



TCP Overview
Transmission Control Protocol [RFCs: 793,1122,
1323, 2018, 2581]
 Point-to-point: 1 sender, 1 receiver.
 Giao thức tin cậy (reliable).
 Kiểm soát luồng (flow control).
 Kiểm soát nghẽn mạng (congestion control).
 full duplex: truyền nhận trên cùng một liên kết.
 send/receive buffers


socket
door


application
writes data

application
reads data

TCP
send buffer

TCP
receive buffer

socket
door

segment

9/30/2011





34 of 44

17


MMT_Chuong03


9/30/2011

TCP segment structure
URG: urgent data
(generally not used)
ACK: ACK #
valid
Header length
(by 32-bit word)
PSH: push data to
app immediately
(generally not used)

32 bits

source port #

dest port #
sequence number

acknowledgement number
head not
UA P R S F
len used

rcvr window size

checksum


ptr urgent data

Options (variable length)

RST, SYN, FIN:
connection estab
(setup, teardown
commands)

counting
by bytes
of data
(not segments!)
# bytes
rcvr willing
to accept

application
data
(variable length)

Internet
checksum
(as in UDP)

35 of 44



9/30/2011


TCP: Reliable Data Transfer (retransmission)

timeout

Host A

Host B

X

loss

time

9/30/2011



lost ACK scenario



36 of 44

18


MMT_Chuong03


9/30/2011

TCP flow control





Các apps có thể xử lý dữ liệu chậm, các gói tin nhận về được đưa
vào bộ đệm (receiver buffer).
Flow control: kiểm soát không để cho receiver buffer bị tràn vì
sender gửi nhiều gói tin quá.
Receiver: Thông báo cho sender biết kích thước của RcvWidow
(free buffer): trường rcv window size trong TCP segment headers.
Sender: Luôn nắm được kích thước tối đa của gói tin có thể truyền
tiếp.

9/30/2011



37 of 44

TCP Connection management



TCP: Connection-oriented.
Khởi tạo các giá trị:
 sequence


number.
 buffers, flow control
information.




Client:Connection initiator
(khởi tạo liên kết: socket).
Server: Chấp nhận kết nối.

9/30/2011



Three way handshaking:
 Bước 1: client gửi TCP
SYN control segment tới
server.
 Bước 2: server nhận SYN
segment rồi trả lời bằng
SYNACK segment.
 Bước 3: client nhận
SYNACK segment và trả
lời bằng ACK segment (có
thể có dữ liệu đi kèm).




38 of 44

19


MMT_Chuong03

9/30/2011

TCP Connection management: ngắt liên kết







Bước 1: client (phía muốn
ngắt liên kết) gửi TCP FIN
segment.
Bước 2: server (phía còn
lại) nhận được FIN, gửi
ACK, ngắt liên kết, gửi
tiếp FIN segment.
Bước 3: client nhận FIN,
trả lời bằng ACK. timed
wait (chờ một lúc nữa cho
tới khi liên kết đóng hẳn).
Bước 4: server nhận ACK,
đóng liên kết.


9/30/2011

client

server

closing

closing

timed wait



closed

closed



39 of 44

Ch3. The Transport Layer
1.

Transport Layer Services & Principles.

2.


Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).

4.

Principles of Reliable Data Transfer (RDT).

5.

Connection-oriented Transport (TCP).

6.

Congestion Control.

7.

Sử dụng TCP hay UDP

9/30/2011





40 of 44


20


MMT_Chuong03

9/30/2011

Congestion control




Nghẽn mạng là điều khó tránh khỏi!!!
Khi mạng bị nghẽn, các gói tin có thể bị trễ hay bị mất.
Hai hướng tiếp cận:
congestion control: Thông tin về mức độ nghẽn mạng
được suy ra từ lượng tin bị mất mát trong quá trình truyền.
 Network-assited congestion control: Routers cung cấp các thông
tin phản hồi về tình trạng nghẽn mạng tới end systems.
 End-end






Bit thông báo nghẽn mạng  đừng gửi nữa hoăc xin chờ một lát.
Tốc độ tối đa cho phép gửi (maximum rate allowed).

TCP sử dụng phương pháp end-end congestion control.


9/30/2011



41 of 44

Ch3. The Transport Layer
1.

Transport Layer Services & Principles.

2.

Multiplexing/Demultiplexing.

3.

Connectionless Transport (UDP).

4.

Principles of Reliable Data Transfer (RDT).

5.

Connection-oriented Transport (TCP).

6.


Congestion Control.

7.

Sử dụng TCP hay UDP

9/30/2011





42 of 44

21


MMT_Chuong03

9/30/2011

Một số so sánh TCP/UDP









Có liên kết, lưu trữ trạng
thái liên kết (quản lý liên
kết).
Điểm-điểm
Có độ trễ (delay): thiết lập,
quản lý liên kết, luồng,
nghẽn…
Segment header lớn (20
bytes)
Bị giới hạn tốc độ truyền
(congestion control)

9/30/2011



Không liên kết, không lưu
trữ trạng thái.



Điểm-điểm, quảng bá.
Độ trễ thấp.





Segment header nhỏ (8
bytes)




Không giới hạn tốc độ
truyền.
43 of 44



Các app thực tế
Application

Transport protocol

Electronic mail

SMTP

TCP

Remote terminal access

Telnet

TCP

Web

HTTP


TCP

File transfer

FTP

TCP

Remote file server

NFS

typically UDP

Streaming multimedia

proprietary

typically UDP

Internet telephony

proprietary

typically UDP

SNMP

typically UDP


Routing protocol

RIP

typically UDP

Name translation

DNS

typically UDP

Network management

9/30/2011



App protocol



44 of 44

22



×