You are on page 1of 44

BÀI 4 Transport Layer – Tầng Giao vận

❑ Hiểu được nguyên lý của tầng giao vận


❑ Giao thức TCP
❑ Giao thức UDP
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-2
DỊch vụ và giao thức vận chuyển
 cung cấp giao tiếp logic giữa các application
transport
quy trình ứng dụng chạy trên các network
data link
máy chủ khác nhau physical

 Hoạt động trên thiết bị đầu cuối


 Phía gửi: Chia nhỏ các thông
điệp (message) ứng dụng thành
các Segments, sau đó chuyển
các segments này cho tầng
application
network. transport
network
 Phía nhận: Tập hợp lại các data link
physical
Segments thành các thông điệp
và được chuyển lên tầng App.
 Có nhiều hơn 1 giao thức tầng
transport dành cho các ứng dụng.
 Internet: TCP and UDP
3-3
Transport vs. network layer
 Tầng Network: Truyền Tình huống:
thông logic giữa các host. 12 đứa trẻ ở nhà Ann gửi thư
 Tầng Transport: Truyền đến 12 đứa trẻ nhà Bill:
thông logic giữa các tiến ❖ Hosts: nhà
trình. ❖ Các tiến trình: những đứa trẻ
 Dựa vào và tăng cường ❖ Thông điệp tầng ứng dụng:
các dịch vụ tầng Network. các bức thư trong phong bì
❖ Giao thức tầng transport:
Ann và Bill
❖ Giao thức tầng Network:
Dịch vụ bưu điện

3-4
Các giao thức tầng transport trên
Internet
 Tin cậy, truyền theo thứ tự application
transport
(TCP) network
data link
physical
 kiểm soát tắc nghẽn network
data link
network
physical
 kiểm soát dòng chảy data link
physical

 thiết lập kết nối


 Không tin cậy, không truyền network
data link

theo thứ tự: UDP physical network


data link
physical
 Không rườm rà, mở rộng tốt network
application
transport
data link
nhất của IP physical network
network
data link
data link physical
 Các dịch vụ không khả physical

dụng:
 Đản bảo về chậm trễ
 Đảm bảo về băng thông
3-5
Ứng dụng và dịch vụ giao vận

Giao thức Giao thức


Ứng dụng ứng dụng giao vận

e-mail SMTP TCP


Telnet TCP
Web HTTP TCP
file transfer FTP TCP
giao thức riêng TCP or UDP
(e.g. RealNetworks)
Internet telephony giao thức riêng
(e.g., Vonage,Dialpad) thường là UDP

3-6
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-7
Multiplexing/demultiplexing
Ghép kênh/phân kênh

Giao thức
ứng dụng
HTTP FTP Chat HTTP FTP Chat

Giao thức
Multiplexing Demultiplexing
giao vận

Giao thức tầng mạng


Multiplexing/demultiplexing
Ghép kênh/phân kênh
Multiplexing bên gửi: Demultiplexing bên nhận:
Xử lý dữ liệu từ nhiều socket, Sử dụng thông tin trong header
thêm thông tin header transport vào Để chuyển segment vừa nhận
segments vào đúng socket

= socket = process

application P3 P1
P1 application P2 P4 application

transport transport transport

network network network

link link link

physical physical physical

host 2 host 3
host 1
Demultiplexing hoạt động ntn?

 Host nhận các khung dữ liệu 32 bits


(datagram) IP source port # dest port #
 Tại tầng network, mỗi khung
dữ liệu (datagram) được gán other header fields
IP nguồn, IP đích.
 Mỗi khung dữ liệu mang 1
segment tầng transport application
 Mỗi segment đều có số port data
nguồn và port đích (16 bit) (message)
 Host sử dụng IP và Port để gửi
segment đến socket thích hợp
TCP/UDP segment format

3-10
Demultiplexing phi kết nối
 Khi máy chủ nhận được phân
 Tạo socket với số cổng:
đoạn UDP:
DatagramSocket mySocket1 = new
DatagramSocket(12534);  Kiểm tra số cổng đích trong
DatagramSocket mySocket2 = new segment
DatagramSocket(12535);  Hướng phân đoạn UDP đến
đúng với số cổng của socket đó
 UDP socket được xác định bởi 2
