Тема №6 Транспортен слой

  Tранспортния слой осигурява пренасянето на съобщения от източника до получателя.
Използва протоколите: TCP (Transmission Control Protocol) и UDP (User Datagram Protocol).
      TCP (RFC №793) – осигурява надеждното предаване на съобщения, чрез установяване на надеждна
двупосочна връзка(connection-oriented protokol). Данните се предават повторно при възникване на грешки до пълното им достигане до получателя.
TCP протокола разделя информацията на части, опакова ги в сегменти и ги изпраща на IP протокола (II слой). IP протокола опакова сегментите в дейтаграми и извършва маршрутизащията на всяка дейтаграма. След като се приеме, IP разопакова дейтаграмата до сегмент и ги предава на TCP, който ги сглобява в съобщения и изпраща на по-горните слоеве.
Всяко устройство свързано с интернет притежава IP адрес.
      Порт – интерфейс, който е крайен възел на една логическа връзка ( … някакво число за идентификация). Портовете приемат стойности между 0 – 65536 (16 битово двойчно число 2 16=65536 ).
От 0 до 1023 са така наречените - добре известни (well-known) портове. Те са резервирани за популярни услуги и приложения – HTTP, POP3/SMTP, Telnet и т.н.
От 1024 до 49151 – потребителски (регисрирани) портове се присвояват на потребителски процеси и приложения.
От 49152 до 65535 - услугите не използват такива портове (освен частни, пр. 62000 – използва се от Microsoft DirectAccess).
Някои от добре известните портове, които ползват:
TCP - FTP-21,Telnet- 23, SMTP - 25, HTTP – 80, POP3 – 110, HTTPS – 443.
UDP - TFTP – 69, RIP – 520.
IP адреса на хоста плюс номера на порта образуват сокет (socket-гнездо).
Сокета от едната страна на връзката (източника) съвместно със сокета от другата страна на връзката (получателя) образуват едно ТСР съединение (връзка). Съединението би трябвало да единствено (уникално). По този начин се различава кой сегмент за коя програма е предназначен. Един сокет може да се използва от няколко TCP връзки - мултиплексиране.

Установяване на връзка – нарича се трипосочно ръкостискане
(Three-way handshake)
Необходими са няколко стъпки за установяване на двупосочна връзка, за надеждно предаване на пакетите от данни:
  1. Хостът (клиент), който иска да осъществи връзката изпраща SYN сегмент с начален номер (Х) на последоваелността от байтове и номера на порта за връзка с друг хост (сървър).
      SYN флага се установява в 1, когато се осъщесвява TCP връзка и се изпраща първия номер на байтовете, които ще се изпращат. Този номер се задава в полето пореден номер (sequence number) в заглавната част на TCP сегмента.
  2. Когато сървърът получи SYN сегмент, той си записва този номер Х и изпращане свой SYN сегмент и начален номер за потвърждение У=X+1 и за да потвърди приемането с вдигнат ACK флаг.
ACK флаг – се установява в 1, когато е валиден номера за потвърждение (Acknowledges received data).
  3. След получаване на SYN сегмент, клиента също трябва да изпрати сегмент съдържащ потвърждение с ACK с номер (У+1) .
Затваряне на TCP връзката

При затваряне на връзката не би трябвало да се губи информация. Врузката може да се прекрати по няколко начина:
  I. Симетрично – всеки от двата хоста прекрати изпращането и приемането на данни.
За симетрично затваряне е необходим обмен на 4 сегмента по два във всяка поска:
      1. Станцията, която инициира прекратяването изпраща сегмент без полезни данни с вдигнат FIN флаг и пореден номер (Х).
      FIN флаг – (указва че хостът, който изпраща този флаг) прекратява изпращането на данни, но все още може да приема.
      2. Станцията получател, изпращане свой сегмент с начален номер и за да потвърди приемането ACK флаг с номер (У=X+1).
Станция 1 все още приема данни, а станция 2 може все още да изпраща данни.
      3. Станцията получател изпраща сегмент с вдигнат FIN флаг и сегмент с начален номер Х+n (n - размера на сегмента).
      4.Станцията инициираща прекратяването, трябва да изчака за обслужване на закъснели пакети и след това да изпрати сегмент съдържащ потвърждение с ACK флаг с номер (У+1).
Връзката се прекратява.
  II. Затваряне от едната страна (half-close) – когато единия хост прекрати предаването на данни, но все още продължава да получава данни до затваряне на връзката и от другата страна.
  III. Безусловно (асиметрично) затваряне на връзката – когато обменът на данни се прекрати в двете посоки, без да се интересува от последствията за загуба на информация. Използва вдигнат RST флаг за прекратяване на връзката.

  За по-детайлно и графично разглеждане на TCP последователността на пакетите можем да използваме Wireshark .
Установяваме tcp връзка, чракаме два пъти с мишката вурху първия пакет, за детайлно разглеждане.
Редът с Transmission Control Protocol разширяваме до Flags и можем да видим стойностите на флаговете ( ако е първия пакет трябва само SYN да е равен на 1).
След това затваряме детайлния прозорец и се връщаме в първия (основния прозорец) и проверяваме втория tcp пакет по същия начин, вече и ACK флага трябва да е 1 и т.н.
Графичното представяне е по-интересно и можем да го видим от Statistics --> Folow Graph .. в прозореца да поставим отметка на TCP flow и ОК.


Under construction ....