Lớp giao vận (Transport layer)

Một phần của tài liệu XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN GIA DỤNG QUA MẠNG (Full Code) (Trang 25 - 32)

II. M ục đích, y ê uc ầu thiết kế và lý do ch ọn đề t ài

I.1.2.3.Lớp giao vận (Transport layer)

- Lớp vận chuyển có 2 nhiệm vụ như sau :

+ Cung cấp dịch vụ cho lớp quá trình bên trên nó và các ứng dụng cùng với giao diện thích hợp cho mạng.

+ Phân phát message của các lớp trên giữa các host.

- Lớp giao thức ngay trên lớp Internet là Host to Host Transport Layer hay thường gọi là Transport Layer. Hai giao thức quan trọng này là Transmission Control Protocol (TCP) và User Datagram Protocol (UDP). TCP cung cấp dịch vụ chuyển giao thông tin kết nối (connection oriented), nó bao gồm cả kiểm tra và sửa lổi. UDP cung cấp dịch vụ kém tin cậy hơn (unreliable) và không thể thiết lập liên kết trước (connectionless). Cả hai giao thức đều chuyển giao thông tin giữa lớp ứng dụng và lớp

Internet. Chương trình ứng dụng có thể lựa chọn dịch vụ nào thích hợp với ứng dụng của nó.

- IP phân phát một datagram từ một máy chủ nguồn đến máy chủ đích, tạo thành một nghi thức máy chủ-máy chủ. Các hệ đểu hành ngày nay trợ giúp môi trường xữ lý nhiều người sử dụng. Một chương trình thực thi gọi là process. Một máy chủ đang nhận một datagram cũng có thể chạy nhiều process đồng thời.

- Các nghi thức giao vận của bộ nghi thức TCP/IP định nghĩa một tập kết nối khái niệm cho các process riêng được gọi là các ports nghi thức, hay đơn giản hơn là ports. Một ports nghi thức là mộ điểm đến (thường là một bộ đệm) để chứa dữ liệu dùng cho một process cụ thể. Giao tiếp giữa các processes và càc ports tương ứng được cung cấp bởi hệ điều hành của máy chủ.

- IP là một nghi thức máy chủ - máy chủ, có nghỉa là nó có thể nhận phát gói từ một thiết bị vật lý đến thiết bị vật lý khác. Các nghi thức mức giao vận của TCP/IP là các nghi thức port to port làm việc ớ phía trên của các nghi thức IP để phân phát gói từ port gốc đến port đích tại cuối truyến.

- Mỗi port được định nghĩa bằng một số nguyên dương được mang trong header của gói lớp giao vận. Một khung tại lớp giao vận dùng địa chỉ port 16 bits, đủ dùng cho các ports từ 0 đến 65535

Giao thức UDP (User Datagram Protocol)

UDP (User Datagram Protocol) là một nghi thức không tin cậy, chỉ cố gắng hết

mình để phân phát dữ liệu. UDP chỉ cung cấp cơ bản cần thiết cho phân phát end-to- end. Nó không cung cấp bất cứ chức năng đánh số thứ tự nào và do đó không thể làm rõ gói nào bị hỏng khi báo cáo về lỗi. UDP có thể khám phá ra một lỗi đã xuất hiện tức là ICMP có thể thông báo phía gửi là một user datagram đã hỏng và bị loại. Tuy nhiên nó không có khả năng biết là gói nào bị mất. UDP cho phép truyền dữ liệu trên mạng với chi phí thấp do sự phân phát dữ liệu không tin cậy. Các dịch vụ dùng UDP là TFTP, DSN, SNMP…

P o r t 1 P o r t 2 P o r t 3

U D P : D e m u l t i p l e x i n g B a s e d o n P o r t

Gói thông tin UDP

Mỗi gói thông tin UDP gọi là một Datagram được phân làm 2 phần header và data trong đó header chứa thông tin về địa chỉ cổng nguồn, địa chỉ cổng đích, độ dài của gói và checksum.

Chech sum: 16 bits là số bù 1 của tổng bù 1của các 2 bytes trong phần header, dữ liệu và phần header giả (pseudo header). Nếu phần header và text chứa một số lẻ bytes thì byte cuối cùng được đệm vào bên phải với 0 để đủ 16 bit cho mục đích Checksum. Phấn đệm thì không được truyền như một phần của header.

S o u r c e p o r t D e s t i n a t i o n p o r t M e s s a g e l e n g t h C h e c k s u m D a t a D a t a D a t a D e s t i n a t i o n A d d r e s s S o u r c e A d d r e s s T y p e f i e l d I P h e a d e r U D P d a t a C R C

