Tải bản đầy đủ (.docx) (14 trang)

Cơ chế kiểm tra độ toàn vẹn các gói tin trong giao thức

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 (272.72 KB, 14 trang )

MỤC LỤC


Giao thức mạng.........................................................................................2

1. Giao thức UDP ( User Datagram Protocol )...............................................3
2. Giao thức TCP ( Transmission Control Protocol )....................................5
3. Giao thức HTTP ( HyperText Transfer Protocol )....................................7
4. Giao thức SMTP ( Simple Mail Transfer Protocol )................................11


Câu hỏi tự đặt:.........................................................................................14

1


MẠNG VÀ TRUYỀN THÔNG

Giáo viên hướng dẫn : Nguyễn Thành Huy
Sinh viên thực hiện : Nguyễn Trung Kiên , Trần Bá Phúc
Nhóm : 10
Đề : 1
Câu hỏi : Tìm hiểu về cơ chế kiểm tra độ toàn vẹn gói tin trong các giao thức ?



Giao thức mạng
 Trước tiên chúng ta cần hiểu giao thức mạng là gì ?
Giao thức mạng – hay protocol là một tập hợp các quy tắc chuẩn dành
cho việc biểu diễn dữ liệu, phát tín hiệu, chứng thực và phát hiện lỗi dữ
liệu - những việc cần thiết để gửi thông tin qua các kênh truyền thông,


nhờ đó mà các máy tính (và các thiết bị) có thể kết nối và trao đổi thông
tin với nhau. Các giao thức truyền thông dành cho truyền thông tín hiệu
số trong mạng máy tính có nhiều tính năng để đảm bảo việc trao đổi dữ
liệu một cách đáng tin cậy qua một kênh truyền thông không hoàn hảo
(theo WikipediA ) .
 Giao thức không quy định một cách chi tiết việc thực hiện các quy tắc và
quy ước trong một hệ thống như thế nào. Cùng với các thực thể (entities)
tham gia trao đổi số liệu tạo thành Máy giao thức (Protocol
Machine/Engine). Trong đó, thực thể (entities) là một thứ gì đó tồn tại
tách biệt với thứ khác và xác định riêng nó. Ví dụ một số giao thức như:
TCP/IP, SPX/IPX, v.v…
 Các dạng liên kết của Protocol :

2


1. Connectionless

& Connection- Oriented protocols: Giao thức

hướng kết nối và giao thức không kết nối .
a) Giao thức hướng kết nối : kiểm soát được dữ liệu đường
truyền , dữ liệu được truyền theo tuần tự , nếu nhận thành
công thì nơi nhận phải gửi tín hiệu ACK ( ACKnowledge ).
Ví dụ : Giao thức TCP, SPX ,...
b) Giao thức không kết nối : không kiểm soát đường truyền , dữ
liệu không bảo đảm đến được nơi nhận , dữ liệu thường dưới
dạng Datagrams, thường được sử dụng khi xem các video

2.


hay live trực tuyến . Ví dụ : Giao thức UDP của TCP/IP ,..
Routable & non-Routable protocols: Giao thức có khả năng định
tuyến và giao thức không có khả năng định tuyến .
a) Giao thức có khả năng định tuyến : Là các giao thức cho
phép đi qua các thiết bị liên mạng như Router để xây dựng
các mạng lớn . Nói nôm na là khi có nhiều đường đi đến
một mạng cùng tồn tại , giao thức sẽ xác định con đường tốt
nhất cho gói tin .Ví dụ : Các giao thức có khả năng định
tuyến như TCP/IP, SPX/IPX, ...
b) Giao thức không có khả năng định tuyến : Ngược lại với
giao thức có khả năng định tuyến, các giao thức này không
cho phép đi qua các thiết bị liên mạng như Router để xây

dựng các mạng lớn . Ví dụ : NETBEUI ...
 Giới thiệu về một số giao thức và cơ chế kiểm tra độ toàn vẹn của các gói
tin .

1. Giao thức UDP ( User Datagram Protocol )
Giao thức UDP là một trong những giao thức cốt lõi của bộ giao thức TCP/IP .
Dùng UDP, chương trình trên mạng máy tính có thể gửi những dữ liệu ngắn
được gọi là Datagrams tới máy khác. UDP không cung cấp sự tin cậy hay thứ tự
truyền nhận , khi gửi các khối dữ liệu lớn có thể không đúng thứ tự hoặc mất mà
không có thông báo . Tuy nhiên UDP nhanh và hiệu quả hơn đối với những
3