yếu tố:  Các khung dữ liệu
(dest IP address, dest port number) (datagram) IP với các địa chỉ
IP khác nhau cũng được
chuyển đến cùng 1 socket tại
máy đích.

3-11
Demultiplexing phi kết nối: ví dụ
DatagramSocket serverSocket = new DatagramSocket(6428);

P2 P3 P1
P1

SP: 6428 SP: 6428


DP: 9157 DP: 5775

SP: 9157 SP: 5775


client DP: 6428 DP: 6428 Client
server
IP: A IP: C IP:B

SP provides “return address”


Demux hướng kết nối
 TCP socket được định nghĩa  Server host có thể hỗ trợ
bởi 4 yếu tố: nhiều socket TCP đồng thời:
 source IP address  Mỗi socket được xác định bởi 4
 source port number bộ của nó.
 dest IP address  Web servers có các socket
 dest port number khác nhau cho mỗi client.
 Máy chủ sử dụng tất cả 4  Kết nối HTTP không liên tục sẽ
có socket khác nhau cho mỗi gói
giá trị để hướng segment
request.
đến socket thích hợp

3-13
Demux hướng kết nối: ví dụ

P1 P4 P5 P6 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A IP: C S-IP: B IP:B
D-IP:C D-IP:C
Demux hướng kết nối: ví dụ Threaded
Web Server

P1 P4 threaded server P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A IP: C S-IP: B IP:B
D-IP:C D-IP:C
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-16
UDP: User Datagram Protocol [RFC 768]

 Phi kết nối:


Tại sao lại có UDP?
 Không bắt tay giữa người
nhận và người gửi  Không có thiết lập kết nối
(có thể thêm độ trễ)
 Mỗi segment UDP đưọc xử
lý độc lập.  Đơn giản
 Không có cơ chế khôi phục  Kích thước header nhỏ
segment bị mất  Không kiểm soát tắc nghẽn
 Không có khả năng điều
khiển luồng dữ liệu gửi
(flow control)

3-17
UDP: segment header

 Thường được sử dụng trong các 32 bits


ứn dụng đa phương tiện:
Length, in source port # dest port #
 Chịu mất mát
bytes of UDP length checksum
 Cần tốc độ segment,
 Sử dụng trong: including
header
 DNS
 SNMP Application
 Truyền tin đáng tin cậy qua data
UDP: thêm độ tin cậy ở lớp ứng (message)
dụng
 Khôi phục lỗi dành riêng cho
ứn dụng. UDP segment format

3-18
UDP: segment header
 source port và destination port(đều 32 bits
16 bit): cho phép định danh một
session của một ứng dụng nào đó source port # dest port #
chạy trên UDP. Có thể coi port chính
length checksum
là địa chỉ của tâng Transport
 UDP length(16 bit): cho biết chiều
dài của toàn bộ UDP datagram tổng
cộng bao nhiêu byte. (16 bit thì sẽ
có tổng cộng 2^16 byte = 65536 giá
trị (từ 0 -> 65535 byte)). Application
 UDP checksum(16 bit): sử dụng data
thuật toán mã vòng CRC để kiểm lỗi (message)
cho toàn bộ UDP datagram và chỉ
kiểm tra một cách hạn chế
 Data: dữ liệu tầng trên được đóng UDP segment format
gói vào UDP datagram đang xét.

3-19
UDP checksum
Mục tiêu: phát hiện “lỗi”trong các segment đã được truyền

Bên gửi: Bên nhận:


 Tính toán checksum của
 Xem nội dung segment là segment đã nhận
chuỗi các số nguyên 16 bit
 Kiểm tra giá trị trên có bằng
 checksum: cộng (tổng bù 1) với giá trị trong trường
của các nội dung segment checksum hay không :
 NO – có lỗi xảy ra
 Bên gửi đặt giá trị
 YES – không có lỗi. Nhưng
checksum vòa trường có lỗi khác hay không? More
checksum UDP later ….

3-20
Checksum: ví dụ
 Note
 Khi cộng các số, bit nhớ ở phía cao nhất cần được
thêm vào kết quả
 Ví dụ: công 2 số nguyên 16 bit

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

Bit dư 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

