TCP/IP

Lịch sử

Bộ giao thức liên mạng xuất phát từ công trình DARPA, từ những năm đầu thập niên kỷ 1970. Sau khi đã hoàn thành việc xây dựng ARPANET tiên phong, DARPA bắt đầu công việc trên một số những kỹ thuật truyền thông dữ liệu khác. Vào năm 1972, Robert E. Kahn đã được thuê vào làm việc tại Văn phòng kỹ thuật điều hành tin tức (Information Processing Technology Office) của DARPA, phòng có chức năng liên quan đến mạng lưới truyền thông dữ liệu thông qua vệ tinh và mạng lưới truyền thông bằng sóng radio trên mặt đất. Trong quá trình làm việc tại đây Kahn đã phát hiện ra giá trị của việc liên thông giữa chúng. Vào mùa xuân năm 1973, Vinton Cerf, kỹ sư thiết kế bản giao thức NCP hiện dùng (chương trình ứng dụng xử lý mạng lưới truyền thông - nguyên tiếng Anh là "Network Control Program"), được phân công cùng làm việc với Kahn trên các mô hình liên kết nối kiến trúc mở (open-architecture interconnection models) với mục đích thiết kế giao thức sắp tới của ARPANET.
Vào mùa hè năm 1973, Kahn và Cerf đã nhanh chóng tìm ra một phương pháp tái hội nhập căn bản, mà trong đó những khác biệt của các giao thức liên kết mạng được che lấp đi bằng một giao thức liên kết mạng chung, và thay vì mạng lưới truyền thông phải chịu trách nhiệm về tính đáng tin cậy, như trong ARPANET, thì các máy chủ (hosts) phải chịu tránh nhiệm (Cerf ghi công của Hubert Zimmerman và Louis Pouzin (thiết kế viên của mạng lưới truyền thông CYCLADES) là những người có ảnh hưởng lớn trong bản thiết kế này.)
Với nhiệm vụ là một mạng lưới truyền thông bị hạ cấp tới mức cơ bản tối thiểu, khiến việc hội nhập với các mạng lưới truyền thông khác trở nên hầu như bất khả thi, mặc dầu đặc tính của chúng là gì, và vì thế, giải đáp nan đề đầu tiên của Kahn. Một câu nói cửa miệng vì thế mà TCP/IP, sản phẩm cuối cùng do những cống hiến của Cerf và Kahn, sẽ chạy trên "đường dây nối giữa hai ống bơ rỉ", và quả nhiên nó đã được thực thi dùng các con chim bồ câu đưa thư (homing pigeons). Một máy vi tính được dùng là cổng nối (gateway) (sau này đổi thành bộ định tuyến (router) để tránh nhầm với những loại cổng nối khác) được thiết bị một giao diện với từng mạng lưới truyền thông, truyền tải gói dữ liệu qua lại giữa chúng.
Ý tưởng này được nhóm nghiên cứu mạng lưới truyền thông của Cerf, tại Stanford, diễn giải ra tỉ mỉ, cụ thể vào khoảng thời gian trong năm 1973-1974. (Những công trình về mạng lưới truyền thông trước đó tại Xerox PARC, nơi sản sinh ra bộ giao thức PARC Universal Packet, phần lớn được dùng vào thời kỳ đó, cũng gây ảnh hưởng về kỹ thuật không ít; nhiều người nhảy qua nhảy lại giữa hai cái.)
Sau đó DARPA ký hợp đồng với BBN, Stanford, và Trường đại học chuyên nghiệp Luân Đôn (The University College London - viết tắt là UCL) kiến tạo một số phiên bản của giao thức làm việc được, trên các nền tảng phần cứng khác nhau. Có bốn phiên bản đã được xây dựng—TCP v1, TCP v2. Phiên bản 3 được tách ra thành hai phần TCP v3 và IP v3, vào mùa xuân năm 1978, và sau đó ổn định hóa với phiên bản TCP/IP v4—giao thức tiêu chuẩn hiện dùng của Internet ngày nay.
Vào năm 1975, cuộc thử nghiệm thông nối hai mạng lưới TCP/IP, giữa Stanford và UCL đã được tiến hành. Vào tháng 11 năm 1977, một cuộc thử nghiệm thông nối ba mạng lưới TCP/IP, giữa Mỹ, Anh và Na Uy đã được chỉ đạo. Giữa năm 1978 và 1983, một số những bản mẫu của TCP/IP đã được thiết kế tại nhiều trung tâm nghiên cứu. Ngày 1 tháng 1 năm 1983, ARPANET đã hoàn toàn được chuyển hóa sang dùng TCP/IP. 
Vào tháng 3 năm 1982,  Bộ Quốc phòng Mỹ chấp thuận TCP/IP thành một tiêu chuẩn cho toàn bộ mạng lưới vi tính truyền thông quốc phòng. Vào năm 1985, Uỷ ban kiến trúc Internet (Internet Architecture Board) đã dành 3 ngày hội thảo về TCP/IP cho công nghiệp điện toán, với sự tham dự của 250 đại biểu từ các công ty thương mại. Cuộc hội thảo này đã làm tăng thêm uy tín và sự nổi tiếng của giao thức, khiến nó ngày càng phổ biến trên thế giới.
Ngày 9 tháng 11 năm 2005 Kahn và Cerf đã được tặng thưởng Huy chương Tự do Tổng thống (Presidential Medal of Freedom) cho những thành tích cống hiến của họ đối với nền văn hóa của Mỹ.

