6. Dạng địa chỉ quảng bá Berkeley
2.6.2. Sự truyền lại và mất các gói tin
Làm thế nào TCP đạt đợc độ tin cậy? Câu trả lời khá phức tạp bởi vì TCP sử dụng các kỹ thuật khá đa dạng để thực hiện các phần khác nhau của sự cố. Một trong những kỹ thuật quan trọng nhất đó là kỹ thuật truyền lại. Khi TCP truyền dữ liệu, máy gửi khắc phục các gói tin bị mất bằng việc thực hiện truyền lại. Cả hai bên giao tiếp phải tham gia thực hiện. Khi TCP nhận dữ liệu, nó gửi một thông báo nhận đợc (acknowledgement) trở lại cho máy gửi. Mỗi khi nó gửi đi dữ liệu, TCP
bắt đầu khởi tạo một đồng hồ. Nếu thời gian hết trớc khi một acknowledgement đến, máy gửi sẽ truyền lại dữ liệu. Hình dới đây minh hoạ sự truyền lại.
Hình 2.25. Ví dụ về sự truyền lại.
Các mục bên trái tơng ứng với sự kiện trong một máy tính truyền dữ liệu, mục bên phải tơng ứng với các sự kiện trong máy tính nhận dữ liệu, và thời gian đi xuống. Máy gửi truyền lại dữ liệu bị mất.
Cơ chế truyền lại của TCP là chìa khoá cho sự thành công của nó bởi vì nó thực hiện đợc các giao tiếp qua mạng bất kỳ và cho phép nhiều chơng trình ứng dụng có thể giao tiếp đồng thời. Ví dụ, một ứng dụng có thể gửi dữ liệu qua kênh vệ tinh đến một máy tính ở nớc khác, trong khi một ứng dụng khác truyền dữ liệu qua mạng cục bộ đến một máy tính trong phòng cạnh đó. TPC phải sẵn sàng để truyền lại bất kỳ thông điệp nào bị mất trên cả hai kết nối đó. Câu hỏi đặt ra là: TCP nên chờ bao lâu trớc khi truyền lại? Các acknowledgement từ một máy tính trong mạng cục bộ thì đến trong vòng vài phần nghìn giây. Nếu chờ qua lâu sẽ làm
Sự kiện tại máy trạm
1 Sự kiện tại máy trạm2
Gửi thông điệp 1
Nhận thông điệp 1
Nhận thông điệp 2 Gửi thông điệp 2
Gửi thông điệp 3
Gửi lại thông điệp 3
Nhận thông điệp 3 Thời gian truyền lại hết
Mất gói tin Gửi ack 1 Gửi ack 2 Gửi ack 3 Nhận ack 1 Nhận ack 2 Nhận ack 3
cho mạng đợc rỗi và không đạt đợc thông lợng cực đại. Do vậy, trong mạng cục bộ, TCP không nên chờ một thời gian dài trớc khi truyền lại. Tuy nhiên, việc truyền lại trong một vài phần nghìn giây sẽ không tốt với mạng khoảng cách lớn kết nối bằng vệ tinh bởi vì sự truyền đi không cần thiết sẽ tiêu tốn dải tần và thông lợng của mạng bị giảm đi.
TCP đối mặt với một thách thức khó khăn đó là phải phân biệt giữa truyền một đích khoảng cách xa và trong cục bộ: quá nhiều datagram có thể gây ra tắc nghẽn mạng. thực tế, tổng thời gian yêu cầu để truyền đi một thông điệp và nhận một acknowledgement có thể tăng hoặc giảm phụ thuộc vào độ lớn của cờng độ trong một vài mili giây.
Tóm lại: Độ trễ cho dữ liệu truyền đến đích và một acknowledgement gửi trở lại phụ thuộc vào cờng độ trong mạng cũng nh là khoảng cách đến đích. Bởi vì TCP cho phép nhiều chơng trình ứng dụng giao tiếp với nhiều đích đồng thời và bởi vì các điều kiện về cờng độ trên mạng ảnh hởng đễn độ trễ, nên TCP phải thực hiện các độ trễ khác nhau mà có thể thay đổi nhanh chóng.