Bộ giao thức TCP/IP, Ipv4, Ipv6

Ngày nay, cùng với sự phát triển lớn mạnh của Internet thì bộ giao thức nền của nó TCP/IP cũng trở nên phổ biến ở mọi lúc, mọi nơi. TCP/IP phát triển đến mức mà đôi khi người ta còn quan niệm rằng bộ giao thức này là bộ giao thức bắt buộc đối với các hệ điều hành và các ứng dụng mạng lớn. Để giải đáp thắc mắc của bạn đọc xung quanh vấn đề này, chúng tôi xin được giới thiệu một cách hệ thống về bộ giao thức TCP/IP, Ipv4, Ipv6.

Bộ giao thức TCP/IP, Ipv4, Ipv6

Có thể hiểu như sau: Transmission Control Protocol/Internet Protocol (TCP/IP) là một bộ giao thức chuẩn công nghiệp được thiết kế cho mạng Wide area Networks Wans (WANs). Ngoài ra, TCP/IP cũng là một chuẩn giao thức cho mạng Internet.

Như các bạn đã biết, mặc dù mô hình 7 lớp OSI được thiết kế năm 1979 nhưng khái niệm phân lớp giao thức tồn tại rất lâu trước khi chúng được mô hình OSI áp dụng chính thức. Một ví dụ của giao thức thành công trước kia sử dụng khái niệm xếp lớp giao thức chính là bộ giao thức TCP/IP. Vì lịch sử của TCP/IP gắn liền với Bộ Quốc phòng (Department of Defense), nên việc phân lớp của bộ giao thức TCP/IP được gọi là DoD. Mô hình DoD bao gồm 4 lớp: Application, Transport, Internet và Network interface:

Bộ giao thức TCP/IP, Ipv4, Ipv6 ảnh 1


Lớp Application: Hỗ trợ các ứng dụng sử dụng những giao thức lớp Transport, lớp này tương ứng với các tầng: Aplication, Presentation, Session của mô hình 7 lớp OSI. Một số tiện ích và dịch vụ chạy trên tầng này là:

        HyperText Transfer Protocol (HTTP).

        File Transfer Protocol (FTP).

        Simple Mail Transfer Protocol (SMTP).

        Telnet.

        Domain Name System (DNS).

        Simple Network Management Protocol (SNMP).

Lớp Transport: Những giao thức lớp transport cung các cấp phiên làm việc giữa các máy tính và định nghĩa các loại dịch vụ vận chuyển như TCP (Vận chuyển dữ liệu lớn trong cùng một thời gian) hay UDP (vận chuyển dữ liệu nhỏ trong cùng một thời gian).

Lớp Internet: Internet protocols đóng gói các Packets vào trong Internet datagrams và chạy tất cả các thuật toán định tuyến cần thiết. Chức năng định tuyến này giúp các Host ở các mạng khác nhau có thiể liên lạc được với nhau. Lớp này tương thích với lớp Network trong mô hình OSI. 5 giao thức được cài đặt ở lớp này là:

        Address Resolution Protocol (ARP):

        Reverse Address Resolution Protocol (RARP):

        Internet Control Message Protocol (ICMP):

        Internet Group Management Protocol (IGMP)

        Internet Protocol (IP)

Lớp Network Interface: Lớp này chịu trách nhiệm về việc truyền, nhận các frames. Lớp này đặt (Puts) các Frame lên trên mạng và đẩy (pull) chúng đi trên đó. Mỗi một loại mạng như local area network (LAN), metropolitan area network (MAN), Wide are Networks (WAN), và các chuẩn mạng như Ethernet, Token Ring, Fiber Distributed Data Interface (FDDI), ARCnet có yêu cầu về tín hiệu, cable, mã hóa dữ liệu khác nhau.

Phần cơ bản nhất của Internet là Internet Protocol, tức là IP. Nếu bạn cần gửi dữ liệu qua một mạng Intranet thì dữ liệu đó phải được đóng gói trong một gói IP. Đại đa số các gói dữ liệu TCP/IP dùng giao thức IP, một giao thức tiếp vận rất tốt, nhanh, không cần thiết lập và hủy bỏ kết nối. Nhưng tại sao ta vẫn luôn phải dùng cả một bộ giao thức này? Thực ra là vì giao thức IP có hạn chế của nó là không có phương thức kiểm tra lỗi, mỗi gói IP chứa một ít dữ liệu gọi là Checksum header có tác dụng tổng kiểm tra xem thông tin có bị hư hại trên đường truyền hay không? Nếu dữ liệu không tốt nó sẽ hủy ngay gói dữ liệu đó mà chẳng phản hồi một thông tin nào cho nơi gửi biết. Vậy nên, trước khi đi vào bàn luận chi tiết về IP, chúng tôi xin trình bày trước một cách sơ lược về TCP. Để làm rõ hơn một mức nữa về TCP, chúng ta cần riêng một bài nói về nó.

