BÁO CÁO MÔN MẠNG TRUYỀN THÔNG: TÌM HIỂU CHUNG VỀ GIAO THỨC TCPIP, TCP RENO TCP VEGASTrong các giao thức thì giao thức TCP là giao thức truyền thông được sử dụng phổ biến nhất trong mạng Internet. Trong phần lớn lưu lượng trên mạng Internet, lưu lượng TCPIP đóng góp một phần đáng kể vì phần lớn ứng dụng trên mạng Internet, ví dụ như lướt Web và truyền file, đều sử dụng giao thức TCPIP. Do vậy, có thể thấy rằng hiệu năng của TCPIP sẽ có ảnh hưởng lớn đến hiệu năng của mạng và trực tiếp ảnh hưởng đến chất lượng dịch vụ của mạng. Tuy nhiên số lượng người tham gia vào mạng ngày càng tăng và có ngày càng nhiều dịch vụ hỗ trợ điều này đòi hỏi chúng ta phải không ngừng cải tiến và nâng cao hiệu năng giao thứcTCPIP. Từ khi ra đời đến nay giao thức TCP đã có nhiều phiên bản cải tiến, đặc biệt với sự đóng góp của phiên bản TCP Reno đã làm các cơ chế điều khiển truyền thông linh hoạt. Giao thức TCP Vegas là phiên bản cải tiến của TCP Reno.
Trang 1MỤC LỤC
I Giới Thiệu Chung Về Giao Thức TCP 5
1.1 Lịch sử ra đời 5
1.2 Giới Thiệu Chung 5
1.3 Đặc điểm của giao thức TCP 8
1.3.1 Đặc điểm về gói tin TCP 8
1.3.2 Các pha kết nối 10
II Giới thiệu về giao thức TCP Reno và TCP Vegas 14
2.1 TCP Reno 14
2.1.1 Các cơ chế của TCP Reno 14
2.1.2 TCP NewRENO 17
2.2 Giới thiệu về giao thức TCP Vegas 18
2.2.1 Giao thức TCP Vegas 18
2.2.2 Thuật toán điều khiển của TCP Vegas 19
2.2.3 Ảnh hưởng của các tham số trong thuật toán TCP Vegas 20
2.2.4 Một số cải tiến của TCP Vegas 21
2.2.5 TCP Vegas + 22
2.3 So sánh cơ chế điều khiển tắc nghẽn của TCP Reno và TCP Vegas 23
2.3.1 TCP Reno 23
2.3.2 TCP Vegas 24
III CÁC CHUẨN CỦA TCP 24
3.1 Quá trình phát triển 24
3.2 Một số tài liệu về các chuẩn của TCP 25
KẾT LUẬN 26
Tài liệu tham khảo 27
DANH MỤC HÌNH ẢN Hình 1: Bài báo "Giao thức cho mạng truyền thông kiểu gói" (tạm dịch) 5
Hình 2: Mô hình TCP/IP và mô hình OSI 6
Hình 3:Cấu trúc header gói tin TCP 8
Hình 4: Một số port của các ứng dụng thông dụng 9
Hình 5: Thiết lập kết nối 11
Hình 6: Truyền dữ liệu 13
Hình 7: Kết thúc phiên 13
Hình 8: Cơ chế của TCP Reno 14
Hình 9: Ví dụ về cơ chế phục hồi nhanh 16
Hình 10: Ví dụ cơ chế phục hồi nhanh của TCP NewReno 18
Trang 2Hình 11: Mô hình mạng ví dụ 21 Hình 12: Cửa sổ tắc nghẽn của TCP Reno và Vegas 22
DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
TCP Transmission Control Protocol Giao thức truyền tin kiểm
soát
không gian thông tin toàncầu mà mọi người có thểtruy cập (đọc và viết) quacác thiết bị kết nối với mạngInternet
Electronics Engineers Viện kỹ nghệ Điện và Điệntử
dùng
Reference Model Mô hình tham chiếu kết nốihệ thống mở
điểm
tin
Trang 3LỜI MỞ ĐẦU
Ngày nay, các dịch vụ trên mạng Internet không ngừng được cải tiến để đápứng nhu cầu ngày càng tăng của người sử dụng Do đó chúng ta cần xây dựng mộtgiao thức phù hợp để đảm bảo chất lượng mạng Trong các giao thức thì giao thức TCP
là giao thức truyền thông được sử dụng phổ biến nhất trong mạng Internet Trong phầnlớn lưu lượng trên mạng Internet, lưu lượng TCP/IP đóng góp một phần đáng kể vìphần lớn ứng dụng trên mạng Internet, ví dụ như lướt Web và truyền file, đều sử dụnggiao thức TCP/IP Do vậy, có thể thấy rằng hiệu năng của TCP/IP sẽ có ảnh hưởng lớnđến hiệu năng của mạng và trực tiếp ảnh hưởng đến chất lượng dịch vụ của mạng Tuynhiên số lượng người tham gia vào mạng ngày càng tăng và có ngày càng nhiều dịch
vụ hỗ trợ điều này đòi hỏi chúng ta phải không ngừng cải tiến và nâng cao hiệu nănggiao thứcTCP/IP
Từ khi ra đời đến nay giao thức TCP đã có nhiều phiên bản cải tiến, đặc biệt với
sự đóng góp của phiên bản TCP Reno đã làm các cơ chế điều khiển truyền thông linhhoạt Giao thức TCP Vegas là phiên bản cải tiến của TCP Reno Trong khuôn khổ tiểuluận này, chúng em sẽ tìm hiểu về giao thức TCP Reno và TCP Vegas
Chúng em rất mong nhận được sự góp ý của các thầy cô!
Đại diện nhóm sinh viên thực hiện
Trang 4I Giới Thiệu Chung Về Giao Thức TCP
1.1 Lịch sử ra đời
Tháng 5 năm 1974, viện điện và kỹ sư điện tử (IEEE) xuất bản một bài báo cótiêu đề "A Protocol for Packet Network Intercommunication" tác giả của tờ báo, VintCerf và Bob Kahn, mô tả một giao thức liên mạng để chia sẻ tài nguyên bằng cách sửdụng chuyển mạch gói giữa các nút, kết hợp với các khái niệm từ dự án FRENCHCYCLADES được chỉ đạo bởi Louis Pouzin
Hình 1: Bài báo "Giao thức cho mạng truyền thông kiểu gói" (tạm dịch).
1.2 Giới Thiệu Chung
Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kếtnối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin Giao thức nàyđảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự TCPcòn phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thưđiện tử) đồng thời chạy trên cùng một máy chủ
Nền tảng của Internet là TCP, nó bao gồm các quy tắc để định dạng các tinnhắn, xử lý tắc nghẽn, sửa lỗi và cung cấp thông tin về nơi mà một gói tin cần đượcgửi đi, cho dù nó đến quá nhanh cho máy tính nhận và liệu nó đã đến tất cả Về cơ bảnTCP là chất keo đảm bảo điều kiện mạng hoạt động trơn tru
TCP và UDP là 2 protocol hoạt động ở lớp thứ 04 (Transport Layer) của môhình OSI và ở lớp thứ 02 (Transport Layer) mô hình TCP/IP
Trang 5Hình 2: Mô hình TCP/IP và mô hình OSI
Mục đích chính của TCP là cung cấp các giải pháp tin cậy, mạch logic hoặcdịch vụ kết nối giữa các cặp quy trình Để cung cấp dịch vụ này trên đầu trang của mộtinternet kém tin cậy, hệ thống thông tin liên lạc đòi hỏi các cơ sở trong các lĩnh vựcsau:
- Chuyển dữ liệu cơ bản:
TCP có thể truyền một luồng octet liên tục trong mỗi hướng giữa người dùngbằng cách đóng gói một số octet phân đoạn để truyền qua hệ thống internet Nóichung, các TCPs quyết định khi nào để chặn và chuyển tiếp dữ liệu của riêng mình.Đôi khi người dùng cần phải chắc chắn rằng tất cả dữ liệu họ có gửi đến TCP đã đượctruyền đi Đối với mục đích này một đẩy chức năng được xác định Để đảm bảo dữliệu được gửi tới TCP là thực sự truyền tải cho người sử dụng chỉ ra rằng nó phải làđẩy qua người dùng nhận Một đẩy gây ra các TCPs để nhanh chóng chuyển tiếp vàcung cấp dữ liệu đến điểm đó cho người nhận Điểm đẩy chính xác có thể không hiểnthị cho người dùng nhận và chức năng đẩy không cung cấp một mốc đánh dấu biêngiới
- Độ tin cậy:
TCP có nhiệm vụ phải phục hồi các dữ liệu hỏng, mất, nhận không đúng thứ
tự bởi hệ thống truyền thông internet Điều này đạt được bằng cách gán các thứ tự chomỗi octet truyền đi, và yêu cầu gửi 1 bản tin ACK từ phía nhận Nếu ACK không nhậnđược trong khoảng thời gian chờ, dữ liệu được truyền lại Tại máy thu, trình tự số được
sử dụng để phân đoạn chính xác để có thể nhận được ra lệnh và để loại bỏ các bản sao.Thiệt hại được xử lý bởi thêm checksum cho mỗi phân đoạn truyền, kiểm tra nó tạinhận, và loại bỏ các phân đoạn bị hư hỏng Miễn là các TCPs tiếp tục hoạt động đúng
Trang 6và hệ thống internet không trở thành phân vùng hoàn toàn, không truyền lỗi sẽ ảnhhưởng đến việc phân phối dữ liệu chính xác TCP phục hồi từ lỗi hệ thống truyềnthông internet.
- Kiểm soát lưu lượng:
TCP cung cấp một phương tiện để người nhận điều chỉnh lượng dữ liệu đượcgửi bởi người gửi Điều này đạt được bằng cách trả về một "cửa sổ" với mỗi ACK chỉ
ra một loạt các số thứ tự chấp nhận được ngoài segment cuối cùng đã nhận được thànhcông Cửa sổ cho biết số octet được phép mà người gửi có thể truyền trước khi chophép nhận thêm
- Ghép Kênh:
Để cho phép nhiều quy trình trong một máy chủ duy nhất sử dụng TCP cácphương tiện truyền thông đồng thời, TCP cung cấp một bộ địa chỉ hoặc cổng trong mỗimáy chủ Liên kết với mạng và các địa chỉ host từ lớp truyền thông internet, được gọi
là cổng (virtual port) Một cặp cổng nhận diện một kiểu kết nối Một cổng có thể đượcdùng trong nhiều kết nối khác nhau
Việc ràng buộc các cổng vào các quá trình được xử lý độc lập bởi mỗi host.Tuy nhiên, nó rất hữu ích khi gắn các quá trình thường xuyên sử dụng (ví dụ, một
"logger" hoặc dịch vụ chia sẻ thời gian thực (timesharing ) ) để cố định cổng đượcđược công bố rộng rãi Các dịch vụ này sau đó có thể được truy cập thông qua các địachỉ đã biết
- Kết nối:
Các cơ chế kiểm soát độ tin cậy và lưu lượng được mô tả ở trên yêu cầu rằngTCPs khởi tạo và duy trì thông tin trạng thái nhất định cho mỗi luồng dữ liệu Sự kếthợp của thông tin này, bao gồm các cổng, số thứ tự, và kích cỡ cửa sổ, được gọi là kếtnối Mỗi kết nối được chỉ định bởi một cặp cổng xác định hai bên
Khi hai bên muốn truyền đạt, đầu tiên TCP thiết lập một kết nối (khởi tạothông tin trạng thái trên mỗi bên) Khi giao tiếp hoàn tất, kết nối phải chấm dứt hoặcđóng lại để giải phóng tài nguyên cho các mục đích sử dụng khác
Vì các kết nối được thiết lập giữa các máy không đáng tin cậy và qua hệthống truyền thông internet không đáng tin cậy, một cơ chế bắt tay với số thứ tự dựatrên đồng hồ được sử dụng để tránh khởi tạo sai của các kết nối
- Ưu tiên và bảo mật:
Người sử dụng TCP có thể chỉ ra sự an toàn và sự ưu tiên của giao tiếp Cácgiá trị mặc định được sử dụng khi những tính năng này không cần thiết
Trang 71.3 Đặc điểm của giao thức TCP
1.3.1 Đặc điểm về gói tin TCP
TCP là giao thức truyền thông tin cậy, đảm bảo tất cả dữ liệu có thể truyền từnguốn đến đích Do vậy cấu trúc header của TCP khác phức tạp
Hình 3:Cấu trúc header gói tin TCP
Có rất nhiều ứng dụng, dịch vụ chạy trên mỗi máy tính, nên để chuyểnchính xác dữ liệu cho các ứng dụng dịch vụ, lớp Transport gán cho mỗiapplication một định danh gọi là port number Mọi ứng dụng muốn truy cậpmạng đều được gán port number, port number này là độc nhất trên máy tính đó
Ví dụ một số port number dành cho một số ứng dụng thông dụng tại hình 4
Sequence number (0-4294967295)
Trường này có 2 nhiệm vụ Nếu cờ SYN bật thì nó là số thứ tự gói ban đầu và byte đầu tiên được gửi có số thứ tự này cộng thêm 1 Nếu không có cờ SYN thì đây là số thứ tự của byte đầu tiên
Trang 8Hình 4: Một số port của các ứng dụng thông dụng
Dành cho tương lai và có giá trị là 0
Flags (hay Control bits)
Bao gồm 6 cờ:
URG: Cờ cho trường Urgent pointer ACK: Cờ cho trường Acknowledgement PSH: Hàm Push
RST: Thiết lập lại đường truyền SYN: Đồng bộ lại số thứ tự
Trang 9FIN: Không gửi thêm số liệu Window
Số byte có thể nhận bắt đầu từ giá trị của trường báo nhận (ACK)
1 Client yêu cầu mở cổng dịch vụ bằng cách gửi gói tin SYN (gói tin TCP) tớiserver, trong gói tin này, tham số sequence number được gán cho một giá trịngẫu nhiên X
2 Server hồi đáp bằng cách gửi lại phía client bản tin SYN-ACK, trong gói tinnày, tham số acknowledgment number được gán giá trị bằng X + 1, tham sốsequence number được gán ngẫu nhiên một giá trị Y…
3 Để hoàn tất quá trình bắt tay ba bước, client tiếp tục gửi tới server bản tinACK, trong bản tin này, tham số sequence number được gán cho giá trị bằng X+ 1 còn tham số acknowledgment number được gán giá trị bằng Y + 1
Tại thời điểm này, cả client và server đều được xác nhận rằng, một kết nối đãđược thiết lập
Trang 10Hình 5: Thiết lập kết nối
Truyền dữ liệu
Một số đặc điểm cơ bản của TCP để phân biệt với UDP:
◾ Truyền dữ liệu không lỗi (do có cơ chế sửa lỗi/truyền lại)
◾ Truyền các gói dữ liệu theo đúng thứ tự
◾ Truyền lại các gói dữ liệu mất trên đường truyền
◾ Loại bỏ các gói dữ liệu trùng lặp
◾ Cơ chế hạn chế tắc nghẽn đường truyền
Ở hai bước đầu tiên trong ba bước bắt tay, hai máy tính trao đổi một số thứ tựgói ban đầu (Initial Sequence Number -ISN) Số này có thể chọn một cách ngẫu nhiên
Số thứ tự này được dùng để đánh dấu các khối dữ liệu gửi từ mỗi máy tính Sau mỗibyte được truyền đi, số này lại được tăng lên Nhờ vậy ta có thể sắp xếp lại chúng khitới máy tính kia bất kể các gói tới nơi theo thứ tự thế nào
Trên lý thuyết, mỗi byte gửi đi đều có một số thứ tự và khi nhận được thì máytính nhận gửi lại tin báo nhận (ACK) Trong thực tế thì chỉ có byte dữ liệu đầu tiênđược gán số thứ tự trong trường số thứ tự của gói tin và bên nhận sẽ gửi tin báo nhậnbằng cách gửi số thứ tự của byte đang chờ
Ví dụ: Máy tính A gửi 4byte với số thứ tự ban đầu là 100 (theo lý thuyết thì4byte sẽ có thứ tự là 100, 101, 102, 103) thì bên nhận sẽ gửi tin báo nhận có nội dung
là 104 vì đó là thứ tự của byte tiếp theo nó cần Bằng cách gửi tin báo nhận là 104, bênnhận đã ngầm thông báo rằng nó đã nhận được các byte 100, 101, 102 và 103 Trongtrường hợp 2byte cuối bị lỗi thì bên nhận sẽ gửi tin báo nhận với nội dung là 102 vì 2byte 100 và 101 đã được nhận thành công
Trang 11Giả sử ta có 10.000byte được gửi đi trong 10 gói tin 1.000byte và có 1 gói tin bịmất trên đường truyền Nếu gói bị mất là gói đầu tiên thì bên gửi sẽ phải gửi lại toàn
bộ 10 gói vì không có cách nào để bên nhận thông báo nó đã nhận được 9 gói kia Vấn
đề này được giải quyết trong giao thức SCTP với việc bổ sung báo nhận chọn lọc
Số thứ tự và tin báo nhận giải quyết được các vấn đề về lặp gói tin, truyền lạinhững gói bị hỏng/mất và các gói tin đến sai thứ tự Để phục vụ mục đích kiểm tra, cácgói tin có trường giá trị checksum
Với trình độ hiện tại, kỹ thuật kiểm tra tổng trong TCP không đủ mạnh Cáctầng liên kết dữ liệu với xác suất lỗi bit cao có thể cần được bổ sung các khả năng pháthiện lỗi tốt hơn Nếu như TCP được thiết kế vào thời điểm hiện tại, nhiều khả năng nó
sẽ bao gồm trường kiểm tra CRC với độ dài 32 bit Điểm yếu này một phần được bùđắp bằng CRC hay những kỹ thuật khác tại tầng thứ 2 (trong mô hình 7 lớp OSI) ở bêndưới cả TCP và IP như trong các giao thức điểm-điểm (PPP) hoặc Ethernet Tuy nhiênđiều này cũng không có nghĩa là trường kiểm tra tổng của TCP là không cần thiết:thống kê cho thấy các sai sót do cả phần cứng và phần mềm gây ra giữa các điểm ápdụng kỹ thuật kiểm tra CRC là khá phổ biến và kỹ thuật kiểm tra tổng có khả năngphát hiện phần lớn các lỗi đó Điểm cuối cùng là khả năng hạn chế tắc nghẽn
Tin báo nhận (hoặc không có tin báo nhận) là tín hiệu về tình trạng đườngtruyền giữa 2 máy tính Từ đó, hai bên có thể thay đổi tốc độ truyền nhận dữ liệu phùhợp với điều kiện Vấn đề này thường được đề cập là điều khiển lưu lượng, kiểm soáttắc nghẽn TCP sử dụng một số cơ chế nhằm đạt được hiệu suất cao và ngăn ngừa khảnăng nghẽn mạng Các cơ chế này bao gồm: cửa sổ trượt (sliding window), thuật toánslow-start, thuật toán tránh nghẽn mạng (congestion avoidance), thuật toán truyền lại
và phục hồi nhanh, Hiện nay, vấn đề cải tiến TCP trong môi truyền truyền dẫn tốc
độ cao đang là một hướng nghiên cứu được quan tâm
Kích thước cửa sổ TCP nhận: Khi chuỗi thứ tự tăng đến tối đa thì lại quay lại về
0 Kích thước của cửa sổ là chiều dài (byte) của khối dữ liệu có thể lưu trong bộ đệmcủa bên nhận Bên gửi chỉ có thể gửi tối đa lượng thông tin chứa trong cửa sổ nàytrước khi nhận được tin báo nhận
Dãn kích thước cửa sổ: Để tận dụng khả năng truyền dẫn của mạng thì cửa sổdùng trong TCP cần được tăng lên Trường điều khiển kích thước cửa sổ của gói TCP
có độ dài là 2byte và do đó kích thước tối đa của cửa sổ là 65.535 byte
Do trường điều khiển không thể thay đổi nên người ta sử dụng một hệ số dãnnào đó Hệ số này được định nghĩa trong tài liệu RFC 1323 có thể sử dụng để tăngkích thước tối đa của cửa sổ từ 65.535byte lên tới 1 gigabyte Tăng kích thước cửa sổlớn hơn nữa cũng cần thiết trong TCP Tuning
Việc tăng kích thước cửa sổ chỉ được dùng trong giao thức bắt tay 3 pha Giá trịcủa trường co giãn cửa sổ thể hiện số bit cần được dịch trái đối với trường kích thướccửa sổ Hệ số dãn có thể thay đổi từ 0 (không dãn) tới 14 (dãn tối đa)
Trang 13II Giới thiệu về giao thức TCP Reno và TCP Vegas.
2.1 TCP Reno
2.1.1 Các cơ chế của TCP Reno.
Để điều khiển truyền thông TCP Reno sử dụng hầu hết các cơ chế điều khiểnnhư: Cơ chế cửa sổ trượt, cơ chế bắt đầu chậm, cơ chế tránh tắc nghẽn, cơ chế truyềnlại nhanh và cơ chế phục hồi nhanh
TCP Reno sử dụng cửa sổ tắc nghẽn (CWND) để điều khiển lượng dữ liệutruyền đi trong thời gian một vòng quay (RTT) và một cửa sổ cực đại (MWND) đểgiới hạn giá trị lớn nhất của cwnd Cơ chế hoạt động của TCP Reno được mô tả nhưhình vẽ:
1 Cơ chế bắt đầu chậm (slow-start):
Khi một kết nối bắt đầu hoặc bị trễ xảy ra, trạng thái bắt đầu chậm bắtđầu hoạt động Giá trị ban đầu của cwnd được đặt là 1 gói tin cho trạng thái banđầu trong trường hợp này Trạm gửi tăng cwnd theo hàm mũ bằng cách thêmmỗi lần một gói khi nó nhận được ACK Cơ chế bắt đầu chậm điều khiển kíchthước cửa sổ chon đến khi cwnd đạt đến mức đã được thiết lập trước đó gọi làngưỡng bắt đầu chậm (ssthresh) Khi cwnd vượt ra khỏi ssthresh, việc tránh tắcnghẽn sẽ bắt đầu
Hình 8: Cơ chế của TCP Reno