Trong bài học này, chúng ta cùng trao đổi nội dung cơ bản về TCP/IP, mô hình sử dụng trong Internet hiện nay. Các bạn có thể tìm thấy nhiều tài liệu nói về mô hình này, do vậy, tôi chỉ tập trung một vài khía cạnh cơ bản của TCP/IP để giúp các bạn có đủ kiến thức hiểu được làm thế nào quá trình truyền thông trong máy tính diễn ra.
Giới thiệu
Giao tiếp máy tính được thực hiện thông qua các quy tắc và hướng dẫn cơ bản gọi là GIAO THỨC. Để máy tính có thể trao đổi dữ liệu, chúng yêu cầu sử dụng cùng chung một giao thức, quy định, nếu không chúng sẽ không tương thích. Trước đây, khi mạng được hình thành, mỗi nhà phát triển mạng sử dụng một giao thức riêng của mình như là sự độc quyền, như mạng Novell Netwark sử dụng IPX/SPX, Apple sử dụng Apple Talk, IBM sử dụng DEC...chính điều này tạo nên sự khác biệt của thiết bị trong máy tính. Mô hình OSI (Open Systems Interconnection) chúng ta đã từng học, có quá nhiều tầng và chủ yếu là để tham khảo. Ngày nay, mô hình TCP/IP được dùng phổ biến rộng rãi (Internet hiện nay), phát triển từ mô hình OSI.
Mô hình TCP/IP
Các nhà thiết kế quyết định phá vỡ sự phức tạp trong quá trình trao đổi dữ liệu và tạo ra 5 lớp chức năng để đạt được mục tiêu. Cách tiếp cận này giúp phát triển và chỉnh sửa mã của các lớp hiện tại mà không ảnh hưởng tới lớp khác. Ví dụ, nếu bạn là một lập trình ứng dụng, bạn sẽ viết mã tại lớp ứng dụng, cho phép bạn sử dụng mã đã viết để trao đổi dữ liệu giữa các máy tính, thậm chí bạn không cần phải học cách quá trình vận chuyển này được thực hiện như thế nào. Bằng cách này, bạn chỉ tập trung vào ứng dụng mà bạn đang tạo, nó hoạt động như thế nào chứ không phải tập trung thêm về các thiết bị, bộ điều khiển tín hiệu và các chi tiết phần cứng khác.
Mô hình TCP/IP phân lơp chức năng liên quan đến trao đổi dữ liệu sử dụng 5 lớp riêng biệt.
Lớp 5-7: Lớp ứng dụng (Application)
Mỗi ngày bạn sử dụng nhiều ứng dụng dựa vào các dịch vụ mạng, như ứng dụng Web, ứng dụng Mail, kết nối SSH ...Những ứng dụng này sử dụng kiến trúc CLIENT/SERVER. Client (máy khách) là một ứng dụng yêu cầu dịch vụ từ các máy chủ, còn Server (máy chủ) cung cấp cho các client những gì mà họ yêu cầu. Ví dụ các trình duyệt Firefox hoặc Internet Explorer (client) yêu cầu nội dung trang web từ ứng dụng máy chủ Apache hoặc IIS (server). Nhìn chung, lớp ứng dụng cung cấp giao diện người dùng (User Interface - UI), mà chúng ta không cần biết hoạt động bên trong của máy tính như thế nào.
Do đó, một khi ứng dụng của bạn gởi một yêu cầu, ngay lập tức nó được gởi xuống lớp 4 (transport) để phân phát đến máy tính trên mạng.
Lớp 4: Lớp giao vận (Transport)
Lớp này chấp nhận các yêu cầu từ lớp trên và cố gắng vận chuyển các yêu cầu đó qua mạng. Lớp này chịu trách nhiệm:
-
Chia nhỏ các tập tin dữ liệu lớn thành các phần nhỏ hơn gọi là SEGMENT. Việc gởi dữ liệu lớn sẽ gây ra tình trạng tắt nghẽn, và nếu bị lỗi thì quá trình gởi lại sẽ tốn thời gian và tiêu tốn tài nguyên hơn.
-
Máy tính sử dụng nhiều ứng dụng để trao đổi tại một thời điểm, hệ thống cần phải biết và đánh dấu dữ liệu nào để gởi đến chính xác cho ứng dụng phía máy nhận. Khái niệm PORT NUMBER được giới thiệu để thực hiện điều này. Cổng nguồn và cổng đích đảm bảo tất cả các yêu cầu và phản hồi đều được phân phát thích hợp trên các máy tính đang trao đổi dữ liệu.
-
Lớp này cung cấp dịch vụ kết nối có hướng (CONNECTION-ORIENTED) và kết nối phi hướng (CONNECTIONLESS). Đầu tiên, thiết lập giao tiếp với máy tính nhận trước khi trao đổi dữ liệu, sau đó dữ liệu sẽ được gởi mà không cần biết ứng dụng phía máy nhận có đang chạy và sẵn sàng nhận bất cứ thứ gì. Hình thức trao đổi dữ liệu này được dùng chính trong các ứng dụng tiếng nói và hình ảnh.
-
Lớp này cung cấp cho ứng dụng một vài tùy chọn về độ tin cậy hay không. Phụ thuộc vào giao thức mà lớp này sử dụng, dữ liệu có thể được xác minh hay là không? Gọi là giao dịch tin cậy (RELIABLE) hoặc không tin cậy (UNRELIABLE) tương ứng. Trong giao dịch tin cậy, bất kỳ dữ liệu nào chưa được chuyển giao sẽ được truyền lại, không như giao dịch không tin cậy.
-
Một chức năng của lớp này là điều khiển luồng (FLOW CONTROL), điều này làm giảm sự truyền dẫn để máy chủ không bị ngập dữ liệu mà cũng không bị chờ và không làm gì bởi tốc độ truyền của người gởi quá chậm. Những chức năng này được thực hiện bởi giao thức TCP, không phải là UDP.
Một khi các khía cạnh và chức năng ở lớp này được thực hiện, lớp này sẽ gởi dữ liệu nó nhận được từ lớp 5 xuống lớp 3 yêu cầu dịch vụ của nó.
Lớp 3: Lớp Internet
Khi nhận được yêu cầu từ lớp 4, lớp này sẽ xử lý thông tin đến. Bởi vì thông thường, chúng ta có nhiều hơn một đường dẫn giữa người gởi (source) và người nhận (destination), chức năng của lớp này là tìm ra đường đi tốt nhất giữa chúng. Để thực hiện được điều này, chúng ta cần biết 2 điều sau:
-
Thứ nhất, chúng ta cần biết làm thế nào máy tính tìm chúng trên mạng. Điều này đạt được bằng việc sử dụng địa chỉ lớp 3 (ADDRESS) xác định duy nhất máy tính trên bất kỳ mạng nào. Địa chỉ này sử dụng 32 bit, chia thành 4 octet phân cách bằng dấu chấm (ví dụ: 10.0.0.1) và mặt nạ lớp cũng bao gồm 4 byte (255.255.255.0). Một địa chỉ IP bao gồm: 10.0.0.1 255.255.255.0
-
Thứ hai, bởi vì trạm đích của dữ liệu có thể ở bên ngoài mạng chúng ta, một thiết bị gọi là bộ định tuyến (ROUTER) để tìm đường đi tốt nhất giữa các mạng khác nhau. Dữ liệu xử lý tại lớp này gọi là gói (PACKET) hay (DATAGRAM). Dữ liệu lại lớp này, bao gồm thông tin tại lớp 4 (TCP hoặc UDP) để đảm bảo có ích khi dữ liệu đến đích cần xử lý nội dung tới giao thức lớp 4, giao thức phải giống nhau ở tại nơi đi và nơi đến.
Lớp 2: Giao diện mạng (Network Interface) = Data Link trong OSI
Có rất nhiều công nghệ để xử lý dữ liệu trên các phương tiện truyền thông như cáp đồng, cáp quang hoặc sóng điện từ (không dây). Để giảm tải các giao thức lớp 3 từ việc học tất cả các phương tiện truyền thông báo hiệu, lớp này đã được tạo ra. Do đó, lớp 3 tập trung vào việc tìm đường đi tốt nhất giữa trạm nguồn và trạm đích, chức năng của lớp 2 sẽ xử lý dữ liệu chi tiết để chuẩn bị gởi đi trên phương tiện truyền thông (cáp đồng, cáp quang, hay sóng điện từ..). Mẫu thông tin được xử lý tại lớp này gọi là khung dữ liệu (FRAME). Công nghệ tại lớp này thường gọi là ETHERNET, và địa chỉ để xác định duy nhất máy tính trên cùng một mạng được dùng là địa chỉ vật lý (MAC ADDRESS). Và các thiết bị có khả năng hiểu được cấu trúc của một frame và phân phát dữ liệu giữa các máy tính TRONG CÙNG MỘT MẠNG gọi là BRIDGE hoặc SWITCH.
Một khi lớp 2 đã chuẩn bị dữ liệu mà lớp 3 yêu cầu để gởi (quá trình xử lý này gọi là FRAMING), lớp 2 sẽ gởi yêu cầu này xuống lớp 1 để gởi trên phương tiện truyền thông hợp lý.
Lớp 1: Giao diện mạng = Physical trong OSI
Lớp này nhận yêu cầu từ lớp 2 (dữ liệu truyền từ lớp 5 đến lớp 1 lúc này). Lớp vật lý sẽ mã hóa dữ liệu nhận được từ lớp 2 và đặt chúng theo dạng bits (1s và 0s) trên đường truyền. Các bits có thể truyền đi trên nhiều phương tiện, thiết bị như: HUB, CABLE, NETWORK ADAPTER, CONNECTOR, TRANSCEIVER...Dữ liệu xử lý tại lớp này gọi là BITs.Lớp này xác định loại cáp sử dụng, độ dài cáp, kiểu đấu nối, tốc độ truyền.
Lưu ý: Những tên gọi của dữ liệu tại mỗi lớp (segment, packet, frame, bits) giống như trong mô hình OSI. Chúng được gọi chung là PDU (Protocol Data Unit)
Hãy đọc cẩn thận bài này để hiểu và nắm được các thuật ngữ trong quá trình truyền thông giữa 2 trạm !
Bài 2: Chúng ta sẽ tìm hiểu về quá trình đóng gói dữ liệu (Encapsulation và Deencapculation) nhé !