Transmission Control Protocol (TCP): Là giao thức đáng tin cậy, dữ liệu TCP được truyền trong các segment và một session phải được thiết lập trước khi có thể truyền tải dữ liệu. TCP quản lý lưu trữ bằng việc gán một số tăng tuần tự (sequence number) tới mỗi sement được truyền đi. Với mỗi một segment được gửi đi, host nhận được phải gửi trả lại một acknowledgment (ACK) trong một thời gian xác định. Nếu nơi gửi không nhận được một ACK đồng nghĩa với việc phiên làm việc đó không thành công, dữ liệu sẽ được truyền lại. Thêm vào đó, TCP còn cung cấp một dịch vụ quan trọng, đặc biết hữu dụng đối với người lập trình mạng là SOCKET. Một socket được tạo bởi 3 thành phần

        Địa chỉ IP của máy nhận

        Port number

        Loại cổng (Mỗi giao thức có một loại cổng riêng)

Đối với việc lập trình cho máy PC đòi hỏi một sự biến đổi riêng và vì thế một phiên bản của giao diện lập trình dành cho các socket (socket interface) gọi là Winsock đã ra đời. Tuy nhiên, theo chúng tôi nghĩ, nếu bạn không muốn phụ thuộc vào kiến trúc máy hay hệ điều hành bạn có thể phát triển lập trình mạng bằng ngôn ngữ Java với Java Virtual machine và các class có sẵn như: Socket, SocketServer…

Tóm lại, các tính năng chính của TCP bao gồm:

        Handshake (bắt tay).

        Packet sequencing (sắp xếp thứ tự các gói).

        Flow control (kiểm soát dòng dữ liệu).

        Error handling (xử lý lỗi).

Ta hãy trở lại với giao thức IP. Để giản tiện, chúng tôi trình bày vấn đề này thông qua sự hiện diện của nó trên card Ethernet vì loại card này đang phổ biến nhất trong môi trường mạng hiện nay.

Địa chỉ Ethernet của mỗi card mạng Ethernet là một mã số nhận diện 48 bit (có khả năng cung cấp đến 281.474 tỷ khả năng, gấp khoảng 45.000 dân số toàn thế giới) số này là duy nhất và được gọi là địa chỉ Media Access Control (MAC) biểu diễn bằng 12 chữ số Hexa. Những địa chỉ này được quản lý tập trung và sẽ cấp theo lô cho tất các nhà sản xuất card mạng khi đăng ký.

Địa chỉ IP không giống như vậy, nó được biểu diễn bởi một giá trị 32 bit nhị phân nhưng để dễ nhớ hơn người ta biểu diễn chúng bằng số thập phân theo dotted quad (bộ bốn có chấm) VD: 10.192.254.1. Trong đó cách một dấu chấm là một số nguyên trong hệ thập phân từ 0 đến 255. Và như vậy thì mỗi một Host sẽ nhận một địa chỉ duy nhất trên một đoạn mạng đó. Để đơn giản bạn hãy tưởng tượng địa chỉ IP cấp cho các Host như là cấp biển số nhà trên phố.

Bộ giao thức TCP/IP, Ipv4, Ipv6 ảnh 2


Mở rộng ra, trong liên mạng thì ngoài việc biết địa chỉ IP, phần mềm IP còn phải hiểu thêm về các thuật ngữ khác như:

Subnet: Là một tập hợp các máy tính hay các thiết bị có gắn card mạng có thể liên lạc với nhau mà không cần phải routing.

Default gateway: địa chỉ luôn luôn đúng dùng để tiếp vận thông điệp đến các máy khác không cùng subnet.

Nếu bạn muốn ra nhập Internet hoặc xin cấp một lô địa chỉ cho cơ quan bạn bạn có thể đăng ký với các ISP để họ đăng ký hộ cho bạn với các nhà quản lý địa chỉ Internet khu vực và thế giới gọi tắt là NIC. Và tất nhiên, mọi máy tham gia vào Internet đều có một địa chỉ IP duy nhất.

