Какво е TCP?
TCP (Transmission Control Protocol) е протокол на транспортния слой, ориентиран към връзка.
Намерение на тази статия:
Да разбереш целия TCP не е лесна задача. В тази статия ще се опитаме да разберем основните обмени на пакети на TCP чрез Wireshark. Теорията може да се чете чрез интернет. Ще се съсредоточим повече върху анализа на улавяне на пакети.
Защо TCP е известен?
Има много причини, поради които TCP е толкова известен:
- TCP е ориентиран към връзката протокол, така че надеждността е много висока.
- TCP може сам да контролира задръстванията.
- TCP може да открие грешка.
- TCP използва протокол за контрол на потока.
- TCP има функции за забавяне на ACK.
- TCP има селективна функция ACK.
- TCP има функция за извикване на прозорци за подобряване на производителността.
Има толкова много други функции, които правят TCP толкова известен.
Анализ на TCP:
Ще следваме няколко стъпки за генериране на TCP рамки.
Етап 1: Най-лесният начин за генериране на TCP пакети е чрез достъп до който и да е HTTP уебсайт. Причината е, че HTTP е протокол на приложния слой и той използва TCP като основен протокол на транспортния слой.
За да знаете за HTTP, следвайте връзката по-долу
https: // linuxhint.com / http_wireshark /
Стъпка 2: Стартирайте Wireshark.
Стъпка 3: Отворете връзката отдолу във всеки браузър.
http: // gaia.cs.umass.edu / wireshark-labs / alice.текст
Стъпка 4: Спрете Wireshark и поставете TCP като филтър.
Стъпка 5: АНАЛИЗ
Сега трябва да видим TCP 3-пътни пакети за ръкостискане. Ето простата диаграма.
Рамка 1: SYN [Синхронизация]
SYN е първият пакет, идващ от клиента към сървъра. В нашия случай 192.168.1.6 е клиентът [Системата, в която отворихме браузъра] и gaia.cs.umass.edu е сървърът.
Ето някои важни полета в рамката SYN
SYN рамката е необходима за изпращане на възможностите на клиента към сървъра.
Рамка 2: SYN + ACK [Синхронизация + Потвърждение]
SYN, ACK е вторият пакет, идващ от сървъра към клиента.
Ето някои важни полета в рамката SYN, ACK
SYN, ACK кадър е необходим за изпращане на възможностите на сървъра до клиента.
Сега клиентът и сървърът са споделили своите възможности.
Рамка 3: ACK [Потвърждение]
ACK е третият пакет, идващ от клиента към сървъра. Това е основно потвърждение от клиент към сървър, а също така е приемане на възможностите, изпратени от сървъра.
Ето важните полета за ACK.
Нека проверим важната информация, споделена между клиент и сървър:
КлиентСървър
Размер на прозореца за получаване: 64240 байта Размер на прозореца за получаване: 29200 байта
Максимален размер на сегмента: 1460 байта Максимален размер на сегмента: 1412 байта
ЧАНТА Разрешено: Да ЧАНТА Разрешено: Да
Мащаб на прозореца: 8 (умножете по 256) Мащаб на прозореца: 7 (умножете по 128)
Забелязахме, че има разлики в стойностите. Ако клиентът или сървърът приемат възможностите на други, тогава 3-посочното ръкостискане е успешно.
TCP заглавка:
Ето важните полета на заглавката на TCP:
- Изходен порт (16 бита): Това е изпращащият порт.
- Целеви порт (16 бита): Това е приемащият порт.
- Пореден номер (32 бита):
- Ако е зададен бит SYN [1], това е първоначален номер на последователност.
- Ако битът SYN не е зададен [0], това е натрупаният пореден номер на първия байт данни на този сегмент.
- Номер за потвърждение (32 бита): Ако е зададен флаг ACK, тогава стойността на това поле е следващият пореден номер, който подателят на ACK очаква.
- Дължина на заглавката: Размерът на заглавката може да варира от 20 байта и максимум 60 байта.
- Флагове (9 бита):
... = Резервирано: Не е зададено
… 0… = Nonce: Не е зададено
… 0… = Намален прозорец за задръствания (CWR): Не е зададено
… 0… = ECN-Echo: Не е зададено
… 0… = Спешно: Не е зададено
… 0… = Потвърждение: Не е зададено
… 0… = Push: Не е зададено
… 0… = Нулиране: Не е зададено
... 1. = Syn: Задайте
… 0 = Fin: Не е зададено
- Размер на прозореца (16 бита): Това е размерът на прозореца за получаване в байтове.
- Контролна сума (16 бита):
Използва се проверка за грешка на заглавката.
Пример: Контролна сума: 0x436f- Спешен указател (16 бита):
Това е отклонение от поредния номер, показващ последния байт за спешни данни.
Пример: Спешен указател: 0- Настроики:
TCP опция - Максимален размер на сегмента: 1460 байта
TCP опция - без операция (NOP)
TCP опция - Мащаб на прозореца: 8 (умножете по 256)
Опция за TCP - разрешено SACK
Наблюдение:
Размерът на TCP заглавката на SYN е 32 байта.
TCP размер на заглавката на SYN, ACK е 32 байта.
Размерът на TCP заглавката на ACK е 20 байта, тъй като няма полета за опции.
TCP данни:
Ето екранната снимка с обяснение за TCP данни и TCP ACK. Тук можем да видим TCP функция за забавяне на TCP. Сървърът е изпратил три TCP пакета с данни до клиента и клиентът е изпратил едно забавяне ACK, за да каже на сървъра, че е получил и трите TCP пакета с данни. Ето защо в TCP ACK [номер на пакета 96 на екранна снимка] виждаме ACK = 14121, което означава, че клиентът е получил до 14121 байта.
Справка:
За основна теория на TCP вижте
https: // en.wikipedia.org / wiki / Transmission_Control_Protocol