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 toà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,
GIỚI THIỆU CHUNG
Lịch sử hình thành và phát triển
Nguồn gốc Internet đầu tiên là mạng máy tính của Bộ Quốc phòng Hoa Kỳ được gọ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ụng truyề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ết nố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ết kế 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ày phải có khả năng chống lại một cuộc tấn công có thể vô hiệu hoá một số lớn các trạm thành viên của nó Internet ban đầu được thiết kế để cung cấp thông tin cho cộng đồng khoa 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 qua mộ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 trong số đó là các dịch vụ e-mail trả phí, đã trở thành thành viên của Internet Từ đó, hệ thống Internet ra đời, bao gồm các mạng máy tính liên kết với nhau trên toàn thế giới, tạo điều kiệ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úc nhất định để trao đổi thông tin với nhau… Những lợi ích có thể kể đến của mạng máy tí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ùng mộ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ên cù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ến đượ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ày chỉ 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ội dung 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ấp hơ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ịch vụ 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).
Mô hình tham chiếu OSI và TCP/IP
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ự độc quyề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 IBM chỉ 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ình tham 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).
Hình 1: Mô hình giao thức OSI
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áp truyề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ôi trườ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 được chia sẻ hiệu quả giữa nhiều người dùng, chẳng hạn giải quyết tranh chấp tài nguyên (contention) và điều khiển lưu lượng.
+ Đ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ênh truyề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 định cơ 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ựa trê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ửa lỗ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 tin có 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 cho nơ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ách tìm đường (routing) cho các gói tin từ một mạng này đến một mạng khác Tầng này xác định việc chuyển hướng, vạch đường cho các gói tin trong mạng, các gói này có thể đi qua nhiều chặng để đến được đích cuối cùng và luôn tìm các tuyến truyền thông không tắc nghẽn để đưa các gói tin đến đích Tầng mạng cung các các phương tiện để truyền các gói tin qua mạng, thậm chí qua một mạng của mạng (network of network) Vậy nên nó cần phải đáp ứng với nhiều kiể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ày cũng là quan trọng nhất khi liên kết hai loại mạng khác nhau như mạng Ethernet với mạng Token Ring khi đó phải dùng một bộ tìm đường (quy định bởi tầng mạng) để chuyển các gói tin từ mạng này sang mạng khác và ngược lạ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 chuyển, chịu trách nhiệm về mức độ an toàn trong truyền dữ liệu nên giao thức tầ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 quán cho mọi thà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ủa chúng Một giao dịch phải được thiết lập trước khi dữ liệu được truyền trên mạ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ính nhận, lớp này lại chuyển từ Format chung sang định dạng của tầng Application có chức năng
+ Dịch mã kí tự từ ASCII sang EBCDIC
+ 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ên mạng thông qua chương trình ứng dụng cũng là giao diện chính để người dùng tươ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à giao thức truyền thư điện tử SMTP, IMAP….
Mô hình TCP/IP
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ực tế 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].
Hình 2: Mô hình giao thức TCP/IP
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.
- Mô hình này gồm 4 tầng:
+ Network Access Layer (Tầng vật lý): là tầng thấp nhất trong mô hình TCP/IP Là nơi truyền dữ liệu giữa các thiết bị trong cùng một mạng.
+ Internet Layer: Chức năng tương tự như mô hình OSI, xử lý quá trình truyền gói tin trong mạng Các giao thức của tầng này bao gồm: IP (Internet protocol), ICMP (Internet control message protocol), IGMP (internet group message protocol). + Transport Layer: Nhiệm vụ là duy trì liên lạc đầu cuối (end-to-end) trên toàn mạng, kèm theo kiểm soát lỗi (error control), phân mảnh (fragmentation) và điều khiển luồ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ụ cho ngườ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:
- 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ẫu nhiê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 sau khi 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 đánh số 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ờ được gử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ói tin đế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ác tầ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ầng thứ 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ất cầ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 TCP bao 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]
Hình 3: Cấu trúc của gói tin TCP
- 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ử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
- 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 theo mà 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
- 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
+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
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 trên (trong mô hình OSI).
1.3.3 Thiết lập và kết thúc kết nối TCP
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ầu thiế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 khi có 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 32 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ết nố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ời gian.
- 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ải thay đổ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ấp nhậ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ủa client 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ụ
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 nhau và sẵn sàng trao đổi số liệu.
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ới cờ 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ết nố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ới thực sự kết thúc
Điều khiển luồng
Có một vấn đề đặt ra là phải làm gì khi bên gửi luôn muốn truyền các gói tin nhanh 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ười gử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áy tố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 cho bê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ải phá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) để đ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ửi có 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ông tin 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ận và 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 khung hoặ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 tin mộ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ường hợ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ạng hoà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ều khiể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ận chuyển lưu lượng đưa vào Đó là một vấn đề rộng hơn và toà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ưng liê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ển tắ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 Trong thự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 khi cả 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ật toá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ất quan trọng để quá trình truyền tải thông tin diễn ra hợp lý và có hiệu suất cao nhất.
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ực hiệ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ằng hai cách sau:
- Sửa lỗi trực tiếp bên thu: trong quá 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 yêu cầu phải phát lại Để có thể sửa được trực tiế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ẽ yêu cầ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 ít hơ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ới trườ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ới khung thông tin thì toàn bộ khung thông tin phải được truyền lại làm giảm hiệu suấ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
Cơ chế phát lại dừng và đợi (Stop- and- Wait ARQ)
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):
Hình 4: : Phát lại theo cơ chế dừng và đợi
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 nhận.
- 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ía phá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ắt của chữ Acknowledgement) Báo sai được sử dụng cho khung thông tin bị sai và được gọ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át biế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 tin thì phía phát sẽ đặt một đồng hồ đếm (time-out) cho khung thông tin đó Khi hết khoảng thờ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ận tươ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 trong trườ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 đượ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 thu yê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ồn tạ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 theo chiề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ền theo 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 khung thông tin từ phát sang thu.
Cơ chế cửa sổ trượt Sliding Window
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 tin trướ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 k ) và do đó, kích thước cửa sổ tối đa W max = 2k (về mặt lý thuyết).
Ta sử dụng 3 bit để đánh số thứ tự cho các khung thông tin, lúc đó kích thước cửa sổ 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ằng phí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ửa sổ 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ện rằ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ửi lại ACK3 cho phía phát ACK3 được hiểu là phía thu đã nhận và xử lý xong các khung cho đế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 khung bắ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ác khung từ F3 cho đến F1.
Đánh giá hiệu năng mạng
Đánh giá hiệu năng mạng: là đánh giá khả năng đáp ứng các dịch vụ, độ ổn định và an toàn của mạng. Ý nghĩa đánh giá hiệu năng mạng:
+ Phân tích, thiết kế, xây dựng hệ thống mạng hiệu quả
+ Cấu hình mạng tối ưu nhất theo hệ thống, tinh chỉnh hệ thống phù hợp môi trường mạng thực tế, nâng cao chất lượng dịch vụ mạng
+ Đánh giá các giao thức và kiểm nghiệm thiết bị.
- Các nhân tố đánh giá hiệu năng mạng:
Thông lượng (throughput): lượng thông tin hữu ích được truyền đi trên mạng trong một đơn vị thời gian, là chỉ số để đánh giá mạng nhanh hay chậm Thông lượng được xác định theo công thức sau:
Thời gian trễ đầu cuối (delay end – to – end): là thời gian từ lúc gửi đến khi bên thu nhận được gói tin, cũng là một chỉ số để đánh giá mạng nhanh hay chậm Trễ đầu cuối được xác định theo công thức sau:
Tỷ lệ mất gói (packet loss rate): được xác định là tỉ số của tổng số gói tin bị mất
𝑡𝑡𝑡𝑡𝑡 𝑡𝑡𝑡𝑡 𝑡𝑡𝑡𝑡𝑡𝑡 với tổng số gói tin đã gửi 𝑡𝑡𝑡𝑡𝑡 𝑡𝑡𝑡𝑡 𝑡𝑡𝑡𝑡𝑡𝑡 Đối với mạng ổn định thì tỉ lệ này thấp, ngược lại tỉ lệ này rất cao Tỉ lệ này mất gói tin được xác định theo công thức như sau:
MÔ PHỎNG
Phương pháp và phần mềm mô phỏng
Nhóm em sử dụng ngôn ngữ C để lập trình mô phỏng các phương pháp: Stop and Wait, Go Back N, Selective Repeat Sau đó nhóm em sử dụng ngôn ngữ Octl, perl, awk để mô phỏng đánh giá hiệu suất khi có điều khiển luồng của giao thức TCP và không có điều khiển luồng của giao thức UDP qua các thông số: thông lượng, độ trễ, tỉ lệ mất gói. 2.1.2 Phần mềm mô phỏng
Trong đề tài này bọn em sử dụng công cụ NS2 để mô phỏng mạng TCP và UDP, sử dụng công cụ Xgraph để vẽ đồ thị đánh giá thông lượng, trễ, tỉ lệ mất gói khi có điều khiển luồng và không có điều khiển luồng.
Mô phỏng
#include int main() { int i, n, r, a; n = 6; printf("The number of packets are: %d\n", n); for (i = 1; i