Ban đầu NIC định nghĩa địa chỉ IP thành 5 lớp (A,B,C,D,E)

 IP Address class  Minimum  Maximum
 A  0  126
 B  128  191
 C  192  223
 D  224  239
 E  240  255

        Lớp A được cấp cho các mạng cớ lớn như: IBM,HP,Boeing …

        Lớp B được cấp cho các mạng cỡ trung bình: Microsoft, Exxon

        Lớp C được cấp cho các mạng cỡ nhỏ: Các ISP ở Việt Nam…

        Lớp D là lớp dự trữ cho multicasting

        Lớp E là lớp dùng cho tương lai.

Tuy vậy, cách chia này cũng có những chỗ bất hợp lý: nếu đơn vị của bạn chỉ cần một vài máy chạy các dịch vụ E-mail server, FTP server, Web Server và các dịch vụ khác tương tự thì NIC cấp cho bạn một dải địa chỉ lớp C với 256 nốt là quá phí phạm, hay ngược lại một đơn vị cần có 257 địa chỉ thì lại quá lớn đối với một mạng lớp C có thể cung cấp, nhưng lại qúa nhỏ so với địa chỉ lớp B. Chính vì vậy mà họ nghĩ ra phương pháp mới là: Tiếp vận liên miền không phân lớp (Classless Inter – Domain Routing, CIDR) hay đơn giản hơn là: “slash x”. Ta có thể tạm hiểu nôm na lợi ích của việc phân chia mạng kiểu này là: ta có thể mượn một vài bit của địa chỉ network sang cấp cho các địa chỉ của host dựa vào subnet.

Ví dụ:

Một mạng 5.0.0.0 với subnet mask 255.0.0.0 được viết là 5.0.0.0/8

Một địa chỉ 10.1.192.1 với subnet mask 255.255.255.0 có thể được viết là 10.1.192.1/24.

Với Slash 23 (255.255.254.0) của Bộ tài chính hiện nay đang sử dụng thì số lượng địa chỉ có thể lên tới 512.

Tuy nhiên, với bất cứ một kiểu chia nào thì số lượng địa chỉ tối đa cũng chỉ khoảng 4 tỷ, trong khi đó dân số trên thế giới đã hơn 6 tỷ người. Mà thực tế với 4 tỷ địa chỉ đó chúng ta cũng chẳng được dùng hết.

Địa chỉ dành riêng (reserved address): Dùng cho các mục đích truyền đến nhiều nút (multicast) và các mục đích thử nghiệm nên chúng không được cấp trong thực tế. Địa chỉ 224.0.0.0 dùng để truyền đến các nhóm máy tính trên mạng.

Có một loại router gọi là router NAT (Network address Translation) cho phép dùng các địa chỉ IP giả tạo trên Intranet của đơn vị nhưng vẫn có khả năng liên lạc được với Internet. Hầu hết các NAT đều dùng một số các địa chỉ IP cụ thể

        + 10.0.0.0 – 10.255.255.255

        + 172.16.0.0 – 172.31.255.255

        + 192.168.0.0 – 192.168.255.255

Địa chỉ tiếp vận mặc định : địa chỉ 0.0.0.0 là địa chỉ của toàn bộ Internet và do đó các địa chỉ như 0.x.x.x được dành riêng ra, không sử dụng và nó chiếm đến 16,7 triệu địa chỉ.

Địa chỉ quay vòng: 127.0.0.1, khi bạn gửi thông điệp đến địa chỉ này, thông điệp đó sẽ được gửi trả lại. Và tất nhiên cũng chẳng có mạng nào có địa chỉ là 127.x.x.x.

Địa chỉ đại diện cho mạng: Dùng để tham chiếu đến toàn bộ một mạng con bằng một con số duy nhất. VD: STC Hà Nội có dải địa chỉ là 10.1.192.0 đến 10.1.192.255 thì network number của nó là 10.1.192.0

Địa chỉ loan tin: Broadcast address dùng để loan báo đến mọi máy trên một mạng con. Trở lại ví dụ về dải địa chỉ của STC Hà Nội thì địa chỉ loan tin là 10.1.192.255.

Địa chỉ router mặc định: Để một mạng con có thể liên lạc được với mạng con khác thì phải có một địa chỉ gateway và địa chỉ chỉ đó cũng là một địa chỉ dành riêng.

Bởi vậy, trong tương lai gần, nguồn tài nguyên địa chỉ IP theo cấu trúc Ipv4 đang dần cạn kiệt, vấn đề đặt ra cho các nhà hoạch định Internet là làm thể náo để có đủ IP cho tất cả các máy tính mà vẫn có khả năng sử dụng lại các máy đã được cấp địa chỉ theo cách từ trước tới nay với mức chi phí thấp nhất có thể.

Một giải pháp đã được đưa ra để xem xét đó chính là: Ipv6