Ngày nay, cùng với sự phát triển mạnh mẽ của Internet, bộ giao thức nền tảng của nó là TCP/IP đã trở nên phổ biến ở mọi lúc, mọi nơi. TCP/IP phổ biến đến mức nhiều người coi đây là bộ giao thức gần như bắt buộc đối với các hệ điều hành và ứng dụng mạng hiện đại. Bài viết này giới thiệu một cách hệ thống về bộ giao thức TCP/IP, địa chỉ IPv4 và IPv6.
1. Tổng quan về TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol) là bộ giao thức chuẩn công nghiệp, ban đầu được thiết kế cho mạng diện rộng (Wide Area Network – WAN) và hiện là bộ giao thức chuẩn của mạng Internet.
Khái niệm phân lớp giao thức đã tồn tại từ rất lâu trước khi mô hình tham chiếu 7 lớp OSI được ISO chuẩn hóa (năm 1984). TCP/IP là một ví dụ thành công của việc áp dụng khái niệm này.
2. Mô hình 4 lớp TCP/IP và so sánh với OSI
Mô hình TCP/IP gồm 4 lớp: Ứng dụng (Application), Giao vận (Transport), Liên mạng (Internet) và Truy cập mạng (Network Interface).
| Mô hình TCP/IP | Mô hình OSI tương ứng | Ví dụ giao thức |
|---|---|---|
| Application (Ứng dụng) | Application, Presentation, Session (lớp 7, 6, 5) | HTTP, HTTPS, FTP, SMTP, DNS, DHCP, SSH, SNMP |
| Transport (Giao vận) | Transport (lớp 4) | TCP, UDP |
| Internet (Liên mạng) | Network (lớp 3) | IP, ICMP, IGMP, ARP |
| Network Interface (Truy cập mạng) | Data Link, Physical (lớp 2, 1) | Ethernet, Wi-Fi, PPP |
2.1. Lớp Ứng dụng (Application)
Cung cấp giao diện để các ứng dụng sử dụng dịch vụ của lớp Giao vận. Lớp này tương ứng với ba tầng Application, Presentation và Session của mô hình OSI. Một số giao thức và dịch vụ chạy ở lớp này:
- HTTP/HTTPS (HyperText Transfer Protocol / Secure): truyền tải trang web.
- FTP (File Transfer Protocol): truyền tập tin.
- SMTP (Simple Mail Transfer Protocol): gửi thư điện tử.
- Telnet: điều khiển máy từ xa, không mã hóa nên ngày nay thường được thay bằng SSH (Secure Shell).
- DNS (Domain Name System): phân giải tên miền thành địa chỉ IP.
- DHCP (Dynamic Host Configuration Protocol): cấp phát địa chỉ IP tự động.
- SNMP (Simple Network Management Protocol): quản trị và giám sát thiết bị mạng.
2.2. Lớp Giao vận (Transport)
Cung cấp phiên làm việc giữa các máy tính và quy định kiểu dịch vụ vận chuyển dữ liệu: TCP (hướng kết nối, tin cậy) hoặc UDP (không kết nối, nhanh nhưng không đảm bảo). Nội dung chi tiết ở mục 5.
2.3. Lớp Liên mạng (Internet)
Đóng gói dữ liệu thành các gói tin IP (IP datagram/packet) và thực hiện định tuyến, giúp các máy ở những mạng khác nhau có thể liên lạc với nhau. Lớp này tương ứng với lớp Network trong mô hình OSI. Các giao thức chính gồm:
- IP (Internet Protocol): đánh địa chỉ và chuyển tiếp gói tin.
- ICMP (Internet Control Message Protocol): báo lỗi và chẩn đoán (ví dụ lệnh
ping,traceroute). - IGMP (Internet Group Management Protocol): quản lý nhóm multicast.
- ARP (Address Resolution Protocol): tìm địa chỉ MAC từ địa chỉ IP trong cùng mạng.
- RARP (Reverse ARP): tìm địa chỉ IP từ địa chỉ MAC; hiện đã lỗi thời, được thay bằng BOOTP/DHCP.
2.4. Lớp Truy cập mạng (Network Interface)
Chịu trách nhiệm truyền và nhận các frame (khung dữ liệu): đặt frame lên đường truyền và lấy frame từ đường truyền xuống. Mỗi loại mạng (LAN, MAN, WAN) và mỗi chuẩn mạng (Ethernet, Token Ring, FDDI, ARCnet, Wi-Fi...) có yêu cầu riêng về tín hiệu, cáp truyền và mã hóa dữ liệu.
3. Đóng gói dữ liệu (encapsulation)
Khi gửi đi, dữ liệu đi từ lớp trên xuống lớp dưới và được thêm phần đầu (header) ở mỗi lớp; khi nhận thì quá trình diễn ra ngược lại. Tên gọi đơn vị dữ liệu ở từng lớp:
| Lớp | Đơn vị dữ liệu (PDU) |
|---|---|
| Application | Dữ liệu (data/message) |
| Transport | Segment (TCP) hoặc Datagram (UDP) |
| Internet | Packet (gói tin IP) |
| Network Interface | Frame, sau đó là các bit trên đường truyền |
4. Giao thức IP và địa chỉ MAC
Phần cơ bản nhất của Internet là giao thức IP (Internet Protocol). Dữ liệu muốn đi qua mạng (kể cả mạng nội bộ Intranet) đều phải được đóng gói trong gói tin IP. IP là giao thức không kết nối và không đảm bảo tin cậy (best effort): nó nhanh, đơn giản, không cần thiết lập hay hủy kết nối, nhưng không đảm bảo gói tin đến nơi, đến đúng thứ tự hay không bị trùng lặp.
IPv4 chỉ có trường header checksum để kiểm tra phần đầu gói tin có bị hỏng hay không; gói tin lỗi sẽ bị loại bỏ. Việc phát hiện mất gói, truyền lại và sắp xếp thứ tự được giao cho lớp trên, chủ yếu là TCP. Đó là lý do ta luôn dùng cả bộ giao thức chứ không chỉ riêng IP.
Địa chỉ MAC (địa chỉ vật lý)
Mỗi card mạng Ethernet có một mã nhận diện 48 bit gọi là địa chỉ MAC (Media Access Control), biểu diễn bằng 12 chữ số thập lục phân (ví dụ 00-1A-2B-3C-4D-5E). Không gian địa chỉ này có 248 (hơn 281 nghìn tỷ) giá trị. Các địa chỉ được tổ chức IEEE quản lý tập trung và cấp theo từng khối cho nhà sản xuất, nên về nguyên tắc mỗi card mạng có một địa chỉ MAC duy nhất.
Khác với MAC (gắn cố định với phần cứng), địa chỉ IP là địa chỉ logic, thay đổi theo mạng mà thiết bị kết nối. Có thể hình dung: địa chỉ IP giống số nhà trên phố, còn địa chỉ MAC giống số căn cước của người ở trong nhà.
5. TCP, UDP và socket
5.1. TCP (Transmission Control Protocol)
TCP là giao thức hướng kết nối và tin cậy. Dữ liệu được truyền trong các segment, và phải thiết lập phiên làm việc trước khi truyền. TCP gán một số thứ tự (sequence number) cho mỗi segment gửi đi; bên nhận phải gửi lại xác nhận (ACK) trong một khoảng thời gian quy định. Nếu bên gửi không nhận được ACK, segment sẽ được truyền lại.
Các tính năng chính của TCP:
- Bắt tay ba bước (three-way handshake):
SYN→SYN-ACK→ACKđể thiết lập kết nối. - Sắp xếp thứ tự gói (packet sequencing).
- Kiểm soát luồng (flow control): bên nhận điều chỉnh tốc độ gửi thông qua kích thước cửa sổ (window).
- Xử lý lỗi (error handling): phát hiện lỗi bằng checksum và truyền lại khi mất gói.
- Kiểm soát tắc nghẽn (congestion control).
5.2. UDP (User Datagram Protocol)
UDP là giao thức không kết nối, không có xác nhận hay truyền lại. Nhờ header nhỏ và không có thủ tục bắt tay nên UDP nhanh, phù hợp với DNS, DHCP, truyền video/âm thanh trực tuyến, game trực tuyến...
| Tiêu chí | TCP | UDP |
|---|---|---|
| Kết nối | Có (bắt tay 3 bước) | Không |
| Độ tin cậy | Cao: xác nhận, truyền lại, đúng thứ tự | Không đảm bảo |
| Tốc độ / chi phí | Chậm hơn, header lớn hơn (tối thiểu 20 byte) | Nhanh hơn, header 8 byte |
| Ứng dụng điển hình | Web, email, truyền file | DNS, DHCP, streaming, VoIP, game |
5.3. Cổng (port) và socket
Mỗi ứng dụng trên một máy được nhận diện bằng một số hiệu cổng (port) từ 0 đến 65535. Một số cổng thông dụng:
| Dịch vụ | Cổng | Giao thức |
|---|---|---|
| FTP | 20, 21 | TCP |
| SSH | 22 | TCP |
| Telnet | 23 | TCP |
| SMTP | 25 | TCP |
| DNS | 53 | UDP (và TCP) |
| DHCP | 67, 68 | UDP |
| HTTP | 80 | TCP |
| POP3 / IMAP | 110 / 143 | TCP |
| SNMP | 161 | UDP |
| HTTPS | 443 | TCP |
Socket là điểm đầu cuối của một kết nối mạng, đặc biệt hữu ích với lập trình viên mạng. Một socket được xác định bởi 3 thành phần:
- Địa chỉ IP của máy;
- Số hiệu cổng (port);
- Loại giao thức truyền tải (TCP hoặc UDP).
Trên Windows, giao diện lập trình socket được gọi là Winsock. Nếu muốn độc lập với kiến trúc máy và hệ điều hành, bạn có thể lập trình mạng bằng Java với các lớp có sẵn như Socket, ServerSocket, DatagramSocket.
6. Địa chỉ IPv4
Địa chỉ IPv4 là một giá trị nhị phân 32 bit. Để dễ nhớ, người ta viết dưới dạng thập phân có dấu chấm (dotted decimal), chia thành 4 nhóm 8 bit (octet), mỗi nhóm có giá trị từ 0 đến 255. Ví dụ: 10.192.254.1. Mỗi máy (host) trên Internet phải có một địa chỉ IP duy nhất.
Một địa chỉ IP gồm hai phần: phần mạng (network ID) và phần máy (host ID). Phần mềm IP còn phải hiểu thêm các khái niệm:
- Subnet (mạng con): tập hợp các thiết bị có thể liên lạc trực tiếp với nhau mà không cần định tuyến qua router.
- Subnet mask (mặt nạ mạng con): cho biết bao nhiêu bit đầu là phần mạng, ví dụ
255.255.255.0. - Default gateway (cổng mặc định): địa chỉ của router dùng để chuyển gói tin tới các máy không cùng subnet.
Muốn kết nối Internet hoặc xin cấp một dải địa chỉ, tổ chức đăng ký với nhà cung cấp dịch vụ Internet (ISP). ISP nhận địa chỉ từ các tổ chức quản lý địa chỉ khu vực (RIR; khu vực châu Á – Thái Bình Dương là APNIC), và các RIR nhận từ IANA. Tại Việt Nam có VNNIC là đơn vị quản lý tên miền và tài nguyên Internet quốc gia.
Phân lớp địa chỉ (classful addressing)
Ban đầu địa chỉ IPv4 được chia thành 5 lớp A, B, C, D, E, dựa vào giá trị octet đầu tiên:
| Lớp | Octet đầu (nhỏ nhất – lớn nhất) | Mặt nạ mặc định | Số địa chỉ / mạng | Mục đích |
|---|---|---|---|---|
| A | 1 – 126 | 255.0.0.0 (/8) | ≈ 16,7 triệu | Mạng rất lớn (các tổ chức lớn như IBM, HP... được cấp từ thời đầu) |
| B | 128 – 191 | 255.255.0.0 (/16) | 65.536 | Mạng cỡ trung bình |
| C | 192 – 223 | 255.255.255.0 (/24) | 256 | Mạng nhỏ |
| D | 224 – 239 | – | – | Multicast (truyền nhóm) |
| E | 240 – 255 | – | – | Dự phòng, thử nghiệm |
0.x.x.x được dành riêng và dải 127.x.x.x dùng cho loopback nên lớp A thực tế dùng từ 1 đến 126. Mỗi mạng còn phải trừ 2 địa chỉ (địa chỉ mạng và địa chỉ broadcast) khi tính số máy sử dụng được.7. Chia mạng con và CIDR
Cách chia theo lớp có nhiều điểm bất hợp lý: một đơn vị chỉ cần vài máy chủ (E-mail, FTP, Web...) mà được cấp cả dải lớp C 256 địa chỉ thì lãng phí; ngược lại, đơn vị cần 257 địa chỉ lại quá lớn với lớp C nhưng quá nhỏ so với lớp B. Vì vậy người ta đưa ra CIDR (Classless Inter-Domain Routing – định tuyến liên miền không phân lớp), viết dưới dạng “/n” (slash n), trong đó n là số bit dành cho phần mạng. Nhờ đó ta có thể “mượn” bit của phần host để chia nhỏ mạng (subnetting) hoặc gộp nhiều mạng (supernetting) với kích thước linh hoạt.
Ví dụ:
- Mạng
5.0.0.0với subnet mask255.0.0.0viết là5.0.0.0/8. - Địa chỉ
10.1.192.1với subnet mask255.255.255.0viết là10.1.192.1/24. - Mạng
/23(255.255.254.0) có 512 địa chỉ, trong đó dùng được 510 địa chỉ cho máy.
Công thức: số địa chỉ trong mạng = 2(32 − n); số máy sử dụng được = 2(32 − n) − 2.
| CIDR | Subnet mask | Số địa chỉ | Số máy dùng được |
|---|---|---|---|
| /8 | 255.0.0.0 | 16.777.216 | 16.777.214 |
| /16 | 255.255.0.0 | 65.536 | 65.534 |
| /23 | 255.255.254.0 | 512 | 510 |
| /24 | 255.255.255.0 | 256 | 254 |
| /26 | 255.255.255.192 | 64 | 62 |
| /30 | 255.255.255.252 | 4 | 2 (thường dùng cho đường nối điểm-điểm) |
Ví dụ chia mạng: mạng 192.168.10.0/26 có subnet mask 255.255.255.192; địa chỉ mạng là 192.168.10.0, dải máy từ 192.168.10.1 đến 192.168.10.62, địa chỉ broadcast là 192.168.10.63.
8. Các địa chỉ IPv4 đặc biệt và NAT
Không gian IPv4 tối đa chỉ có 232 ≈ 4,29 tỷ địa chỉ, trong khi dân số thế giới đã gần 7 tỷ người, chưa kể mỗi người có thể sử dụng nhiều thiết bị (máy tính, điện thoại di động...). Trên thực tế, ta cũng không dùng được hết số địa chỉ này vì một phần được dành riêng:
- Địa chỉ dành riêng cho multicast (
224.0.0.0/4): dùng để gửi tới một nhóm máy; không cấp cho từng máy. - Địa chỉ mặc định (
0.0.0.0): đại diện cho “bất kỳ địa chỉ nào” hoặc tuyến đường mặc định (0.0.0.0/0, tức toàn bộ Internet). Cả dải0.0.0.0/8(khoảng 16,7 triệu địa chỉ) được dành riêng. - Địa chỉ quay vòng (loopback) (
127.0.0.1, thuộc dải127.0.0.0/8): gói tin gửi tới địa chỉ này được trả lại chính máy gửi, dùng để kiểm tra giao thức TCP/IP trên máy; tên thường gọi làlocalhost. Không có mạng thật nào dùng dải 127.x.x.x. - Địa chỉ mạng (network address): địa chỉ đầu tiên của dải, có phần host toàn bit 0, dùng để đại diện cho cả mạng con. Ví dụ dải
10.1.192.0/24(từ 10.1.192.0 đến 10.1.192.255) có địa chỉ mạng là10.1.192.0. - Địa chỉ quảng bá (broadcast): địa chỉ cuối của dải, có phần host toàn bit 1, dùng để gửi tới mọi máy trong mạng con. Với ví dụ trên là
10.1.192.255. - Địa chỉ gateway (router mặc định): là một địa chỉ bình thường thuộc mạng con (thường là địa chỉ đầu hoặc cuối dải, ví dụ
10.1.192.1), và được cấu hình trên các máy để chúng liên lạc với mạng con khác. Địa chỉ này không được gán cho máy nào khác. - Địa chỉ link-local (APIPA) (
169.254.0.0/16): máy tự gán khi không nhận được địa chỉ từ DHCP.
Địa chỉ riêng (private) và NAT
Để tiết kiệm địa chỉ công cộng (public), RFC 1918 quy định ba dải địa chỉ riêng chỉ dùng trong mạng nội bộ và không được định tuyến trên Internet:
10.0.0.0 – 10.255.255.255(10.0.0.0/8)172.16.0.0 – 172.31.255.255(172.16.0.0/12)192.168.0.0 – 192.168.255.255(192.168.0.0/16)
Thiết bị NAT (Network Address Translation – chuyển đổi địa chỉ mạng, thường tích hợp trong router) dịch các địa chỉ riêng này sang một hoặc vài địa chỉ công cộng, cho phép cả mạng nội bộ vẫn truy cập được Internet. NAT là giải pháp tình thế giúp kéo dài tuổi thọ của IPv4 nhưng làm phức tạp việc kết nối trực tiếp giữa hai máy (end-to-end).
9. Địa chỉ IPv6
Vấn đề đặt ra cho các nhà hoạch định Internet là làm sao có đủ địa chỉ cho mọi thiết bị mà vẫn tận dụng được hạ tầng sẵn có với chi phí thấp nhất. Giải pháp lâu dài là IPv6 (đặc tả chính thức là RFC 2460).
9.1. Cấu trúc địa chỉ
Địa chỉ IPv6 dài 128 bit (16 byte), trong khi IPv4 chỉ có 32 bit (4 byte). Điều này cho phép có khoảng 2128 ≈ 3,4 × 1038 địa chỉ.
Địa chỉ IPv6 được viết thành 8 nhóm, mỗi nhóm gồm 4 chữ số thập lục phân (từ 0000 đến FFFF), ngăn cách nhau bằng dấu hai chấm “:”. Các ký tự A–F không phân biệt chữ hoa, chữ thường. Ví dụ:
2001:0db8:0000:0000:0000:ff00:0042:8329
9.2. Quy tắc rút gọn
- Có thể bỏ các số 0 ở đầu mỗi nhóm:
2001:db8:0:0:0:ff00:42:8329. - Một chuỗi liên tiếp các nhóm toàn số 0 có thể thay bằng “
::”, nhưng chỉ được dùng một lần trong một địa chỉ:2001:db8::ff00:42:8329. - Địa chỉ loopback
::1(tương đương 127.0.0.1) và địa chỉ không xác định::(tương đương 0.0.0.0). - Tiền tố mạng viết dạng CIDR, ví dụ
2001:db8::/32; mạng con thông thường là/64.
9.3. Các loại địa chỉ và tiền tố thông dụng
| Tiền tố | Loại | Ghi chú |
|---|---|---|
2000::/3 | Global unicast | Địa chỉ công cộng, định tuyến được trên Internet |
fe80::/10 | Link-local | Chỉ có hiệu lực trong một đường liên kết (tự cấu hình) |
fc00::/7 | Unique local (ULA) | Tương tự địa chỉ riêng (private) của IPv4 |
ff00::/8 | Multicast | Gửi tới một nhóm máy |
2001:db8::/32 | Tài liệu | Dùng làm ví dụ trong tài liệu |
IPv6 có ba kiểu truyền: unicast (một – một), multicast (một – nhóm) và anycast (một – máy gần nhất trong nhóm). IPv6 không còn broadcast; chức năng này được thay bằng multicast.
9.4. Những cải tiến chính của IPv6
- Không gian địa chỉ rất lớn, loại bỏ nhu cầu dùng NAT.
- Header đơn giản hơn: kích thước cố định 40 byte, bỏ trường checksum để router xử lý nhanh hơn.
- Tự cấu hình địa chỉ (SLAAC) mà không cần DHCP; giao thức NDP (Neighbor Discovery Protocol) thay thế ARP.
- Hỗ trợ tốt cho bảo mật: mọi thiết bị IPv6 đều phải hỗ trợ IPsec.
- Hỗ trợ multicast và anycast tốt hơn; tăng hiệu quả định tuyến nhờ cách phân bổ địa chỉ theo cấp bậc.
10. So sánh IPv4 và IPv6
Giống nhau: đều dùng để định danh (đánh địa chỉ cho) các thiết bị trong mạng và định tuyến gói tin ở lớp Internet.
| Tiêu chí | IPv4 | IPv6 |
|---|---|---|
| Độ dài địa chỉ | 32 bit | 128 bit |
| Cách biểu diễn | Thập phân có dấu chấm (10.1.192.1) | Thập lục phân, các nhóm cách nhau bằng dấu hai chấm (2001:db8::1) |
| Số địa chỉ | ≈ 4,29 tỷ | ≈ 3,4 × 1038 |
| Phân lớp | Ban đầu chia lớp A–E, sau chuyển sang CIDR | Không có khái niệm lớp, dùng tiền tố (prefix) |
| Header | Độ dài thay đổi (tối thiểu 20 byte), có checksum | Cố định 40 byte, không có checksum |
| Quảng bá | Có broadcast | Không có broadcast (dùng multicast) |
| Cấu hình địa chỉ | Thủ công hoặc DHCP | SLAAC, DHCPv6 hoặc thủ công |
| Phân giải địa chỉ vật lý | ARP | NDP (Neighbor Discovery) |
| NAT | Rất phổ biến do thiếu địa chỉ | Không cần thiết |
| Bảo mật IPsec | Tùy chọn | Bắt buộc phải hỗ trợ |
| Tình trạng | Địa chỉ sắp cạn kiệt | Sẽ dần thay thế IPv4 |
11. Cách chuyển đổi từ IPv4 sang IPv6
IPv4 và IPv6 không tương thích trực tiếp, vì vậy việc chuyển đổi sẽ diễn ra dần dần, với hai cơ chế chính:
- Dual stack (ngăn xếp kép): thiết bị chạy song song cả IPv4 và IPv6.
- Tunneling (đường hầm): đóng gói gói tin IPv6 bên trong gói tin IPv4 để đi qua hạ tầng chưa hỗ trợ IPv6 (ví dụ 6to4, Teredo, ISATAP).
12. Tóm tắt
- TCP/IP là bộ giao thức nền tảng của Internet, gồm 4 lớp: Ứng dụng, Giao vận, Liên mạng, Truy cập mạng.
- IP chịu trách nhiệm đánh địa chỉ và định tuyến nhưng không đảm bảo tin cậy; TCP bổ sung độ tin cậy, còn UDP ưu tiên tốc độ.
- IPv4 (32 bit) sắp cạn kiệt; CIDR và NAT giúp kéo dài tuổi thọ của nó.
- IPv6 (128 bit) giải quyết triệt để vấn đề thiếu địa chỉ và sẽ dần thay thế IPv4.


0 comments:
Đăng nhận xét