đoạn dữ liệu nhỏ và yêu cầu khắt khe về thời gian . Do bản chất không trạng
thái của UDP nên nó hữu dụng đối với các truy vấn nhỏ với số lượng người yêu
cầu lớn . Những ứng dụng phổ biến sử dụng UDP có thể kể đến như DNS

( Domain Name System ), ứng dụng stream media , voice over IP , game trực
tuyến , ...
UDP là giao thức không kết nối , kém tin cậy vì nó không có cơ chế kiểm tra độ
tin cậy của dữ liệu . Mỗi gói tin UDP được gọi là Datagrams được phân làm 2
phần header và và data . Trong đó header bao gồm địa chỉ cổng nguồn , địa chỉ
cổng đích , độ dài của gói và checksum .

Cấu trúc một gói tin của giao thức UDP
Đặc điểm của UDP:


Giao thức UDP nằm ở tầng Transport trong mô hình OSI



Đây là một giao thứ phi kết nối, có thể truyền tải dữ liệu ngay mà không
cần thiết lập bất cứ kết nối nào



Sửa lỗi bị hạn chế do chỉ có Checksum



Là một giao thức Best-effort, truyền dữ liệu không tin cậy (Unreliable)
4





Không có chức năng khôi phục dữ liệu hay yêu cầu gửi lại dữ liệu bị mất

Cơ chế kiểm tra độ toàn vẹn của gói tin : UDP không có cơ chế kiểm tra độ toàn
vẹn của gói tin . Lỗi chỉ được phát hiện hay kiểm tra dựa vào thuật toán CRC
kiểm tra phần checksum và kiểm tra cũng rất qua loa .

2. Giao thức TCP ( Transmission Control Protocol )
Là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các
ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà
qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo
chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn
phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ
thư điện tử) đồng thời chạy trên cùng một máy chủ.
TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng
dụng kết quả, trong đó có WWW, thư điện tử và Secure Shell. Trong bộ giao
thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới và một ứng
dụng bên trên. Các ứng dụng thường cần các kết nối đáng tin cậy kiểu đường
ống để liên lạc với nhau, trong khi đó, giao thức IP không cung cấp những dòng
kiểu đó, mà chỉ cung cấp dịch vụ chuyển gói tin không đáng tin cậy. TCP làm
nhiệm vụ của tầng giao vận trong mô hình OSI đơn giản của các mạng máy tính.
Không như giao thức UDP – giao thức có thể lập tức gửi gói tin mà không cần
thiết lập kết nối, TCP đòi hỏi thiết lập kết nối trước khi bắt đầu gửi dữ liệu và
kết thúc kết nối khi việc gửi dữ liệu hoàn tất. Cụ thể, các kết nối TCP có ba pha:
 Thiết lập kết nối
 Truyền dữ liệu
 Kết thúc kết nối
5


Cơ chế kiểm tra độ toàn vẹn của các gói tin

TCP tạo ra các kết nối giữa 2 máy cần trao đổi dữ liệu (tạo một “ đường ống “
riêng ) mà qua đó các gói tin được đảm bảo truyền đến nơi nhận 1 cách đáng tin
cậy và đúng thứ tự . Nguyên tắc hoạt động :
TCP tại máy nguồn phân chia các byte dữ liệu cần truyền đi thành các đoạn
( Segment ) có kích thước thích hợp . Sau đó , TCP chuyển các gói tin này qua
giao thức IP để gửi nó qua một liên mạng đến TCP ở máy đích . TCP nguồn
kiểm tra để không có một gói tin nào bị thất lạc bằng cách gán cho mỗi gói tin
một số thứ tự ( Sequence Number ) . Khi TCP đích nhận được , họ gửi về TCP
nguồn một thông báo đã nhận ( Acknowledgement – ACK ) cho các gói tin đã
nhận thành công , Một đồng hồ tại TCP nguồn sẽ báo time-out nếu không nhận
được tin báo nhận trong khoảng thời gian bằng một RRT ( Round Trip Time ) ,
và dữ liệu ( lúc này được tính là thất lạc ) sẽ được gửi lại . TCP đích sẽ kiểm tra
Checksum xem có byte nào bị hỏng trong quá trình vận chuyển hay không ? Giá
trị checksum này được tính toán cho mỗi gói dữ liệu tại nơi gửi trước khi nó
được gửi và kiểm tra tại nơi nhận .
Ưu điểm của TCP so với UDP :



Truyền dữ liệu không lỗi ( Do có cơ chế sửa lỗi / Truyền lại )