Các tầng

Sau đây là miêu tả từng tầng trong bộ giao thức TCP/IP.

Tầng ứng dụng

Tầng ứng dụng là nơi các chương trình mạng thường dùng làm việc nhất nhằm liên lạc giữa các nút trong một mạng.
Giao tiếp xảy ra trong tầng này là tùy theo các ứng dụng cụ thể và dữ liệu được truyền từ chương trình, trong định dạng được sử dụng nội bộ bởi ứng dụng này, và được đóng gói theo một giao thức tầng giao vận.
Do chồng TCP/IP không có tầng nào nằm giữa ứng dụng và các tầng giao vận, tầng ứng dụng trong bộ TCP/IP phải bao gồm các giao thức hoạt động như các giao thức tại tầng trình diễn và tầng phiên của mô hình OSI. Việc này thường được thực hiện qua các thư viện lập trình.
Dữ liệu thực để gửi qua mạng được truyền cho tầng ứng dụng, nơi nó được đóng gói theo giao thức tầng ứng dụng. Từ đó, dữ liệu được truyền xuống giao thức tầng thấp tại tầng giao vận.
Hai giao thức tầng thấp thông dụng nhất là TCP và UDP. Mỗi ứng dụng sử dụng dịch vụ của một trong hai giao thức trên đều cần có cổng. Hầu hết các ứng dụng thông dụng có các cổng đặc biệt được cấp sẵn cho các chương trình phục vụ (server)(HTTP - Giao thức truyền siêu văn bản dùng cổng 80; FTP - Giao thức truyền tệp dùng cổng 21, v.v..) trong khi các trình khách (client) sử dụng các cổng tạm thời (ephemeral port).
Các thiết bị định tuyến và thiết bị chuyển mạch không sử dụng tầng này nhưng các ứng dụng điều chỉnh thông lượng (bandwidth throttling) thì có dùng.

Tầng mạng