Hình II. 5. Đóng gói UDP vào khung Ethernet

Phân kênh, hợp kênh và Ports

Phân kênh, hợp kênh chính là việc lựa chọn những tiến trình ứng dụng trong một số lớn các tiến trình sử dụng giao thức UDP, người ta chọn ra những ứng dụng tương ứng với gói thông tin chuyển đến.

U D P D a t a g r a m a r r i v e s

I P L a y e r

Việc này giải quyết bằng “cơ chế cổng” Port mechanism cơ chế này gắn mỗi ứng dụng với một con số gọi là port number và mỗi gói thông tin mà nó gửi đi đều mang một trường SOURCE PORT.

Tại nơi nhận, dựa vào thông tin trường DESTINATION PORT mà gói thông tin đó được truyền đến cổng tương ứng với ứng dụng. Ví dụ mọi bảng TCP/IP đều có dịch vụ FTP (File Transfer Protocol) gắn với cổng 21 và TFTP (Trivial File Transfer Protocol) gắn với cổng 69 của UDP.

Việc sử dụng các port number cũng có nhiều cách

Dùng những cổng dành riêng cho từng ứng dụng đã được đăng ký trước (Well- known port assignment).

Một port number sẽ được sinh ra khi có một ứng dụng đòi hỏi (Dynamic binding).

Cách tiếp cận kết hợp các kiểu trên (Hybrid) trong đó người ta vừa sử dụng Well-known port assignment cho một số port number vừa có thể định nghĩa các port number khác khi cần thiết. Một khung tại lớp giao vận dùng địa chỉ port 16 bits, đủ dùng cho các ports từ 0 đến 65535.

Vì sao người lập trình ứng dụng lựa chọn UDP như một dịch vụ giao vận? Có một số lý do:

Một số lượng lớn các gói thông tin nhỏ được truyền, thông tin cho việc kết nối và sửa lỗi có thể lớn hơn nhiều so với thông cần truyền. Trong trường hợp này, UDP là giải pháp hiệu quả nhất. (adsbygoogle = window.adsbygoogle || []).push({});

Những ứng dụng kiểu “Query-Respon” cũng rất phù hợp với UDP, câu trả lời có thể dùng làm sự xác nhận của một câu hỏi. Nếu không nhận được sự trả lời sau một thời gian nào đó, ứng dụng chỉ cần gửi đi một câu hỏi khác.

Một số ứng dụng đã tự nó cung cấp công nghệ riêng để chuyển giao thông tin cậy, và không đòi hỏi dịch vụ này của transport layer.

Đây là giao thức đơn giản và truyền nhanh, nên nó thường được sử dụng trong các ứng dụng điều khiển thời gian thực. Do đó trong Luận Văn này chọn giao thức UDP làm giao thức truyền khung điều khiển của lớp trên.

Giao thức TCP (User Datagram Protocol)

TCP (Transmission Control Protocol) là một nghi thức tin cậy. TCP là một

nghi thức port-to-port tin cậy và định hướng kết nối. TCP tạo ra một mạch ảo giữa phía gửi và nhận trong suốt quá trình truyền.TCP bắt đầu truyền bằng cách thông báo cho phía nhận biết (thiết lập kết nối) và khi kết thúc truyền thì gửi một kết thúc kết nối. Nó cố gắng phân phát dữ liệu đến đích, kiểm tra lỗi, truyền lại nếu cần, thông báo lỗi cho lớp trên nếu truyền không thành công. Do đó, việc sử dụng TCP cũng làm tăng chi phí.

TCP cung cấp đầy đủ các dịch vụ lớp giao vận đối với áp dụng. TCP là một nghi thức port to port tin cậy và định hướng kết nối. TCP tạo ra một mạch ảo giửa phía gửi và nhận trong suốt quá trình truyền. TCP bắt đầu truyến bằng cách thông báo cho phía nhận biết (thiết lập kết nối) và khi kết thúc truyền thì gửi kết thúc kết nối.

Sự tin cậy của TCP đảm bảo bằng việc phát hiện lỗi và truyền lại các khung bị hỏng: tất cả các đọan phải được nhận và xác nhận trước khi xem như cuộc truyến là hòan thành và mạch ảo được lọai bỏ.

Tại đầu gửi, TCP chia cuộc truyền thành các đơn vị dữ liệu nhỏ hơn và đóng gói thành các khung gọi là đọan. Mỗi đọan bao gồm việc đánh số nhằm sềp lại theo thứ tự khi nhận. Các đọan được tải qua mạng bên trong các IP datagram. Tại đầu nhận, TCP gom mỗi datagram khi chúng đến và xếp lại theo thứ tự dựa vào các số đã được đánh.

