Tầng chuyển vận
Tầng chuyển vận phân đoạn và lắp ghép lại dữ liệu thành một dòng dữ liệu đơn. Các dịch vụ nằm ở tầng này
lấy tất cả các dữ liệu khác nhau nhận từ các ứng dụng tầng trên, sau đó kết hợp nó vào cùng một dòng dữ liệu
cô đọng. Các giao thức này cung cấp các dịch vụ chuyển vận dữ liệu cuối tới cuối và có thể thiết lập
một kết nối luận lí giữa máy gửi và máy đích trên một liên mạng.
Một cặp giao thức được biết đến nhiều được gọi là TCP và UDP được tích hợp vào tầng này. TCP được biết đến
như là một dịch vụ đáng tin cậy còn UDP thì không. Sự khác biệt này cung cấp cho các nhà phát triển ứng dụng
nhiều tùy chọn hơn vì họ có một lựa chọn giữa hai giao thức khi họ thiết kế các sản phẩm cho tầng này.
Tầng chuyển vận chịu trách nhiệm cho cung cấp cơ chế cho các ứng dụng tầng cao hơn, thiết lập phiên làm việc,
và phá hủy mạch ảo. Nó cũng che giấu chi tiết của thông tin phụ thuộc mạng khỏi các tầng cao hơn cũng như cung
cấp chuyển vận dữ liệu minh bạch.
Thuật ngữ liên mạng tin cậy có thể được sử dụng tại tầng chuyển vận. Liên mạng tin cậy yêu cầu rằng xác nhận
(acknowledgements), đánh chuỗi (sequencing) và kiểm soát dòng dữ liệu (flow control) tất cả sẽ được sử dụng.
Tầng chuyển vận có thể hoặc là phi kết nối hoặc hướng kết nối, nhưng vì Cisco thực sự muốn bạn hiểu chức năng
hướng kết nối của tầng chuyển vận, tôi sẽ đi vào cái đó chi tiết hơn ở đây.
Trao đổi thông tin hướng kết nối
Để chuyển vận đáng tin cậy xảy ra, một thiết bị cái muốn truyền đi trước tiên phải thiết lập một phiên trao đổi thông
tin hướng kết nối với thiết bị ở xa – hệ thống peer của nó – được biết đến như là một call setup hay một
three-way handshake. Một khi quá trình này được hoàn thành, chuyển vận dữ liệu diễn ra, và khi nó được hoàn
thành, một chấm dứt gọi diễn ra để phá hủy mạch ảo.
Ảnh dưới mô tả một phiên làm việc đáng tin cậy điển hình diễn ra giữa hệ thống gửi và nhận. Trong nó, bạn có
thể thấy chương trình ứng dụng của cả hai host bắt đầu thông báo các hệ điều hành riêng rẽ của chúng cái một
kết nối sắp được khởi tạo. Hai hệ điều hành trao đổi thông tin bằng cách gửi các thông điệp trên mạng khắng
định rằng chuyển vận được đồng ý và cả hai bên đều sẵn sàng cho nó diễn ra. Sau tất cả đồng bộ hóa được yêu
cầu này diễn ra, một kết nối được thiết lập đầy đủ và chuyển vận dữ liệu bắt đầu. Và nhân tiện, nó thực sự là
hữu dụng để hiểu rằng thiết lập mạch ảo này thường được xem như một phí tổn.
Okay bây giờ trong khi thông tin được chuyển vận giữa các host, hai máy định kì kiểm tra lẫn nhau, trao đổi
thông tin qua phần mềm giao thức của chúng để đảm bảo rằng tất cả chạy tốt và rằng dữ liệu được nhận đúng đắn.
Sau đây là tóm tắt các bước trong phiên làm việc hướng kết nối – three-way handshake – mô tả trong ảnh trên:
+ Segment thỏa thuận kết nối đầu tiên là một yêu cầu cho SYN.
+ Segments tiếp theo ACK các tham số yêu cầu và thiết lập kết nối – các quy tắc – giữa các host. Các segments này
yêu cầu rằng đánh sỗ chuỗi của máy nhận cũng được đồng bộ hóa ở đây để rằng một kết nối hai hướng được hình
thành.
+ Segment cuối cùng cũng là một ACK, cái thông báo cho máy đích rằng thỏa thuận kết nối đã được chấp nhận
và rằng kết nối thực sự đã được thiết lập. Chuyển vận dữ liệu có thể bắt đầu.
Có vẻ khá đơn giản, nhưng các thứ không luôn chạy êm xuôi. Đôi khi suốt một chuyển vận, tắc nghẽn có thể xảy
ra vì một máy tính tốc độ cao khởi tạo chuyển vận dữ liệu nhanh hơn nhiều bản thân mạng có thể xử lí nó. Và
toàn một nhúm các máy gửi datagrams đồng thời qua một cổng hay đích đơn cũng có thể làm tắc nghẽn các thứ khá
tồi. Trong trường hợp sau, một cổng hay đích có thể trở nên tắc nghẽn mặc dù không phải nguồn đơn nào gây ra vấn
đề. Theo cả hai, vấn đề cơ bản là một đặc điểm đối với nút nghẽn cổ chai – quá nhiều lưu lượng mạng cho một
khả năng quá nhỏ.
Nhưng cái gì thực sự xảy ra khi một máy nhận một dòng lũ datagrams quá nhanh cho nó xử lí? Nó lưu giữ chúng
trong một khu vực bộ nhớ được gọi là buffer. Có vẻ tốt; nó chính là rằng hành động nhớ đệm này có thể giải
quyết vấn đề chỉ nếu các datagrams là một phần của bùng nổ nhỏ.
Nếu lũ mạnh datagram tiếp tục, cuối cùng làm cạn kiệt bộ nhớ thiết bị, khả năng chịu lũ dữ liệu bị vượt quá và
nó sẽ vứt đi bất cứ và tất cả datagrams thêm nó nhận như một cái xô tràn nước.