Tổng 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
Các vấn đề của UDP

 Không có kiểm soát tắc nghẽn


 Làm internet bị quá tải

 Không đảm bảo được độ tin cậy


 Các ứng dụng phải tự cài đặt cơ chế tự kiểm soát độ tin
cậy
 Việc phát triển ứng dụng sẽ phức tạp hơn
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-23
Nguyên lý truyền dữ liệu tin cậy
 Giao thức pipelined:
 Go-Back N
 Selective repeat

 Xem demo: https://www2.tkn.tu-


berlin.de/teaching/rn/animations/gbn_sr/
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-25
TCP: Tổng quan RFCs: 793, 1122, 1323, 2018, 2581

 Giao thức hướng liên kết


 Bắt tay ba bước
 Giao thức truyền dữ liệu theo dòng byte, tin cậy
 Sử dụng vùng đệm
 Truyền theo kiểu pipeline, sử dụng sliding windows.
 Tăng hiệu quả
 Kiểm soát luồng
 Bên gửi không làm quá tải bên nhận (thực tế: quá tải)
 Kiểm soát tắc nghẽn
 Việc truyền dữ liệu không nên làm tắc nghẽn mạng (thực
tế: luôn có tẵc nghẽn)

3-26
TCP cung cấp dịch vụ tin cậy ntn?
 Kiểm soát dữ liệu đã được nhận chưa:
 Seq. #
 ACK
 Chu trình làm việc của TCP
 Thiết lập liên kết
 Bắt tay 3 bước
 Truyền/nhận dữ liệu
 Đóng kết nối

3-27
Cấu trúc TCP header
32 bits
URG: dữ liệu khẩn cấp Đếm bằng bytes
(thường không dùng) source port # dest port #
dữ liệu
sequence number (not segments!)
ACK: ACK #
Hợp lệ acknowledgement number
head not
PSH: đẩy dữ liệu len used U A P R S F Receive window
(thường không dung) # số bytes bên
checksum Urg data pnter
nhận sẵn
RST, SYN, FIN: sàng nhận
Options (độ dài thay đổi)
Thiết lập kết nối
(setup, teardown
commands)
Dữ liệu ứng dụng
Internet (variable length)
checksum
(giống như UDP)
Cấu trúc TCP header
32 bits
❑ Source port và destination port (đều
dài 16 bit): được sử dụng để định source port # dest port #
danh cho session của giao thức nào sequence number
đó trên lớp ứng dụng đang được
acknowledgement number
truyền tải trong TCP segment đang head not
xét len used U A P R S F Receive window
❑ Sequence number (32 bit): dùng để checksum Urg data pnter
đánh số thứ tự gói tin (từ số
Options (độ dài thay đổi)
sequence nó sẽ tính ra được số byte
đã được truyền).
❑ Acknowledge number (32 bit): : dùng Dữ liệu ứng dụng
để báo đã nhận được gói tin nào và (variable length)
mong nhận được byte mang số thứ
tự nào tiếp theo.
❑ Header length (4 bit): cho biết toàn
bộ header dài bao nhiêu tính theo
đơn vị word(1 Word = 4 byte).
Cấu trúc TCP header
32 bits
❑ Các bit reserverd (4 bit): đều được
thiết lập bằng 0 source port # dest port #
❑ Các bit control (9 bit): các bit dùng sequence number
để điều khiển cờ (flag) ACK, cờ
acknowledgement number
Sequence ... head not
❑ Window size (16 bit): số lượng byte len used U A P R S F Receive window
được thiết bị sẵn sàng tiếp nhận checksum Urg data pnter
❑ Checksum (16 bit): kiểm tra lỗi của
Options (độ dài thay đổi)
toàn bộ TCP segment
❑ Urgent pointer (16 bit): sử dụng
trong trường hợp cần ưu tiên dữ liệu Dữ liệu ứng dụng
❑ Options (tối đa 32 bit): cho phép (variable length)
thêm vào TCP các tính năng khác
❑ Data: dữ liệu của lớp trên
Cơ chế báo nhận: TCP seq. #’s and
ACKs
Seq.#: Host A Host B
 Số hiệu của byte