Truyền dữ liệu đi theo đúng thứ tự .



Truyền lại dữ liệu đã mất hoặc bị thất lạc .




Loại bỏ các gói dữ liệu trùng lặp .

Cơ chế hạn chế tắc nghẽn trên đường truyền .

6


3. Giao thức HTTP ( HyperText Transfer Protocol )
HTTP - Giao thức truyền tải siêu văn bản là một trong năm giao thức chuẩn về
mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web
server) và Máy sử dụng dịch vụ (Web client) là giao thức Client/Server dùng
cho World Wide Web - WWW, HTTP là một giao thức ứng dụng của bộ giao
thức TCP/IP (các giao thức nền tảng cho Internet).
HTTP cùng với HTML là phát kiến của Tim Berners-Lee ở CERN vào năm
1989 đứng sau là các tổ chức lớn (IETF) và World Wide Web Consortium
(W3C), và đỉnh cao là việc công bố ra hàng loạt các bản RFC(Request for
Comments) .
HTTP được viết bởi ngôn ngữ HTML, từ lúc công bố đến nay đã trải qua nhiều
phiên bản 1.x (1.0, 1.1, 1.2,1.3) đến ngày nay là phiên bản 2.x
Điểm mạnh của giao thức HTTP là hỗ trợ cả hai cách : Kết nối liên tục và kết
nối không liên tục . Ví dụ : HTTP 1.0 sử dụng kết nối không liên tục . Trong khi
đó chế độ mặc định của HTTP 1.1 lại là kết nối liên tục . Ngoài ra đặc biệt là
HTTP server không nhớ thông tin về client , vì thế HTTP được gọi là Giao thức
không trạng thái .
So sánh một chút , có một vài nhược điểm trong kết nối không liên tục : Thứ
nhất , khi liên kết mới được tạo ra , phía client và server phải tạo ra vùng đệm
TCP ( buffer ) cũng như lưu trữ các lại các biến TCP . Tức là khi gửi các thông
điệp yêu cầu hay trả lời , đều tạo ra biến TCP mới và biến cũ vẫn được lưu lại .
Điều này chính là gánh nặng cho server khi có nhiều client cùng yêu cầu cùng

một lúc . Với cách kết nối liên tục , server không đóng các liên kết TCP sau khi
gửi thông điệp yêu cầu và trả lời . Các thông điệp sau đó ( giữa cùng một client
và server ) được gửi qua cùng một kết nối trước đó . Giảm thiểu được áp lực
khá nhiều cho server . Ta cùng tìm hiểu về cách thức hoạt động của HTTP
7


Thông điệp HTTP yêu cầu:

Cấu trúc chung của thông điệp HTTP yêu cầu
-

Request line: dòng đầu tiên của thông điệp HTTP yêu cầu. Request line bao
gồm có 3 trường như: cách thức (method), URL, phiên bản (version). Trường
cách thức (method) có thể chứa các giá trị khác nhau, bao gồm GET, POST,
HEAD. Phần lớn các thông điệp HTTP yêu cầu điều sử dụng phương thức GET.
Các phương thức GET được sử dụng khi trình duyệt yêu cầu một đối tượng
được xác định trong trường URL. Phương thức POST là những phương thức mà
HTTP client sử dụng khi người dùng điền vào một biểu mẫu (form) nào đó,
chẳng hạn như người dung muốn nhập một từ khóa nào đó vào google.com đề
tìm kiếm thông tin. Nếu phương thức là POST thì Entity body của thông điệp
yêu cầu sẽ chứa thông tin mà người dùng đã điền. Phương thức HEAD tương tự
như GET, nhưng Khi server nhận được yêu cầu bằng phương thức HEAD, nó sẽ
trả về thông điệp HTTP và không chứa đối tượng được yêu cầu.

-

Header line: là các dòng tiếp theo.

-


Sp: bao gồm các giá trị về khoảng trống.

-

Blank line: bao gồm các giá trị điều khiển trở về đầu dòng, xuống hang (cr,lf).

-

Entity Body (nếu có): là phần thân của thông điệp HTTP yêu cầu.
Thông điệp HTTP trả lời

8


Thông điệp HTTP trả lời có ba phần: dòng trạng thái (status line), dòng tiêu
đề (header lines), thân thông điệp (entity body). Thân (Body) là thành phần
chính của thông điệp. Status line có 3 trường: phiên bản của giao thức (version),
mã trạng thái (status code), trạng thái tương ứng (phrase) và các giá trị khoảng
trống (sp), điều khiển trở về đầu dòng, xuống hàng (cr,lf).

