BÀI TẬP NHĨM INTERNET VÀ GIAO THỨC
BẢNG PHÂN CƠNG CƠNG VIỆC
STT
Họ và Tên
Mã sinh viên
Nội Dung Chính
Ghi
Chú
Chương 1: Giới thiệu chung về
TFTP
1.1. Giới thiệu
1
Nguyễn Khắc Toàn B17DCVT362 1.2. Cách thức hoạt động.
1.3. Mối quan hệ với giao thức
khác
1.4. So sánh TFTP với FTP
Chương 2: Mơ hình kết nối
2
Hồng Văn Hiệp
B17DCVT123
2.1. Giao thức UDP
2.2. Khởi tạo kết nối TFTP
2.3. Chấm dứt kết nối TFTP
Chương 3: Gói dữ liệu TFTP
3
Hà Thị Thùy
Dương
3.1. Yêu cầu đọc (RRQ), yêu cầu
ghi (WRQ)
B17DCVT090
3.2. Dữ liệu (Data)
3.3. Hồi đáp (ACK)
3.4. Lỗi (Error)
Chương 4: Vấn đề tồn đọng và
xu hướng phát triển
4
Nguyễn Tiến Giáp B17DCVT107
4.1. Tồn đọng
4.2. Xu hướng phát triển
NHĨM 7 – NHĨM MƠN HỌC 4
1
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
LỜI MỞ ĐẦU
Mặc dù FTP là giao thức truyền tệp tin tổng quan nhất trong bộ giao thức TCP/IP
nhưng nó rất phức tạp. Nhiều ứng dụng khơng cần đến tất cả các tính năng mà FTP
cung cấp. Do đó người ta đưa ra một giao thức thứ hai cung cấp dịch vụ ít tốn kém và
không phức tạp. Được biết dưới tên Trivial File Transfer Protocol (TFTP), giao thức
này không cần đến những tương tác phức tạp giữa client và server. TFTP giới hạn thao
tác chỉ trong việc truyền tệp tin và không cung cấp việc xác minh. Không giống như
FTP, TFTP không cần dịch vụ chuyển tin đáng tin cậy mà nó sử dụng giao thức UDP
của tầng Transport, có sử dụng cơ chế timeout và việc truyền lại để đảm bảo dữ liệu
được truyền đến nơi nhận.
Trong bài tiểu luận này của nhóm, chúng em sẽ trình bày tổng quan về giao thức
TFTP và cách truyền file của nó. Để hồn thành bài tiểu luận, chúng em có tham khảo
thêm một số tài liệu, những tài liệu đó được trình bày ở phần cuối tiểu luận. Cuối cùng
chúng em xin cảm ơn thầy Nguyễn Tiến Ban đã hướng dẫn chúng em hoàn thành môn
học này này.
BÀI TẬP NHĨM INTERNET VÀ GIAO THỨC
MỤC LỤC
BẢNG PHÂN CƠNG CÔNG VIỆC.........................................................................1
LỜI MỞ ĐẦU.............................................................................................................2
THUẬT NGỮ VIẾT TẮT..........................................................................................4
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ TFTP......................................................6
1.1. Giới thiệu..........................................................................................................6
1.2. Cách thức hoạt động........................................................................................6
1.3. Mối quan hệ với các giao thức khác................................................................7
1.4. So sánh TFTP với FTP....................................................................................8
CHƯƠNG 2: MƠ HÌNH KẾT NỐI........................................................................11
2.1. Giao thức UDP...............................................................................................11
2.1.1. Khái niệm..................................................................................................11
2.1.2. Cách thức hoạt động.................................................................................11
2.1.3. Cấu trúc gói tin UDP................................................................................11
2.1.4. UDP header...............................................................................................12
2.1.5. Truyền dữ liệu với UDP............................................................................13
2.2. Khởi tạo kết nối TFTP...................................................................................14
2.3. Chấm dứt kết nối TFTP................................................................................15
2.3.1. Chấm dứt thơng thường...........................................................................15
2.3.2. Chấm dứt sớm...........................................................................................15
CHƯƠNG 3: GĨI DỮ LIỆU TFTP........................................................................16
3.1. Yêu cầu đọc (RRQ), yêu cầu viết (WRQ).....................................................16
3.2. Dữ liệu (Data).................................................................................................17
3.3. Hồi đáp (ACK)...............................................................................................18
3.4. Lỗi (Error)......................................................................................................18
CHƯƠNG 4: VẤN ĐỀ TỒN ĐỌNG VÀ XU HƯỚNG PHÁT TRIỂN................19
4.1. Tồn đọng.........................................................................................................19
4.2. Xu hướng phát triển......................................................................................19
TÀI LIỆU THAM KHẢO.......................................................................................23
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
THUẬT NGỮ VIẾT TẮT
Từ viết tắt
Từ đầy đủ
Nghĩa Tiếng Việt
TFTP
Trivial File Transfer
Protocol
Giao thức truyền file
đơn giản
UDP
User Datagram Protocol
Giao thức dữ liệu người
dùng
FTP
File Transfer Protocol
Giao thức truyền tệp
LAN
Local Area Network
Mạng cục bộ
TID
Transaction ID
Nhận dạng chuyển
TCP
Transmission Control
Protocol
Giao thức điều khiển
truyền vận
IP
Internet Protocol
Giao thức Internet
IPv4, IPv6
IP version 4, IP version 6
Internet Protocol
DNS
Domain Name System
Tên miền hệ thống
NTP
Network Time Protocol
Giao thức đồng bộ thời
gian mạng
WRQ
Write Request
Yêu cầu ghi
RRQ
Read Request
Yêu cầu đọc
ACK
Acknowledgment
Hồi đáp
STFTP
Secure Trivial File
Transfer Protocol
Bảo mật giao thức
truyền file đơn giản
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
SSL
Secure Socket Layer
Lớp cổng bảo mật
TLS
Transport Layer Security
Bảo mật lớp vận chuyển
AES
Advanced Encryption
Standard
Tiêu chuẩn mã hóa tiên
tiến
STP
Spanning Tree Protocol
Giao thức cây Spanning
AP
Access point
Điểm truy cập
BS
Base Station
Trạm gốc
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ TFTP
1.1. Giới thiệu
Giao thức TFTP (Trivial File Transfer Protocol), là một giao thức truyền file đơn
giản chạy trên nền UDP. TFTP được xác nhận lần đầu tiên vào năm 1980 dùng để
truyền file qua mạng. So với FTP (File Transfer Protocol) thì TFTP có thiết kế đơn
giản và ít tính năng hơn.
TFTP được thiết kế nhỏ và dễ thực hiện và do đó nó thiếu hầu hết các tính năng của
các giao thức truyền tệp. TFTP chỉ đọc và ghi tệp từ các máy chủ từ xa, nó khơng thể
liệt kê, xóa hoặc đổi tên các tệp tin hoặc thư mục và cũng khơng có xác thực giữa
client và server.
Do khơng được bảo mật trong q trình truyền tệp tin nên TFTP thường được ứng
dụng trong các mạng cục bộ (LAN) để backup, import config IOS trên các thiết bị
Switch, Router hay Firewall hoặc dùng để nâng cấp OS hoặc cài đặt license cho các
thiết bị này.
TFTP sử dụng giao thức UDP làm giao thức truyền tải của nó và sử dụng port 69 là
port mặc định. Các tệp tin sẽ được chia nhỏ thành các block có chiều dài cố định 512
byte và được truyền lần lượt. Cả 2 thiết bị đều có thể coi là 1 TFTP server hay TFTP
client (gọi chung là Remote Host).
1.2. Cách thức hoạt động
Bất kì sự chuyển dữ liệu nào cũng bắt đầu bằng một yêu cầu đọc hoặc ghi một tệp,
nó cũng phục vụ để yêu cầu kết nối. Nếu máy chủ cấp yêu cầu, kết nối sẽ được mở và
tệp được gửi trong các khối có độ dài cố định 512 bytes. Mỗi gói dữ liệu chứa một
khối dữ liệu và phải được xác nhận bởi gói xác nhận trước khi gói tiếp theo có thể gửi.
Một gói dữ liệu có ít hơn 512 bytes tín hiệu chấm dứt chuyển. Nếu một gói bị mất
trong mạng, người nhận dự định sẽ hết thời gian và có thể truyền lại gói cuối cùng của
mình (có thể là dữ liệu hoặc xác nhận), do đó khiến người gửi gói bị mất gửi lại gói bị
mất đó. Người gửi phải giữ một gói trong tay để truyền lại, vì xác nhận bước khóa đảm
bảo rằng tất cả các gói cũ hơn đã được nhận. Lưu ý rằng cả hai máy liên quan đến
chuyển dữ liệu đều được coi là người nhận và người gửi. Một người gửi dữ liệu và
nhận xác nhận, người kia gửi xác nhận và nhận dữ liệu.
Hầu hết các lỗi sẽ gây ra chấm dứt kết nối. Một lỗi được báo hiệu bằng cách gửi
một gói lỗi. Gói này không được xác nhận và không được truyền lại (máy chủ TFTP
hoặc người dùng có thể chấm dứt sau khi gửi thơng báo lỗi), vì thế đầu kia của kết nối
có thể khơng nhận được. Do đó, thời gian chờ được sử dụng để phát hiện sự chấm dứt
khi gói lỗi bị mất. Lỗi được gây ra bởi ba loại sự kiện : không thể đáp ứng yêu cầu ( ví
BÀI TẬP NHĨM INTERNET VÀ GIAO THỨC
dụ: khơng tìm thấy tệp, vi phạm truy cập hoặc khơng có người dùng đó), nhận được
gói khơng thể giải thích bằng sự chậm trễ hoặc trùng lặp trong mạng ( ví dụ: một gói
hình thành khơng chính xác) và mấy quyền truy cập vào một tài ngun cần thiết ( ví
dụ: tồn bộ đĩa hoặc quyền truy cập bị từ chối trong quá trình chuyển).
TFTP chỉ nhận ra một điều kiện khơng gây ra sự chấm dứt, cổng nguồn của gói tin
nhận được khơng chính xác. Trong trường hợp này, một lỗi sẽ được gửi đến máy chủ
gốc. Giao thức này rất hạn chế, để đơn giản hóa việc thực hiện. Ví dụ, các khối có
chiều dài cố định giúp phân bổ thẳng và xác nhận bước khóa cung cấp kiểm sốt luồng
và loại bỏ yêu cầu sắp xếp lại các gói dữ liệu đến.
1.3. Mối quan hệ với các giao thức khác
Như đã đề cập, TFTP được thiết kế trên nền giao thức Datagram (UDP). Vì
Datagram triển khai trên nền giao thức Internet, các gói sẽ có tiêu đề Internet, tiêu đề
Datagram và tiêu đề TFTP. Ngồi ra các gói có thêm tiêu đề (LNI, ARPA tiêu đề,
v.v..) cho phép chúng thông qua phương tiện vận chuyển nội bộ.
Thứ tự nội dung của một gói gồm: tiêu đề Local Medium (nếu được sử dụng), tiêu
đề Internet, tiêu đề Datagram và tiêu đề TFTP và phần cịn lại của gói tin TFTP. TFTP
khơng chỉ định bất kỳ các giá trị trong tiêu đề Internet. Mặt khác, nguồn và trường
cổng đích của tiêu đề được TFTP sử dụng và trường độ dài phản ánh kích thước của
gói TFTP. Các định danh chuyển (TID) được sử dụng bởi TFTP được chuyển đến lớp
Datagram để được sử dụng làm cổng; vì thế chúng phải nằm trong khoảng từ 0 đến
65,535. Việc khởi tạo TID là thảo luận trong phần về giao thức kết nối ban đầu.
Tiêu đề TFTP gồm 2 byte opcode cho biết loại gói (DATA, ERROR,…)
Local Medium
Internet
Datagram
Bảng 1: Thứ tự tiêu đề
Hình 1: Đóng gói tiêu đề TFTP
TFTP
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
1.4. So sánh TFTP với FTP
TFTP
FTP
TFTP là giao thức truyền tệp FTP được dùng để trao đổi dữ liệu
tin đơn giản theo bước, cho trong mạng thông qua giao thức
phép một khách hàng download TCP/IP, thường hoạt động trên hai
một tập tin từ một máy chủ từ cổng là 20 và 21. Với giao thức
xa. Một trong những ứng dụng này, các máy client trong mạng có
Khái niệm
chính của nó là trong giai đoạn thể truy cập máy chủ FTP để gửi
đầu của các nút khởi động từ hoặc lấy dữ liệu. Điểm nổi bật là
mạng cục bộ. TFTP đã được sử người dùng có thể truy cập vào
dụng cho ứng dụng này vì nó máy chủ FTP để truyền và nhận
rất đơn giản để thực hiện
Bảo mật
dữ liệu dù đang ở xa.
TFTP được sử dụng chủ yếu để -
FTP có thể truy cập nặc
chuyển các tập tin từ (hoặc ghi danh. Điều này có nghĩa là người
chúng vào) một máy chủ từ xa. dùng có thể đăng nhập vào máy
Bởi vì nó là một giao thức mở, chủ này bằng tài khoản 'ẩn danh'
thiếu bảo mật - có nghĩa là rất khi được nhắc tên người dùng và
nguy hiểm khi truyền tệp qua mật khẩu. Trong hầu hết các
máy chủ mở trên internet. Do trường hợp, người dùng khơng có
đó, TFTP thường chỉ được sử tài khoản trực tiếp với máy chủ sẽ
dụng trên các mạng riêng và / được nhắc sử dụng địa chỉ email
hoặc mạng cục bộ. Thật không của người đó thay cho mật khẩu;
may, khơng có q trình xác tuy nhiên, hầu như khơng có quy
thực, do đó khơng có cơ chế mã trình xác minh diễn ra sau khi
hóa, được đưa ra. Do tính đơn thơng tin được cung cấp (chẳng
giản của nó, TFTP chỉ có thể hạn như tại Trung tâm Thông tin
truyền các tệp lớn như terabyte Công nghệ sinh học Quốc gia).
và cho phép các gói dữ liệu quá -
Các máy chủ FTP có giao
khổ chuyển - điều này có thể thức xác thực và mã hóa. Khi
gây ra sự chậm trễ lớn trong quyền truy cập đó bị hạn chế, dịch
việc truyền tệp.
vụ FTP (FTP mail) từ xa có thể
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
được triển khai để khắc phục vấn
đề hạn chế. Điều này cho phép
truy cập, nhưng hạn chế người
dùng xem các thư mục hoặc sửa
đổi các lệnh.
-
Giống như FTP, TFTP
-
Giao thức FTP hoạt động
sử dụng phần mềm máy khách
dựa trên mơ hình cơ bản của việc
và máy chủ để tạo kết nối giữa
truyền và nhận dữ liệu từ máy
hai thiết bị. Từ máy khách
Client đến máy Server. Q trình
TFTP, các tệp riêng lẻ có thể
truyền nhận dữ liệu giữa máy
được sao chép (tải lên) vào
Client và Server lại được tạo nên
hoặc tải xuống từ máy chủ. Nói từ 2 tiến trình TCP logic là
cách khác, máy chủ lưu trữ các
Control
tệp trong khi máy khách yêu
Connection.
cầu hoặc gửi chúng.
-
-
phiên làm việc TCP logic đầu tiên
TFTP cũng có thể được
sử dụng để khởi động từ xa
Mơ hình
hoạt động
Connection
và
Data
Control Connection: Đây là
được tạo ra khi quá trình truyền
máy tính và sao lưu các tệp cấu dữ liệu bắt đầu. Tuy nhiên, tiến
hình mạng hoặc bộ định tuyến.
-
trình này chỉ kiểm sốt các thơng
TFTP dựa vào UDP để tin điều khiển đi qua nó, ví dụ như
truyền tải dữ liệu.
các tập lệnh. Quá trình này sẽ
được duy trì trong suốt quá trình
phiên làm việc diễn ra.
- Data Connection: Khác với tiến
trình Control Connection, Data
Connection là một kết nối dữ liệu
TCP được tạo ra với mục đích
chuyên biệt là truyền tải dữ liệu
giữa máy Client và máy Server.
Kết nối sẽ tự động ngắt khi q
trình truyền tải dữ liệu hồn tất.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
Các phương TFTP là một giao thức đơn
thức truyền giản để truyền tệp, được
dữ liệu
triển khai trên giao thức
-Khi quá trình truyền dữ liệu được
UDP/IP sử dụng cổng số 69
có thể ngược lại. Dựa trên việc
nổi tiếng. TFTP được thiết
truyền dữ liệu này, FTP có 3
kế nhỏ và dễ thực hiện, do
phương thức truyền tải dữ liệu là
đó nó thiếu hầu hết các tính
stream mode, block mode, và
năng nâng cao được cung
compressed mode.
cấp bởi các giao thức truyền
tệp mạnh mẽ hơn. TFTP chỉ
đọc và ghi tệp từ hoặc đến
một máy chủ từ xa. Nó
khơng thể liệt kê, xóa hoặc
đổi tên tập tin hoặc thư mục
và nó khơng có quy định để
xác thực người dùng. Ngày
nay TFTP thường chỉ được
sử dụng trên các mạng cục
thiết lập, dữ liệu sẽ được truyền từ
máy Client đến máy Server hoặc
- Stream mode: Phương thức này
hoạt động dựa vào tính tin cậy
trong việc truyền dữ liệu trên giao
thức TCP. Dữ liệu sẽ được truyền
đi dưới dạng các byte có cấu trúc
không liên tiếp. Thiết bị gửi chỉ
đơn thuần đẩy luồng dữ liệu qua
kết nối TCP tới phía nhận mà
khơng có một trường tiêu đề nhất
định.
bộ (LAN).
- Block mode: Là phương thức
truyền dữ liệu mang tính quy
chuẩn hơn. Với phương thức này,
dữ liệu được chia thành nhiều khối
nhỏ và được đóng gói thành các
FTP blocks. Mỗi block sẽ chứa
thơng tin về khối dữ liệu đang
được gửi.
- Compressed mode: Phương thức
truyền sử dụng kỹ thuật nén dữ
liệu khá đơn giản là “run-length
encoding”. Với thuật toán này, các
đoạn dữ liệu bị lặp sẽ được phát
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
hiện và loại bỏ để giảm chiều dài
của tồn bộ thơng điệp khi gửi đi.
BÀI TẬP NHĨM INTERNET VÀ GIAO THỨC
CHƯƠNG 2: MƠ HÌNH KẾT NỐI
2.1. Giao thức UDP
2.1.1. Khái niệm
UDP là viết tắt của cụm từ User Datagram Protocol. UDP là một phần của bộ giao
thức Internet được sử dụng bởi các chương trình chạy trên các máy tính khác nhau trên
mạng. Khơng giống như TCP/IP, UDP được sử dụng để gửi các gói tin ngắn gọi là
datagram, cho phép truyền nhanh hơn. Tuy nhiên, UDP không cung cấp kiểm tra lỗi
nên không đảm bảo tồn vẹn dữ liệu.
Hình 2: Cách thức truyền thông UDP.
2.1.2. Cách thức hoạt động
Giao thức UDP hoạt động tương tự như TCP nhưng nó khơng cung cấp kiểm tra lỗi
khi truyền gói tin.
Khi một ứng dụng sử dụng UDP, các gói tin chỉ được gửi đến người nhận. Người
gửi khơng đợi để đảm bảo người nhận có nhận được gói tin hay khơng, mà nó tiếp tục
gửi các gói tiếp theo. Nếu người nhận bỏ lỡ một vài gói tin UDP, gói tin đó bị mất vì
người gửi khơng gửi lại chúng. Điều này có nghĩa là các thiết bị có thể giao tiếp nhanh
hơn.
2.1.3. Cấu trúc gói tin UDP
Khi chúng ta gọi hàm UDP để vận chuyển một chuỗi byte tới tiến trình đích,
chương trình UDP sẽ bổ sung thêm một chuỗi byte nhỏ (8 bytes) vào đầu chuỗi byte
dữ liệu. Chuỗi byte bổ sung của UDP được gọi là header. Phần dữ liệu nhận từ ứng
dụng được gọi là phần payload.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
UDP header cùng với phần payload tạo ra một đơn vị thông tin riêng gọi là
datagram. Như vậy có thể dễ dàng hình dung, datagram thực chất là một chuỗi byte
lớn
Hình 3: Cấu trúc header của gói tin UDP.
Do một chuỗi bit thường rất dài, chúng ta khơng thể viết nó lên trên cùng một dịng.
Thay vào đó, người ta sử dụng cách viết gần giống như biểu diễn một ma trận. Cụ thể,
người ta thường chỉ viết 32 bit (4 byte) trên mỗi dịng, và nhóm mỗi 8 bit vào một
octet/byte. Để tiện lợi cho việc tính tốn ra vị trí của bit hoặc byte trong mảng, người
ta đưa vào hai dòng phụ: dòng đầu đánh số byte từ 0 đến 3 (dòng Octet), dòng 2 đánh
số bit từ 0 đến 31 (dòng Bit). Đầu mỗi dòng người ta thêm giá trị offset của byte và
offset của bit. Vị trí của byte/octet ở mỗi dịng tính bằng offset của byte/octet ở dịng
đó cộng với số thứ tự của cột tương ứng ở dòng Octet. Tương tự vị trí của bit ở mỗi
dịng bằng offset của bit của dịng đó cộng số thứ tự của cột tương ứng ở dịng Bit.
Trong mơ tả UDP, chúng ta sử dụng hai dịng để mơ tả một mảng 8 byte (64 bit),
mỗi dòng chứa 4byte 32 bit). Mảng này được chia thành 4 phần:
- Source port: chiếm từ bit 0 đến bit 15 (tức byte 0 và byte 1)
- Destination port: chiếm từ bit 16 đến bit 31 (tức byte 2 và byte 3)
- Length: chiếm từ bit 32 + 0 = 32 (32 là bit offset của dòng 2) đến 32 + 15 = 47
(tức là byte 4 + 0 = 4 và 4 + 1 = 5, với 4 là byte offset của dòng 2).
- Checksum: chiếm từ bit 32 + 16 = 48 tới bit 32 + 31 = 63 (tức là byte 4+2=6 và
byte 4 +3 =7).
2.1.4. UDP header
Hình 4: Định dạng tiêu đề UDP
Source port number (2 byte) là số cổng của tiến trình nguồn. Lần đầu tiên client
phát lệnh SendTo, UDP sẽ tự hỏi hệ thống để mượn một giá trị port (thường nằm cuối
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
dải giá trị) và điền vào trường này. Khi Server phát lệnh SendTo, UDP sử dụng ln
giá trị cổng mà tiến trình này đã chiếm dụng. Mỗi khi khởi tạo lại object của Socket
(như trong code của Client), giá trị cổng nguồn lại thay đổi. Nếu chúng ta duy trì một
object duy nhất của Socket thì giá trị cổng nguồn của gói tin phát từ client sẽ không
đổi.
Destination port number (2 byte) là số cổng của tiến trình đích. Khi Client phát lệnh
sendTo, thơng tin về port của Server từ tham số thứ hai (kiểu IPEndPoint) được sử
dụng cho trường này.
Length là độ dài của Header + data. Về lý thuyết thì 8 <= Length <= 65535 (tức là 8
byte header + 65527 byte data), nhưng trên thực tế, 8<= Length <= 655507 (bằng giá
trị tối đa mô tả được 2 byte là 65536 trừ đi 8 buyte UDP header, trừ tiếp 20 byte IP
header).
Checksum dùng để kiểm tra lỗi header và dữ liệu nhằm đảm bảo tính tồn vẹn của
gói tin. Checksum khơng bắt buộc với IPv4 (nếu khơng dùng thì chứa tồn các bit 0)
nhưng bắt buộc với IPv6. Trường này được UDP tính tốn tự động theo thuật tốn mơ
tả trong RFC.
2.1.5. Truyền dữ liệu với UDP
Truyền tải dữ liệu qua UDP khơng tạo liên kết ảo giữa các tiến trình tham gia truyền
thông. Do không tạo ra liên kết ảo trước khi truyền dữ liệu, giao thức UDP có thể
truyền dữ liệu đi ngay lập tức mà không cần thực hiện quá trình xây dựng liên kết
phức tạp. Vì lý do này mà chỉ khi nào nhận được dữ liệu (ReceiveFrom), tiến trình mới
biết được nó đang trao đổi dữ liệu với tiến trình nào (thơng qua tham số thứ hai kiểu
EndPoint). Cũng vì lý do này, UDP được gọi là giao thức phi liên kết, socket UDP còn
được gọi là socket phi liên kết (connectionless socket).
Giao thức UDP đơn giản và cho phép truyền dữ liệu theo thời gian thực. Tuy nhiên,
do thiếu các cơ chế kiểm soát dữ liệu trong q trình truyền, giao thức UDP chỉ thích
hợp khi truyền các loại dữ liệu khơng có u cầu cao về kiểm tra và sửa lỗi. Vì vậy
UDP được sử dụng phổ biến nhất trong việc truyền tải dữ liệu đa phương tiên (video,
audio, image), trong đó, việc mất một số datagram không ảnh hưởng đến việc sử dụng
dữ liệu, đồng thời cần tốc độ truyền tải cao.
Truyền tải dữ liệu qua UDP không sử dụng các bộ nhớ đệm, do đó chương trình
đích bắt buộc phải nhận gói tin UDP kịp thời. Nếu không phát lệnh nhận
(ReceiveFrom) kịp thời, gói tin UDP sẽ mất đi. Giao thức và dịch vụ tầng ứng dụng
phổ biến sử dụng UDP bao gồm Domain Name System (DNS), Network Time
Protocol (NTP), IP tunneling, Remote Procedure Call (RPC), Network File System
(NFS), DHCP, TFTP (Trivial FTP), IPTV (Streaming media).
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
2.2. Khởi tạo kết nối TFTP
Chuyển tiếp được thiết lập bằng cách gửi yêu cầu (WRQ để ghi vào hệ thống tệp
bên ngoài hoặc RRQ để đọc từ đó), và nhận được phản hồi tích cực, gói xác nhận để
ghi hoặc dữ liệu đầu tiên để đọc. Nhìn chung, gói xác nhận sẽ chứa số khối của gói dữ
liệu được xác nhận. Mỗi gói dữ liệu có liên kết với nó một số khối; số khối là liên tiếp
và bắt đầu với số 1. Vì phản hồi tích cực đối với u cầu ghi là gói xác nhận, nên trong
trường hợp đặc biệt này, số khối sẽ bằng khơng. (Thơng thường, do gói xác nhận đang
xác nhận gói dữ liệu, gói xác nhận sẽ chứa số khối của gói dữ liệu được xác nhận).
Nếu trả lời là gói lỗi, thì u cầu đã bị từ chối.
Để tạo kết nối, mỗi đầu kết nối sẽ chọn một TID cho chính nó, được sử dụng trong
suốt thời gian của kết nối đó. Các TID’s được chọn cho một kết nối nên được chọn
một cách ngẫu nhiên, do đó xác suất để cùng một số được chọn hai lần liên tiếp là rất
thấp. Mỗi gói có liên kết với nó hai TID’s của các đầu kết nối, TID nguồn và TID
đích. Các TID’s này được trao nhiệm vụ hỗ trợ cho UDP (hoặc giao thức datagram
khác) làm cổng nguồn hoặc cổng đích. Máy chủ yêu cầu chọn TID nguồn của nó như
được mơ tả ở trên và gửi yêu cầu ban đầu đến TID 69(decimal) đã biết (105 octal) trên
máy chủ phục vụ. Đáp ứng cho yêu cầu, trong hoạt động bình thường, sử dụng TID
được máy chủ chọn làm TID nguồn và TID được chọn cho tin nhắn trước đó của
người u cầu làm TID đích. Hai TID được chọn sau đó được sử dụng cho phần cịn
lại của q trình chuyển tiếp.
Dưới đây là ví dụ cho thấy các bước được sử dụng để thiếp lập kết nối để ghi tệp.
Lưu ý rằng WRQ, ACK và DATA là tên của yêu cầu ghi, xác nhận và loại dữ liệu của
các gói tương ứng:
- Máy A gửi gói WRQ (yêu cầu ghi) tới máy S với nguồn là TID của A, đích: cổng
69
Hình 5: A gửi bản tin yêu cầu ghi để gửi file tới S.
- Máy S gửi lại bản tin ACK (xác nhận) (với số khối là 0) tới máy A với nguồn là
TID của S và đích là TID của A.
Hình 6: S gửi lại bản tin ACK 0 xác nhận yêu cầu.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
Tại thời điểm này, kết nối đã được thiếp lập và dữ liệu đầu tiên của gói có thể được
gửi đi bởi máy chủ A với seauence number là 1. Trong bước tiếp theo và trong tất cả
các bước tiếp theo, máy chủ cần đảm bảo rằng TID nguồn khớp với giá trị đã được
thỏa thuận trong các bước 1 và 2. Nếu TID khơng khớp, gói cần được bị loại bỏ như
gửi nhầm từ nơi khác đến. Mỗi gói lỗi nên được gửi đến nguồn của gói tin khơng
chính xác trong khi khơng làm phiền việc chuyển tiếp. Điều này chỉ có thể thực hiện
nếu TFTP trến thực tế nhận được một gói với TID khơng chính xác. Nếu các giao thức
hỗ trợ khơng cho phép nó, điều kiện lỗi cụ thể này sẽ khơng phát sinh.
Ví dụ sau đây cho thấy một hoạt động chính xác của giao thức trong đó tình huống
trên có thể xảy ra. Máy chủ A gửi một yêu cầu tới máy chủ S. Ở đâu đó trong mạng,
gói yêu cầu là gói bị trùng lặp và kết quả là hai xác nhận được trả về máy chủ A, với
các TID khác nhau được chọn trên máy chủ S để đáp lại hai yêu cầu. Khi phản hồi đầu
tiên đến, máy chủ A tiếp tục kết nối. Khi phản hồi thứ hai cho yêu cầu trên đến, nó nên
bị từ chối nhưng khơng có lý do gì để chấm dứt lần đầu tiên kết nối, do đó, nếu TID
khác nhau được chọn cho cả hai kết nối trên máy chủ S và máy chủ A kiếm tra TID
nguồn của tin nhắn nó nhận được, kết nối đầu tiên có thể được duy trì trong khi kết nối
thứ hai bị từ chối bằng cách trả lại một gói tin lỗi.
2.3. Chấm dứt kết nối TFTP
2.3.1. Chấm dứt thông thường
Kết thúc chuyển dữ liệu được đánh dấu bằng gói DATA chứa từ 0 đến 511 byte dữ
liệu (nghĩa là độ dài của Datagram <516). Gói này được một gói ACK thừa nhận giống
như tất cả các gói DATA khác. Máy chủ xác nhận gói DATA cuối cùng có thể chấm
dứt phía kết nối của nó khi gửi ACK cuối cùng. Mặt khác, máy chủ gửi ACK cuối
cùng sẽ đợi một lúc trước khi kết thúc để truyền lại ACK cuối cùng nếu nó bị mất.
Người xác nhận sẽ biết rằng ACK đã bị mất nếu nhận lại gói DATA cuối cùng. Máy
chủ gửi DATA cuối cùng phải truyền lại cho đến khi gói được xác nhận hoặc máy chủ
gửi hết thời gian. Nếu phản hồi là ACK, việc truyền đã hoàn thành thành cồng. Nếu
người gửi hết dữ liệu và khơng sẵn sàng truyền lại nữa, việc truyền vẫn có thể được
hồn thành thành cơng, sau đó người xác nhận hoặc mạng có thể gặp sự cố, trong
trường hợp này cũng có thể việc truyền khơng thành cơng. Trong mọi trường hợp, kết
nối đã được đóng lại.
2.3.2. Chấm dứt sớm
Nếu một yêu cầu không thể được cấp hoặc một số lỗi xảy ra trong q trình truyền,
thì một gói ERROR (opcode 5) được gửi. Đây chỉ là một phép lịch sự vì nó sẽ khơng
được truyền lại hoặc thừa nhận, vì vậy nó có thể khơng bao giờ được nhận. Thời gian
chờ cũng phải được sử dụng để phát hiện lỗi.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
CHƯƠNG 3: GÓI DỮ LIỆU TFTP
TFTP hỗ trợ 5 loại gói dữ liệu, mỗi loại có trường opcode dài 16 bit (mã hoạt động)
với giá trị tương ứng:
OPCODE
OPERATION
1
Read request ( RRQ)
2
Write request (WRQ)
3
Data ( DATA)
4
Acknowledgment (ACK)
5
Error ( ERROR)
Bảng 2: Các loại gói dữ liệu TFTP
Tiêu đề TFP của gói chứ opcode được liên kết với gói đó, tuy nhiên opcode khơng
phải là cách duy nhất mà cấu trúc của các loại gói này khác nhau.
3.1. Yêu cầu đọc (RRQ), yêu cầu viết (WRQ)
Sự khác biệt duy nhất giữa các yêu cầu mà máy khách TFTP gửi đến máy chủ
TFTP để đọc (gói RRQ) hoặc truy cập ghi (gói WRQ) là mã hoạt động của chúng.
Mặc khác, cả hai loại gói cùng có chung định dạng:
Hình 7: Cấu trúc của TFTP “RRQ” và “WRQ”
Gói tin RRQ và WRQ (opcode 1 và 2 tương ứng) có định dạng như hình Hình 7.
Tên tệp là một chuỗi các byte trong netascii bị chấm dứt bởi một byte không. Trường
chế độ chứa chuỗi “netascii”, “octet” or “mail” (hoặc bất kì sự kết hợp nào của chữ
hoa và chữ thường, chẳng hạn như “NETASCII”, “NetAscii”, v.v..).
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
Một máy chủ nhận dữ liệu chế độ netascii phải dịch dữ liệu sang định dạng của
chính nó. Chế độ Octet được sử dụng để truyền tệp ở định dạng 8 bit của máy mà tệp
đang được truyền. Giả định rằng mỗi loại máy có định dạng 8bit duy nhất phổ biến
hơn và định dạng đó được chọn. Ví dụ, trên máy DEC-20, máy 36 bit, đây là 4 byte 8
bit cho một từ có 4 bit bị hỏng. Nếu một máy chủ nhận được một tệp octet và sau đó
trả về nó, thì tệp được trả về phải giống hệt bản gốc. Chế độ mail sử dụng tên của
người nhận thư thay cho tệp và phải bắt đầu bằng WRQ, nếu khơng nó giống hết với
chế độ “netascii”. Chuỗi nguồi nhận thư phải ở dạng “usename” hoặc
“username@hostname” (tên người dùng + @ + máy chủ). Nếu hình thức thứ hai được
sử dụng, nó cho phép tùy chọn chuyển tiếp thư bằng máy tính chuyển tiếp.
Các cuộc thảo luận ở trên giả định rằng cả người gửi và người nhận đều hoạt động
trong cùng một chế độ, nhưng khơng có lý do gì mà điều này phải sảy ra. Ví dụ người
ta có thể xây dựng một máy chủ để lưu trữ. Khơng có lý do gì mà một cố máy như vậy
cần dịch netascii thành dạng văn bản của riêng nó, thay vào đó người gửi có thể gửi
tệp trong netascii, nhưng máy chủ lưu trữ có thể chỉ lưu trữ chúng mà khơng cần dịch
ở định dạng 8 bit. Một tình huống khác là một vấn đề hiện đang tồn tại trên các hệ
thống DEC-20, cả netascii và octet đều không truy cập tất cả các bit trong một từ.
Người ta có thể tạo ra một chế độ đặc biệt cho một máy như vậy đọc tất cả các bit
trong một từ, nhưng trong đó máy thu lưu trữ thơng tin ở định dạng 8 bit. Khi một tệp
như vậy được lấy từ trang lưu trữ, nó phải được khơi phục về dạng ban đầu để có ích,
do đó chế độ đảo ngược cũng phải được thực hiện. Các trang người dùng sẽ phải nhớ
một số thông tin để đạt được điều này. Trong cả hai ví dụ này, các gói u cầu sẽ chỉ
định chế độ octet cho máy chủ ngoài, nhưng máy chủ cục bộ sẽ ở một chế độ khác.
Khơng có chế độ cụ thể cho máy hoặc ứng dụng nào được chỉ định trong TFTP, nhưng
một chế độ sẽ tương thích với thơng số kĩ thuật này.
Cũng có thể xác định các chế độ khác để hợp tác các cặp máy chủ, mặc dù điều này
phải được thực hiện cẩn thận. Khơng có u cầu rằng bất kì máy chủ khác thực hiện
những điều này. Khơng có cơ quan trung ương sẽ xác định các chế độ này hoặc gán
tên cho chúng.
3.2. Dữ liệu (Data)
Các gói Data chứa các tệp sẽ được chuyển giữa máy chủ và máy khác. Vì dữ liệu
này được truyền theo các khối, gói tin TFTP DATA sẽ luôn chỉ chứa một phần của
tệp, ngoại trừ các tệp có tổng kích thước nhỏ hơn 512 byte tiêu chuẩn hoặc kích thước
khối được xác định riêng lẻ. Định dạng cho gói dữ liệu như sau:
Hình 8: Cấu trúc của TFTP DATA.
Các gói DATA (opcode = 3) có số khối và trường dữ liệu. Số khối trên các gói dữ
liệu bắt đầu bằng một và tăng thêm một cho mỗi khối dữ liệu mới. Hạn chế này cho
phép chương trình sử dụng một số duy nhất để phân biệt giữa các gói mới và các bản
sao. Trường dữ liệu dài từ 0 đến 512 bytes (4096 bit), với điều kiện máy chủ và máy
khách TFTP khơng đặt kích thước tối đa khác nhau cho các khối. Nếu nó dài 512 byte,
khối không phải là khối dữ liệu cuối cùng, khối cuối cùng cho biết kết thúc truyền dữ
liệu luôn nhỏ hơn ít nhất một byte. Nếu nó dài từ 0 đến 511 byte, nó báo hiệu kết thúc
truyền gói tin. Nếu phần còn lại của tệp được chuyển chỉ xảy ra có cùng kích thước với
khối, người gửi sẽ phải chuyển một gói khác có khối dữ liệu bằng khơng.
3.3. Hồi đáp (ACK)
Tất cả các gói dữ liệu WRQ và dữ liệu không đánh dấu kết thúc truyền tệp đều được
xác nhận bằng tin nhắn ACK khi giao tiếp qua TFTP thành công (trừ khi sảy ra thời
gian chờ).
Cấu trúc của các thơng báo xác nhận đơn giản như sau:
Hình 9: Cấu trúc của TFTP ACK
Các thông điệp ACK cho giao tiếp TFTP bao gồm opcode dài 16 bit, đã được gán
một giá trị là 4 và số khối dữ liệu dài 16 bit được xác nhận bởi tin nhắn ACK. Nếu nó
đang đáp ứng yêu cầu WRQ, gói ACK có số khối dữ liệu là 0.
3.4. Lỗi (Error)
Bản tin Error được gửi bởi máy khách hoặc máy chủ ngay khi xảy ra lỗi trong giao
tiếp TFTP. Kết quả là, các gói tin này có thể là một phản hồi cho tất cả các loại gói đã
được liệt kê. Các gói lỗi có cấu trúc như sau:
Hình 10: Cấu trúc TFTP Error.
Một gói Error có thể là sự thừa nhận của bất kì loại gói nào khác. Mã lỗi là một số
nguyên cho biết bản chất của lỗi. Thông báo lỗi kết quả giúp người dùng hiểu vấn đề.
Đây là một lý do khác tạo sap chuỗi có độ dài thay đổi này thường ở định dạng
netascii. Kết thức được đánh đấu bằng một trường 8bit bao gồm các số 0.
Value
Meanting
0
Not defined, see error message
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
41
File not found
2
Access violation
3
Disk full or allocation exceeded
4
Illegal TFTP operation
5
Unknown transfer ID
6
File already exists
7
No such user
Bảng 3: Bảng mã lỗi
CHƯƠNG 4: VẤN ĐỀ TỒN ĐỌNG VÀ XU HƯỚNG PHÁT TRIỂN
4.1. Tồn đọng
TFTP hoạt động bằng cách truyền gói UDP do đó tốc độ truyền dữ liệu nhanh hơn
nhưng bảo mật không đáng tin cậy.
- Nó khơng hỗ trợ user login.
- Chỉ dùng 1 connection.
- Khả năng của giao thức hạn chế, chỉ cho phép khả năng đọc và ghi dữ liệu.
- Giao thức không có bất kì cơ chế hiển thị thơng tin về tập tin và thư mục có sẵn
trên một máy chủ, khách phải biết tên tệp mà họ tải xuống khi kết nối.
- Khơng được mã hóa dữ liệu trên tồn mạng, khơng có xác thực. TFTP được
khuyến nghị khơng truyền những dữ liệu nhạy cảm.
Giao thức TFTP gửi tất cả dữ liệu văn bản rõ ràng trên mạng. Vì nó thường sử dụng
truyền dữ liệu cấu hình cho các thiết bị và máy khách, phải xác minh rằng khơng có dữ
liệu nhạy cảm trong dữ liệu được truyền. Mặt khác bất kì ai cũng có thể truy nhập vào
tên các người dùng và mật khẩu khác nhau được sử dụng bởi các thiết bị đó.
4.2. Xu hướng phát triển
Phần mở rộng tùy chọn được gắn vào gói Yêu cầu đọc TFTP hoặc Yêu cầu ghi
trong RFC 2347 được hiển thị trong Hình 11 bên dưới. Tiện ích mở rộng này cho
phép đàm phán diễn ra trước bất kỳ chuyển tập tin nào, chẳng hạn như kích thước
khối, ký tự và thơng tin bổ sung về q trình truyền. Chúng tơi sẽ sử dụng tiện ích mở
rộng này để cung cấp đàm phán bảo mật trước khi chuyển tập tin xảy ra; chúng ta có
BÀI TẬP NHĨM INTERNET VÀ GIAO THỨC
thể gọi nó là quá trình chứng thực TFTP.
Hình 11: Phần mở rộng tùy chọn TFTP
Sử dụng tiện ích mở rộng tùy chọn TFTP hiện có để cung cấp bảo mật như quy
trình chứng thực trước khi chuyển tập tin xảy ra. Cơ chế đàm phán tùy chọn được đề
xuất là một phần mở rộng tương thích ngược với giao thức TFTP v2. Do đó, TFTP bảo
mật (STFTP) được đề xuất có thể áp dụng cho hệ thống hoặc cơ sở hạ tầng mạng
TFTP hiện tại và nó chỉ yêu cầu vá hệ thống tối thiểu để được thực hiện giao thức Đọc
Yêu cầu như một ví dụ về việc triển khai bằng STFTP.
Các tùy chọn được thêm vào gói Yêu cầu đọc TFTP hoặc Yêu cầu ghi được hiển thị
như Hình 12.
Hình 12: Tùy chọn gói RRQ STFTP
Trường opcode chứa một tên miền 1 được sử dụng cho Yêu cầu đọc. Trường tên tập
tin tên miền Trường có chứa tên của tệp cần đọc; thay thế nó bằng chuỗi
TCG_ATTESTATION chuỗi để thể hiện giao thức bảo mật. Chế độ chuyển đổi trực
tuyến của chế độ truyền dữ liệu có chứa một trong các chuỗi; netascii, octet hoặc thư.
Ứng dụng opt11 được sử dụng để Phản hồi STFTP phiên bản OACK (hiển thị trong
Hình 13) khá giống với phản hồi STFTP L RRI RRQ, với sự khác biệt nhỏ trong đó
gói này khơng chứa trường tên tệp tên Drake. Gói OACK này sẽ phục hồi thơng tin
tương tự nếu nó được đồng ý với RRQ. Tùy chọn và giá trị bổ sung có thể được sử
dụng nếu muốn đàm phán thêm. Tuy nhiên, để duy trì sự đơn giản của TFTP, tốt hơn
là tránh quá trình đàm phán phức tạp và kéo dài. Hơn nữa, khơng có nghĩa vụ nào
trong việc sắp xếp sử dụng của opt opt1v cho đến khi opt optN bởi vì chưa có tiêu
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
chuẩn nào cho việc sử dụng bảo mật trong giao thức TFTP. Tuy nhiên, sự sắp xếp này
hoạt động miễn là Máy chủ STFTP và Máy khách STFTP từ nhận ra các thông tin
trường này.
Hình 13: Tùy chọn gói STFTP từ OACK
Kể từ năm 1990, giao thức TFTP được sử dụng rất nhiều trong hệ thống với nguồn
lực hạn chế vì nó khơng u cầu hệ điều hành hoặc kernel để thực hiện truyền dữ liệu.
Môi trường làm việc của TFTP là triển khai gần như hồn tồn bằng kim loại mà
khơng có bảo vệ an ninh để truyền dữ liệu trong máy nhúng. Các thiết bị nhúng hiện
có sử dụng giao thức TFTP trên đầu giao thức UDP / IP trong Tầng vận chuyển vì nó
nhỏ và rất nhẹ và phù hợp với việc triển khai trong phần sụn nhúng. Không thể sử
dụng TCP/ IP với Lớp cổng bảo mật (SSL) hoặc Bảo mật lớp vận chuyển (TLS) trong
tình huống này do các ràng buộc tài nguyên trong các thiết bị nhúng.
Cải thiện TFTP với tăng cường bảo mật vì các thiết bị nhúng hiện tại khơng có đủ
sức mạnh tính tốn và tài nguyên để thực hiện các hoạt động bảo mật phức tạp. STFTP
đề xuất được thiết kế để sử dụng trong phần sụn (thể hiện trong H.14). Sẽ thêm các
hướng dẫn máy nhỏ trong phần sụn UBOOT, và nó sẽ sử dụng ít hơn 1 MB bộ nhớ
khơng bay hơi (ví dụ: flash ROM) sau khi biên dịch thành tệp nhị phân.
Hình 14: Kiến trúc bảo mật STFTP
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
Phương án của STFTP là sử dụng trao đổi khóa và mã hóa dữ liệu an tồn trong
giao thức TFTP. Hình 15 cho thấy giao thức STFTP thực hiện và nó chứng minh. Để
đảm bảo thực hiện bảo mật cao, giá trị p phải là số nguyên tố cao hơn bảo mật 128 bit
vì p là khóa chung được chia sẻ; và các giá trị a và b phải đủ lớn làm khóa riêng cho
bài tốn khó theo cấp số nhân. Sản phẩm của giao thức trao đổi khóa là khóa mật mã
được sử dụng làm mã hóa khóa đối xứng AES. Do đó, để đảm bảo AES có mã hóa dữ
liệu mạnh, giá trị p phải là số nguyên tố lớn. Tuy nhiên, việc sử dụng một số lượng lớn
trong p, a và b sẽ làm giảm hiệu suất của hệ thống nhúng trong đó các ràng buộc tài
nguyên được nhúng phải được tính đến so với tính bảo mật của dữ liệu.
Hình 15: Giao thức mã hóa dữ liệu và trao đổi khóa an tồn STFTP
- Giao thức bảo mật để truyền hàng loạt dữ liệu giữa các thiết bị nhúng gọi là
STFTP đã tạo ra một khung bảo mật để tăng cường bảo mật. Tin cậy và quyền riêng
tư (STP) cho sơ sở hạ tầng hệ thống nhúng. Đề xuật sẽ khắc phục các vấn đề trong
kiểm soát, giám sát và nâng cao cấp cơ sở hạ tầng nhúng. Đề xuất sử dụng mã hóa
đối xứng nhẹ (cho dữ liệu ) và mã hóa đối xứng ( để trao đổi khóa ) trong giao thức
truyền tệp trung gian (TFTP).
- Bảo mật STFTP sử dụng ít nhất DHKE hoặc AES có thể giúp vảo vệ thông tin.
Việc triển khai của TFTP là dành cho các thiết bị nhúng như điểm truy nhập Wifi
(AP) và trạm gốc từ xa (BS).
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC
TÀI LIỆU THAM KHẢO
1. Bài Giảng Internet và Giao Thức HVCN Bưu Chính Viễn Thông (Biên soạn: TS.
Nguyễn Chiến Trinh, PGS.TS. Nguyễn Tiến Ban, ThS.Nguyễn Thị Thu Hằng).
2. A lightweight and secure TFTP protocol for smart environment
/>3. />4. protocol/?
fbclid=IwAR3HhJI30skuzgLHs8lElvCY-M9aJkI- yYobgdhv6RHjy0zo2SKlfXN7iG0
5. />6. /> />
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC