DCN - Giao thức điều khiển truyền dẫn
Giao thức điều khiển truyền (TCP) là một trong những giao thức quan trọng nhất của bộ Giao thức Internet. Nó là giao thức được sử dụng rộng rãi nhất để truyền dữ liệu trong mạng truyền thông như internet.
Đặc trưng
TCP là giao thức đáng tin cậy. Nghĩa là, người nhận luôn gửi xác nhận tích cực hoặc tiêu cực về gói dữ liệu cho người gửi, do đó người gửi luôn có manh mối sáng sủa về việc gói dữ liệu đã đến đích hay cần gửi lại.
TCP đảm bảo rằng dữ liệu đến đích dự kiến theo đúng thứ tự mà nó được gửi.
TCP là định hướng kết nối. TCP yêu cầu kết nối giữa hai điểm từ xa phải được thiết lập trước khi gửi dữ liệu thực tế.
TCP cung cấp cơ chế kiểm tra lỗi và khôi phục.
TCP cung cấp giao tiếp end-to-end.
TCP cung cấp kiểm soát luồng và chất lượng dịch vụ.
TCP hoạt động ở chế độ điểm-tới-điểm của Máy khách / Máy chủ.
TCP cung cấp máy chủ song công đầy đủ, tức là nó có thể thực hiện các vai trò của cả người nhận và người gửi.
Tiêu đề
Độ dài của tiêu đề TCP dài tối thiểu là 20 byte và tối đa là 60 byte.
Source Port (16-bits) - Nó xác định cổng nguồn của tiến trình ứng dụng trên thiết bị gửi.
Destination Port (16-bits) - Nó xác định cổng đích của tiến trình ứng dụng trên thiết bị nhận.
Sequence Number (32-bits) - Số byte dữ liệu thứ tự của một phân đoạn trong một phiên.
Acknowledgement Number (32-bits) - Khi cờ ACK được thiết lập, số này chứa số thứ tự tiếp theo của byte dữ liệu được mong đợi và hoạt động như báo nhận dữ liệu trước đó đã nhận.
Data Offset (4-bits) - Trường này ngụ ý cả hai, kích thước của tiêu đề TCP (từ 32 bit) và độ lệch của dữ liệu trong gói hiện tại trong toàn bộ phân đoạn TCP.
Reserved (3-bits) - Được dự trữ để sử dụng trong tương lai và tất cả đều được đặt bằng 0 theo mặc định.
Flags (1-bit each)
NS - Nonce Sum bit được sử dụng bởi quá trình báo hiệu Thông báo tắc nghẽn rõ ràng.
CWR - Khi một máy chủ nhận được gói với bộ bit ECE, nó sẽ đặt Cửa sổ giảm thiểu tắc nghẽn để xác nhận rằng đã nhận được ECE.
ECE -Nó có hai nghĩa:
Nếu bit SYN rõ ràng là 0, thì ECE có nghĩa là gói IP có bộ bit CE (trải nghiệm tắc nghẽn) của nó.
Nếu bit SYN được đặt thành 1, ECE có nghĩa là thiết bị có khả năng ECT.
URG - Nó chỉ ra rằng trường Con trỏ khẩn cấp có dữ liệu quan trọng và cần được xử lý.
ACK- Nó chỉ ra rằng trường Lời cảm ơn có ý nghĩa. Nếu ACK được xóa thành 0, nó chỉ ra rằng gói không chứa bất kỳ thông báo xác nhận nào.
PSH - Khi được thiết lập, nó là một yêu cầu tới trạm nhận dữ liệu PUSH (ngay khi nó đến) đến ứng dụng nhận mà không cần đệm nó.
RST - Cờ Reset có các tính năng sau:
Nó được sử dụng để từ chối một kết nối đến.
Nó được sử dụng để từ chối một phân đoạn.
Nó được sử dụng để khởi động lại kết nối.
SYN - Cờ này được sử dụng để thiết lập kết nối giữa các máy chủ.
FIN- Cờ này được sử dụng để giải phóng kết nối và không có thêm dữ liệu nào được trao đổi sau đó. Vì các gói có cờ SYN và FIN có số thứ tự nên chúng được xử lý theo đúng thứ tự.
Windows Size - Trường này được sử dụng để điều khiển luồng giữa hai trạm và cho biết số lượng bộ đệm (tính bằng byte) mà máy thu đã phân bổ cho một phân đoạn, tức là máy thu mong đợi bao nhiêu dữ liệu.
Checksum - Trường này chứa tổng kiểm tra của Header, Data và Pseudo Headers.
Urgent Pointer - Nó trỏ đến byte dữ liệu khẩn cấp nếu cờ URG được đặt thành 1.
Options - Nó tạo điều kiện cho các tùy chọn bổ sung không có trong tiêu đề thông thường. Trường tùy chọn luôn được mô tả bằng các từ 32 bit. Nếu trường này chứa dữ liệu nhỏ hơn 32 bit, phần đệm được sử dụng để che các bit còn lại để đạt đến ranh giới 32 bit.
Địa chỉ
Giao tiếp TCP giữa hai máy chủ từ xa được thực hiện bằng số cổng (TSAP). Số cổng có thể nằm trong khoảng từ 0 - 65535 được chia thành:
- Cổng hệ thống (0 - 1023)
- Cổng người dùng (1024 - 49151)
- Cổng riêng / động (49152 - 65535)
Quản lý kết nối
Giao tiếp TCP hoạt động theo mô hình Máy chủ / Máy khách. Máy khách khởi tạo kết nối và máy chủ chấp nhận hoặc từ chối nó. Bắt tay ba chiều được sử dụng để quản lý kết nối.
Thành lập
Máy khách bắt đầu kết nối và gửi phân đoạn với số thứ tự. Máy chủ xác nhận nó trở lại với số thứ tự của chính nó và ACK của phân đoạn của khách hàng, nhiều hơn một số thứ tự của khách hàng. Máy khách sau khi nhận được ACK của phân đoạn của nó sẽ gửi xác nhận phản hồi của Máy chủ.
Giải phóng
Một trong hai máy chủ và máy khách có thể gửi phân đoạn TCP với cờ FIN được đặt thành 1. Khi đầu cuối nhận phản hồi lại bằng ACKnowledging FIN, hướng giao tiếp TCP đó sẽ bị đóng và kết nối được giải phóng.
Quản lý băng thông
TCP sử dụng khái niệm kích thước cửa sổ để đáp ứng nhu cầu quản lý băng thông. Kích thước cửa sổ cho người gửi ở đầu từ xa, số lượng phân đoạn byte dữ liệu mà người nhận ở đầu này có thể nhận. TCP sử dụng giai đoạn khởi động chậm bằng cách sử dụng kích thước cửa sổ 1 và tăng kích thước cửa sổ theo cấp số nhân sau mỗi giao tiếp thành công.
Ví dụ: máy khách sử dụng kích thước cửa sổ 2 và gửi 2 byte dữ liệu. Khi xác nhận của phân đoạn này nhận được, kích thước cửa sổ được nhân đôi lên 4 và lần gửi tiếp theo, phân đoạn được gửi sẽ có độ dài 4 byte dữ liệu. Khi xác nhận phân đoạn dữ liệu 4 byte được nhận, máy khách đặt kích thước cửa sổ thành 8, v.v.
Nếu một xác nhận bị bỏ lỡ, tức là dữ liệu bị mất trong mạng chuyển tiếp hoặc nó nhận được NACK, thì kích thước cửa sổ sẽ giảm xuống một nửa và giai đoạn bắt đầu chậm lại bắt đầu.
Kiểm soát lỗi & và Kiểm soát luồng
TCP sử dụng số cổng để biết nó cần tiến trình ứng dụng nào để chuyển giao phân đoạn dữ liệu. Cùng với đó, nó sử dụng số thứ tự để tự đồng bộ hóa với máy chủ từ xa. Tất cả các phân đoạn dữ liệu được gửi và nhận với số thứ tự. Người gửi biết được phân đoạn dữ liệu cuối cùng nào được Người nhận nhận khi nó nhận được ACK. Người nhận biết về phân đoạn cuối cùng do Người gửi gửi bằng cách tham chiếu đến số thứ tự của gói tin đã nhận gần đây.
Nếu số thứ tự của một phân đoạn nhận được gần đây không khớp với số thứ tự mà người nhận mong đợi, thì nó sẽ bị loại bỏ và NACK được gửi lại. Nếu hai phân đoạn đến với cùng một số thứ tự, giá trị dấu thời gian TCP sẽ được so sánh để đưa ra quyết định.
Ghép kênh
Kỹ thuật kết hợp hai hoặc nhiều luồng dữ liệu trong một phiên được gọi là Ghép kênh. Khi một máy khách TCP khởi tạo kết nối với Máy chủ, nó luôn đề cập đến một số cổng được xác định rõ ràng cho biết quá trình ứng dụng. Bản thân máy khách sử dụng số cổng được tạo ngẫu nhiên từ các nhóm số cổng riêng.
Sử dụng Ghép kênh TCP, một máy khách có thể giao tiếp với một số quy trình ứng dụng khác nhau trong một phiên duy nhất. Ví dụ: một ứng dụng khách yêu cầu một trang web có chứa các loại dữ liệu khác nhau (HTTP, SMTP, FTP, v.v.) thì thời gian chờ phiên TCP được tăng lên và phiên được giữ mở trong thời gian dài hơn để chi phí bắt tay ba chiều có thể được tránh.
Điều này cho phép hệ thống máy khách nhận nhiều kết nối qua một kết nối ảo duy nhất. Các kết nối ảo này không tốt cho Máy chủ nếu thời gian chờ quá lâu.
Điều khiển tắc nghẽn
Khi một lượng lớn dữ liệu được cung cấp cho hệ thống không có khả năng xử lý, tắc nghẽn sẽ xảy ra. TCP kiểm soát tắc nghẽn bằng cơ chế Window. TCP đặt kích thước cửa sổ cho đầu kia biết lượng dữ liệu cần gửi. TCP có thể sử dụng ba thuật toán để kiểm soát tắc nghẽn:
Tăng cộng, giảm số nhân
Bắt đầu chậm
Phản ứng hết giờ
Quản lý hẹn giờ
TCP sử dụng các loại bộ đếm thời gian khác nhau để kiểm soát và quản lý các tác vụ khác nhau:
Hẹn giờ duy trì hoạt động:
Bộ đếm thời gian này được sử dụng để kiểm tra tính toàn vẹn và hợp lệ của kết nối.
Khi hết thời gian giữ mạng, máy chủ sẽ gửi một thăm dò để kiểm tra xem kết nối có còn tồn tại hay không.
Bộ đếm thời gian truyền lại:
Bộ đếm thời gian này duy trì phiên trạng thái của dữ liệu được gửi.
Nếu xác nhận dữ liệu đã gửi không nhận được trong thời gian Truyền lại, phân đoạn dữ liệu sẽ được gửi lại.
Hẹn giờ liên tục:
Một trong hai máy chủ có thể tạm dừng phiên TCP bằng cách gửi Kích thước cửa sổ 0.
Để tiếp tục phiên, máy chủ cần gửi Kích thước cửa sổ với một số giá trị lớn hơn.
Nếu đoạn này không bao giờ đến đầu kia, cả hai đầu có thể đợi nhau trong khoảng thời gian vô hạn.
Khi bộ đếm thời gian Persist hết hạn, máy chủ sẽ gửi lại kích thước cửa sổ của nó để cho đầu bên kia biết.
Persist Timer giúp tránh bế tắc trong giao tiếp.
Đã hẹn giờ-Chờ:
Sau khi giải phóng kết nối, một trong hai máy chủ đợi khoảng thời gian Định giờ-Chờ để kết thúc hoàn toàn kết nối.
Điều này là để đảm bảo rằng đầu bên kia đã nhận được xác nhận về yêu cầu chấm dứt kết nối.
Thời gian chờ có thể tối đa là 240 giây (4 phút).
Khôi phục sự cố
TCP là giao thức rất đáng tin cậy. Nó cung cấp số thứ tự cho mỗi byte được gửi trong phân đoạn. Nó cung cấp cơ chế phản hồi tức là khi một máy chủ nhận được một gói tin, nó được ràng buộc với ACK mà gói tin đó có số thứ tự tiếp theo được mong đợi (nếu nó không phải là phân đoạn cuối cùng).
Khi một Máy chủ TCP gặp sự cố giao tiếp giữa chừng và bắt đầu lại quá trình của nó, nó sẽ gửi TPDU quảng bá đến tất cả các máy chủ của nó. Sau đó, các máy chủ có thể gửi đoạn dữ liệu cuối cùng chưa từng được xác nhận và chuyển tiếp.