Cấu trúc chung của một thông điệp HTTP trả lời.
Sau đây là ví dụ về thông điệp HTTP trả lời

Ví dụ thông điệp HTTP trả lời
Trong ví dụ hình 6, cho thấy:
-

Status line thể hiện server đang sử dụng HTTP/1.1.


-

Header line bao gồm:

9




Connection: close báo cho client rằng server sẽ đóng kết kết TCP sau
khi gửi thông điệp.



Date: cho biết thời gian mà thông điệp HTTP trả lời được tạo và gửi
bởi server. Đó là thời gian mà server lấy đối tượng từ hệ thống tập tin của
nó, chèn vào thông điệp và gửi cho client.



Server: cho biết đây là Apache Web server, tương tự như User-agent
trong thông điệp yêu cầu.



Last-Modified: cho biết thời gian đối tượng được tạo hay sửa đổi lần
cuối.

-




Content-Length: cho biết số bytes của đối tượng được gửi.



Content-Type: cho biết đối tượng trong phần entity body là HTML.

Entity body chứa đối tượng yêu trong trường hợp ví dụ trong hình 9.6 được
đại diện bởi các data data data data……….

- Mã trạng thái trả lời:
Các giá trị chữ số đầu tiên của mã trang thái (status code) có 5 giá trị:



1xx_Thông tin: khôngđược sử dụng, chỉ dự phòngtrong tương lai.
2xx_Thành công: hành độngđã nhận đượcthành công và đươc chấp
nhận.



3xx_Chuyển hướng: hành động tiếp theo phải được thực hiện để hoàn
tất yêu cầu.



4xx_Clien lỗi: chứa cú pháp sai có thể không thực hiện được.




5xx_ Server lỗi: các máy server không thực hiện một yêu cầu rõ ràng
đối với các yêu cầu hợp lệ.
Một vài mã trạng thái thông dụng thường gặp:



200 OK: Yêu cầu thành công



301 Moved Permanently: đối tượng yêu cầu đã được chuyển.



400 Bad Request: server không hiểu được thông điệp yêu cầu.
10




404 Not Found: đối tượng được yêu cầu không có trong server.



505 HTTP Version Not Supported: server không hỗ trợ phiên bản giao
thức HTTP này.

4. Giao thức SMTP ( Simple Mail Transfer Protocol )
SMTP là giao thức gửi thư điện tử của tầng ứng dụng , sử dụng dịch vụ truyền

dữ liệu tin cậy của TCP để truyền thư từ Mail server của người gửi đến Mail
server của người nhận . Giống các giao thức khác của tầng ứng dụng , SMTP có
2 phía : client trên mail server người gửi và server bên kia mail server người
nhận . Tất cả các mail server đều chạy cả 2 phía client và server của SMTP .
Mail server đóng vai trò client khi gửi thư và đóng vai server khi nhận thư .
SMTP là trái tim của dịch vụ gửi thư trên Internet và được đặc tả trong RFC 821
. Như đã nói trên , SMTP truyền các thông điệp ( thư ) từ mail server của người
gửi đến mail server của người nhận . SMTP ra đời trước HTTP khá lâu ( theo
RFC đặc tả thì SMTP có từ năm 1982 ) . SMTP có rất nhiều ưu điểm nên được
hầu hết các Mail server trên Internet sử dụng . Tuy nhiên đây lại là một kĩ thuật
cũ nên không tránh khỏi một số lạc hậu . Ví dụ SMTP yêu cầu phần thân của tất
cả các thông điệp Email phải được mã hóa bằng ASCII 7 bit . Gây ra việc mất
thời gian khi dữ liệu ở dạng nhị phân phải trải qua quá trình mã hóa để gửi đi
sau đó khi đến đích phải mã hóa trở về dạng nhị phân để có thể sử dụng được
những dữ liệu đó . Trong khi đó HTTP không yêu cầu dữ liệu đa phương tiện
phải mã hóa sang ASCII trước khi truyền .
Dưới đây là hoạt động cơ bản của Giao thức SMTP :
Phương thức hoạt động của SMTP:
-

Để mô tả hoạt động cơ bản của giao thức SMTP một cách dễ hiểu ta xem xét
một hoạt cảnh phổ biến “An gửi thông điệp cho Bình” ở hình

11


Hoạt cảnh gửi email của An và Bình
 Bước 1: An khởi động useragent của mình, cung cấp địa chỉ e-mail của
