Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.82 MB, 36 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
Nhóm sinh viên thực hiện:
Nguyễn Thành Chung 20192724Hồ Đức Cường 20192734Phạm Đức Duy 20192803Nguyễn Lê Đăng 20192744
Giảng viên hướng dẫn: PGS.TS.Trần Quang Vinh
Hà Nội, 1 - 2023
Ngày nay, Internet là một phần không thể thiếu trong cuộc sống con người, nótham gia vào mọi khía cạnh như cơng việc, đời sống, xã hội và càng bùng nổ mạnh mẽhơn sau hai năm đại dịch. Sự phát triển và thay đổi mạnh mẽ của công nghệ Internet dẫntới việc các ứng dụng truyền thông gia tăng một cách chóng mặt. Từ đó nảy sinh ra mộtvấn đề trong mạng Internet đó là nhu cầu trao đổi thơng tin có lưu lượng vơ cùng lớn vớitốc độ cao.
Thơng tin có lưu lượng lớn và tốc độ cao trong khi ln phải đảm bảo tính tồnvẹn và chính xác dẫn đến vấn đề nghiêm trọng liên quan tới tắc nghẽn mạng. Chính vìvậy vấn đề điều khiển lưu lượng trên mạng tránh tắc nghẽn để có thể sử dụng hiệu quả tàinguyên của mạng càng trở lên hết sức quan trọng và cần thiết để đáp ứng được nhu cầucủa người dùng.
TCP/IP được sử dụng trong internet từ những ngày đầu tiên, là bộ giao thức chophép kết nối các hệ thống mạng không đồng nhất với nhau và giải quyết được vấn đề tắcnghẽn trong mạng internet bằng cơ chế điều khiển luồng, điều khiển tắc nghẽn, …. Vìvậy chúng em quyết định chọn đề tài “Lập trình mơ phỏng hoạt động điều khiển luồngtrong TCP/IP” để có thể hiểu rõ hơn về cơ chế điều khiển luồng của giao thức TCP/IP.
Bọn em xin chân thành cảm ơn thầy Trần Quanh Vinh, người trực tiếp hướng dẫnnhiệt tình trong suốt quá trình nghiên cứu và thực hiện đề tài này.
Chúng em xin chân thành cảm ơn!
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">1.3.1. Cách thức truyền dữ liệu qua giao thức TCP...6
1.3.2. Cấu trúc gói tin TCP...7
1.3.3. Thiết lập và kết thúc kết nối TCP...9
1.4. Điều khiển luồng...10
1.4.1. Khái niệm...10
1.4.2. Điều khiển luồng trong giao thức TCP/IP...12
1.5. Đánh giá hiệu năng mạng...18
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>Hình 1: Mơ hình giao thức OSI...3</b>
<b>Hình 2: Mơ hình giao thức TCP/IP...6</b>
<b>Hình 3: Cấu trúc của gói tin TCP...8</b>
<b>Hình 4: : Phát lại theo cơ chế dừng và đợi...13</b>
<b>Hình 5: Nguyên tác hoạt động của cơ chế cửa sổ trượt...15</b>
<b>Hình 6: Nguyên tắc hoạt động Go - Back - N...16</b>
<b>Hình 7: Nguyên tắc hoạt động của Selective Repeat...16</b>
<b>Hình 8: Kết quả mơ phỏng cơ chế Stop and Wait...22</b>
<b>Hình 9: Kết quả mơ phỏng cơ chế Go Back N...24</b>
<b>Hình 10: Kết quả mơ phỏng cơ chế Selective Repeat...26</b>
<b>Hình 11: Mơ phỏng TCP và UDP sử dụng NS2...27</b>
<b>Hình 12: Đồ thị so sánh thơng lượng của TCP và UDP...27</b>
<b>Hình 13: Thơng lượng trung bình của TCP và UDP...28</b>
<b>Hình 14: Đồ thị so sánh đỗ trễ của TCP và UDP...28</b>
<b>Hình 15: Độ trễ trung bình của TCP và UDP...29</b>
<b>Hình 16: Đồ thị so sánh tỉ lệ mất gói của TCP và UDP...29</b>
<b>Hình 17:Tỉ lệ mất gói của TCP và UDP...30</b>
i
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>1.1. Lịch sử hình thành và phát triển</b>
Nguồn gốc Internet đầu tiên là mạng máy tính của Bộ Quốc phịng Hoa Kỳ đượcgọi là mạng ARPANET. ARPANET (Advanced Research Projects Agency Network) làmột đầu gói chuyển mạch mạng và là mạng đầu tiên thực hiện các giao thức TCP / IP.Đây là một mạng lưới thí nghiệm được thiết kế và đưa vào sử dụng năm 1969 nhằm thúcđẩy sự hợp tác khoa học trong các nỗ lực nghiên cứu quốc phòng. ARPANET sử dụngtruyền thơng bình đẳng (peer-to-peer), mỗi máy tính của hệ thống đều có khả năng kếtnối với bất kỳ máy tính thành viên nào khác [10]. Bất kỳ mạng máy tính nào được thiếtkế dựa trên ARPANET đều được mô tả là một tập hợp các trung tâm máy tính tự trị,mang tính địa phương và tự điều hành được liên kết theo kiểu "vơ chính phủ nhưng cóquy định”. Sự phát triển của mạng ARPANET chỉ nhằm mục đích quân sự: mạng nàyphải có khả năng chống lại một cuộc tấn cơng có thể vơ hiệu hố một số lớn các trạmthành viên của nó. Internet ban đầu được thiết kế để cung cấp thông tin cho cộng đồngkhoa học, vì vậy cơng nghệ của nó cho phép bất kỳ hệ thống nào kết nối với nó thơng quamột cổng thơng tin điện tử. Kết quả là, hàng nghìn hệ thống máy tính hợp tác, nhiều trongsố đó là các dịch vụ e-mail trả phí, đã trở thành thành viên của Internet. Từ đó, hệ thốngInternet ra đời, bao gồm các mạng máy tính liên kết với nhau trên tồn thế giới, tạo điềukiện thuận lợi cho các dịch vụ liên lạc dữ liệu, đăng nhập từ xa, truyền tệp tin, thư tínđiện tử và các loại thơng tin khác...
Mạng máy tính là sự kết hợp giữa máy tính và máy tính thơng qua thiết bị mạng vàphương tiện truyền thông (giao thức mạng, phương tiện truyền dẫn) theo một cấu trúcnhất định để trao đổi thông tin với nhau… Những lợi ích có thể kể đến của mạng máytính như: Chia sẻ tập tin của máy tính cá nhân cho những người khác; xem, chỉnh sửa vàsao chép tệp trên máy tính khác một cách dễ dàng; máy tính và các thiết bị trong cùngmột mạng có thể chia sẻ tài nguyên như: máy in, máy fax, máy tính, thiết bị lưu trữ(HDD, FDD, và ổ CD), webcam, máy quét, modem và máy quét, và nhiều thiết bị khác;ngoài ra, người dùng tham gia mạng máy tính có thể chia sẻ các tệp và chương trình trêncùng một mạng… Nếu khơng có mạng máy tính thì những cơng việc ấy sẽ trở nên rất khókhăn.
Mạng ARPANET là tiền thân của Internet. Khi mạng vệ tinh và mạng vô tuyến1
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">được giới thiệu, các giao thức được sử dụng không đáp ứng được các yêu cầu về mạng, vìvậy cần có những mơ hình kiến trúc mới có thể kết nối nhiều mạng với nhau một cách dễdàng và rõ ràng. Kiến trúc mới này được gọi là bộ giao thức TCP / IP. Xây dựng một hệthống phần mềm kết nối các máy tính thành một mạng nhỏ và kết nối các mạng nhỏthành một mạng toàn cầu như Internet là một vấn đề rất phức tạp. Hệ thống phần mềmđược chia thành các lớp (tầng) theo những nguyên tắc và khoa học nhất định. Các lớp nàychỉ tương tác với các lớp bên trên và bên dưới nó. Số lượng các lớp, tên của các lớp, nộidung của các lớp và chức năng của các lớp có thể khác nhau trong các mạng khác nhau;tuy nhiên, mục đích của mỗi lớp là sử dụng các dịch vụ được cung cấp bởi các lớp thấphơn và cung cấp các dịch vụ nhất định lên các lớp cao hơn, các tầng này khi sử dụng dịchvụ của nó, cần chú ý đến các thao tác chi tiết mà dịch vụ phải thực hiện.
Hai mơ hình mạng phổ biến sử dụng các lớp là mơ hình tham chiếu OSI (OpenSystems Interconnection) và bộ giao thức Transmission Control Protocol / InternetProtocol (TCP / IP).
<b>1.2. Mơ hình tham chiếu OSI và TCP/IP</b>
Mơ hình OSI (Open Systems Interconnection – mơ hình tham chiếu kết nối các hệthống mở) hay cịn gọi là mơ hình 7 lớp, là một thiết kế dựa vào nguyên lý tầng cấp, lýgiải một cách trừu tượng kỹ thuật kết nối truyền thông giữa các máy vi tính và thiết kếgiao thức mạng giữa chúng. Mơ hình này được phát triển thành một phần trong kế hoạchOSI (Open Systems Interconnection) do ISO và IUT-T khởi xướng [9]. Với mục tiêu lànhắm đến việc kết nối các sản phẩm của các hãng sản xuất khác nhau, phá vỡ sự độcquyền trong sản xuất, (Ví dụ: Máy IBM chỉ có thể nói chuyện với máy IBM, máy IBMchỉ có thể sử dụng ứng dụng và phần mềm do IBM cung cấp…) và phối hợp các hoạtđộng chuẩn hóa trong các lĩnh vực viễn thơng và hệ thống thơng tin. Năm 1984 mơ hìnhtham chiếu OSI chính thức được đưa ra giới thiệu và được ghi trong tiêu chuẩn ISO/IEC7498-1 bởi Tổ chức tiêu chuẩn hoá quốc tế (International Organization forStandardization).
2
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>Hình 1: Mơ hình giao thức OSI</b>
Mỗi một tầng cấp có một đặc tính là nó chỉ sử dụng chức năng của tầng dưới nó,đồng thời chỉ cho phép tầng trên sử dụng các chức năng của mình.
Mơ hình tham chiếu OSI là một cấu trúc có 7 tầng, nó xác định các yêu cầu cho sựgiao tiếp giữa hai máy tính:
- Tầng vật lý (Physical Layer): là tầng dưới cùng của mơ hình OSI, mơ tả cácđặc trưng vật lý của mạng: loại cáp được dùng để nối các thiết bị, loại đầu nốiđược dùng, dây cáp dài bao nhiêu…Bên cạnh đó các tầng vật lý cung cấp cácđặc trưng điện của các tín hiệu được dùng để khi chuyển dữ liệu trên cáp từmột máy này đến một máy khác của mạng, kỹ thuật nối mạch điện, tốc độ cáptruyền dẫn.
+ Thiết lập hoặc ngắt mạch kết nối điện (electrical connection) với một môitrường truyền dẫn phương tiện truyền thông (transmission medium).+ Tham gia vào quy trình mà trong đó các tài nguyên truyền thông đượcchia sẻ hiệu quả giữa nhiều người dùng, chẳng hạn giải quyết tranh chấp tàinguyên (contention) và điều khiển lưu lượng.
3
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">+ Điều biến hoặc biến đổi giữa các kiểu dữ liệu bằng tín hiệu kỹ thuật sốcủa các thiết bị người dùng và các tín hiệu tương tự được truyền qua kênhtruyền thông.
- Tầng liên kết dữ liệu (Data-Link Layer): là tầng quy định được các dạng thức,kích thước, địa chỉ máy gửi và nhận của mỗi gói tin được gửi đi và sẽ xác địnhcơ chế truy nhập thông tin trên mạng và phương tiện gửi mỗi gói tin sao cho nóđược đưa đến cho người nhận đúng địa chỉ. Có hai phương thức liên kết dựatrên cách kết nối các máy tính là phương thức “Point-to-Point” và phương thức“Node-to-node data transfer”. Data-Link Layer cung cấp cách phát hiện và sửalỗi cơ bản để đảm bảo cho dữ liệu nhận và gửi là giống nhau. Nếu một gói tincó lỗi không sửa được, tầng liên kết dữ liệu sẽ chỉ ra được cách thơng báo chonơi gửi biết gói tin đó có lỗi để có thể gửi lại.
- Tầng mạng (Network Layer): mục đích kết nối các mạng với nhau bằng cáchtìm đường (routing) cho các gói tin từ một mạng này đến một mạng khác. Tầngnày xác định việc chuyển hướng, vạch đường cho các gói tin trong mạng, cácgói này có thể đi qua nhiều chặng để đến được đích cuối cùng và ln tìm cáctuyến truyền thơng khơng tắc nghẽn để đưa các gói tin đến đích. Tầng mạngcung các các phương tiện để truyền các gói tin qua mạng, thậm chí qua mộtmạng của mạng (network of network). Vậy nên nó cần phải đáp ứng với nhiềukiểu mạng và dịch vụ cung cấp bởi các mạng khác nhau. Có hai chức năng chủyếu của tầng mạng là chọn đường (routing) và chuyển tiếp (relaying). Tầng nàycũng là quan trọng nhất khi liên kết hai loại mạng khác nhau như mạngEthernet với mạng Token Ring khi đó phải dùng một bộ tìm đường (quy địnhbởi tầng mạng) để chuyển các gói tin từ mạng này sang mạng khác và ngượclại.
- Tầng giao vận (Transport Layer): Tầng này chịu trách nhiệm nhận thông tin từtầng Session layer và đưa ra các yêu cầu dịch vụ đối với tầng mạng (NetworkLayer). Nó cùng các tầng dưới cung cấp cho người sử dụng các phục vụ vận
4
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">chuyển, chịu trách nhiệm về mức độ an toàn trong truyền dữ liệu nên giao thứctầng vận chuyển phụ thuộc rất nhiều vào bản chất của tầng mạng.
- Tầng phiên (Session layer): thiết lập “các giao dịch” giữa các trạm trên mạng,kiểm soát các phiên hội thoại giữa các máy tính, nó đặt tên nhất qn cho mọithành phần muốn đối thoại với nhau và lập ánh xa giữa các tên với địa chỉ củachúng. Một giao dịch phải được thiết lập trước khi dữ liệu được truyền trênmạng, tầng giao dịch đảm bảo cho các giao dịch được thiết lập và duy trì theođúng qui định.
- Tầng trình diễn (Presentation layer): Tầng trình diễn hoạt động như tầng dữliệu trên mạng. Tầng này trên máy tính truyền dữ liệu làm nhiệm vụ dịch dữliệu được gửi từ tầng Application sang dạng Format chung. Và tại máy tínhnhận, lớp này lại chuyển từ Format chung sang định dạng của tầng Applicationcó chức năng.
+ Dịch mã kí tự từ ASCII sang EBCDIC + Chuyển đổi dữ liệu
+ Nén dữ liệu để giảm lượng dữ liệu truyền trên mạng + Mã hóa và giải mã dữ liệu để đảm bảo sự bảo mật trên mạng
- Tầng ứng dụng (Application Layer): là tầng gần với người sử dụng nhất, nócung cấp phương tiện cho người dùng truy nhập các thông tin và dữ liệu trênmạng thông qua chương trình ứng dụng cũng là giao diện chính để người dùngtương tác với chương trình ứng dụng và qua đó với mạng. Một số ví dụ về cácứng dụng trong tầng này bao gồm Telnet, giao thức truyền tập tin FTP và giaothức truyền thư điện tử SMTP, IMAP….
<b>1.3. Mơ hình TCP/IP</b>
Mặc dù mơ hình OSI được cho rằng là hợp lý về mặt mơ hình, tuy nhiên trên thựctế có một chuẩn khác mang tính kỹ thuật và được sử dụng phổ biến trên Internet làTCP/IP (Transmission Control Protocol/Internet Protocol) [4].
5
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>Hình 2: Mơ hình giao thức TCP/IP</b>
TCP/IP là một bộ các giao thức truyền thông cài đặt chồng giao thức phổ màInternet và hầu hết các mạng máy tính phổ biến đang sử dụng.
+ Application Layer: dùng để giao tiếp với người là gộp của 3 tầng (tầng phiên,tầng trình diễn và tầng ứng dụng) trong mơ hình OSI. Cung cấp các dịch vụ chongười dùng trao đổi dữ liệu ứng dụng thông qua các dịch vụ mạng khác nhau.1.3.1. Cách thức truyền dữ liệu qua giao thức TCP
Một số đặc điểm cơ bản trong việc truyền dữ liệu của TCP:6
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">- Truyền dữ liệu không lỗi (do 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 máy tính trao đổi ISN – sổ thứ tự gói tin ban đầu, ISN có thể tùy chọn ngẫunhiên. Vai trị của ISN là để đánh dấu khối dữ liệu từ mỗi máy tính và sẽ được tăng lên saukhi một byte được truyền đi. Do đó cho dù các gói tin đến với thứ tự thế nào thì vẫn có thểsắp xếp lại chúng.
Theo lý thuyết, mỗi byte khi gửi đi đều có một số thứ tự và sau khi nhận được thìmáy tính nhận sẽ gửi lại ACK. Tuy nhiên, trên thực tế thì chỉ có byte đầu tiên được đánhsố thứ tự và tin nhận sẽ gửi tin báo nhận bằng cách gửi số thứ tự của byte đang chờ đượcgửi.
Do có số thứ tự (ISN) và tin báo nhận (ACK) nên các vấn đề về lặp gói tin, các góitin đến sai thứ tự và những gói tin bị hỏng hoặc mất trên đường truyền sẽ được giải quyết.Để kiểm tra thì các gói tin có trường Checksum (trường giá trị tổng kiểm).
Hiện tại TCP còn tồn tại một vấn đề là kỹ thuật kiểm tra tổng không đủ mạnh, cáctầng liên kết dữ liệu với xác xuất lỗi bit cao cần có thêm khả năng phát hiện lỗi tốt hơn.Điểm yếu này một phần khắc phục bằng kỹ thuật CRC hay những kỹ thuật khác tại tầngthứ 2 (trong mơ hình 7 lớp OSI). Mặc dù thế thì trường kiểm tra tổng trong TCP vẫn rấtcần thiết vì kĩ thuật CRC mắc các sai sót do cả phần cứng và phần mềm khá nhiều và kĩthuật tổng kiểm tra trong TCP có khả năng phát hiện hầu hết các lỗi này.
Điểm quan trọng nữa của TCP là khả năng hạn chế tắc nghẽn.
Để đạt được hiệu suất cao và chống tắc nghẽn mạng thì TCP sử dụng các cơ chếnhư: cửa sổ trượt (sliding window), thuật toán slow-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, …
1.3.2. Cấu trúc gói tin TCP
Do là giao thức tin cậy nên cấu trúc gói tin của TCP rất phức tạp. Một gói tin TCPbao gồm 2 phần: header và data. Phần header có 11 trường trong đó 10 trường bắt buộc.Trường thứ option là tùy chọn [7].
7
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>Hình 3: Cấu trúc của gói tin TCP</b>
- Source port (dài 16 bit): Số hiệu của cổng tại máy tính gửi- Destination port (dài 16 bit): Số hiệu của cổng tại máy tính nhận- Sequence number (32 bit): dùng để đánh số thứ tự gói tin cụ thể:
+Nếu cờ SYN bật thì nó là số thứ tự gói ban đầu và byte đầu tiên được gửicó 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
- Acknowledgement number (32 bit): dùng để báo đã nhận được gói tin nào vàmong nhận được byte mang số thứ tự tiếp theo cụ thể là:
+Nếu cờ ACK bật thì giá trị của trường chính là số thứ tự gói tin tiếp theomà bên nhận cần
- Data offset (4 bit): qui định độ dài của phần header (tính theo đơn vị word (1 word= 4 byte))
- Reserved (4 bit): được thiết lập giá trị là 0.- Flags (hay Control bits) (9 bit). Bao gồm 6 cờ:
+URG: Cờ cho trường Urgent pointer+ACK: Cờ cho trường Acknowledgement+RSH: Hàm Push
8
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">+RST: Thiết lập lại đường truyền+SYN: Đồng bộ lại số thứ tự+FIN: Không gửi them số liệu
- Window (16 bit): số lượng byte được thiết bị sẵn sàng tiếp nhận - Checksum (16 bit): kiểm tra lỗi cho cả phần header và data
- Urgrent pointer (16 bit): sử dụng trong trường hợp cần ưu tiên dữ liệu cụ thể là: +Nếu cờ URG bật thì giá trị trường này chính là số từ 16 bít mà số thứ tựgói tin (sequence number) cần dịch trái.
- Options (tối đa 32 bit): cho phép thêm vào TCP các tính năng khác
<b>Data: khơng thuộc về header. Giá trị của trường này là dữ liệu của các tầng</b>
trên (trong mơ hình OSI).1.3.3. Thiết lập và kết thúc kết nối TCP
<b>Thiết lập kết nối</b>
Sử dụng phương thức bắt tay 3 bước như sau: Tiến trình trạm làm việc yêu cầuthiết lập một kết nối TCP bằng cách gửi một gói tin TCP với cờ SYN=1, và chứa giá trịkhởi tạo số tuần tự ISN của client. Giá trị ISN là số 4 byte không dấu và sẽ tăng mỗi khicó một yêu cầu kết nối (khi đạt tới giá trị 2 thì sẽ quay về 0). Trong gói điều khiển SYN<small>32</small>
cịn chứa số hiệu cổng TCP của phần mềm dịch vụ mà tiến trình trạm làm việc muốn kếtnối. Mỗi thực thể kết nối TCP đều có một giá trị ISN mới. Số này được tăng theo thờigian.
- Bước 1: Vì một kết nối TCP có cùng một số hiệu cổng và cùng một địa chỉ TCPđược dùng lại nhiều lần, để ngăn không cho các kết nối dùng lại số liệu cũ ta phảithay đổi ISN.
- Bước 2: Sau khi nhận được gói điều khiển SYN trong trạng thái sẵn sàng chấpnhận kết nối, TCP của phần mềm dịch vụ sẽ gửi lại gói SYN với giá trị ISN củaclient và đặt cờ ACK=1, để thông báo rằng thực thể dịch vụ đã nhận được giá trịISN của tiến trình trạm.
- Bước 3: Tiến trình trạm đáp lại gói SYN của thực thể dịch vụ bằng 1 thông báo trảlời ACK cuối cùng, và xác minh đã nhận được giá trị ISN của phần mềm dịch vụ.
9
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Bằng phương pháp này, các TCP trao đổi một cách tin cậy các giá trị ISN của nhauvà sẵn sàng trao đổi số liệu.
<b>Kết thúc kết nối</b>
Khi kết thúc kết nối, thực thể TCP (thực thể A) sẽ gửi yêu cầu kết thúc kết nối vớicờ FIN=1. Tuy nhiên do kết nối TCP là song công nên khi nhận được yêu cầu kết thúc kếtnối của A bằng cờ FIN = 1 của mình thì thực thể B vẫn có thể tiếp tục truyền số liệu chođến khi B hết số liệu để gửi và sau đó thơng báo cho A bằng một yêu cầu kết thúc là cờFIN = 1 của mình.
Sau khi đã gửi cờ FIN của chính mình, mà nhận được FIN thì kết nối TCP mớithực sự kết thúc.
Hiện nay nhiều loại băng thông cũng như tỷ lệ gói tin bị mất do TCP dung nạpnhiều loại mạng vật lý cơ sở khác nhau bằng việc cung cấp nhiều độ trễ khác nhau. Nó xửlý kết nối độc lập, cho phép nhiều kết nối từ một máy đến máy khác theo các con đườngcó đặc tính cơ sở khác nhau. Quan trọng hơn, ngay cả khi hệ thống chuyển mạch gói cơsở bị nghẽn mạch hoặc tạm thời bị hỏng thì TCP vẫn có thể hiệu chỉnh đối với nhữngthay đổi của thời gian khứ hồi Round Trip Time (RTT) của một kết nối làm cho nó trởnên đáng tin cậy.
Sự thành cơng của TCP có đóng góp to lớn của việc truyền lại với khả năng hiệuchỉnh. Việc truyền lại với khả năng hiệu chỉnh sử dụng cách hoạt động đã qua để dự đoáncho cách hoạt động trong tương lai. TCP phải tính tốn thời gian khứ hồi cho mỗi lầntruyền và phải sử dụng kĩ thuật thống kê để kết hợp các số liệu riêng lẻ thành một ướclượng đúng của thời gian khứ hồi, không những thế TCP phải liên tục cập nhật ước lượngvề thời gian khứ hồi của nó.
<b>1.4. Điều khiển luồng</b>
1.4.1. Khái niệm
Có một vấn đề đặt ra là phải làm gì khi bên gửi ln muốn truyền các gói tinnhanh hơn tốc độ mà bên nhận có thể nhận được. Tình huống này rất dễ xảy ra khi ngườigửi đang chạy một máy tính tốc độ cao hoặc tải nhẹ, còn người nhận đang chạy một máytốc độ thấp hoặc tải nặng. Bên gửi cứ tiếp tục gửi các gói tin ra với tốc độ cao làm chobên nhận không thể xử lý hết dẫn tới việc mất gói tin. Điều rõ ràng là cần có một giảipháp nào đó để tình huống này không xảy ra nữa [4].
Và giải pháp được đưa ra ở đây chính là việc điều khiển luồng (Flow Control) để10
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">điều tiết bên gửi, sao cho bên gửi không gửi nhanh hơn tốc độ mà bên nhận có thể xử lýđược. Việc điều tiết này thường cần một cơ chế điều khiển giúp phản hồi, sao cho bên gửicó thể nhận thấy được bên thu có thể xử lý theo kịp mình hay khơng.
Điều khiển luồng (Flow Control) là một cơ chế nhằm đảm bảo việc truyền thôngtin giữa bên phát và bên thu sao cho việc gửi thông tin của bên phát không vượt quá khảnăng xử lý của bên thu.
Cơ chế điều khiển luồng được thiết kế để điều khiển luồng dữ liệu giữa bên nhậnvà bên gửi sao cho vùng đệm của người nhận khơng bị tràn. Nếu bị tràn thì các khunghoặc gói dữ liệu đã gửi đi sẽ bị mất. Điều khiển luồng được dùng trong tầng liên kết dữliệu để điều khiển các liên kết điếm-điếm và trong tầng giao vận để điều khiển luồng end-to-end trên mạng có định tuyến.
Mục đích của cơ chế điều khiển luồng:
- Thiết lập sự cân đối giữa việc hạn chế người dùng và việc giữ tốc độ truyền tinmột cách hợp lý.
- Đảm bảo tính cơng bằng giữa những người dùng cùng truy cập mạng trong trườnghợp áp dụng điều kiện hạn chế một phần thơng tin truy cập.
- Duy trì khả năng thông qua của mạng, không để sảy ra hiện tượng tắc nghẽn mạnghoàn toàn.
Điều khiển tắc nghẽn là một khái niệm mà nhiều người hay bị nhầm lẫn với điềukhiển luồng. Điều khiển tắc nghẽn đảm nhiệm việc đảm bảo cho mạng có khả năng vậnchuyển lưu lượng đưa vào. Đó là một vấn đề rộng hơn và tồn cục, liên quan đến hoạtđộng của mọi nút mạng, quá trình chứa và chuyển tiếp trong mỗi nút mạng.
Điều khiển luồng và điều khiển tắc nghẽn mặc dù hai khái niệm khác nhau, nhưngliên quan chặt chẽ với nhau. Điều khiển luồng là để giúp tránh tắc nghẽn, còn điều khiểntắc nghẽn là để giải quyết vấn đề tắc nghẽn khi nó đã xảy ra hoặc có thể sắp xảy ra. Trongthực tế việc thực hiện các thuật toán điều khiển luồng và điều khiển tắc nghẽn, nhiều khicả hai thuật toán này cùng được cài đặt trong một giao thức, thể hiện ra như là một thuậttoán duy nhất, ví dụ trong giao thức TCP/IP.
Như vậy điều khiển luồng trong mơ hình TCP/IP là một trong những vấn đề rấtquan trọng để q trình truyền tải thơng tin diễn ra hợp lý và có hiệu suất cao nhất.
11
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">1.4.2. Điều khiển luồng trong giao thức TCP/IP.
Khi truyền thơng tin trong mạng, thơng tin truyền từ phía phát sang phía thu có thểbị sai lỗi hoặc mất gói tin. Trong trường hợp thơng tin bị mất, cần phải nhờ bên phát thựchiện truyền lại thơng tin. Cịn trường hợp thơng tin bị sai thơng tin, ta có thể sửa sai bằnghai cách sau:
- Sửa lỗi trực tiếp bên thu: trong q trình truyền phía thu sau khi phát hiện lỗi cóthể sửa lỗi ngay bên thu mà khơng u cầu phải phát lại. Để có thể sửa được trựctiếp, thông tin trước khi truyền đi phải được cài các mã sửa lỗi (bên cạnh việc cókhả năng phát hiện lỗi, cần có khả năng sửa lỗi).
- Yêu cầu phía phát truyền lại: phía thu sau khi kiểm tra và phát hiện có lỗi sẽ ucầu phía phát truyền lại thông tin. Trong trường hợp sửa lỗi bằng cách truyền lại,thông tin trước khi phát chỉ cần thêm các bit giúp phát hiện lỗi (số bit thêm vào íthơn so với trường hợp sửa lỗi) do đó hiệu suất truyền thông tin cao hơn so vớitrường hợp sửa lỗi bên thu. Tuy nhiên, trong một trường hợp có lỗi xảy ra vớikhung thơng tin thì tồn bộ khung thông tin phải được truyền lại làm giảm hiệusuất truyền tin.
Cơ chế điều khiển luồng theo phương pháp cửa sổ được hoạt động tương tự nhưcác cơ chế phát lại ARQ (Automatic Repeat Request - yêu cầu lặp lại tự động). Cơ chếphát lại này được chia làm 3 loại với những hoạt động và đặc điểm khác nhau.
<b>Cơ chế phát lại dừng và đợi (Stop- and- Wait ARQ)</b>
Hình vẽ dưới đây mô tả nguyên tắc hoạt động cơ bản của cơ chế phát lại dừng vàđợi (Stop-and-Wait ARQ):
12
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>Hình 4: : Phát lại theo cơ chế dừng và đợi</b>
Trong cơ chế phát lại theo phương pháp dừng và đợi (Stop-and-Wait ARQ):- Phía phát sẽ thực hiện phát một khung thơng tin sau đó dừng lại, chờ phía thu báo
- Phía thu khi nhận đúng khung thông tin và xử lý xong sẽ gửi báo nhận lại cho phíaphát. Phía phát sau khi nhận được báo nhận sẽ phát khung thơng tin tiếp theo.- Phía thu khi nhận khung thông tin và phát hiện sai sẽ gửi báo sai lại cho phía phát.
Phía phát sau khi nhận được báo sai sẽ thực hiện phát lại khung thông tin.Báo nhận được sử dụng cho khung thông tin đúng và được gọi là ACK (viết tắtcủa chữ Acknowledgement). Báo sai được sử dụng cho khung thông tin bị sai và đượcgọi là NAK (viết tắt của chữ Negative Acknowledgement) [4].
Để tránh tình trạng phía thu khơng báo lại tín hiệu ACK (hoặc NAK) để bên phátbiết và phát khung thông tin tiếp theo. Một giải pháp là mỗi khi phát một khung thơng tinthì phía phát sẽ đặt một đồng hồ đếm (time-out) cho khung thơng tin đó. Khi hết khoảngthời gian time-out mà phía phát khơng nhận được ACK gì từ phía thu thì phía phát sẽ chủđộng phát lại khung thơng tin bị time-out.
Để tránh tình trạng nhầm lẫn giữa các khung thông tin được phát và báo nhậntương ứng, các khung được truyền đi giữa hai phía phát – thu đều được đánh số (0, 1)luân phiên. Số thứ tự khung thông tin từ bên phát sang bên thu nằm trong trường SN(Sequence Number) và số thứ tự của báo nhận từ phía thu sang phía phát nằm trongtrường RN (Request Number). SN là số thứ tự được khởi tạo ở bên phát, còn RN là sốthứ tự của khung tiếp theo mà phía thu muốn nhận. Trường hợp RN = SN + 1 thì khung
13
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">được phát đi đúng thơng tin (ứng với ACK), cịn với RN = SN trong trường hợp phía thuyêu cầu phát lại do khung sai (ứng với NAK).
Trong thực tế, thông tin trao đổi được truyền theo hai chiều, nghĩa là đồng thời tồntại hai kênh truyền từ phát đến thu và ngược lại. Trong trường hợp này, khung ACK/NAK(hay trường RN) có thể nằm ngay trong tiêu đề của khung thơng tin được truyền theochiều từ thu đến phát. Một số giao thức có khung thơng tin báo nhận độc lập(ACK/NAK) trong khi một số giao thức khác lại sử dụng luôn khung thông tin truyềntheo chiều ngược lại (từ thu sang phát) để thực hiện báo nhận (hay báo lỗi) cho khungthông tin từ phát sang thu.
<b>Cơ chế cửa sổ trượt Sliding Window</b>
Trong cơ chế cửa sổ trượt, phía phát sẽ được phát nhiều hơn một khung thơng tintrước khi nhận được báo nhận từ phía thu. Kích thước cửa sổ là số khung thông tin cựcđại mà phía phát có thể phát (ký hiệu là W) [2].
Để có thể phân biệt các khung trên đường truyền, các khung cần được đánh số thứtự. Nếu dùng k bit để đánh số thì tổng số khung được đánh số sẽ là 2k (từ 0 đến 2 – 1<small>k</small>
)và do đó, kích thước cửa sổ tối đa W<small>max</small><sup> = 2</sup>k<sub> (về mặt lý thuyết).</sub>
Ví dụ:
Ta sử dụng 3 bit để đánh số thứ tự cho các khung thơng tin, lúc đó kích thước cửasổ cực đại sẽ là 7. Ban đầu cả phía phát và thu đều có kích thước cửa sổ là 7 thể hiện rằngphía phát được phép phát tối đa là 7 khung (bắt đầu từ khung F0). Sau khi phía phát đãphát được ba khung (F0, F1, F2) và chưa nhận được ACK, phía phát giảm kích thước cửasổ xuống cịn lại 4. Lúc này cửa sổ phía phát bao gồm những khung từ F3 đến F6 thể hiệnrằng phía phát cịn cho phép truyền tối đa là 4 khung nữa, bắt đầu từ khung F3.
Ở phía thu, sau khi đã nhận đúng và xử lý xong ba khung F0, F1 và F2 thì sẽ gửilại ACK3 cho phía phát. ACK3 được hiểu là phía thu đã nhận và xử lý xong các khungcho đến F2 và phía thu sẵn sàng nhận khung 3. Thực tế, phía thu sẵn sàng nhận 7 khungbắt đầu từ khung F3. Phía thu đồng thời tăng kích thước cửa sổ bên thu lên 7, bao cáckhung từ F3 cho đến F1.
Phía phát sau khi nhận được ACK3 sẽ tăng kích thước cửa sổ thêm 3 đơn vị. Lúcnày cửa sổ phía phát W = 7 và bao các khung từ F3 đến F1. Giả sử lúc này phía phát thựchiện phát các khung từ F3 đến F6 (4 khung). Sau khi phát, phía phát sẽ giảm kích thướccửa sổ đi 4 (W = 3), lúc này cửa sổ chỉ còn bao các khung F7, F0 và F1.
14
</div>