<|||>
 

Как работает интернет. Часть 8 | Как устроен протокол TCP, структура

Глобальные компьютерные сети и интернет
Оглавление
Как работает интернет. Часть 8 | Как устроен протокол TCP, структура
Подтверждение пакетов
Контроль целостности соединения в TCP. SEQ и ACK
Опции протокола TCP
Все страницы

Как устроен протокол TCP

Прежде чем описывать, как устроен протокол TCP, давайте разберемся, зачем он вообще нужен. Итак, мы хотим отправить HTTP-запрос на какой-либо удаленный компьютер. Мы знаем, что на 80-й порт, но как про это узнает компьютер, к которому мы обращаемся? Для него-то запрос просто придет на его сетевую карту, поэтому номер порта нужно где-нибудь прописать.

Кроме того, вполне может быть, что несколько пакетов потеряются, пока идут от нас до удаленного компьютера и обратно, поэтому хотелось бы, чтобы получение информации было «целостным» - нельзя было что-то не получить, или получить, но неправильно.

Чтобы это контролировать, нужно сначала «уведомить» удаленный компьютер, дескать, «Так и так, хотим установить соединение, мы такие-то, делать будем то-то».

Именно для этого, указания номеров портов и контроля целостности соединения и нужен протокол TCP. Теперь рассмотрим его структуру. Взята она целиком и полностью из RFC 793, так как, как вы, наверное, помните, все протоколы описаны в стандартах RFC.


как устроен протокол TCP и его структура

Не пугайтесь обилия английского текста, сейчас все будет понятно. «Ширина картинки» - 4 байта, то есть, раз Source Port и Destination Port в первой строке занимают половину всей длины, то каждое из полей по 2 байта размером. Соответственно, Padding длиной 1 байт, а Sequence Number – 4 байта.

Source Port и Destination Port – это порты, соответственно, наш, и назначения. Как вы уже знаете из предшествующих статей, порт с нашей стороны (Source) – случайный, порт со стороны сервера (Destination)– 80. Когда сервер будет нам отвечать, будем наоборот, Source Port – 80, Destination Port – тот же самый случайный, с которого мы посылали запрос.

Два числа – Sequence Number и Acknowledgment Number нужны для того, чтобы мы и сервер могли «подтвердить», сколько данных мы получили. Например, если мы выслали 1000 пакетов по 100 байт серверу, а сервер ответил «ОК, я получил 90000 байт», следовательно, он получил лишь 900 пакетов, и последние 100 нужно отправить заново. В следующих статьях мы более подробно рассмотрим данный механизм.

Поле Data Offset говорит, с какого адреса начинаются, собственно, данные. Дело в том, что заголовок TCP-пакета может быть разного размера из-за опций, поэтому и необходимо знать его размер. Поле указывает число 32-битных «кусочков», которые необходимо пропустить, чтобы добраться к данным. Например, если в Data Offset записано «10», следовательно, нужно пропустить 32*10=320 байт, и мы попадем, как раз, на начало данных. Кстати, размера данных, как вы видите, нет. Все потому, что TCP не встречается сам по себе, а включается далее в IP и в Ethernet, где, собственно, и определяется размер.

Далее идут несколько зарезервированных бит (Reserved) и набор флагов (URG, ACK, и так далее). Эти флаги будут разобраны позднее.

Поле Window говорит, какой максимальный размер может принять компьютер без подтверждения. Например, если там записано 16384, то мы можем отсылать данному компьютеру максимум 16384 байта, после чего либо мы должны получить подтверждение того, что они приняты, либо (если не получим), отправлять их еще раз, или вообще решить, что компьютер неисправен. Конечно, вполне вероятно, что мы получим подтверждение уже после первых 1000 байт – в таком случае, просто, мы считаем, что «окно было очищено», и мы снова можем отправлять 16384 байта.

Поле CheckSum – содержит контрольную сумму пакета. Рассчитывается она по некоторому алгоритму, для нас не очень важно какому, главное то, что если пакет будет испорчен при передаче, контрольная сумма не сойдется, и в работу такой пакет не пойдет. На него не будет отослано подтверждение приема, и он будет переотправлен повторно.

Поле Urgent Pointer изначально предназначалось для указания на то, что информация «важная», и должна быть обработана в первую очередь (кстати, для этой же цели предназначался флаг URG). Но с развитием скоростей Интернета про это поле все давно забыли и не используют.

А дальше идут, собственно, флаги – та часть TCP-пакета, которая может быть разной длины. Ее мы рассмотрим в следующих статьях.



Комментарии
Добавить новый RSS
rema  - вопрос   |2013-10-11 04:03:44
А где все-таки 4-я и 7-я части?
Юрий  - А где все-таки 4-я и 7-я части?   |2013-10-11 12:20:00
4 часть находится здесь: https://mycompplus.ru/news/52- network-/1865-port.html

А 7 часть здесь: https://mycompplus.ru/news/52- network-/1878--7-ieee-rfc.html
Оставить комментарий
Имя:
Email:
 
Тема:
 
Пожалуйста, введите проверочный код, который Вы видите на картинке.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
Яндекс.Метрика Все права защищены. Copyright 2008-2024 © Мой компьютер плюс