Theo định nghĩa ban đầu, tầng mạng giải quyết các vấn đề dẫn các gói tin qua một mạng đơn. Một số ví dụ về các giao thức như vậy là X.25, và giao thức Host/IMP của mạng ARPANET.
Với sự xuất hiện của khái niệm liên mạng, các chức năng mới đã được bổ sung cho tầng này, đó là chức năng dẫn đường cho dữ liệu từ mạng nguồn đến mạng đích. Nhiệm vụ này thường đòi hỏi việc định tuyến cho gói tin quan một mạng lưới của các mạng máy tính, đó là liên mạng.
Trong bộ giao thức liên mạng, giao thức IP thực hiện nhiệm vụ cơ bản dẫn đường dữ liệu từ nguồn tới đích. IP có thể chuyển dữ liệu theo yêu cầu của nhiều giao thức tầng trên khác nhau; mỗi giao thức trong đó được định danh bởi một số hiệu giao thức duy nhất: giao thức ICMP (Internet Control Message Protocol) là giao thức 1 và giao thức IGMP (Internet Group Management Protocol) là giao thức 2.
Một số giao thức truyền bởi IP, chẳng hạn ICMP (dùng để gửi thông tin chẩn đoán về truyền dữ liệu bằng IP) và IGMP (dùng để quản lý dữ liệu đa truyền (multicast)), được đặt lên trên IP nhưng thực hiện các chức năng của tầng liên mạng, điều này minh họa một sự bất tương thích giữa liên mạng và chồng TCP/IP và mô hình OSI. Tất cả các giao thức định tuyến, chẳng hạn giao thức BGP (Border Gateway Protocol), giao thức OSPF, và giao thức RIP (Routing information protocol|), đều thực sự là một phần của tầng mạng, mặc dù chúng có thể có vẻ thuộc về phần trên của chồng giao thức.

Tầng liên kết

Tầng liên kết - phương pháp được sử dụng để chuyển các gói tin từ tầng mạng tới các máy chủ (host) khác nhau - không hẳn là một phần của bộ giao thức TCP/IP, vì giao thức IP có thể chạy trên nhiều tầng liên kết khác nhau. Các quá trình truyền các gói tin trên một liên kết cho trước và nhận các gói tin từ một liên kết cho trước có thể được điều khiển cả trong phần mềm điều vận thiết bị (device driver) dành cho cạc mạng, cũng như trong phần sụn (firmware) hay các chipset chuyên dụng. Những thứ đó sẽ thực hiện các chức năng liên kết dữ liệu chẳng hạn như bổ sung một tín đầu (packet header) để chuẩn bị cho việc truyền gói tin đó, rồi thực sự truyền frame dữ liệu qua một môi trường vật lý.
Đối với truy nhập Internet qua modem quay số, các gói IP thường được truyền bằng cách sử dụng giao thức PPP. Đối với truy nhập Internet băng thông rộng (broadband) như ADSL hay modem cáp, giao thức PPPoE thường được sử dụng. Mạng dây cục bộ (local wired network') thường sử dụng Ethernet, còn mạng không dây cục bộ thường dùng chuẩn IEEE 802.11. Đối với các mạng diện rộng (wide-area network), các giao thức thường được sử dụng là PPP đối với các đường T-carrier hoặc E-carrier, Frame relay, ATM (Asynchronous Transfer Mode), hoặc giao thức packet over SONET/SDH (POS).
Tầng liên kết còn có thể là tầng nơi các gói tin được chặn (intercepted) để gửi qua một mạng riêng ảo (virtual private network).
Khi xong việc, dữ liệu tầng liên kết được coi là dữ liệu của ứng dụng và tiếp tục đi xuống theo chồng giao thức TCP/IP để được thực sự truyền đi.
Tại đầu nhận, dữ liệu đi lên theo chồng TCP/IP hai lần (một lần cho mạng riêng ảo và lần thứ hai cho việc định tuyến).
Tầng liên kết còn có thể được xem là bao gồm cả tầng vật lý - tầng là kết hợp của các thành phần mạng vật lý thực sự (hub, các bộ lặp (repeater), cáp mạng, cáp quang, cáp đồng trục (coaxial cable), cạc mạng, cạc HBA (Host Bus Adapter) và các thiết bị nối mạng có liên quan: RJ-45, BNC, etc), và các đặc tả mức thấp về các tín hiệu (mức hiệu điện thế, tần số, v.v..).