Bình, soạn thông điệp và chỉ thị user agent gửi mail.
 Bước 2: User agent của An gửi thông điệp đến mail server của An và

thông điệp được đặt trong hàng đợi.
 Bước 3: SMTP client chạy trên mail server của An phát hiện ra thông
điệp trong hàng đợi và tiến hành mở kết nối TCP đến SMTP server chạy
trên mail server của Bình.
 Bước 4: Sau khi thực hiện bắt tay chào hỏi (handshaking), SMTP
client của An sẽ gửi thông điệp của An đến kết nối TCP.
 Bước 5: Tại mail server của Bình, SMTP server nhận được thông điệp và
lưu lại trên mailbox.
 Bước 6: Khi Bình khởi động user agent của mình thì sẽ thấy mail của An
trong mailbox.
Lưu ý:
 SMTP không sử dụng các mail server trung gian để gửi thư, mà chỉ sử
dụng một kết nối TCP trực tiếp giữa hai mail server ngay cả khi hai mail
server cách nhau một khoản cách rất xa. Ví dụ: mail server của An ở
thành phố Hồ Chí Minh và mail server của Bình ởMát-xcơ-va (thủ đô của
Nga) thì chỉ có các kết nối TCP trực tiếp giữa hai mail server. Khi mail
12


server của Bình bận, thì thông điệp sẽ được lưu trong hàng đợi của mail
server An và chờ đợi để gửi lại tin nhắn.
 SMTP truyền thông điệp mail qua ba pha: handshaking (chào hỏi), truyền
thông điệp, đóng kết nối.
 Pha handshaking: đầu tiên, SMTP client (chạy trên mail server bên gửi)
thiết lập kết nối TCP trên cổng 25 tới SMTP server (chạy trên mail server
bên nhận). Nếu SMTP server gặp sự cố thì client sẽ cố gắng kết nối lại.


Khi kết nối được thiết lập, SMTP server và SMTP client thực hiện một
số chào hỏi, SMTP client sẽ cho biết địa chỉ email của người gửi và địa

chỉ email của người nhận.

 Pha truyền thông điệp: sau cuộc chào hỏi, SMTP client tiến hành gửi
thông điệp trên đường truyền tin cậy TCP.
 Pha đóng kết nối: Nếu client muốn gửi tiếp tục gửi thông điệp thì lặp lại
quá trình trên trong cùng kết nối TCP, còn không thì chỉ thị TCP đóng kết
nối
So sánh giao thức SMTP và HTTP :
Cả 2 giao thức đều được sử dụng để gửi file giữa các máy tính . HTTP chuyển
file hoặc đối tượng từ Web server tới Web client ( Trình duyệt Web ) , SMTP
chuyển file ( thư điện tử ) giữa các Mail server . Khi truyền file cả 2 giao thức
đều sử dụng kết nối liên tục
Điểm khác biệt cơ bản :
 Giao thức HTTP là giao thức kéo ( Pull protocol ) – client kéo thông tin
từ server về . Phía nhận ( client ) là phía thiết lập kết nối TCP .
 Giao thức SMTP là giao thức đẩy ( Push protocol ) – client đẩy thông tin
lên server . Phía gửi ( client ) là phía thiết lập kết nối TCP .
 Ngoài dữ liệu văn bản , thông điệp còn có thể chứa các kiểu dữ liệu khác
như âm thanh, hình ảnh . HTTP đặt các đối tượng này trong thông điệp
13


riêng rẽ để gửi . Với SMTP thì đặt tất cả các đối tượng trên trong 1 thư
điện tử để gửi đi .


Câu hỏi tự đặt:
 Trần Bá Phúc:
 UDP định đường đi cho packet tại vị trí xác định bằng cách
sử dụng số hiệu cổng được xác định trong header của

datagram, vậy số hiệu cổng là vô hạn và không có quy định?
 Có phải mọi cổng đầu nên và có thể sử dụng trong UDP?
 Trong TCP, giả sử Sender gửi quá nhiều dữ liệu cho
Receiver thì sao?
 Cơ chế truyền lại các gói tin đã mất của TCP có phải là tối
ưu?
 Giữa TCP và UDP thì giao thức nào nên sử dụng hơn?
 Nguyễn Trung Kiên
 CERN là gì?
 Tương tác user – server trong HTTP?
 Số hiệu cổng HTTP thường dùng?
 Số hiệu cổng thường dùng của SMTP?
 Lịch sử của SMTP?

14



×