User
đầu tiên của gói tin types
trong dòng dữ liệu ‘C’ host ACKs
receipt of
ACKs: ‘C’, echoes
 Số hiệu byte mong back ‘C’
muốn nhận từ đối
host ACKs
tác
receipt
 Ngầm xác nhận đã of echoed
nhận tốt các byte ‘C’

trước đó.
time
simple telnet scenario
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-32
Cơ chế kiểm soát luồng
 Sử dụng 2 cơ chế:
 Stop-and-wait
 Pipeline

1 data pkt Data pkts


Sender

Receiver Sender

ACK ACKs

Stop-and-wait Pipeline
3-33
So sánh hiệu quả
sender receiver
0
L/R L/R

RTT RTT

RTT + L / R

RTT + L / R
time time
L: Size of data pkt time time
R: Link bandwidth
RTT: Round trip time 3*L/R
L/R Performance =
Performance =
RTT + L / R RTT + L / R
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-35
Quản lý kết nối TCP

Recall: TCP sender, receiver Three way handshake:


establish “connection” before
exchanging data segments Step 1: client gửi TCP SYN tới server
 initialize TCP variables:  Chỉ định giá trị seq # ban đầu
 seq. #s
 Không có dữ liệu
 buffers, flow control info (e.g.
RcvWindow) Step 2: server nhận SYN, phản hồi
 client: connection initiator SYNACK segment
Socket clientSocket = new  Máy chủ phân bổ bộ đệm
Socket("hostname","port
 Chỉ ra giá trị khởi tạo seq. #
number");
của server
 server: contacted by client
Step 3: client nhận SYNACK, trả lời
Socket connectionSocket =
welcomeSocket.accept(); ACK segment, có thể kèm theo dữ
liệu
Quản lý kết nối TCP

Đóng kết nối: client server


close
client closes socket:
clientSocket.close(
);
close
Step 1: client gửi TCP FIN đến
server

Step 2: server nhận FIN, phản


hồi ACK. Đồng thời đóng kết timed wait
nối và gửi FIN.
closed
Quản lý kết nối TCP

Step 3: client nhận FIN, trả lời client server


ACK. closing
 Vào trạng thái chờ

Step 4: server nhận ACK. Đóng


closing
liên kết.

Note: Cả 2 bên đều có thể chủ


động đóng liên kết.
timed wait closed

closed

3-38
Quản lý kết nối TCP
3-39

TCP server
lifecycle

TCP client
lifecycle
Nội dung:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-40
Tổng quan về tắc nghẽn
 Khi nào xảy ra tắc nghẽn?
 Quá nhiều cặp gửi-nhận trên mạng
 Truyền quá nhiều làm cho mạng quá tải
 Hậu quả của việc tắc nghẽn:
 Mất gói tin
 Thông lượng giảm, đỗ trễ cao
 Tình trạng mạng trở nên tồi tệ hơn

Tắc nghẽn xảy ra


Nguyên lý kiểm soát tắc nghẽn
 Slow-start
 Tăng tốc độ theo hàm số mũ
 Tiếp tục tang đến một ngưỡng nào đó
 Tránh tắc nghẽn:
 Tăng dần tốc độ theo hàm tuyến tính cho đến khi phát hiện tắc
nghẽn
 Phát hiện tắc nghẽn
 Nếu gói tin bị mất
Tổng kết
 Các nguyên lý hoạt động tầng
 Tăng tốc độ theo hàm số mũ
 Tiếp tục tang đến một ngưỡng nào đó
 Tránh tắc nghẽn:
 Tăng dần tốc độ theo hàm tuyến tính cho đến khi phát hiện tắc
nghẽn
 Phát hiện tắc nghẽn
 Nếu gói tin bị mất
Tóm tắt:
 4.1 Dịch vụ tầng giao  4.5 Vận chuyển hướng
vận kết nối: TCP
 4.2 Multiplexing and  Cấu trúc segment
demultiplexing (Ghép  Truyền dữ liệu tin cậy

kênh và phân kênh)  Điều khiển luồng

 4.3 vận chuyển phi kết  Quản lý kết nối

nối: UDP  4.6 các nguyên lý điều


 4.4 Principles of khiển tắc nghẽn
reliable data transfer  4.7 Điều khiển tắc nghẽn
TCP
3-44

You might also like