Tầng truy cập mạng tương ứng với tầng vật lý và tầng liên kết dữ liệu trong mô hình OSI, có trách nhiệm đưa dữ liệu tới và nhận dữ liệu từ phương tiện truyền dẫn. Tầng này gồm các thiết bị phần cứng vật lí chẳng hạn như Card Mạng và Cáp Mạng.
Một Card Mạng chẳng hạn card Ethernet chứa 1 số HEX 12 kí tự (00-18-37-03- C0-F4) được gọi là Địa Chỉ MAC (Media Access Control) hay Địa Chỉ Truy Nhập Phương Tiện . MAC đóng vai trò quan trọng trong việc gán địa chỉ và truyền dữ liệu.
84 Một số giao thức tiêu biểu thuộc tầng này gồm:
+ CSMA/CD + Ethernet + Token Ring + Token Bus + FDDI 4.1.2.2. Tầng mạng (Internet Layer)
Nằm bên trên tầng truy cập mạng, tương ứng với tầng mạng (Network Layer) trong mô hình OSI. Tầng này có chức năng gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu. 4 giao thức quan trọng nhất trong tầng này gồm:
+ IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích.
+ ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC.
+ ICMP (Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng.
+ IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng (Multicast)
85
4.1.2.3. Tầng vận chuyển (Transport Layer)
Tầng vận chuyển ứng với tầng vận chuyển trong mô hình OSI, có chức năng thiết lập phiên truyền thông giữa các máy tính và quy định cách thức truyền dữ liệu. Hai giao thức trong tầng này gồm:
- UDP (User Datagram Protocol): Còn gọi là Giao Thức Gói Người Dùng. UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu 1 cách tin cậy. Các ứng dụng dùng UDP thường chỉ truyền những gói có kích thước nhỏ, độ tin cậy dữ liệu phụ thuộc vào từng ứng dụng
- TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu 1 cách tin cậy. TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã nhận.
4.1.2.4. Tầng ứng dụng (Applycation Layer)
Tầng ứng dụng ứng với các tầng Session, Presentation và Aplication trong mô hình OSI. Tầng ứmg dụng hỗ trợ các ứng dụng cho các giao thức tầng Host to Host. Cung cấp giao diện cho người sử dụng mô hình TCP/IP. Các giao thức ứng dụng gồm TELNET(truy nhập từ xa), FTP (truyền File), SMTP (thư điện tử),...
4.1.3. Quá trình đóng gói dữ liệu
86 Cũng như mô hình OSI, trong mô hình kiến trúc TCP/IP mỗi tầng có một cấu trúc dữ liệu riêng, độc lập với cấu trúc dữ liệu được dùng ở tầng trên hay tầng dưới kề nó. Khi dữ liệu được truyền từ tầng ứng dụng cho đến tầng vật lý, qua mỗi tầng được thêm phần thông tin điều khiển (Header) đặt trước phần dữ liệu được truyền, đảm bảo cho việc truyền dữ liệu chính xác. Việc thêm Header vào đầu các gói tin khi đi qua mỗi tầng trong quá trình truyền dữ liệu được gọi là Encapsulation. Quá trình nhận dữ liệu sẽ diễn ra theo chiều ngược lại, khi qua mỗi tầng, các gói tin sẽ tách thông tin điều khiển thuộc nó trước khi chuyển dữ liệu lên tầng trên.
4.1.4. Quá trình phân mảnh dữ liệu
Dữ liệu có thể được truyền qua nhiều mạng khác nhau, kích thước cho phép cũng khác nhau. Kích thước lớn nhất của gói dữ liệu trong mạng gọi là đơn vị truyền cực đại MTU (Maximum Transmission Unit). Trong quá trình đóng gói Encapsulation, nếu kích thước của một gói lớn hơn kích thước cho phép, tự động chia thành nhiều gói nhỏ và thêm thông tin điều khiển vào mỗi gói. Nếu một mạng nhận dữ liệu từ một mạng khác, kích thước gói dữ liệu lớn hơn MTU của nó, dữ liệu sẽ được phân mảnh ra thành gói nhỏ hơn để chuyển tiếp. Quá trình này gọi là quá trình phân mảnh dữ liệu Fragment.
Quá trình phân mảnh làm tăng thời gian xử lý, làm giảm tính năng của mạng và ảnh hưởng đến tốc độ trao đổi dữ liệu trong mạng. Hậu quả của nó là các gói bị phân mảnh sẽ đến đích chậm hơn so với các gói không bị phân mảnh. Mặt khác, vì IP là một giao thức không liên kết, độ tin cậy không cao, khi một gói dữ liệu bịphân mảnh bị mất thì tất cảcác mảnh sẽ phải truyền lại. Vì vậy phần lớn các ứng dụng tránh không sử dụng kỹ thuật phân mảnh và gửi các gói dữ liệu lớn nhất mà không bị phân mảnh, giá trị này là Path MTU.
4.2 Một số giao thức cơ bản của bộ giao thức TCP/IP
4.2.1. Giao thức điều khiển truyền TCP (Transmission Control Protocol)
4.2.1.1. Giới thiệu
TCP là một giao thức hướng liên kết (Connection Oriented), tức là trước khi truyền dữ liệu, thực thể TCP phát và thực thể TCP thu thương lượng để thiết lập một kết nối logic tạm thời, tồn tại trong quá trình truyền số liệu. TCP nhận thông tin từ tầng trên, chia dữ
87 liệu thành nhiều gói theo độ dài quy định và chuyển giao các gói tin xuống cho các giao thức tầng mạng (Tầng IP) để định tuyến. Bộ xử lý TCP xác nhận từng gói, nếu không có xác nhận gói dữ liệu sẽ được truyền lại. Thực thể TCP bên nhận sẽ khôi phục lại thông tin ban đầu dựa trên thứ tự gói và chuyển dữ liệu lên tầng trên.
TCP cung cấp khả năng truyền dữ liệu một cách an toàn giữa các thành trong liên mạng. Cung cấp các chức năng kiểm tra tính chính xác của dữ liệu khi đến đích và truyền lại dữ liệu khi có lỗi xảy ra. TCP cung cấp các chức năng chính sau:
- Thiết lập, duy trì, giải phóng liên kết giữa hai thực thể TCP. - Phân phát gói tin một cách tin cậy.
- Tạo số thứ tự (Sequencing) các gói dữ liệu. - Điều khiển lỗi.
- Cung cấp khảnăng đa kết nối cho các quá trình khác nhau giữa thực thể nguồn và thực thể đích thông qua việc sử dụng số hiệu cổng.
- Truyền dữ liệu theo chế độ song công (Full-Duplex). TCP có những đặc điểm sau:
- Hai thực thể liên kết với nhau phải trao đổi, đàm phán với nhau về các thông tin liên kết. Hội thoại, đàm phán nhằm ngăn chặn sựtràn lụt và mất dữ liệu khi truyền. - Hệ thống nhận phải gửi xác nhận cho hệ thống phát biết rằng nó đã nhận gói dữ
liệu.
- Các Datagram IP có thể đến đích không đúng theo thứ tự , TCP nhận sắp xếp lại. - Hệ thống chỉ phát lại gói tin bị lỗi, không loại bỏ toàn bộ dòng dữ liệu.
4.2.1.2. Hoạt động của giao thức TCP
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.
88
a. Thiết lập kết nối trong giao thức TCP
Thiết lập liên kết TCP: Được thực hiện trên cơ sở phương thức bắt tay ba bước (Tree - Way Handsake):
Bước 1: Như hình 4.4 yêu cầu liên kết luôn được trạm nguồn khởi tạo tiến trình bằng cách gửi một gói TCP với cờ SYN=1 và chứa giá trị khởi tạo số tuần tự ISN của Client. Giá trị ISN này là một số 4 byte không dấu và được tăng mỗi khi liên kết được yêu cầu (giá trị này quay về 0 khi nó tới giá trị 232). Trong thông điệp SYN này còn chứa số hiệu cổng TCP của phần mềm dịch vụ mà tiến trình trạm muốn liên kết.
Mỗi thực thểliên kết TCP đều có một giá trị ISN mới, sốnày được tăng theo thời gian. Vì một liên kết TCP có cùng số hiệu cổng và cùng địa chỉ IP được dùng lại nhiều lần, do đó việc thay đổi giá trị ISN ngăn không cho các liên kết dùng lại các dữ liệu đã cũ (Stale) vẫn còn được truyền từ một liên kết cũ và có cùng một địa chỉ liên kết .
Hình 4.4. Quá trình thiết lập và kết thúc liên kết TCP 3 bước
Bước 2: Khi thực thể TCP của phần mềm dịch vụ nhận được thông điệp SYN, nó gửi lại gói SYN cùng giá trị ISN của nó và đặt cờ ACK=1 trong trường hợp sẵn sàng
89 nhận liên kết . Thông điệp này còn chứa giá trị ISN của tiến trình trạm trong trường hợp số tuần tự nhận để báo rằng thực thể dịch vụ đã nhận được giá trị ISN của tiến trình trạm. Bước 3: Tiến trình trạm trả lời lại gói SYN của thực thể dịch vụ bằng một thông báo trả lời ACK. Bằng cách này, các thực thể TCP trao đổi một cách tin cậy các giá trị ISN của nhau và có thể bắt đầu trao đổi dữ liệu. Không có thông điệp nào trong ba bước trên chứa bất kỳ dữ liệu gì , tất cả thông tin trao đổi đều nằm trong phần Header của thông điệp TCP.
b. Truyền và nhận dữ liệu
Sau khi liên kết được thiết lập giữa một cặp thực thểTCP, các thực thể truyền dữ liệu. Liên kết TCP dữ liệu có thể được truyền theo hai hướng. Khi nhận một khối dữ liệu cần chuyển đi từ người sử dụng, TCP sẽ lưu trữ tại bộ đệm. Nếu cờ PUST được xác lập thì toàn bộ dữ liệu trong bộ đệm sẽ được gửi đi dưới dạng TCP Segment. Nếu PUST không được xác lập thì dữ liệu trong bộ đệm vẫn chờ gửi đi khi có cơ hội thích hợp.
Bên nhận, dữ liệu sẽ được gửi vào bộ đệm. Nếu dữ liệu trong đệm đựợc đánh dấu bởi cờ PUST thì toàn bộ dữ liệu trong bộ đệm sẽ được gửi lên cho người sử dụng. Ngược lại, dữ liệu vẫn được lưu trong bộ đệm. Nếu dữ liệu khẩn cần phải chuyển gấp thì cờ URGENT được xác lập và đánh dấu dữ liệu bằng bit URG để báo dữ liệu khẩn cần được chuyển gấp.
c. Kết thúc liên kết
Khi có nhu cầu kết thúc liên kết TCP, ví dụ A gửi yêu cầu kết thúc liên kết với FIN=1. Vì liên kết TCP là song công (Full-Duplex) nên mặc dù nhận được yêu cầu kết thúc liên kết của A, thực thể B vẫn có thể tiếp tục truyền cho đến khi B không còn số liệu để gửi và thông báo cho A bằng yêu cầu kết thúc liên kết với FIN=1. Khi thực thể TCP đã nhận được thông điệp FIN và sau khi đã gửi thông điệp FIN của mình, liên kết TCP thực sụ kết thúc. Như vậy cả hai trạm phải đồng ý giải phóng liên kết TCP bằng cách gửi cờ FIN=1 trước khi chấm dứt liên kết xẩy ra, việc này bảo đảm dữ liệu không bị thất lạc do đơn phương đột ngột chấm dứt liên lạc.
90
4.2.1.3. Điều khiển lưu lượng trong TCP
Cơ chế cửa sổ động là một trong các phương pháp điều khiển thông tin trong mạng máy tính. Độ lớn của cửa sổ bằng số lượng các gói dữ liệu được gửi liên tục mà không cần chờ thông báo trả lời về kết quả nhận từng gói dữ liệu đó. Độ lớn cửa sổ quyết định hiệu suất trao đổi dữ liệu trong mạng. Nếu chọn độ lớn của sổ cao thì có thể gửi được nhiều dữ liệu trong cùng một đơn vị thời gian. Nếu truyền bị lỗi, dữ liệu phải gửi lại lớn thì hiệu quả sử dụng đường truyền thấp. Giao thức TCP cho phép thay đổi độ lớn của sổ một cách động, phụ thuộc vào độ lớn bộ đệm thu của thực thể TCP nhận.
Cơ chế phát lại thích nghi: Để đảm bảo kiểm tra và khắc phục lỗi trong việc trao đổi dữ liệu qua liên mạng, TCP phải có cơ chế đồng hồ kiểm tra phát (Time Out) và cơ chế phát lại (Retransmission) mềm dẻo, phụ thuộc vào thời gian trễ thực của môi trường truyền dẫn cụ thể. Thời gian trễ toàn phần RTT (Round Trip Time) được xác định bắt đầu từ thời điểm phát gói dữ liệu cho đến khi nhận được xác nhận của thực thể đối tác, là yếu tố quyết định giá trị của đồng hồ kiểm tra phát Tout. Như vậy Tout phải lớn hơn hoặc bằng RTT.
Cơ chế điều khiển tắc nghẽn: Hiện tương tắc nghẽn dữ liệu thể hiện ở việc gia tăng thời gian trễ của dữ liệu khi chuyển qua mạng. Để hạn chế khả năng dẫn đến tắc nghẽn dữ liệu trong mạng, điều khiển lưu lượng dựa trên việc thay đổi độ lớn của sổ phát.
4.2.1.4. Cấu trúc gói dữ liệu TCP
Đơn vị dữ liệu sử dụng trong giao thức TCP được gọi là Segment. Khuôn dạng và nội dung của gói tin TCP được biểu diễn như hình 4.5. Một gói tin TCP gồm có 2 phần là Header và phần dữ liệu.
Phần header có 11 trường trong đó 10 trường bắt buộc. Trường thứ11 là tùy chọn có tên là: options
- Cổng nguồn (Source Port): 16 bít, số hiệu cổng nguồn.
- Cổng đích (Destination Port): Độ dài 16 bít, chứa số hiệu cổng đích. - Sequence Number: 32 bits, số thứ tự của gói số liệu khi phát.
91 - Offset (4 bíts): Độ dài Header gói tin TCP.
- Reserved (6 bít) lưu lại: Lấp đầy bằng 0 để dành cho tương lai. - Control bits: Các bits điều khiển
+ URG : Vùng con trỏ khẩn có hiệu lực.
+ ACK : Vùng báo nhận (ACK number) có hiệu lực .
+ PSH: Chức năng PUSH.
+ RST: Khởi động lại (reset) liên kết.
+ SYN : Đồng bộ các số liệu tuần tự (sequence number).
+ FIN : Không còn dữ liệu từ trạm nguồn .
- Window (16bits): Số lượng các Byte dữ liệu trong vùng cửa sổ bên phát. - Checksum (16bits): Mã kiểm soát lỗi (theo phương pháp CRC).
- Urgent Pointer (16 bits): Số thứ tự của Byte dữ liệu khẩn, khi URG được thiết lập . - Option (độdài thay đổi): Khai báo độdài tối đa của TCP Data trong một Segment.
92
4.2.2. Giao thức gói tin người dùng UDP (User Datagram Protocol)
4.2.2.1. Giới thiệu về giao thức UDP
UDP là giao thức không liên kết (Connectionless). UDP sử dụng cho các tiến trình không yêu cầu vềđộ tin cậy cao, không có cơ chế xác nhận ACK, không đảm bảo chuyển giao các gói dữ liệu đến đích và theo đúng thứ tự và không thực hiện loại bỏ các gói tin trùng lặp. Nó cung cấp cơ chế gán và quản lý các số hiệu cổng để định danh duy nhất cho các ứng dụng chạy trên một Client của mạng và thực hiện việc ghép kênh. UDP thường sử dụng kết hợp với các giao thức khác, phù hợp cho các ứng dụng yêu cầu xử lý nhanh như các giao thức SNMP và VoIP.
- Giao thức SNMP (Simple Network Management Protocol) là giao thức quản lý mạng phổ biến, khả năng tương thích cao. SNMP cung cấp thông tin quản trị MIB (Management Information Base) và hỗ trợ quản lý và giám sát Agent.
- VoIP ứng dụng UDP: Kỹ thuật VoIP (Voice over IP) được thừa kế kỹ thuật giao vận IP. Các mạng IP sử dụng hai loại giao thức định tuyến: định tuyến vectơ khoảng cách và định tuyến trạng thái liên kết. Hệ thống đảm bảo tính năng thời gian thực, tốc độ truyền cao, các gói thoại không có trễ quá mức và độ tin cậy cao.
4.2.2.2. Cấu trúc gói tin UDP
Trong bộ giao thức TCP/IP, UDP cung cấp một giao diện rất đơn giản giữa tầng mạng bên dưới và tầng ứng dụng phía trên. UDP không đảm bảo cho các tầng phía trên thông điệp đã được gửi đi và người gửi cũng không có trạng thái thông điệp UDP một khi đã được gửi.
93 Phần header của UDP chỉ chứa 4 trường dữ liệu, trong đó có 2 trường là tùy chọn là trường Source port và Checksum.
Source port: Trường này xác định cổng của người gửi thông tin và có ý nghĩa nếu muốn nhận thông tin phản hồi từ người nhận. Nếu không dùng đến thì đặt nó bằng 0.
Destination port: Trường xác định cổng nhận thông tin, và trường này là cần thiết.
Length: Trường có độ dài 16 bit xác định chiều dài của toàn bộ datagram: phần header và dữ liệu. Chiều dài tối thiểu là 8 byte khi gói tin không có dữ liệu, chỉ có header.
Checksum: Trường checksum 16 bit dùng cho việc kiểm tra lỗi của phần