Допустим, что станция А хочет передать данные станции В, тогда:
1. Станция А формирует кадр:
1.1. Формирует признак начала кадра-преамбулу (10101010).
1.2. Формирует заголовок кадра (определяется и присоединяется адрес отправителя и адрес получателя).
1.3. В поле типа пакета заносится 0 – в случае передачи данных и 1 – в случае передачи ответного пакета(пакета с пустым полем данных).
1.4. В поле длины данных заносится длина передаваемой информации
1.5. В поле данных заносится информация для передачи и подсчитывается контрольная сумма.
1.6. В поле FCS заносится контрольная сумма по модулю 256.
2. Устанавливается соединение со средой передачи.
3. При получении пакета каждая станция сравнивает адрес получателя со своим адресом. Если они не совпадают, то кадр транспортируется обратно в кольцо, при совпадении адресов управление передается на прием кадра из сети. Станция В выполняет следующие действия:
3.1. Изымает кадр из сети.
3.2. Проверяет поле типа пакета. Если ТП=0, то считываются данные, длина которых указана в поле ДЛ, и подсчитывается контрольная сумма.
3.3. Контрольная сумма сравнивается с полем FCS. Если они совпали, то формируется кадр-ответ.
4. Формирование кадра-ответа станцией В (кадр-ответ состоит из 4-х байт и отправляется только тогда, когда произошла ошибка):
4.1. Формирует признак начала кадра (10101010).
4.2. Формирует заголовок кадра (присоединяется адрес отправителя и адрес получателя).
4.3. В поле типа пакета заносится 1(кадр-ответ).
5. Для станции А устанавливается timeout. Т.е. если кадр-ответ не приходит в течение 0,05 с, то станция А принимает решение, что кадр был либо не получен станцией В, либо содержал ошибки и повторно отправляет его станции В. Если кадр-ответ получен, то кадр изымается из буфера передачи. Ожидая кадр-ответ, станция A может передавать в кольцо чужие кадры приходящие ей из кольца.
Длина кадра меняется в пределах от 42 до 498 бит.
Рассмотрим формат кадра, который выглядит следующим образом:
8 бит
8 бит
8 бит
1 бит
9 бит
0 – 57 байт
8 бит
ПР
АП
АО
ТП
ДЛ
ДАННЫЕ
FCS
1. ПР – преамбула. Появление этой комбинации бит (10101010) является указанием на то, что следующий байт - это первый байт заголовка кадра.
2. АП – адрес получателя. Так как в сети 80 станций то 1 байта будет достаточно для представления адреса получателя. Максимальное количество станций в сети – 256.
3. АО – адрес отправителя.
4. ТП – поле типа пакета. Информация, записанная в этом поле, показывает, какой кадр передан в сеть: обычный кадр с данными или кадр-ответ. Если обычный кадр, тогда ТП = 0, если кадр-ответ, то ТП = 1.
5. ДЛ – длина данных. В этом поле записана длина передаваемых данных в байтах. Длина этого поля – 9 бит, следовательно, максимальная длина поля данных – 64 байта, однако максимальное возможное значение, которое позволено записать в это поле составляет 57 (111001)
6. ДАННЫЕ – поле данных. Сюда записываются данные, которые хочет передать станция. Длина этого поля меняется в пределах от 0 байта, до 57 байт, в зависимости от поля ДЛ.
7. FCS – поле проверочных символов. После получения кадра рабочая станция выполняет собственное вычисление контрольной суммы по модулю 256 для этого кадра, сравнивает полученное значение со значением поля и определяет целостность полученного кадра.
Листинг программы, моделирующей работы сети
Среда реализации: Visual Studio 2010
Язык реализации: C#
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace NetworkProgramm
{
class Packet
{
public byte preambule;
public byte receiverAdress;
public byte senderAdress;
public bool packetType;
public byte dataLength;
public bool[] data;
public byte testError;
public Packet(byte sender,byte receiver,bool[] data)