TCP gởi trên internet các datagram. Header của Internet Protocol mang những trường thông tin bao gồm địa chỉ nguồn và đích của máy chủ. TCP header theo sau header của internet và cung cấp thông tin cụ thể tới nghi thức TCP.

S o u r c e p o r t D e s t i n a t i o n p o r t S e q u e n c e N u m b e r A c k n o w l e d g m e n t N u m b e r D a t a o f f s e t r e s e r v e d U R G A C K P S H R S T S Y N F I N W i n d o w C h e c k s u m U r g e n t p o i n t e r O p t i o n P a d d i n g D a t a Hình II. 7. Định dạng Gói TCP

- Source port: 16 bits địa chỉ nguồn. - Destination: 16 bits địa chỉ đích.

- Sequence Number: 32 bits một dòng dữ liệu từ chương trình áp dụng có thể được

chia thành hai hay hoặc nhiều đọan TCP. Số thứ tự chỉ ra vị trí của dữ liệu trong dòng dữ liệu gốc.

- Acknowledgment Number: 32 bits dùng để xác nhận có nhận dữ liệu từ thiết bị

khác. Số này chỉ xác nhận khi bit ACK trong trường điều khiển được đặt. Trong trường hợp này, số thứ tự chỉ ra mong đợi kế tiếp.

- Data offset: 4 bits chỉ ra nơi dữ liệu bắt đầu. - Reserved: 6 bits dành cho tương lai.

- Control bits: 6 bits (từ trái sang phải).

- URG: khi được đặt chỉ ra tính hợp lệ của trường urgent pointer. Cả bit urgent

và con trỏ chỉ ra rằng dữ liệu trong đọan là khẩn cấp.

- ACK: khi được đặt chỉ ra tính hợp lệ của trường Acknowledgment number.

Cả hai đều được dùng với nhau và có chức năng khác nhau tùy vào lọai đọan.

- PSH: được dùng thông báo phía gửi là cần một tốc độ trung bình cao hơn. - RST: dùng để xóa kết nối khi có nhấm lẫn số thứ tự.

- SYN: dùng để đồng bộ việc đánh số cho ba lọai đọan: yêu cấu kết nối, khẳng định

kết nối(với bit ACK), và xác nhận khẳng định (với bit ACK được đặt).

thúc.

- FIN: được dùng cho kết thúc nối cho ba đọan và xác nhận của khẳng định kết

- Window: 16 bits số dữ liệu được chỉ ra trong trường acknowledgment mà phía gửi

đang đảm nhận.

- Chech sum: 16 bits là số bù 1 của tổng số bù 1 của 16 bytes trong phần header (adsbygoogle = window.adsbygoogle || []).push({});

và text. Nếu phần header và text chứa một số lẻ bytes header và text được kiểm tra, thì byte cuối cùng được đệm vào bên phải với 0 để đủ 16 bytes cho mục đích Checksum. Phần đệm thì không được truyền như một phần của header. Trong khi tính checksum, tự bản thân của trường checksum được thay thế với 0 (có nghĩa là chechsum sẽ thay thế những bit 0 này).

Chechsum cũng bao gồm 96 bit header giả (Pseudo header) được thêm vào đầu header của TCP. Header giả này chứa địa chỉ nguồn,địa chỉ đích, nghi thức, chiều dài TCP. Phần này được đưa ra để bảo vệ TCP trong việc truyền lạc khung. Những thông tin này được mang bởi Internet Protocol và được truyền qua TCP/Network interface trong arguments hoặc kết quả của việc gọi bởi TCP trên IP.

S o u r c e a d d r e s s

D e s t i n a t i o n a d d r e s s

Z e r o P T C L T C P L e n g t h

Hình II. 8. Khung TCP

- TCP length là chiều dài byte của header và chiều dài dữ liệu nhưng nó không

bao gồm 12 bytes header giả.

- Urgent pointer (16 bits): Trường này giao tiếp với giái trị hiện hành của Urgent pointer như là một mức offset từ số tuần tự trong khung. Urgent pointer luôn chỉ đến giá trị số bytes dữ liệu khẩn. Gía trị của trường này được tính khi tín hiệu điều khiển URG được đặt.

SVTH : 31

Một phần của tài liệu XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN GIA DỤNG QUA MẠNG (Full Code) (Trang 25 - 32)