Giao thức và dịch vụ truyền tải giữa các tiến trình ứng dụng trên những máy khác nhau máy đầu cuối segment, đẩy xuống tầng mạng thông điệp hoàn chỉnh, đẩy lên tầng ứng dụng ứng dụng tru
Trang 1Trường Đại Học Điện Lực Khoa Công Nghệ Thông Tin Advanced Computer Network
Trang 2Bài giảng 3: Tầng truyền tải
Tham khảo:
Chương 3: “Computer Networking – A top-down approach” Kurose & Ross, 6th ed., Addison Wesley, 2012
Trang 3Chương 3: Tầng truyền tải
đằng sau các dịch vụ của tầng truyền tải:
TCP
Trang 5Giao thức và dịch vụ truyền tải
giữa các tiến trình ứng dụng trên
những máy khác nhau
máy đầu cuối
(segment), đẩy xuống tầng mạng
thông điệp hoàn chỉnh, đẩy lên tầng ứng dụng
ứng dụng
truyền tải
mạng liên kết dl vật lý
ứng dụng
truyền tải
mạng liên kết dl vật lý
Trang 6Tầng truyền tải & Tầng mạng
lạc luận lý giữa các tiến
tầng mạng đồng thời củng cố chúng
Ví dụ tương đồng – chủ gia đình:
12 đứa trẻ nhà A gửi thư cho 12 đứa nhà B
n tiến trình = đứa trẻ
n thông điệp ứ/d = thư trong phong bì
n giao thức truyền tải =
A và B, phân phối thư
vụ bưu điện
Trang 7Các giao thức tầng truyền tải trong Internet
n truyền tải tin cậy, có trật tự
mạng liên kết dl vật lý
mạng liên kết dl vật lý
mạng liên kết dl vật lý
mạng liên kết dl vật lý
mạng liên kết dl vật lý
mạng liên kết dl vật lý
ứng dụng
truyền tải
mạng liên kết dl vật lý
Trang 9Dồn/tách (Multiplexing/demultiplexing)
process socket
sử dụng header để gửi segment tới đúng socket
Tách tại máy nhận:
lấy data từ nhiều socket khác
nhau, thêm header tầng
truyền tải
dồn tại máy gửi :
transport application
physical link network
P2 P1
transport application
physical link network
P4
truyền tải ứng dụng
vật lý liên kết mạng
P3
Trang 10Phương pháp tách làm việc ntn?
n máy nhận gói tin IP
nguồn, địa chỉ IP đích
dữ liệu tầng truyền tải
nhận (đích) và máy gửi (nguồn)
Trang 11Sự tách không kết nối (connectionless)
Trang 12Sự tách không kết nối (tt)
DatagramSocket serverSocket = new DatagramSocket(6428);
khách IP:B
P2
khách
IP: A
P1 P3
chủ IP: C
SP: 6428 DP: 9157
SP: 9157 DP: 6428
SP: 6428 DP: 5775
SP: 5775 DP: 6428
Trang 13Sự tách hướng kết nối (connection oriented)
trên để định hướng đoạn
dữ liệu tới đúng Socket phù
hợp
đồng thời nhiều socket TCP:
bởi 4 nhân tố của nó
socket khác nhau cho mỗi khách kết nối tới
một socket riêng biệt cho mỗi người dùng
Trang 14Sự tách hướng kết nối (tt)
transport application
physical link network
P3
transport application
physical link
P4
transport application
physical link network
P2
source IP,port: A,9157 dest IP, port: B,80
source IP,port: B,80 dest IP,port: A,9157
host: IP
address A
host: IP address C
source IP,port: C,9157 dest IP,port: B,80
3 segments, đều hướng tới địa chỉ IP : B,
server: IP address B
Trang 15Sự tách hướng kết nối (tt)
transport application
physical link network
P3
transport application
physical link
transport application
physical link network
P2
source IP,port: A,9157 dest IP, port: B,80
source IP,port: B,80 dest IP,port: A,9157
host: IP
address A
host: IP address C
server: IP address B
network
P3
source IP,port: C,5775 dest IP,port: B,80
source IP,port: C,9157 dest IP,port: B,80
P4
threaded server
Trang 16Chương 3: Mục lục
tải
không kết nối: UDP
nối : TCP
Trang 17UDP: User Datagram Protocol [RFC 768]
“không phức tạp”, “giản thiểu”
UDP có thể:
ứng dụng n không-kết-nối:
gửi và người nhận UDP
lập với những đoạn khác
các ứng dụng đa phương tiện trực tuyến
UDP: bổ sung tính tin cậy
ở tầng ứng dụng
Trang 18UDP (tt)
Tại sao cần có UDP?
độ trễ)
trạng thái kết nối ở người gửi và người nhận
kiệm dung lượng)
nghẽn: UDP có thể truyền đi với tốc độ tối đa
32 bits
Dữ liệu tầng ứng dụng (thông điệp)
Trang 19Tổng kiểm tra UDP (checksum)
Người gửi:
như là một chuỗi gồm những số nguyên 16-bit
(tổng bù 1) toàn bộ nội dung của đoạn từng 16-bit
kiểm tra vào trường “tổng kiểm tra - checksum” UDP
Người nhận:
nhận được
bằng giá trị trong trường TKT ko:
nhưng vẫn có thể có lỗi
được truyền tải
Trang 20Ví dụ TKT Internet
n Ghi chú
nhất cần phải được cộng dồn vào kết quả
Trang 21Chương 3: Mục lục
tải
không kết nối: UDP
nối : TCP
Trang 22TCP: Tổng quát RFCs: 793, 1122, 1323, 2018, 2581
n dữ liệu song công (full-duplex):
n dữ liệu di chuyển theo 2 hướng trong cùng một kết nối
n MSS: kích thước đoạn tối đa
n định hướng kết nối:
n bắt tay (trao đổi các th/đ điều khiển) khởi tạo trạng thái của ng/gửi, ng/nhận trước khi trao đổi dữ liệu
n lưu lượng đc kiểm tra:
n n/ gửi sẽ không làm tràn người nhận
n point-to-point:
n 1 n/gửi, 1 n/nhận
n luồng byte tin cậy, theo thứ tự
n giao thức đường ống:
n kiểm tra tắc nghẽn TCP và lưu
lượng q/đ kích thước cửa sổ
application writes data
application reads data
Trang 23Cấu trúc đoạn TCP
32 bits
dữ liệu tầng ứng dụng (độ dài thay đổi)
số thứ tự
số xác nhận
cửa sổ nhận Urg data pnter tổng kiểm tra
F S R P A U
độ dài m.đầuko dùng
phần phụ (độ dài thay đổi)
URG: dữ liệu khẩn cấp
(hầu như ko sử dụng)
ACK: ACK #
valid PSH: đẩy dữ liệu
(hầu như ko sử dụng)
RST, SYN, FIN:
khởi tạo K/N (thiết lập, kết thúc)
số byte ng/nhận sẵn sàng nhận
tính theo byte dữ liệu (không theo số đoạn!)
tổng kiểm tra
Internet (như trong UDP)
Trang 24theo mà host mong muống nhận được
máy B xác nhận việc nhận ‘C’, gửi lại ‘C’
Trang 25Thời gian xoay vòng và thời gian chờ TCP
Hỏi: thiết lập giá trị thời gian
chờ TCP như thế nào?
n nhưng RTT thay đổi
tin phản hồi chưa kịp quay về
lại
mất đoạn
n SampleRTT: đo thời gian từ khi truyền gói tin đi và nhận được ACK
n SampleRTT sẽ thay đổi, muốn
RTT đo được “mướt hơn”
những lần đo gần nhất, không chỉ giá trị hiện thời
của SampleRTT
Trang 26RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
100 150 200 250 300 350
Thời gian xoay vòng và thời gian chờ
EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT
Trang 27Thời gian xoay vòng và thời gian chờ
Thiết lập t/g chờ
n EstimtedRTT + “biên an toàn”
n DevRTT: độ biến thiên của sampleRTT so với EstimatedRTT
n EstimatedRTT thay đổi với biên độ lớn -> biên an toàn lớn
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1-β)*DevRTT + β*|SampleRTT-EstimatedRTT|
(thông thường, β = 0.25)
sau đó thiết lập khoảng t/g chờ:
Trang 28n truyền tải dự liệu tin cậy
Trang 29Truyền tải dữ liệu tin cậy TCP
thời gian cho truyền tải lại
n Truyền tải lại được kích hoạt bởi:
Trang 30Các sự kiện phía người gửi TCP:
nhận dữ liệu từ ứ/d:
n STT là số thứ tự trên
luồng-byte của byte dữ liệu
đầu tiên trong đoạn
nó chưa chạy
chưa ACK lâu nhất)
đoạn trước đó chưa được ACK
đã được ACK
có các đoạn chưa ACK
Trang 31người gửi TCP
(đơn giản hóa)
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever) {
switch(event)
event: nhận được dữ liệu từ ứng dụng tầng trên
tạo ra đoạn TCP với STT NextSeqNum
if (bđtg không chạy)
khởi chạy bđtg
đẩy đoạn xuống IP
NextSeqNum = NextSeqNum + length(data)
Trang 32TCP: các kịch bản truyền tải lại
Host B Host A
Seq=92, 8 bytes of data
Seq=92, 8 bytes of data
ACK=100
Seq=92, 8 bytes of data
SendBase=120 SendBase=92
Trang 33TCP: các kịch bản truyền tải lại (tt)
X
ACK cộng dồn
Host B Host A
Seq=92, 8 bytes of data
Trang 34Tạo ACK trong TCP [RFC 1122, RFC 2581]
Sự kiện tại ng/nhận
Sự đến của đoạn đúng thứ tự với
STT hợp lí Tất cả dữ liệu từ
STT về trước đã được ACK
Sự đến của đoạn đúng thứ tự với
STT hợp lí Một đoạn khác đang
chờ được ACK
Sự đến của đoạn sai-thứ-tự với
STT cao hơn STT mong đợi
Phát hiện ra sự thiếu hụt
Sự đến của đoạn mà khỏa lấp
sự thiếu hụt một phần hoặc toàn
Hành vi của ng/ nhận TCP
Trì hoãn việc ACK Chờ đoạn tiếp theo trong 500ms Nếu không có đoạn nào tiếp theo, gửi ACK
Ngay lập tức gửi một ACK cộng dồn, xác nhận cả hai đoạn dữ liệu đúng thứ tự
Ngay lập tức gửi một ACK lặp , chỉ rõ STT của byte mong đợi tiếp theo Ngay lập tức gửi ACK cộng dồn
Trang 35Truyền lại nhanh
tương đối dài:
gửi lại gói bị mất
n truyền lại nhanh: gửi lại đoạn dữ liệu trước khi bộ đếm thời gian hết hạn
Trang 36Host B Host A
Seq=92, 8 bytes of data
Seq=100, 20 bytes of data
Truyền lại nhanh
Trang 37
sự kiện: nhận được ACK, với trường ACK có giá trị y
if (y > SendBase) { SendBase = y
if (không có đoạn nào chưa được ACK) khởi động bộ đếm thời gian
} else { tăng bộ đếm số ACK cho y trùng
if (số ACK trùng = 3) { gửi lại đoạn với STT y }
Trang 38n kiểm soát lưu lượng
Trang 39Kiểm soát lưu lượng trong TCP
TCP có một bộ nhớ đệm nhận:
độ: điều chỉnh tốc độ gửi sao cho phù hợp với tốc độ đọc của tiến
trình nhận n tiến trình ứ/d có thể
Trang 42Quản lý kết nối TCP
thiết lập “kết nối” trước khi trao
đổi các đoạn dữ liệu
n STT
RcvWindow)
Socket clientSocket = new
Trang 43Bắt tay 3 bước: Ví dụ
Trang 44FIN_WAIT_2
CLOSE_WAIT
FINbit=1, seq=y ACKbit=1; ACKnum=y+1
ACKbit=1; ACKnum=x+1
chờ server đóng
TCP: đóng kết nối
FIN_WAIT_1 không gửi dữ FINbit=1, seq=x
liệu, có thể nhận clientSocket.close()
ESTAB ESTAB
Trang 45Quản lý kết nối TCP (tt)
chu kì sống của
khách TCP
chu kì sống của chủ TCP
Trang 47Các nguyên tác kiểm soát tắc nghẽn
Tắc nghẽn:
nhiều dữ liệu quá nhanh để mạng có thể xử lý”
Trang 48Nguyên nhân/thiệt hại : kịch bản 1
nhận
tạm không giới hạn
Trang 49n một router, bộ nhớ giới hạn
n gửi lại dữ liệu khi bị mất
Trang 50A
Trang 51trường hợp lý tưởng: nhận biết mất
router
biết được mất gói tin Nguyên nhân/thiệt hại : kịch bản 2
A
Host B
Trang 52λin: original data
λout
λ'in: original data, plus
retransmitted data
free buffer space!
Nguyên nhân/thiệt hại : kịch bản 2
trường hợp lý tưởng: nhận biết mất
router
biết được mất gói tin
Trang 53copy, cả hai đều đến
Trang 54copy, cả hai đều đến
“thiệt hại” của tắc nghẽn:
n phải truyền lại khi mà gói tin bị loại do tràn bộ nhớ tạm tại bđt
n sự truyền tải lại ko cần thiết: đường kết nối chứa nhiều bản sao của gói tin
Trang 55nguyên nhân/thiệt hại: kịch bản 3
Trang 56nguyên nhân/thiệt hại: kịch bản 3
truyền tải nó tới điểm mà nó bị loại bỏ là phí phạm!
H o
st A
H o
st B
λ
o u t
Trang 57Các phương án tiếp cận đối với kiểm soát tắc nghẽn
kiểm soát tắc nghẽn
đầu cuối-đầu cuối:
không tường minh
nếu máy đầu cuối phát hiện có
mất gói, trễ
kiểm soát tắc nghẽn được hỗ trợ từ mạng:
cho máy đầu cuối
(SNA, DECbit, TCP/IP ECN, ATM)
nên dùng
Hai phương án tiếp cận:
Trang 58Ví dụ nghiên cứu: kiểm soát tắc nghẽn ATM ABR
ABR: tốc độ bit cho phép:
thiểu được đảm bảo
ô RM (quản lý tài nguyên – resource management) :
ô dữ liệu
lập bởi các switch (“được hỗ trợ
từ mạng”)
n NI bit: ko tăng tốc (tắc nghẽn nhẹ)
n CI bit: biểu hiện tắc nghẽn (nặng)
gửi bởi ng/nhận mà ko có thay
Trang 59Ví dụ nghiên cứu: kiểm soát tắc nghẽn ATM ABR
trên đường đi từ nguồn-tới-đích
trong ô RM rồi gửi lại
Trang 61KSTN TCP: tăng hệ số cộng, giảm hệ số nhân
8 Kbytes
16 Kbytes
24 Kbytes
congestion window
sổ), thử băng thông khả dụng, tới khi xuất hiện mất gói
khi phát hiện mất gói
Trang 63TCP Bắt đầu chậm
vận tốc theo hệ số mũ đến
khi xuất hiện mất gói :
CongWin cho mỗi ACK nhận
được
chậm nhưng tăng lên
Trang 64TCP : nhận biết, phản ứng mất gói
trùng:
n CongWin giảm ½
chờ”:
n CongWin = 1 MSS;
cùng trước khi mất gói, sau
đó tăng tuyến tính
n 3 ACK lặp nghĩa là mạng có khả năng phân phối vài đoạn dữ liệu n “hết t/g chờ” cho biết tình hình tắc nghẽn đáng báo động hơn
Triết lí:
Trang 65TCP: chuyển từ bắt đầu chậm sang tránh tắc nghẽn
chuyển từ tăng hàm
mũ sang tăng tuyến
tính?
được ½ giá trị của
nó trước khi xảy ra
“hết t/g chờ”
Hiện thực:
bằng ½ của CongWin ngay trước khi
xảy ra mất gói
Trang 66Tóm tắt: KSTN TCP
CongWin gán bằng ssthresh +3*MSS
CongWin gán bằng 1 MSS.
Trang 67Tóm tắt: KSTN TCP
timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0
retransmit missing segment
Λ
cwnd > ssthresh
congestion avoidance
cwnd = cwnd + MSS (MSS/cwnd) dupACKcount = 0
transmit new segment(s), as allowed
duplicate ACK
ssthresh= cwnd/2 cwnd = ssthresh + 3
retransmit missing segment
dupACKcount == 3
timeout ssthresh = cwnd/2 cwnd = 1
dupACKcount = 0
retransmit missing segment
ssthresh= cwnd/2 cwnd = ssthresh + 3
retransmit missing segment
dupACKcount == 3 cwnd = ssthresh
dupACKcount = 0 New ACK
slow start
timeout ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
retransmit missing segment
cwnd = cwnd+MSS dupACKcount = 0
transmit new segment(s), as allowed
new ACK dupACKcount++
duplicate ACK
Λ cwnd = 1 MSS
ssthresh = 64 KB
dupACKcount = 0
New ACK!
New ACK!
New ACK!
Trang 68Thông lượng trong TCP
thước cửa sổ và RTT là bao nhiêu?
xuống W/2RTT; và tiếp tục tăng đến W/RTT
Thông lượng trung bình:
Trang 69Chương 3: Tổng kết
dịch vụ tầng truyền tải:
n đi vào “hạt nhân”
mạng