B.1. Bộ giao thức TCP/IP
Các máy tính khi truyền tin cho nhau phải thông qua một giao thức. Có nhiều giao thức truyền thông trên mạng và hiện trên Internet đang sử dụng bộ giao thức TCP/IP thường viết ngắn gọn là TCP/IP (Transmission Control Protocol/Internet
Hình B.30. Quá trình truyền dữ liệu giữa 2 ứng dụng trên 2 máy tính.
- Tầng Network Access (Physical và Data Link): hỗ trợ tất cả các giao thức chuẩn. Mạng trong TCP/IP có thể là mạng LAN, MAN hay WAN.
- Tầng Internet: hỗ trợ truyền thông bằng IP. Tầng này cũng chứa các giao thức: ARP (Address Resoluation Protocol), RARP (Reverse Address Resolution Protocol), ICMP (Internet Control Message Protocol), IGMP (Internet Group Message Protocol).
- Tầng Transport (Host-to-Host): gồm TCP và UDP.
TCP (Transmission Control Protocol): giao thức truyền tin cậy, hướng kết nối. Nếu gói dữ liệu mạng bị hổng hay thất lạc sẽ truyền lại và phải kết nối trước khi truyền giữa 2 máy.
UDP (User Dataram Protocol): Đây là giao thức đơn giản hơn TCP chỉ truyền đi mà không cần kiểm tra bên phía nhận đã nhận được chưa.
- Tầng Application: tương đương với 3 lớp session, presentation và application trong mô hình OSI.
B.2. Cấu trúc gói IP
+ Bits 0-3 4-7 8-15 16-18 19-31
0 Version Header Length Type of Service Total Length
32 Identification Flag Fragment Offset
64 Time to Live Protocol Header Checksum
96 Source Address 128 Destination Address 160 Options 160 or 192+ Data
Hình B.31. Cấu trúc gói IP.
Gói IP gồm 2 phần: header và data. Trong đó phần header gồm các trường sau: - Version: chỉ định version của IP là IPv4, hay IPv6.
- Header Lengh: chiều dài gói dữ liệu mạng.
- Type of Service: quy định các kiểu dịch vụ khác nhau.
- Total Length: chỉ định chiều dài tính bằng bytes cho toàn bộ gói IP gồm cả phần data và phần header.
- Flags: gồm 3 bit dùng trong vấn đề phân mảnh.
- Fragment Offset: dùng cho phân mảnh gói dữ liệu mạng
- Time-to-live: thời gian sống của gói dữ liệu mạng sẽ giảm xuống từ từ đến mức bằng 0 thì gói dữ liệu mạng sẽ bị bỏ.
- Protocol: chỉ định protocol ở tầng trên sẽ dùng là TCP, UDP, ICMP, IGMP.
- Header Checksum: đảm bảo tính toàn vẹn cho gói IP. - Source Address.
- Destination Address.
- Options: cho phép IP thêm vào các tùy chọn khác nhau. - Data: nội dung dữ liệu.
B.3. Cấu trúc gói TCP
Một gói TCP gồm 2 phần: header, dữ liệu.
+ Bits 0 - 3 4 - 9 10 - 15 16 - 31
0 Source Port Destination Port
32 Sequence Number
64 Acknowledgement Number
96 Data Offset Reserved Flags Window
128 Checksum Urgent Pointer
160 Options (optional) 160 or 192+ Data Hình B.32. Cấu trúc gói TCP.
- Source port: số hiệu cổng của máy gửi dữ liệu.
- Destination port: số hiệu của cổng tại máy nhận dữ liệu.
- Sequence number: trường này có 2 nhiệm vụ. Nếu cờ SYN bật thì nó là số thứ tự gói ban đầu và byte đầu tiên được gửi có số thứ tự này cộng thêm 1. Nếu không có cờ SYN thì đây là số thứ tự của byte đầu tiên.
- Acknowledgement number: có cờ ACK bật thì giá trị của trường chính là số thứ tự gói dữ liệu tiếp theo mà bên nhận cần.
- Data offset: trường có độ dài 4 bit qui định độ dài của phần header. Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối đa là 15 từ (480 bit).
- Reserved: Dành cho tương lai và có giá trị là 0. - Flags (hay Control bits): gồm 6 cờ:
URG: Cờ cho trường Urgent pointer. ACK: Cờ cho trường Acknowledgement. PSH: Hàm Push.
RST: Thiết lập lại đường truyền. SYN: Đồng bộ lại số thứ tự.
FIN: Không gởi thêm số liệu. Kết thúc kết nối.
- Window: số byte có thể nhận bắt đầu từ giá trị của trường báo nhận (ACK).
- Checksum: 16 bit kiểm tra cho cả phần header và dữ liệu.
- Urgent pointer: Nếu cờ URG bật thì giá trị trường này chính là số từ 16 bit mà số thứ tự gói dữ liệu (sequence number) cần dịch trái.
- Options: Đây là trường tùy chọn.
- Data: trường cuối cùng này không thuộc phần header. Giá trị của trường này là thông tin dành cho các tầng trên trong mô hình OSI.
B.4. Cấu trúc gói UDP (User Datagram Protocol)
+ Bits 0 - 15 16 - 31
0 Source Port Destination Port
32 Length Checksum
64 Data
UDP là giao thức không cung cấp sự tin cậy và thứ tự truyền nhận như giao thức TCP. Các gói dữ liệu có thể gởi không đúng thứ tự hay bị mất mà không có thông báo. Những ứng dụng phổ biến sử dụng giao thức UDP như DNS, ứng dụng streaming media, Voice over IP, Trivial File Transfer Protocol (TFTP),…
Phần header của UDP gồm:
- Source port: Trường này xác định cổng của máy gửi thông tin và có ý nghĩa muốn nhận thông tin phản hồi từ người nhận. Nếu không dùng đặt bằng 0.
- Destination port: Trường xác định cổng nhận thông tin.
- Length: trường có độ dài 16 bit xác định chiều dài của toàn bộ datagram: gồm header và dữ liệu. Chiều dài tối thiểu là 8 byte khi gói dữ liệu không có phần data, chỉ có header.
- Checksum: trường checksum 16 bit dùng cho việc kiểm tra lỗi của phần header và dữ liệu.