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).


Hình 1: Mô hình phân lớp TCP/IP

Mô hình TCP/IPMô hình OSI tương ứngVí 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)
ApplicationDữ liệu (data/message)
TransportSegment (TCP) hoặc Datagram (UDP)
InternetPacket (gói tin IP)
Network InterfaceFrame, 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íTCPUDP
Kết nốiCó (bắt tay 3 bước)Không
Độ tin cậyCao: 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ìnhWeb, email, truyền fileDNS, 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ổngGiao thức
FTP20, 21TCP
SSH22TCP
Telnet23TCP
SMTP25TCP
DNS53UDP (và TCP)
DHCP67, 68UDP
HTTP80TCP
POP3 / IMAP110 / 143TCP
SNMP161UDP
HTTPS443TCP

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ớpOctet đầu (nhỏ nhất – lớn nhất)Mặt nạ mặc địnhSố địa chỉ / mạngMục đích
A1 – 126255.0.0.0 (/8)≈ 16,7 triệuMạng rất lớn (các tổ chức lớn như IBM, HP... được cấp từ thời đầu)
B128 – 191255.255.0.0 (/16)65.536Mạng cỡ trung bình
C192 – 223255.255.255.0 (/24)256Mạng nhỏ
D224 – 239––Multicast (truyền nhóm)
E240 – 255––Dự phòng, thử nghiệm
Lưu ý: dải 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.0 với subnet mask 255.0.0.0 viết là 5.0.0.0/8.
  • Địa chỉ 10.1.192.1 với subnet mask 255.255.255.0 viế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.

CIDRSubnet maskSố địa chỉSố máy dùng được
/8255.0.0.016.777.21616.777.214
/16255.255.0.065.53665.534
/23255.255.254.0512510
/24255.255.255.0256254
/26255.255.255.1926462
/30255.255.255.25242 (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ải 0.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ải 127.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).

Lưu ý: theo dự báo hiện nay, kho địa chỉ IPv4 chưa cấp của IANA sẽ cạn vào khoảng đầu năm 2011, sau đó các tổ chức quản lý địa chỉ khu vực (RIR) cũng lần lượt cạn kho trong vài năm tới. Vì vậy việc chuẩn bị triển khai IPv6 là nhu cầu cấp thiết.

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ạiGhi chú
2000::/3Global unicastĐịa chỉ công cộng, định tuyến được trên Internet
fe80::/10Link-localChỉ có hiệu lực trong một đường liên kết (tự cấu hình)
fc00::/7Unique local (ULA)Tương tự địa chỉ riêng (private) của IPv4
ff00::/8MulticastGửi tới một nhóm máy
2001:db8::/32Tài liệuDù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íIPv4IPv6
Độ dài địa chỉ32 bit128 bit
Cách biểu diễnThậ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ớpBan đầu chia lớp A–E, sau chuyển sang CIDRKhô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ó checksumCố định 40 byte, không có checksum
Quảng báCó broadcastKhông có broadcast (dùng multicast)
Cấu hình địa chỉThủ công hoặc DHCPSLAAC, DHCPv6 hoặc thủ công
Phân giải địa chỉ vật lýARPNDP (Neighbor Discovery)
NATRất phổ biến do thiếu địa chỉKhông cần thiết
Bảo mật IPsecTùy chọnBắt buộc phải hỗ trợ
Tình trạngĐịa chỉ sắp cạn kiệtSẽ 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.

Tài liệu tham khảo