Tải bản đầy đủ (.ppt) (44 trang)

Bài giảng: Giao thức tầng giao vận ppt

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 (512.72 KB, 44 trang )

Chương 1:
Giao thức tầng giao vận
(Transport Layer Protocol)
Giảng viên: Từ Thanh Trí.
Computer Networking Services (Dịch vụ mạng)
Khoa CNTT – Trường Trung Cấp Tây Bắc.
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
2
14-02-2011
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
3
14-02-2011
Ch1. The Transport Layer Protocol
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
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
4
14-02-2011
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: 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).
application
transport
network
data link
physical
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
l
o
g
i
c
a
l

e
n
d
-
e
n
d

t
r
a
n
s
p
o
r

t
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
5
14-02-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.
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
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
6
14-02-2011
Transport Protocols

TCP (Transmission Control Protocol)

Connection-oriented (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)

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.

Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
7
14-02-2011
Ch1. The Transport Layer Protocol
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
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
8
14-02-2011
Multiplexing/demultiplexing (mux/demux)

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).
application
transport
network
M
P2
application
transport
network
receiver

H
t
H
n
segment
segment
M
application
transport
network
P1
M
M
M
P3
P4
segment
header
application-layer
data
sender
sender
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
9
14-02-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.
source port # dest port #
32 bits
application
data
(message)
other header fields
TCP/UDP segment format
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
10
14-02-2011
Mux/demux: Ví dụ
host A
server B
source port: x
dest. port: 23
source port:23
dest. port: x
port use: simple telnet app
Web client
host A

Web
server B
Web client
host C
Source IP: C
Dest IP: B
source port: x
dest. port: 80
Source IP: C
Dest IP: B
source port: y
dest. port: 80
port use: Web server
Source IP: A
Dest IP: B
source port: x
dest. port: 80
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
11
14-02-2011
Ch1. The Transport Layer Protocol
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
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
12

14-02-2011
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:

Không 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.
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
13
14-02-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)
source port # dest port #
32 bits
Application
data
(message)
UDP segment format
length
checksum
Length, in
bytes of
UDP
segment,
including
header
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
14
14-02-2011
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.
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
15
14-02-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
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sum

checksu
m
(bù 1)
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
16
14-02-2011
Ch1. The Transport Layer Protocol
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
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
17
14-02-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.
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
18
14-02-2011
RDT
send
side
receive

side
rdt_send(): called from above,
(e.g., by app.). Passed data to
deliver to receiver upper layer
udt_send(): called by rdt,
to transfer packet over
unreliable channel to receiver
rdt_rcv(): called when packet
arrives on rcv-side of channel
deliver_data(): called by
rdt to deliver data to upper
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
19
14-02-2011
Finite State Machine (FSM)
state
1
state
2
event causing state transition
actions taken on state transition
state: when in this
“state” next state
uniquely determined
by next event
event
actions
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
20
14-02-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
packet = make_pkt(data)
udt_send(packet)
rdt_send(data)
extract (packet,data)
deliver_data(data)
Wait for
call from
below
rdt_rcv(packet)
sender
receiver
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
21
14-02-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?

acknowledgements (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!)

rdt2.0 so với rdt1.0:

error detection

receiver feedback: control msgs (ACK,NAK) rcvr->sender.
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
22
14-02-2011
RDT2.0: FSM specification
Wait for
call from
above
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)

extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
Wait for
ACK or
NAK
Wait for
call from
below
sender
receiver
rdt_send(data)
Λ
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
23
14-02-2011
RDT2.0: operation with no errors
Wait for
call from
above
snkpkt = make_pkt(data, checksum)

udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
Wait for
ACK or
NAK
Wait for
call from
below
rdt_send(data)
Λ
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
24
14-02-2011
RDT2.0: error scenario
Wait for
call from
above
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)

extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
Wait for
ACK or
NAK
Wait for
call from
below
rdt_send(data)
Λ
Chương 1. Giao thức tầng giao vận (Transport Layer Protocl)
25
14-02-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).

×