[0:00]Bài học ngày hôm nay chúng ta sẽ tìm hiểu lớp thứ tư của mô hình OSI đó chính là lớp Transport Layer. Đó thì trong tình huống mà server đổi dữ liệu ồ ạt cho máy trạm Workstation thì có khả năng là máy trạm này không đủ tài nguyên để xử lý dẫn đến tình huống và mất mát dữ liệu trong suốt quá trình truyền thông. Thì để đảm bảo cái quá trình truyền nhận dữ liệu giữa hai PC này không mất mát trong suốt quá trình truyền thông á thì lớp Transport nó sẽ thực hiện các cơ chế phù hợp để đảm bảo cho quá trình truyền thông này. Chẳng hạn như là trước khi hai máy tính bắt đầu truyền thông á, nó sẽ trải qua cái quá trình gọi là bắt tay ba bước để khi mà cả hai PC cả hai thiết bị đều chuẩn bị sẵn sàng tài nguyên để phục vụ cho quá trình gửi nhận dữ liệu thì lúc này quá trình gửi nhận dữ liệu mới bắt đầu diễn ra. Hoặc là một cái tình huống khác là trong quá trình server gửi dữ liệu cho thằng PC này, nếu mà server gửi qua cho PC khoảng 100 gói tin nhưng mà 100 gói tin này chỉ đến được khoảng 90 gói thôi. Tức là làm sao mà PC chúng ta, máy trạm nó phát hiện là 10 gói tin bị mất và nó yêu cầu là server phải gửi lại cho nó 10 gói tin bị mất này. Đó thì thông qua bài học ngày hôm nay chúng ta sẽ tìm hiểu rõ hơn về bản chất của cái cơ chế này. Đó hôm nay chúng ta chủ yếu là tìm hiểu lớp thứ tư của lớp Transport, lớp thứ tư trong mô hình OSI. Về mặt tổng quan thì lớp Transport nó có khoảng năm chức năng. Đó chức năng đầu tiên gọi là các ghép phiên kết nối Session Multiplexing, chức năng thứ hai gọi là Segmentation. Đó thì như thế nào được gọi là Session Multiplexing, ghép phiên kết nối. Thì như chúng ta biết là trên một máy tính hiện nay là tại một thời điểm chúng ta có thể mở được nhiều ứng dụng mạng đồng thời vừa lướt web, vừa chơi game, vừa tải phim nhưng mà gần như là cả ba phiên làm việc này đã có thể hoạt động truy cập internet một cách bình đẳng. Trong khi chúng ta chỉ có một kết nối một cái card mạng kết nối duy nhất ra bên ngoài thôi thì làm sao mà tất cả các phiên làm việc này có thể truy cập internet một cách bình đẳng được như vậy. Đó thì lúc này lớp Transport á nó sẽ phải làm một thao tác gọi là Session Multiplexing. Chẳng hạn cứ một giây thì nó sẽ chia thành ba slot thời gian. Slot thời gian đầu tiên để Session một nó chiếm dụng đường truyền để phục vụ cho việc truyền nhận dữ liệu. Đó Session thứ hai, phiên làm việc thứ hai tức là Session slot thời gian thứ hai thì Session thứ hai nó sẽ chiếm dụng cái slot thời gian này. Và slot thời gian thứ ba thì sẽ dành cho Session thứ ba bằng cách này mà tất cả các phiên làm việc để có thể truy cập internet một cách đồng thời và bình đẳng với nhau. Đó chính là chức năng Session Multiplexing. Chức năng thứ hai của chúng ta đó chính là Segmentation, chẳng hạn đứng ở phiên làm việc đầu tiên Session 1. Chúng ta có nhu cầu truyền một cái file có kích thước là 10 MB. Đó truyền một cái file có kích thước là 10 MB. Thì 10 MB này không bao giờ người ta đóng thành một cái đơn vị dữ liệu và một cái gói tin duy nhất rồi sau đó truyền đi. Bởi vì nếu mà Session 1 nó truyền hết 10 MB này thì lúc này có thể mất đến 1 cho đến 2 phút thì lúc này Session 3, Session 2 sẽ phải ngồi đợi tức là các phiên này có khả năng bị rớt mạng ngay lập tức. Đó thì thông thường á trước khi gửi đi 10 MB này thì lớp Transport nó sẽ làm một thao tác gọi là Segmentation, tức là phân mảnh 10 MB này thành rất nhiều những cái segment nhỏ khác nhau. Thì thông thường cái segment ta sẽ có chiều dài linh hoạt đó nhưng mà kích thước lớn nhất là khoảng 1480 byte. Tức là 10 MB có thể rã thành hàng ngàn, hàng triệu những cái segment khác nhau. Và từng cái segment này sẽ tiếp tục đưa xuống lớp Network để gắn thêm thông tin về địa chỉ AB nguồn, AB đích rồi lần lượt xử lý qua các lớp như vậy như chúng ta đã cập đã đề cập trong bài mô hình OSI. Ngoài ra lớp Transport còn có hai chức năng khác nữa, ba chức năng khác nữa là Flow Control. Giống như trong slide đầu tiên thì mọi người thấy là nếu mà server đổ dữ liệu ồ ạt qua máy trạm Workstation thì máy trạm có khả năng là không đủ tài nguyên để nhận được dữ liệu đó. Thì trong tình huống đó máy trạm sẽ thông báo gửi một số những tín hiệu thông báo cho server là tạm thời giảm bớt cái quá trình truyền dữ liệu của mình hoặc là tạm thời dừng hẳn cái quá trình truyền dữ liệu của mình đi để máy trạm có thời gian xử lý những cái dữ liệu còn tồn động tại bộ nhớ đệm. Đó đó là ý tưởng về Flow Control còn cụ thể như thế nào thì tí nữa chúng ta sẽ phân tích cụ thể hơn. Chức năng thứ tư của lớp Transport đó chính là Connection-oriented, tức là cái quá trình bắt tay ba bước. Tức là nếu mà server cứ thế mà đổ dữ liệu ồ ạt qua máy trạm thì có khả năng là máy trạm không đủ tài nguyên để xử lý, dẫn đến tình huống là mất mát dữ liệu. Thì lúc này á hai bên sẽ trải qua cái quá trình gọi là bắt tay ba bước, tức là đảm bảo rằng hai thiết bị đã sẵn sàng tài nguyên CPU RAM và bộ nhớ để phục vụ cho quá trình gửi nhận dữ liệu thành công. Và chức năng đã thứ năm của lớp Transport đó chính là đảm bảo cái độ tin cậy trong suốt quá trình truyền thông. Từ PCA gửi 1 triệu bucket, 1 triệu đơn vị dữ liệu tới PCB nhưng mà 1 triệu bucket này không bị mất mát bất kỳ cái đơn vị dữ liệu này trong suốt quá trình truyền thông. Đó đó là chức năng nổi bật nhất của lớp Transport này. Thì cụ thể hơn về các chức năng này bắt đầu chúng ta sẽ phân tích từng chức năng một. Ở lớp Transport thì có chúng ta có một số giao thức nhưng mà có hai giao thức được sử dụng khá phổ biến đó trên hệ thống mạng internet hiện nay đó chính là giao thức TCP và giao thức UDP. Nói một cách đơn giản thì chúng ta có thể hình dung như thế này. Nếu mà chúng ta có nhu cầu gửi một cái bucket với độ tin cậy cao á tức là truyền thông tin cậy á thì chúng ta sẽ lựa chọn cái giải pháp là truyền thông TCP. Còn nếu mà chúng ta có nhu cầu là sử dụng cái dịch vụ gọi là chuyển phát nhanh, càng nhanh càng tốt đó thì có thể sử dụng cái dịch vụ gọi là UDP. Đó chẳng hạn khi mà chúng ta xem những cái kênh truyền hình trực tuyến thông qua những cái website á thì chúng ta chắc chắn là nên sử dụng cái dịch vụ UDP này. Rồi cụ thể như thế này, bên đây là máy TX tức là máy truyền, bên đây máy RX là máy nhận. Thì bắt đầu là máy TX ở đây nó sẽ có một mớ tín hiệu này cần gửi qua bên đây. Thì lúc này nó sẽ có hai giải pháp. Thứ nhất, máy truyền đó bây giờ nó muốn truyền nguyên một cái đám dữ liệu này à thì lúc này nó có thể lựa chọn một trong hai cái dịch vụ. Thứ nhất truyền thông tin cậy, thứ hai chuyển phát nhanh càng nhanh càng tốt. Đó thì lúc này bây giờ chúng ta sẽ khảo sát là nếu mà máy này nó quyết định là nó truyền các đám dữ liệu này bằng cách là sử dụng cái dịch vụ truyền thông tin cậy TCP á thì các bước sẽ diễn ra như thế nào. Thì đầu tiên là hai PC này nó sẽ diễn ra cái quá trình gọi là bắt tay ba bước.
[6:54]Tức là nó sẽ đảm bảo là hai PC đảm bảo là chúng sẵn sàng các quá trình truyền nhận dữ liệu thì quá trình này mới thực sự diễn ra. Đó bởi vì nếu mà một bên nó truyền dữ liệu mà bên kia chưa sẵn sàng hoặc là chưa đủ tài nguyên để nhận thì chắc chắn là dữ liệu sẽ bị mất mát. Đấy nên là nó sẽ trải qua cái quá trình gọi là bắt tay ba bước như thế này. Thì bước đầu tiên á là máy truyền này nó sẽ gửi ra một tín hiệu SYN để yêu cầu là sẽ hỏi thăm xem là máy bên đây nó có đủ tài nguyên RAM và CPU để bắt đầu cho quá trình truyền thông này hay không. Nếu mà nó đủ á thì nó sẽ xác nhận về cho máy TX bên đây một cái bản tin gọi là báo nhận ACK, đồng thời là gửi kèm theo tín hiệu tín hiệu SYN của chính nó.
[7:37]Tức là cũng hỏi bên đây là anh có đủ RAM và CPU để bắt đầu quá trình truyền thông hay chưa.
[7:46]Và nếu bên đây cũng đủ các tham số này, cũng đủ các điều kiện truyền thông này thì nó sẽ xác nhận về cho máy phía bên đây một cái bản tin gọi là báo nhận ACK. Thì nếu mà cả hai bên đã đồng nhất đi đến sự thỏa thuận như thế này á thì quá trình gửi dữ liệu này mới thực sự bắt đầu diễn ra. Tuy nhiên trước khi máy TX này truyền các đám dữ liệu này qua phía bên, nó sẽ làm thao tác là nó sẽ phân mảnh. Phân mảnh đó có thể là 10 MB được rã thành rất nhiều những cái segment khác nhau. Và thậm chí là trước khi truyền các segment này đi nó còn làm thêm một thao tác là nó đánh số thứ tự cho các segment này trước khi gửi đi. Rồi sau đó nó gửi duy nhất cái segment đầu tiên thôi, tức là nó sẽ không gửi ồ ạt các segment này. Bởi vì nó sợ là nếu mà gửi ồ ạt như vậy thì có khả năng là mất mát dữ liệu trong quá trình truyền thông. Cho nên lúc này nó chỉ gửi ra đi duy nhất một cái segment có số thứ tự là một như thế này. Thì để đảm bảo cái quá trình truyền thông tin cậy á thì phía bên máy nhận, sau khi mà nhận được cái segment 1 này thì nó sẽ phải làm thao tác là nó sẽ bắt buộc sẽ phải báo nhận về cho máy TX bên đây một cái bản tin gọi là ACK 1. Tức là nó xác nhận là tôi đã nhận được cái segment có số thứ tự là một như thế này rồi. Rồi sau đó máy TX sau khi nhận được xác nhận ACK là 1, nó sẽ gửi tiếp cái segment có số thứ tự là 2. Nếu mà máy bên đây cũng nhận được segment là 2 thành công luôn thì nó tiếp tục báo nhận ACK là 2. Thì quá trình cứ tương tự như vậy mà diễn ra. Thì trong tình huống này thì chúng ta giả thích là cái segment thứ ba trong suốt quá trình truyền thông đã bị mất mát rồi. Đó thì có thể là máy RX không nhận được.
[9:26]Đó cho nên cuối cùng là đứng ở phía máy TX này, sau một khoảng thời gian nhất định kể từ lúc mà nó gửi segment thứ hai đi mà không nhận không nhận được bất kỳ cái bản tin hồi đáp ACK nào thì nó sẽ chủ động, nó sẽ gửi lại cái segment có số thứ tự là ba này. Tức là khi mà nó gửi đi segment thứ ba thì nó sẽ không xóa segment thứ ba này ngay lập tức trong bộ nhớ đệm của nó mà nó sẽ định trữ tạm thời để có gì phục vụ cho quá trình gọi là gửi lại. Đó thì đây chính là cái bản chất mà giúp khôi phục những cái dữ liệu bị mất. Tức là thằng này gửi qua bên đây 10 triệu cái segment để đảm bảo là 10 triệu segment này không bị mất mát bất kỳ cái đơn vị dữ liệu nào hết nhờ cái quá trình này ha. Đó khi mà máy RX hồi đáp ACK thì bắt đầu là máy TX truyền tiếp segment còn lại. Và tiếp theo là máy bên kia sẽ hồi đáp ACK. Thì bằng cơ chế này thì nó sẽ đảm bảo quá trình truyền thông tin cậy từ đầu cuối đến đầu cuối giữa hai thiết bị như thế này. Còn bây giờ chúng ta sẽ khảo sát cái quá trình truyền thông giữa hai PC đó nhưng mà thông qua cái dịch vụ gọi là chuyển phát nhanh UDP như thế này thì các bước nó sẽ diễn ra như thế nào. Đó thì đặc biệt là đối với cái quá trình truyền thông UDP á thì nó sẽ không cần phải chạy qua cái quá trình gọi là bắt tay ba bước như thế này. Đó không cần phải trải qua quá trình bắt tay ba bước. Mà đơn giản là máy TX á nó có dữ liệu cần truyền thì lập tức là nó truyền ngay lập tức luôn mà không cần phải chỉ hoãn bất kỳ tín hiệu nào hết. Nhưng mà trước khi truyền thông thì nó cũng làm một thao tác là nó sẽ phân mảnh cái dữ liệu này thành rất nhiều những cái segment khác nhau, rất nhiều những cái segment khác nhau. Rồi sau đó là nó sẽ ồ ạt đổ dữ liệu đi. Đó tức là mọi người sẽ thấy là rõ ràng là nó tốc độ nó nhanh hơn hẳn so với cái phương thức truyền thông TCP. Nhưng mà nhược điểm của phương thức này đó chính là cái nguy cơ mất mát dữ liệu trong suốt quá trình truyền thông, chẳng hạn như là bốn segment này nếu mà bị mất mát segment thứ ba đồng nghĩa với việc là mất luôn và chúng ta không có khả năng phục hồi được những cái dữ liệu bị mất mát này. Cho nên thường thì chúng ta cũng có những cái ứng dụng mà cần phải có cái tốc độ nhanh như thế này.
[11:43]Những ứng dụng liên quan tới thời gian thực chẳng hạn như là VoIP hoặc là hội nghị truyền hình, truyền hình hay yêu cầu hoặc đôi khi chúng ta xem những cái kênh truyền hình thông qua những cái website á thì lúc này chúng ta cần phải có cái tốc độ theo thời gian thực thì UDP sẽ phù hợp hơn so với TCP. Tuy nhiên thông thường thì UDP nó sẽ không hoạt động độc lập với nhau, chẳng hạn trong tình huống này. Hai cái điện thoại mà muốn gọi thực hiện cuộc gọi qua lại với nhau á thì thông thường á ban đầu nó vẫn phải sử dụng cái giao thức gọi là TCP để thiết lập cuộc gọi trước cái đã. Rồi sau khi thiết lập cuộc gọi thành công á thì lúc này là hai IP phone nó sẽ phát sinh tới hai luồng UDP. Một luồng UDP để phục vụ cho cái kênh thoại từ trái sang phải và một luồng UDP khác để phục vụ cho kênh thoại từ phải sang trái như thế này. Đấy hai luồng UDP độc lập với nhau, tương ứng với hai kênh thoại khác nhau. Đó thì cuối cùng là chúng ta sẽ so sánh thử coi là sự khác biệt giữa hai cái giao thức UDP và TCP như thế nào. Thì mọi người thấy có thể quan sát thấy là quá trình gửi nhận UDP là diễn ra khá nhanh. Đó nếu mà so sánh với cái quá trình gửi nhận dữ liệu bằng TCP thì mọi người thấy là mỗi lần mà nó gửi một cái segment thì nó phải đợi hồi đáp ACK. Đó tức là đảm bảo được cái độ tin cậy nhưng mà cái tốc độ là quá chậm. Và khi mà máy sender gửi đi segment thứ ba mà không nhận được bất kỳ hồi đáp ACK nào, mọi người thấy là nó sẽ chủ động, đó nó sẽ gửi lại cái segment thứ ba này sau một khoảng thời gian nhất định nào đó do người lập trình họ thiết lập thôi. Đó rồi sau đó nó gửi tới segment thứ tư như thế này. Đó quá trình cứ tương tự như vậy cho đến khi mà truyền hết tất cả những cái segment này.
[13:49]Đó máy nhận nhận được segment thứ sáu sẽ phải hồi đáp ACK về. Đó rồi bên đây sẽ gửi tiếp segment thứ bảy và segment thứ tám. Đó và là tốc độ diễn ra khá lâu. Thì để cải thiện được cái tốc độ của giao thức TCP này đó thì người ta sử dụng tới một cái tham số gọi là Window Size, Window Size. Thì bây giờ chúng ta vẫn muốn quá trình truyền thông tin cậy nhưng mà tốc độ được cải thiện hơn bắt đầu người ta nghĩ tới cái tham số gọi là Window Size. Thì để hiểu hơn về cái tham số Window Size này chúng ta sẽ quan sát vào cái TCP header hay đôi khi còn gọi là Transport Layer. Đó đây, một cái bản tin sử dụng giao thức TCP thì cấu trúc của nó bao gồm hai phần, phần Data và phần Header. Do TCP nó phải thực hiện khá nhiều cái chức năng khác nhau thành ra là nó sẽ có nhiều trường hơn, nhiều trường hơn rất nhiều so với UDP Header. Thì trong số các trường này nó sẽ có 16 bit gọi là Window Size như thế này. Thế bên cạnh cái trường Window Size thì chúng ta có thể quan sát thấy nó còn có những cái trường chẳng hạn như là Sequence Number phục vụ cho việc đánh số thứ tự các segment trước khi gửi đi. Đó những cái trường gọi là báo nhận ACK để phục vụ cho quá trình báo nhận. Nhưng mà bây giờ chúng ta sẽ tập trung phân tích cái trường Window Size nó sẽ giúp TCP cải thiện tốc độ trong suốt quá trình truyền thông. Đó thì bây giờ là chúng ta sẽ phân tích quá trình này. Chẳng hạn như là Sender, máy gửi và Receiver là máy nhận. Thì trong quá trình bắt tay ba bước á thì hai thằng này nó sẽ thỏa thuận là chúng ta hãy sử dụng giá trị Window Size bằng một. Tức là cứ mỗi lần mà Sender gửi segment qua thì nó chỉ được phép gửi một segment mà thôi. Và khi mà máy nhận nhận được segment một nó sẽ ACK là 2 để báo nhận cho máy Sender. Thì ACK 2 này nó có hai ý nghĩa, thứ nhất là nó yêu cầu Sender gửi tiếp cái segment thứ hai. Đó do vậy khi Sender nhận được ACK là 2 nó sẽ gửi tiếp segment thứ hai như thế này. Và ý nghĩa thứ hai của ACK là 2 á là nó ngầm báo hiệu là segment 1 đã nhận thành công rồi. Đó segment 1 đã nhận được thành công. Rồi lúc này Sender gửi tiếp segment thứ hai. Và quá trình gửi nhận thành công nữa diễn ra thì bắt đầu Receiver sẽ ACK là 3 hồi đáp về. Và yêu cầu Sender gửi tiếp segment thứ ba và nó sẽ gửi tiếp segment thứ ba. Máy Receiver tiếp tục nhận thành công và ACK về giá trị là 4. Như vậy với quá trình Window Size là bằng 1 đó thì mỗi lần Sender chỉ có thể gửi đi một segment duy nhất mà thôi. Đó cho đến khi được hồi đáp ACK thành công. Thì lúc này nó muốn cải thiện tốc độ thì hai bên Sender và Receiver sẽ thỏa thuận giá trị Window Size bằng 3. Thì lúc này máy Sender nó sẽ gửi liên tiếp segment 1 2 3 tức là ba segment nó đi tiếp rồi sau đó mới đợi hồi đáp ACK. Đó như vậy thì quá trình truyền dữ liệu nó sẽ nhanh hơn, nhanh gấp ba lần so với Window Size bằng 1. Thì lúc này nó gửi liên tiếp segment 1 2 3. Và nếu như Receiver nhận thành công cả ba segment này thì mọi người thấy là nó sẽ ACK về tham số là 4. Tức là yêu cầu thằng này gửi tiếp segment có số thứ tự là 4. Và lúc này Sender sẽ gửi tiếp segment có số thứ tự là 4 5 6. Và nếu như là quá trình truyền nhận thành công thì phía bên Receiver sẽ ACK về giá trị là 7. Tuy nhiên, nếu trong quá trình truyền thông mà một trong ba segment này bị mất thì nó sẽ ACK về giá trị như thế nào. Chẳng hạn như là trong số ba segment 4 5 6 này thì chúng ta vô tình bị mất segment 5. Thì máy Receiver sẽ ACK về giá trị là 5, yêu cầu thằng này gửi lại segment thứ năm trở đi. Và máy Sender sẽ gửi lại segment 5 6 7. Quá trình cứ tương tự như vậy diễn ra. Tuy nhiên vấn đề là hai PC như thế này nó sẽ thỏa thuận giá trị Window Size như thế nào thì hợp lý. Đó chẳng hạn như là khi mà hệ thống mạng mà nó rỗi, băng thông nhiều thì nó muốn là giá trị Window Size này sẽ tăng lên. Còn khi mà hệ thống mạng có dấu hiệu bị nghẽn rồi thì giá trị Window Size sẽ tự động giảm xuống. Tức là giá trị Window Size sẽ thay đổi theo thời gian thực luôn. Thì lúc này hai PC nó mới sử dụng một cái cơ chế gọi là cửa sổ trượt Sliding Windowing. Thì cơ chế này hoạt động như thế này. Chẳng hạn như là hệ điều hành nó sẽ ước lượng xem là tài nguyên hiện nay của máy trạm là còn bao nhiêu RAM là CPU. Thì lúc này nó sẽ quyết định giá trị Window Size của thiết bị này. Chẳng hạn như là máy Sender hiện nay đang có giá trị Window Size bằng 3. Tức là ám chỉ là nó có khả năng gửi liên tiếp ba segment và có khả năng nhận liên tiếp ba segment. Trong khi máy Receiver bên đây nó chỉ có Window Size bằng 2 thôi, tức là lúc này nó chỉ có khả năng nhận được liên tiếp hai segment liên tiếp mà thôi. Thì lúc này segment thứ ba dẫn đến tình huống là bị mất mát, không đủ tài nguyên để lưu trữ dẫn đến tình huống là mất dữ liệu. Thì lúc này máy Receiver sẽ ACK về giá trị là 3, tức là yêu cầu Sender gửi lại segment thứ ba.
[19:05]ACK Sender gửi lại segment thứ ba. Và lúc này khi mà máy nhận á, máy truyền á, nó nhận được cái tham số ACK là bằng 2, Window Size bằng 2 như thế này của máy Receiver. Thì lúc này nó chỉ gửi liên tiếp hai segment thôi và bắt đầu gửi lại cái cái segment thứ ba trở đi. Nhưng mà nó vẫn kèm theo giá trị Window Size của chính nó là bằng 3 để khi mà phía bên đây nó giải phóng cái những cái session, những cái tài nguyên mà không còn sử dụng nữa thì giá trị Window Size của thằng này có thể tự động tăng lên 4 hoặc là 8. Đó thì lúc này là quá trình truyền nhận dữ liệu sẽ được cải thiện hơn và tốc độ. Đó và là chúng ta vừa khảo sát xong cái cơ chế cửa sổ trượt Sliding Windowing. Đó thì bây giờ chúng ta chốt lại một cái vấn đề đó chính là cái Sequence Number này, cái trường Sequence Number. Chẳng hạn bây giờ là máy Sender gửi qua hai cái bản tin. Bản tin đầu tiên đó là nó có kích thước là khoảng 10 byte, tức là nó gửi được 10 byte cái phần Data của nó. Thì cái Sequence Number này sẽ là 10, tức là ám chỉ nó gửi được 10 byte tới máy Receiver rồi. Và cái bản tin thứ hai là có kích thước là 250 byte thì cái Sequence Number này sẽ là 260, tức là ám chỉ là nó đã gửi được khoảng 250 byte qua cho Receiver. Rồi bây giờ chúng ta sẽ tham khảo cái tham số gọi là ACK, trường báo nhận. Tức khi mà nó nhận được một cái segment có số Sequence Number là 10 này thì nó sẽ ACK là 11. Tức là yêu cầu máy Sender gửi tiếp cái byte thứ 11 trở đi. Tương tự như vậy đối với cái segment có số Sequence Number là 260 thì khi mà máy Receiver nhận thành công hết thì nó sẽ báo nhận một cái tham số là ACK là 261. Tức là yêu cầu bên đây gửi tiếp cái cái segment cái byte thứ 261 trở đi. Đó đó là các trường có trong Transport Header hay cụ thể là TCP Header. Tuy nhiên trong bên cạnh cái trường Window Size, những cái trường Sequence Number, trường báo nhận ACK đó chúng ta có hai cái trường rất quan trọng là 16 bit port nguồn và 16 bit port đích. Thì trong cái giao thức UDP Header cũng vậy, nó cũng có một số trường nhưng mà cũng có hai cái trường quan trọng nhất như thế này là 16 bit port nguồn và 16 bit port đích.
[21:42]Đó thì ở cái lớp gọi là Layer 2 á thì lớp Data Link chúng ta có một cái khái niệm gọi là địa chỉ MAC nguồn, địa chỉ MAC đích. Tức là mỗi một cái máy tính nó sẽ có một cái card mạng và mỗi cái card mạng nó sẽ có một cái địa chỉ MAC và địa chỉ MAC đó là duy nhất trên toàn thế giới luôn. Tức là một cái máy tính mà nó muốn gửi dữ liệu cho một cái máy tính khác á thì nó sẽ đóng một cái frame với MAC nguồn là MAC của chính nó và MAC đích là MAC của cái thiết bị cần nhận dữ liệu đó.
[22:27]Còn ở mức độ gọi là Layer 4 cũng chẳng cụ thể là Transport Layer như thế nào. Nó cũng có một cái tham số gọi là port nguồn, port đích. Thì lúc này chúng ta có thể hình dung cái port nó cũng giống như là cái định danh địa chỉ ở mức gọi là Layer 4. Thì để hiểu hơn về cái tham số port chúng ta phân tích tiếp. Cụ thể bây giờ là chúng ta có một cái con server thì để tiết kiệm chi phí thì người ta cài rất nhiều những cái dịch vụ trên cái con server này. Và một cái con server chúng ta vừa có thể cài web server, vừa có thể cài mail server, vừa có thể cài dịch vụ DNS phân giải tên miền. Vậy thì nếu mà nó nhận một cái một cái packet, một cái gói tin truy xuất tới cái dịch vụ DNS hoặc là HTTP thì làm sao mà server nó biết là cái bản tin đó là đang truy cập tới cái dịch vụ nào. Thì lúc này nó mới căn cứ vào cái tham số gọi là mục đích. Đó mục đích. Thì tí nữa chúng ta sẽ phân tích cụ thể hơn về cái tham số port đích này. Và bây giờ một cái tình huống khác để chúng ta hiểu hơn về một cái tham số là port nguồn. Thì lúc này giả thiết là cái server này là cái google.com, web server của Google. Thì lúc này tại một PC á chúng ta mở tới hai cái cửa sổ truy cập tới cùng một website. Thì có khi nào mà chúng ta đứng ở cửa sổ một chúng ta search một cái thông tin chẳng hạn như học chương trình học CCNA có khi nào mà chúng ta thấy là kết quả hiển thị lại hiển thị ở giao diện cửa sổ thứ hai. Điều đó là không bao giờ. Vậy thì khi mà chúng ta đứng ở cửa sổ đầu tiên chúng ta search á, chúng ta gửi dữ liệu đi. Và khi mà nhận được dữ liệu về á làm sao cái máy này nó biết là cái bản tin đó là của cửa sổ một hay là cửa sổ hai. Thì lúc này nó sử dụng cái tham số gọi là định danh port nguồn.
[24:16]Với một cái mỗi cái phiên làm việc như thế này, một cái phiên ứng dụng truy cấp truy cập hệ thống mạng như thế này nó sẽ được định danh bằng một cái tham số gọi là port nguồn bắt đầu từ port 1024 trở đi. Chẳng hạn cửa sổ đầu tiên khi mà chúng ta vừa mở lên thì thông thường nó sẽ được định danh bằng cái port nguồn port nguồn là ngẫu nhiên. Thì trong tình huống này là chúng ta giả thiết là nó sẽ có cái tham số là 1025. Và cái cửa sổ thứ hai mà chúng ta mở lên, cái thứ hai chúng ta mở lên sẽ được định danh bằng cái port nguồn là 1026. Thì nếu mà chúng ta đứng ở cửa sổ đầu tiên chúng ta search á thì nó sẽ sản thảo ra một cái segment, một cái segment, một cái bản tin có định danh port nguồn là 1025. Ám chỉ là đứng ở cửa sổ một. Và chúng ta đang truy cập tới dịch vụ web có phục vụ có thêm chức năng gọi là mã hóa nữa. Thành ra mặc định là chúng ta sẽ sử dụng cái port là 443, 443. Và khi mà server nó nhận được cái bản tin này, nó sẽ xả một cái bản tin hồi đáp như thế này.
[25:18]Thì lúc này máy tính nó mới căn cứ vào cái tham số gọi là port đích ở đây 1025 để biết được là cái nội dung của bản tin là thuộc cửa sổ một và kết quả hiển thị sẽ rơi vào cửa sổ một chứ không bao giờ xuất hiện ở cửa sổ hai.
[26:15]Đó và là chúng ta vừa hình dung xong ý nghĩa của hai cái tham số port nguồn và port đích ở đây. Và trước khi kết thúc cái bài học gọi là Transport Layer như thế này đó thì chúng ta khảo sát một số những cái port dịch vụ phổ biến mà chúng ta thường gặp. Chẳng hạn như là đối với là giao thức truyền file FTP thì mặc định là nó sử dụng cái phương thức truyền thông TCP. Đó để khi mà chúng ta gửi một cái file có kích thước là 10 MB, một hit đó thì đảm bảo là phía đầu xa sẽ chắc chắn sẽ nhận được hết tất cả các đơn vị dữ liệu. Đó của 10 MB hoặc là 10 bit này và không bị mất mát trong suốt quá trình truyền thông. Thì mặc định FTP thì người ta quy ước là hoạt động trên port 21. Tiếp theo là một cái giao thức gọi là Telnet thì giao thức này nó sẽ cho phép mọi người cấu hình các Router, cấu hình server, cấu hình switch hoặc là firewall ở từ xa thông qua phiên kết nối từ xa. Tức là chúng ta ở thành phố Hồ Chí Minh hoàn toàn có thể cấu hình một con Router đặt tại Hà Nội hoặc là đặt tại Canada. Thì mặc định Telnet thì người ta quy ước là sử dụng port 23 và bắt buộc là nó phải sử dụng cái dịch vụ truyền thông tin cậy này. Đó để đảm bảo là không bị mất mát dữ liệu trong suốt quá trình Telnet. Hoặc là HTTP, một cái web server khi chúng ta build lên thì mặc định là nó sử dụng cái port 80 và chắc chắn là nó chạy trên nền TCP. Bởi vì khi mà chúng ta lướt web, đó khi mà chúng ta lướt web thì khi mà tải một cái đoạn văn bản thì lỡ mà thiếu một bất kỳ ký tự gì, đặc biệt là vấn đề những cái con số liên quan tới tiền bạc. Thì rõ ràng là cái thông điệp đó gần như là không còn giá trị nữa hoặc là cái ý nghĩa nó sẽ lệch lạc rất nhiều. Cho nên là đa phần là cái HTTP web thì phải chạy trên nền TCP. Thì bên cạnh đó chúng ta cũng có những cái giao thức mà chạy trên nền giao thức chạy trên nền giao thức UDP, đó truyền thông tốc độ nhanh. Đấy chẳng hạn như là SNMP. Thì sau này chúng ta sẽ có một cái bài học riêng về giao thức SNMP này nó sẽ cho phép chúng ta giám sát được các thiết bị trên hệ thống. Chẳng hạn như một con switch có rất nhiều port, 48 port và khi mà một cái port bất kỳ trên con switch đó bị down thì chúng ta sẽ biết được là cái port nào trên thiết bị đó bị down bằng cách là triển khai cái giải pháp giám sát hệ thống mạng SNMP này. Thì để đảm bảo cái thời gian thực tức là cái mức độ tương tác nhanh, người quản trị biết được liền cái cái thiết bị đó bị lỗi. Đó thì mặc định nó sẽ chạy trên nền giao thức UDP. Thứ hai nữa là những cái ứng dụng mà chạy trên nền giao thức UDP thì nó sẽ không tiêu tốn nhiều tài nguyên xử lý của thiết bị. Do vậy là giao thức UDP mặc dù là nó nó nó mất mát dữ liệu trong suốt quá trình truyền thông nhưng mà nó sẽ có ưu điểm riêng của nó cụ thể là nó không tiêu tốn nhiều tài nguyên xử lý khi mà các ứng dụng nó chạy giao thức này. Còn đối với cái giao thức gọi là TFTP nó cũng được coi là một cái giao thức truyền file y hệt như là FTP. Đó thì lúc này là để đạt được cái tốc độ truyền file với tốc độ nhanh á thì chúng ta có thể sử dụng giao thức UDP. Thì mặc định TFTP người ta quy ước là hoạt động trên port 69. Thì cái này là tùy theo từng tình huống nếu mà chúng ta truyền file ở trên môi trường mạng tin cậy á thì chúng ta có thể sử dụng giao thức TFTP. Còn trên cái môi trường kém tin cậy hơn thì chúng ta có thể chuyển sang giao thức FTP để truyền file. Và thực tế là có những cái giao thức mà vừa chạy trên nền giao thức UDP mà vừa chạy trên nền giao thức TCP. Cụ thể là giao thức DNS. Mỗi lần mà chúng ta truy cập tới một cái website nào đó chẳng hạn Google.com thì thường máy chạm nó sẽ truy vấn tới một cái server gọi là DNS server. Để hỏi xem là Google.com nó tương ứng với IP là cái gì. Thì sau khi nó biết được thông tin IP đó thì máy trạm nó sẽ gửi dữ liệu trực tiếp tới cái server web đó để lấy cái cái nội dung trang web về. Thì lúc này để đảm bảo là cái quá trình truyền dữ liệu nó nhanh á thì thông thường máy chạm nó sẽ truy vấn tên miền bằng cách là sử dụng giao thức UDP. Tuy nhiên để đảm bảo cái độ truyền thông tin cậy chẳng hạn như là hai cái DNS server nó muốn đồng bộ hóa database với nhau. Thì lúc này là nó không muốn quá trình truyền dữ liệu trong suốt quá trình truyền thông thì nó lại chạy trên nền giao thức TCP một cách linh hoạt. Cái này do người quản trị họ có thể thiết lập linh hoạt giữa hai giao thức này thôi. Vậy là bài học ngày hôm nay chúng ta đã tìm hiểu được tổng quan chức năng của lớp Transport. Đó những cái cơ chế vận hành của nó để đảm bảo quá trình truyền thông không bị mất mát trong suốt quá trình truyền nhận dữ liệu hoặc là tại sao UDP nó có khả năng cung cấp cái khả năng truyền dữ liệu với tốc độ nhanh đến như vậy.



