Professional Documents
Culture Documents
Chapter 3 v8.2
Chapter 3 v8.2
cung cấp giao tiếp logic giữa các tiến mạng điện thoại
chở
mạngdi động
Liên kết dữ
vận
chủ khác nhau
chất
chu
Các hành động của giao thức vận
yển
chuyển trong hệ thống cuối:
đ ầu
ISP địa
cuố
• người gửi: chia tin nhắn ứng dụng thành phương
i
hoặc khu
các phân đoạn , chuyển đến lớp mạng
hợ
vực
p lý
mạng trong nhà nội dung
• người nhận: tập hợp lại các phân đoạn các nhà cung cấp
thành tin nhắn, chuyển đến lớp ứng dụng mạng trung tâm dữ liệu
ứng dụng
mạng
chuyên
chở
Người gửi:
ứng dụng được truyền một thông ứngứng dụng.
dụng
báo lớp ứng dụng tin nhắn
chuyên chở
xác định giá trị trường tiêu Quần ứng dụng.
Quầnchuyên
què
què
mạng (IP)
tạo phân đoạn mạng (IP)
liên kết
chuyển phân đoạn tới IP liên kết
Người nhận:
ứng dụng nhận phân đoạn từ IP ứng dụng
kiểm tra giá trị tiêu đề
ứng dụng.
chuyên chở trích xuất thông báo lớp chuyên
tin nhắn ứng dụng chở
mạng (IP) phân kênh tin nhắn tới ứng mạng (IP)
TCP: Giao thức điều khiển truyền dẫn mạng điện thoại
chở
mạngdi động
Liên kết dữ
• giao hàng đúng hẹn, đáng tin cậy liệu
thuộc vật
ISP quốc gia hoặc toàn cầu
vận
chất
• điều khiển tắc nghẽn
chu
• Kiểm soát lưu lượng
yển
• kết nối cập nhật
đ ầu
UDP: Giao thức gói dữ liệu người dùng ISP địa
cuố
phương
i
hoặc khu
• giao hàng không đáng tin cậy, không theo thứ
hợ
vực
p lý
mạng trong nhà nội dung
tự các nhà cung cấp
mạng
• tiện ích mở rộng dễ dàng của IP “nỗ lực tối đa” trung tâm dữ liệu
ứng dụng
mạng
chuyên
ứng dụng
h nHt _ Thông
điệp
HTTP
Lớp vận chuyển: 3-12
Câu hỏi: Làm thế nào lớp vận chuyển biết gửi tin nhắn đến quy
trình trình duyệt Firefox thay vì quy trình Netflix hoặc quy trình
Skype?
khách hàng
ứng dụng ứng dụng
Thông
Thông điệp
Ht
chuyên chở
_ Thông
điệp HTTP
điệp
HTTP
chuyên chở mạngHTTP chuyên chở
mạng liên kết mạng
liên kết thuộc vật chất liên kết
thuộc vật chất thuộc vật chất
? chuyên chở
chuyên chở
ghép kênh
Ghép kênh
hoạt động như thế nào
máy chủ nhận được gói dữ liệu 32 bit
IP cổng nguồn # cảng đích #
• mỗi datagram có địa chỉ IP
nguồn, địa chỉ IP đích các trường tiêu đề khác
• mỗi datagram mang một phân
đoạn lớp vận chuyển
ứng dụng
• mỗi đoạn có số cổng nguồn, cổng dữ liệu
đích (khối hàng)
máy chủ sử dụng địa chỉ IP và
số cổng để hướng phân đoạn Định dạng phân đoạn TCP/UDP
đến ổ cắm thích hợp
Lớp vận chuyển: 3-22
Phân kênh không kết nối
Nhớ lại: khi máy chủ nhận được phân
khi tạo ổ cắm, phải chỉ định đoạn UDP :
cổng cục bộ trên máy chủ #: • kiểm tra cổng đích # trong
phân đoạn
DatagramSocket mySocket1 =
DatagramSocket mới( 12534 ); • hướng phân đoạn UDP tới ổ
cắm có cổng đó #
khi tạo datagram để gửi vào
socket UDP phải chỉ định
Các gói dữ liệu IP/UDP có cùng
• địa chỉ IP đích đích. # cổng, nhưng các địa chỉ IP
• cổng đích # nguồn và/hoặc số cổng nguồn
khác nhau sẽ được chuyển hướng
đến cùng một ổ cắm tại máy chủ
nhận Lớp vận chuyển: 3-23
Phân kênh không kết nối: một ví dụ
mySocket = ổ
cắm(AF_INET,SOCK_DGRAM)
mySocket.bind(myaddr, 6428 );
mySocket = ổ mySocket = ổ
cắm(AF_INET,SOCK_STREAM) cắm(AF_INET,SOCK_STREAM)
mySocket.bind(myaddr, 9157 ); mySocket.bind(myaddr, 5775 );
ứng dụng
ứng dụng P1 ứng dụng
P3 P4
chuyên chở
chuyên chở chuyên chở
mạng
mạng liên kết mạng
liên kết thuộc vật chất liên kết
thuộc vật chất thuộc vật chất
B D
cổng nguồn: 6428 cổng nguồn: ?
cảng đích: 9157 cổng đích: ?
MỘT C
cổng nguồn: 9157 cổng nguồn: ?
cảng đích: 6428 cổng đích: ?
Phân kênh hướng kết nối
Ổ cắm TCP được xác máy chủ có thể hỗ trợ
định bởi 4- tuple: nhiều ổ cắm TCP đồng
• Nguồn Địa chỉ IP thời:
• số cổng nguồn • mỗi ổ cắm được xác định
• địa chỉ IP đích bởi 4 bộ riêng của nó
• số cổng đích • mỗi ổ cắm được liên kết với
một máy khách kết nối khác
demux: bộ thu sử dụng nhau
tất cả bốn giá trị (4-
tuple) để chuyển đoạn
tới ổ cắm thích hợp
Lớp vận chuyển: 3-25
Phân kênh hướng kết nối: ví dụ
ứng dụng
ứng dụng P4 P5 P6 ứng dụng
P1 P2 P3
chuyên chở
chuyên chở chuyên chở
mạng
mạng liên kết mạng
liên kết thuộc vật chất liên kết
thuộc vật chất máy chủ: thuộc vật chất
địa chỉ IP
B
liên kết
chuyển phân đoạn tới IP liên kết
Đã truyền: 5 6 11
Đã nhận: 4 6 11
Tổng 1011101110111100
tổng kiểm tra 0100010001000011
Lưu ý: khi cộng số, cần thêm phần mang về từ bit có ý nghĩa nhất vào kết quả
* Xem các bài tập tương tác trực tuyến để biết thêm ví dụ: h ttp://gaia.cs.umass.edu/kurose_ross/interactive/
Lớp vận chuyển: 3-38
Tổng kiểm tra Internet: bảo vệ yếu!
ví dụ: cộng hai số nguyên 16 bit
01
1110011001100110 10
1101010101010101
quấn quanh 11011101110111011 Mặc dù các số đã
thay đổi (lật bit),
Tổng 1011101110111100 tổng kiểm tra
không thay đổi!
tổng kiểm tra 0100010001000011
nhắn
triển khai dịch vụ đáng tin cậy
Con người khắc phục “ lỗi” trong cuộc trò chuyện bằng cách nào?
Chờ Đợi
gọi 0 từ trên ACK0
cao
rdt_rcv(rcvpkt)
&& không bị rdt_rcv(rcvpkt)
hỏng(rcvpkt) && không bị
&& isACK(rcvpkt,1)
stop_timer hỏng(rcvpkt)
&& isACK(rcvpkt,0)
stop_timer
Đợi Chờ
ACK1 gọi 1 từ trên
rdt_send(dữ liệu)
sndpkt = make_pkt(1, dữ liệu, tổng kiểm
tra)
udt_send(sndpkt)
thời gian bắt đầu
(c) Mất ACK (d) hết thời gian sớm/ ACK bị trì hoãn
Lớp vận chuyển: 3-66
Hiệu suất của rdt3.0 (dừng và chờ)
Người gửi U : mức sử dụng – phần thời gian người gửi bận gửi
ví dụ: liên kết 1 Gbps, prop 15 ms. độ trễ, gói 8000 bit
• Thời gian truyền gói tin vào kênh:
L 8000 bit
D chuyển đổi = R = = 8 micro giây
10 9 bit/giây
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
ACK tích lũy: ACK( n ): ACK tất cả các gói đến, bao gồm cả seq # n
• khi nhận ACK( n ): di chuyển cửa sổ về phía trước để bắt đầu tại n+1
hẹn giờ cho gói tin cũ nhất trên chuyến bay
timeout(n): truyền lại gói n và tất cả các gói có thứ tự cao hơn trong cửa sổ
Lớp vận chuyển: 3-72
Go-Back-N: máy thu
Chỉ ACK: luôn gửi ACK cho gói được nhận chính xác cho đến nay, với
số thứ tự cao nhất
• có thể tạo ra các ACK trùng lặp
• chỉ cần nhớ RCv_base
khi nhận được gói tin không theo thứ tự:
• có thể loại bỏ (không đệm) hoặc đệm: một quyết định thực hiện
• gói lại ACK có số thứ tự cao nhất
Chế độ xem của người nhận về không gian số thứ tự:
đã nhận và ACK
rcv_base
Không nhận
Lớp vận chuyển: 3-73
Quay lại-N đang hoạt động
cửa sổ người gửi (N=4) người gửi người nhận
012345678 gửi gói0
012345678 gửi gói 1
gửi gói 2 nhận pkt0, gửi ack0
012345678
gửi gói 3 sựXmất mát nhận pkt1, gửi ack1
012345678
(Chờ đợi)
nhận pkt3, loại bỏ,
012345678 RCv ack0, gửi pkt4 (lại)gửi ack1
012345678 RCv ack1, gửi pkt5 nhận pkt4, loại bỏ,
(lại)gửi ack1
bỏ qua ACK trùng lặp nhận gói tin 5, loại bỏ,
(lại)gửi ack1
gói 2 hết thời gian chờ
012345678 gửi gói 2
012345678 gửi gói 3
012345678 gửi gói 4 RCv pkt2, giao hàng, gửi ack2
012345678 gửi gói 5 RCv pkt3, giao hàng, gửi ack3
RCv pkt4, giao hàng, gửi ack4
RCv pkt5, giao hàng, gửi ack5
pkt0
0123012 pkt0
0123012 gói 1 0123012
0123012 pkt2 X 0123012
X 0123012
X
hết giờ
truyền lại gói tin0
0123012 pkt0
sẽ chấp nhận gói
với số thứ tự 0
(b) ôi!
Lớp vận chuyển: 3-79
cửa sổ nhận
pkt0
300
RTT (milliseconds)
200
mẫuRTT
150
ước tínhRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
thời gian
SampleRTT Estimated RTT
Lớp vận chuyển: 3-87
(giây)
Thời gian chuyến đi khứ hồi TCP, thời gian chờ
khoảng thời gian chờ: Ước tínhRTT cộng với “ biên độ an toàn”
• sự thay đổi lớn trong EstimatedRTT: muốn có biên độ an toàn lớn hơn
Khoảng thời gian chờ =RTT ước tính +
4*DevRTT
RTT ước tính “ biên độ an toàn ”
* Xem các bài tập tương tác trực tuyến để biết thêm ví dụ: h ttp://gaia.cs.umass.edu/kurose_ross/interactive/
Lớp vận chuyển: 3-88
Người gửi TCP (đơn giản hóa)
sự kiện: dữ liệu nhận được từ ứng sự kiện: hết thời gian
dụng truyền lại đoạn gây ra thời
tạo phân đoạn với seq # gian chờ
khởi động lại bộ đếm thời gian
seq # là số luồng byte của byte
dữ liệu đầu tiên trong phân
đoạn sự kiện: Đã nhận được ACK
bắt đầu hẹn giờ nếu chưa chạy nếu ACK xác nhận các phân
• nghĩ về bộ đếm thời gian như đối đoạn chưa được ACK trước
với phân đoạn chưa được ACK lâu đó
đời nhất
• cập nhật những gì được biết là
• khoảng thời gian hết hạn:
ACKed
TimeOutInterval
• bắt đầu hẹn giờ nếu vẫn còn các
phân đoạn chưa được ACK
Lớp vận chuyển: 3-89
Bộ thu TCP: Tạo ACK [RFC 5681]
Sự kiện tại máy thu Hành động của người nhận TCP
sự xuất hiện của phân khúc theo thứ tựACK vớibị trì hoãn. Chờ tới 500ms
số thứ tự dự kiến. Tất cả dữ liệu lên tớicho đoạn tiếp theo. Nếu không có đoạn tiếp theo,
số thứ tự dự kiến đã được ACK gửi ACK
sự xuất hiện của phân khúc đó gửi ACK ngay lập tức, với điều kiện là
đoạn
lấp đầy một phần hoặc hoàn toàn khoảng bắt đầu ở đầu dưới của khoảng cách
trống
SendBase=92
Seq=92, 8 byte dữ liệu Seq=92, 8 byte dữ liệu
hết giờ
ACK=100
X
ACK=100
ACK=120
SendBase=120
hết giờ
ACK
hết thời gian chờ CK =100
A
= 10 0
Việc nhận được ba ACK trùng ACK
TCP
mã số
Lớp mạng phân phối
tải trọng gói dữ liệu IP
vào bộ đệm ổ cắm TCP
IP
mã số
từ người gửi
TCP
mã số
Lớp mạng phân phối
tải trọng gói dữ liệu IP
vào bộ đệm ổ cắm TCP
IP
mã số
từ người gửi
TCP
mã số
cửa sổ nhận
kiểm soát luồng: # byte
người nhận sẵn sàng chấp IP
nhận mã số
từ người gửi
TCP
Kiểm soát lưu lượng mã số
trạng thái kết nối: ESTAB trạng thái kết nối: ESTAB
biến kết nối: Biến kết nối:
seq # từ máy khách seq # từ máy khách
đến máy chủ đến máy chủ
máy chủ đến máy khách máy chủ đến máy khách
kích thước bộ đệm kích thước bộ đệm
RCv RCv
mạng
tại máy chủ, máy khách tại máymạng
chủ, máy khách
ESTAB
dữ liệu(x+1) chấp nhận
dữ
ACK(x+1)
liệu(x+1)
sự liên quan
x hoàn thành
Không có gì!
chọn x
req_conn(x)
ESTAB
truyền lại acc_conn(x)
req_conn(x)
ESTAB
req_conn(x)
sự liên quan
khách x hoàn thành máy chủ
hàng quên x
chấm dứt
ESTAB
acc_conn(x)
Vấn đề: kết nối mở một
nửa! (không có khách
Lớp vận chuyển: 3-104
hàng)
Kịch bản bắt tay 2 chiều
chọn x
req_conn(x)
ESTAB
truyền lại acc_conn(x)
req_conn(x)
ESTAB
dữ liệu(x+1) chấp nhận
dữ
truyền lại liệu(x+1)
dữ
liệu(x+1) sự liên quan
x hoàn thành máy chủ
khách
hàng quên x
chấm dứt req_conn(x)
ESTAB
dữ liệu(x+1) chấp nhận
dữ
liệu(x+1)
Vấn đề: trùng lặp dữ
liệu
Bắt tay 3 bước TCP
Trạng thái máy chủ
serverSocket = socket(AF_INET,SOCK_STREAM)
Trạng thái khách hàng serverSocket.bind(('',serverPort))
serverSocket.listen(1)
clientSocket = socket(AF_INET, SOCK_STREAM) ConnectionSocket, addr = serverSocket.accept()
NGHE
clientSocket.connect((serverName,serverPort)) NGHE
chọn số seq ban đầu, x
gửi tin nhắn TCP SYN
ĐỒNG HỒ SYNbit=1, Seq=x
chọn số seq ban đầu, y
gửi ĐỒNG BỘ TCP
SYN RCVD
tin nhắn, đang xác nhận SYN
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
đã nhận được SYNACK(x)
cho biết máy chủ đang hoạt động;
ESTAB
gửi ACK cho ĐỒNG BỘ;
phân đoạn này có thể chứaACKbit=1, ACKnum=y+1
dữ liệu từ máy khách đến máy chủ
đã nhận được ACK(y)
cho biết khách hàng đang hoạt động
ESTAB
đầu ra: R R R
không cần truyền lại
Máy
chủ B
tôi ra ngoài
R/2
Q: Điều gì xảy ra khi
trì hoãn
tỷ lệ đến l ở tiến
thông lượng:
tới R/2?
tôi ở trongR/2 tôi ở trongR/2
thông lượng tối đa trên mỗi kết độ trễ lớn như dòng tỷ lệ
nối: R/2 đến tiếp cận năng lực
Lớp vận chuyển: 3-111
Nguyên nhân/chi phí tắc nghẽn: kịch bản 2
một bộ định tuyến, bộ đệm hữu hạn
người gửi truyền lại gói bị mất, hết thời gian chờ
• Đầu vào của lớp ứng dụng = Đầu ra của lớp ứng dụng: l in = l out
• Đầu vào của lớp vận chuyển bao gồm các lần truyền lại : l ' in tôi ở
trong
R R
bộ đệm liên kết đầu ra
Máy chủ
được chia sẻ hữu
B
hạn Lớp vận chuyển: 3-112
Nguyên nhân/chi phí tắc nghẽn: kịch bản 2
Lý tưởng hóa: kiến thức hoàn hảo
ra ngoài
R/2
tôi
thông lượng:
Máy chủ tôi ở trong : dữ liệu tôi ở trong
A sao chép tôi
gốc ' trong : dữ liệu gốc, tôi R/2
R R
bộ đệm liên kết đầu ra
Máy chủ
được chia sẻ hữu
B
hạn Lớp vận chuyển: 3-113
Nguyên nhân/chi phí tắc nghẽn: kịch bản 2
Lý tưởng hóa: một số kiến thức hoàn
hảo
các gói có thể bị mất (rơi vào bộ định tuyến) do
bộ đệm đầy
người gửi biết khi nào gói bị mất: chỉ gửi lại nếu
gói bị mất
Máy chủ tôi ở trong : dữ liệu
A sao chép tôi
gốc ' trong : dữ liệu gốc,
cộng với dữ liệu được
truyền lại
R R
bộ đệm liên kết đầu ra
Máy chủ
được chia sẻ hữu
B
hạn Lớp vận chuyển: 3-114
Nguyên nhân/chi phí tắc nghẽn: kịch bản 2
Lý tưởng hóa: một số kiến thức hoàn
ra ngoài
R/2
Dung lượng “lãng phí”
hảo do truyền lại
tôi
các gói có thể bị mất (rơi vào bộ định tuyến) do
thông lượng:
khi gửi ở R/2, một
bộ đệm đầy số gói cần được
người gửi biết khi nào gói bị mất: chỉ gửi lại nếu truyền lại
gói bị mất
Máy chủ tôi ở trong : dữ liệu tôi ở trong R/2
A tôi
gốc ' trong : dữ liệu gốc,
cộng với dữ liệu được
truyền lại
R R
bộ đệm liên kết đầu ra
Máy chủ
được chia sẻ hữu
B
hạn Lớp vận chuyển: 3-115
Nguyên nhân/chi phí tắc nghẽn: kịch bản 2
Kịch bản thực tế: không cần thiết trùng
ra ngoài
R/2
lặp Dung lượng “lãng phí”
do truyền lại không
tôi
các gói có thể bị mất, bị rơi tại bộ định tuyến do cần thiết
thông lượng:
bộ đệm đầy – yêu cầu truyền lại
khi gửi ở R/2, một
nhưng thời gian gửi có thể hết thời gian sớm, số gói được truyền
gửi hai bản sao, cả hai đều được chuyển giao lại, bao gồm cả các
bản sao cần thiết và
Máy chủ tôi ở trong : dữ liệu tôi ở trong
không cần thiết , đã
R/2 được phân phối!
A hsao
ết giờchép
tôi
gốc ' trong : dữ liệu gốc,
cộng với dữ liệu được
truyền lại
R R
bộ đệm liên kết đầu ra
Máy chủ
được chia sẻ hữu
B
hạn Lớp vận chuyển: 3-116
Nguyên nhân/chi phí tắc nghẽn: kịch bản 2
Kịch bản thực tế: không cần thiết trùng
ra ngoài
R/2
lặp Dung lượng “lãng phí”
do truyền lại không
tôi
các gói có thể bị mất, bị rơi tại bộ định tuyến do cần thiết
thông lượng:
bộ đệm đầy – yêu cầu truyền lại
khi gửi ở R/2, một
nhưng thời gian gửi có thể hết thời gian sớm, số gói được truyền
gửi hai bản sao, cả hai đều được chuyển giao lại, bao gồm cả các
bản sao cần thiết và
không cần thiết , đã
tôi ở trong R/2 được phân phối!
Máy
chủ D
tôi
Máy
ra chủ C
ngoài
ngoài
ra
RTT
kiện mất kết nối đầu tiên: hai ph â n đ
oạn
• ban đầu cwnd = 1 MSS
• nhân đôi số tiền mỗi RTT
bốn ph ân
• được thực hiện bằng cách đ oạn
tăngtắt:
tóm cwnd choban
tốc độ mỗi đầu
ACK
nhận được
chậm, nhưng tăng nhanh
theo cấp số nhân thời gian
Thực hiện:
biến ssthresh
trong trường hợp thua lỗ, ssthresh
được đặt thành 1/2 cwnd ngay trước
sự kiện mất mát
* Xem các bài tập tương tác trực tuyến để biết thêm ví dụ: h ttp://gaia.cs.umass.edu/kurose_ross/interactive/
Lớp vận chuyển: 3-128
Tóm tắt: Kiểm soát tắc nghẽn TCP
Mới
Mới ACK!
ACK! ACK mới
ACK trùng lặp
dupACKcount++ ACK mới .
cwnd = cwnd + MSS (MSS/cwnd)
dupACKcount = 0
cwnd = cwnd+MSS truyền (các) phân đoạn mới, nếu được phép
dupACKcount = 0
L truyền (các) phân đoạn mới, nếu được phép
cwnd = 1 MSS
ssthresh = 64 KB cwnd > ssthresh
dupACKcount = 0
chậm L sự tắc nghẽn
bắt đầu hết giờ tránh né
ssthresh = cwnd/2
cwnd = 1 MSS ACK trùng lặp
hết giờ dupACKcount = 0 dupACKcount++
ssthresh = cwnd/2 truyền lại đoạn bị thiếu
cwnd = 1 MSS
dupACKcount = 0
truyền lại đoạn bị thiếu
hết giờ
Mới
ACK!
ssthresh = cwnd/2
cwnd = 1 ACK mới
dupACKcount = 0
cwnd = ssthresh dupACKcount == 3
dupACKcount == 3 truyền lại đoạn bị thiếu dupACKcount = 0
ssthresh=cwnd/2 ssthresh=cwnd/2
cwnd = ssthresh + 3 cwnd = ssthresh + 3
truyền lại đoạn bị thiếu
truyền lại đoạn bị thiếu
nhanh
sự hồi phục
ACK trùng lặp
cwnd = cwnd + MSS
truyền (các) phân đoạn mới, nếu được phép
thời gian
t0 t1 t2 t3 t4
Lớp vận chuyển: 3-131
TCP và “liên kết thắt cổ chai” bị tắc nghẽn
TCP (cổ điển, CUBIC) tăng tốc độ gửi của TCP cho đến khi xảy ra mất gói
ở đầu ra của một số bộ định tuyến: liên kết thắt cổ chai
Gói dữ liệu IP
Lớp vận chuyển: 3-136
TCP công bằng
Mục tiêu công bằng: nếu K phiên TCP chia sẻ cùng một liên kết thắt cổ
chai của băng thông R thì mỗi phiên phải có tốc độ trung bình là R/K
nút cổ chai
Kết nối TCP 2 bộ định tuyến
công suất R
di chuyển các chức năng của lớp vận chuyển sang lớp ứng dụng, phía trên UDP
• HTTP/3: QUIC
Lớp vận chuyển: 3-141
QUIC: Kết nối Internet UDP nhanh
giao thức lớp ứng dụng, trên UDP
• tăng hiệu suất của HTTP
• được triển khai trên nhiều máy chủ, ứng dụng của Google (Chrome, ứng dụng
YouTube dành cho thiết bị di động)
nhiều “luồng” cấp ứng dụng được ghép kênh trên một kết nối QUIC
• truyền dữ liệu đáng tin cậy riêng biệt, bảo mật
• Kiểm soát tắc nghẽn chung
dữ liệu
Bắt tay TLS
(bảo vệ)
dữ liệu
TCP (độ tin cậy, trạng thái kiểm soát QUIC: độ tin cậy, kiểm soát tắc
tắc nghẽn) + TLS (xác thực, trạng thái nghẽn, xác thực, trạng thái mật mã
mật mã)
1 cái bắt tay
2 cái bắt tay nối tiếp
HTTP HTTP
LẤY LẤY HTTP
LẤY
ứng dụng
HTTP HTTP
LẤY LẤY
HTTP
LẤY NHAN NHAN NHAN NHAN NHAN NHAN
H H
mã hóa mã hóa
H H H H
mã hóa mã hóa mã hóa
mã hóa mã hóa NHANHNHANHNHANH NHANHNHANH mã hóa
NHANH
RDT RDT RDT lỗi!
RDT RDT RDT
(a) HTTP 1.1 (b) HTTP/2 với QUIC: không chặn HOL
Lớp vận chuyển: 3-145
Chương 3: tóm tắt
nguyên tắc đằng sau các dịch Tiếp theo:
vụ của lớp vận chuyển: rời khỏi mạng “cạnh”
• ghép kênh, phân kênh (ứng dụng, lớp vận chuyển)
• truyền dữ liệu đáng tin cậy vào mạng “ lõi”
• Kiểm soát lưu lượng
• điều khiển tắc nghẽn
hai chương lớp mạng :
• mặt phẳng dữ liệu
khởi tạo, triển khai trên • mặt phẳng điều khiển
Internet
• UDP
• TCP
Chỉ ACK: luôn gửi ACK cho gói được nhận chính xác có số thứ tự cao
nhất
• có thể tạo ra các ACK trùng lặp
• chỉ cần nhớ số dự kiến
gói không theo thứ tự:
• loại bỏ (không đệm): không có bộ đệm máy thu!
• gói lại ACK có số thứ tự cao nhất Lớp vận chuyển: 3-149
Người gửi TCP (đơn giản hóa)
dữ liệu nhận được từ ứng dụng trên
tạo phân đoạn, seq. #: NextSeqNum
chuyển phân đoạn tới IP (tức là “ gửi ” )
NextSeqNum = NextSeqNum + độ dài (dữ liệu)
if (bộ đếm thời gian hiện không chạy)
L bắt đầu hẹn giờ
NextSeqNum = Ban đầuSeqNum Chờ đợi
SendBase = Khởi tạoSeqNum vì
sự kiện hết giờ
truyền lại đoạn chưa được ACK với
seq nhỏ nhất. #
bắt đầu hẹn giờ
Đã nhận được ACK, với giá trị trường ACK y
if (y > SendBase) {
SendBase = y
/* SendBase–1: byte được ACK tích lũy cuối cùng */
if (hiện tại có các phân đoạn chưa được ack)
bắt đầu hẹn giờ
nếu không thì dừng hẹn giờ
}
Lớp vận chuyển: 3-150
FSM bắt tay 3 bước TCP
đóng cửa
Kết nối ổ cắmSocket =
WelcomeSocket.accept();
L Ổ cắm clientSocket =
newSocket("tên máy chủ","số cổng");
SYN(x)
ĐỒNG BỘ(seq=y,ACKnum=x+1) SYN(seq=x)
tạo ổ cắm mới để liên lạc lại với khách
hàng
Nghe
SYN
SYN đã gửi
rcvd
ĐỒNG BỘ(seq=y,ACKnum=x+1)
ESTAB
ACK(ACKnum=y+1) ACK(ACKnum=y+1)
L
LAST_ACK
FINbit=1, seq=y
TIMED_WAIT không thể dài hơn
gửi dữ liệu
ACKbit=1; ACKnum=y+1
hẹn giờ chờ đợi
cho tối đa 2* ĐÓNG CỬA
vòng đời phân khúc
ĐÓNG CỬA
có/2
TCP qua “ ống dài và béo”
ví dụ: phân đoạn 1500 byte, RTT 100ms, muốn thông lượng 10 Gbps
yêu cầu W = 83.333 phân đoạn trên chuyến bay
thông lượng xét về xác suất mất phân đoạn, L [Mathis 1997]:
1,22 . MSS
Thông lượng TCP =
RTT L
➜ để đạt thông lượng 10 Gbps cần tỷ lệ tổn thất L = 2 · 10 -10 – tỷ lệ tổn
thất rất nhỏ!
các phiên bản TCP cho các kịch bản dài, tốc độ cao