Исправление ошибок в автодокументах по месту обращения с 1 января 2020 года
Добрый день, уважаемый читатель.
С 1 января 2020 года начали одновременно действовать несколько новых документов, связанных с регистрацией транспортных средств (закон о регистрации ТС, правила регистрации ТС, регламент по регистрации ТС).
Напомню, что часть новых правил регистрации рассмотрена на pddmaster.ru ранее: часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7, часть 8, часть 9.
В этой статье речь идет о следующих интересных нововведениях административного регламента ГИБДД:
Возврат оригиналов документов по требованию автовладельца
Рассмотрим пункт 106 административного регламента по регистрации ТС:
106. Оригиналы документов, удостоверяющих право собственности или владения на транспортные средства или номерные агрегаты, а также документы, удостоверяющие полномочия представлять интересы собственника транспортного средства, сдаваемые или ранее сданные в регистрационное подразделение, возвращаются заявителям по их требованию.
Данный пункт регламентирует важный вопрос, решение которого ранее вызывало проблемы у автовладельцев. Суть его сводится к тому, что если для проведения регистрационных действий в ГИБДД был подан оригинал какого-то документа, то этот оригинал должен быть возвращен автовладельцу по его требованию.
Пример 1. Александр получил автомобиль в наследство, право собственности при этом подтверждается свидетельством о праве на наследство. Однако нотариус выдает лишь одно свидетельство на все наследство, то есть в данный документ кроме автомобиля могут быть включены объекты недвижимости, другие транспортные средства, прочее имущество.
То есть свидетельство о праве на наследство потребуется Александру и после того, как он зарегистрирует машину.
Пример 2. Борис купил автомобиль с рук у предыдущего собственника. При этом договор купли-продажи оформлен в двух экземплярах. Первый экземпляр остался у продавца, второй достался Борису. При регистрации транспортного средства Борис передал договор сотрудникам регистрационного подразделения ГИБДД.
Через 1 год Борис решил продать автомобиль, после чего обязательным является заполнение налоговой декларации. Для оформления декларации и получения вычета Борису требуется договор купли-продажи, который он ранее подал в ГИБДД.
Нововведение от 1 января 2020 года позволяет просто забрать оригиналы необходимых документов после проведения регистрационных действий. Причем забрать можно в том числе и ранее сданные документы.
То есть, даже Борис из примера 2, который зарегистрировал машину год назад, может обратиться в ГИБДД и получить свой экземпляр договора назад.
Получение выписки из реестра транспортных средств
С 1 января 2020 года ГИБДД ведет реестр транспортных средств, в который заносится информация об автомобиле и его владельцах. Пункты 119 — 121 административного регламента содержат информацию о том, как получить выписку из указанного реестра:
119. Основанием для начала административной процедуры является запрос заявителя, оформленный в электронной форме с использованием Единого портала либо на бумажном носителе. Запрос может быть направлен почтовой связью или представлен в регистрационное подразделение при личном обращении.
120. Выписка из государственного реестра транспортных средств в зависимости от состава запрашиваемой информации, а также субъекта, ее запрашивающего, может содержать расширенный перечень информации о транспортном средстве (расширенная выписка) либо сокращенный перечень информации о транспортном средстве (сокращенная выписка).
Расширенная выписка выдается следующим лицам:
а) владельцу транспортного средства, на которое запрашивается расширенная выписка, а также его законному представителю или представителю, действующему на основании доверенности;
б) судам, органам прокуратуры, следствия, дознания в связи с находящимися в их производстве уголовными, гражданскими делами, делами об административных правонарушениях, судебным приставам-исполнителям в связи с осуществлением ими функций по исполнению судебных актов или актов других органов, а также налоговым, таможенным и другим органам и лицам в случаях и в порядке, предусмотренных законодательством Российской Федерации, а также на основании соглашений, заключенных с оператором государственного реестра для исполнения возложенных на них функций;
в) правоохранительным органам иностранных государств и международным полицейским организациям — в соответствии с международными договорами Российской Федерации.
121. Результатом административной процедуры является выдача (направление в личный кабинет заявителя на Едином портале) выписки из государственного реестра транспортных средств.
Рассмотрим особенности приведенных выше пунктов:
1. Существуют 2 варианта выписки: сокращенная и расширенная.
2. Сокращенную выписку об автомобиле может получить любой желающий.
3. Расширенная выписка выдается владельцу автомобиля, а также государственным органам (судам, прокуратуре, органам следствия и дознания, судебным приставам, налоговым, таможенным органам).
4. Получить выписку можно как при личном обращении в ГИБДД, так и через портал государственных услуг.
Более подробная информация о том, какую информацию должна содержать выписка, приведена в отдельном постановлении Правительства, которое рассмотрено в следующей статье:
В каких случаях необходима замена «старых» автодокументов?
151. Решение должностного лица об оформлении документа, идентифицирующего транспортное средство, взамен утраченного, пришедшего в негодность или устаревшего может быть принято в случае проведения любого регистрационного действия.
Пункт 151 говорит о том, что сотрудник регистрационного подразделения может принять решение о замене паспорта транспортного средства (новое свидетельство о регистрации выдается в любом случае, поэтому речь идет только про ПТС) при проведении любого регистрационного действия. Причем основанием для замены может послужить не только то, что ПТС пришел в негодность, но и его устаревание.
Бланки ПТС обновляются довольно часто (раз в несколько лет), поэтому не исключено, что при очередном обращении в ГИБДД водителю предложат заменить старый ПТС на новый. В целом ничего страшного в этом нет, однако копию старого ПТС нужно сохранить на всякий случай.
Где можно исправить ошибку в регистрационных документах?
161. Заявление об исправлении технической ошибки предоставляется заявителем в любое регистрационное подразделение. Исправление технической ошибки осуществляется в соответствии с графиком (режимом) работы регистрационного подразделения. В результате рассмотрения заявления должностным лицом принимается решение об исправлении технической ошибки.
До 1 января 2020 года нормативные документы не давали никакой информации по поводу того, как именно должны исправляться ошибки, допущенные при заполнении документов сотрудниками ГИБДД. Поэтому все, что оставалось водителю, — это повторно идти на прием к тому же самому сотруднику.
С 2020 года ситуация стала заметно лучше. Теперь исправить ошибку можно абсолютно в любом регистрационном подразделении ГИБДД. Даже если водитель успел уехать на другой конец страны, то исправление ошибки в ближайшем ГИБДД не вызовет никаких проблем.
Напомню, что исправление ошибок производится бесплатно, то есть пошлину за выдачу документа повторно платить не нужно.
На этом рассмотрение нового административного регламента по регистрации транспортных средств закончено. Если у Вас остались какие-то вопросы по этому нормативному документу, то напишите их в комментариях ниже.
Удачи на дорогах!
Отказали … в страховании по КАСКО, не понравился клерку – отзыв о страховой компании Совкомбанк Страхование
Многие жалуются — страховая отказала в выплате. А я скажу так. Ребята, чтобы вам отказали, сначала застрахуйтесь. Мне сегодня отказали в страховании КАСКО. А знаете почему — я не понравился сотруднику СК.Страхуюсь в этой компании с марта 2009 года. Одна или несколько машин в год. Автомобиль Форд Фокус III 1.6, 2013 г.в. имеет дубликат ПТС по причине – закончилось место для внесения собственников в старом ПТС. Три предыдущих хозяина и три официальных дилера заполнили все места. Перед сдачей старого ПТС в МРЭО сделаны копии ПТС, сделаны качественные фотосканы. Имеем — новый ПТС, выданный гос.органом. Но все эти документы для страховой – ничто. Если дубликат ПТС – страхование после постановки на учет. Хорошо. Но, мне, как клиенту это неудобно. Прошу чтобы мне перезвонил кто-то из СБ или андеррайтинга для решения этого недоразумения. Этот звонок сделал начальник отдела андеррайтинга Владислав Е. Судя по тону и манере разговора, разговаривать разговоры с какими-то там никчемными клиентами ниже уровня достоинства Владислава Е., и является для него глубоким оскорблением. Собственно, он мне это с самого начала и озвучил своей интонацией, не в открытую конечно, разговоры записываются. Я Владислава раз пятнадцать предупредил, что пора бы и честь знать, и на землю спустится, поумолял я его вдоволь, мол, позвольте мне принести вам свои денежки за страховку. Владислав снизошел. Вроде бы. Кстати говоря, в течение всего разговора Владислав постоянно провоцировал меня на срыв и ненормативную лексику, чтобы сразу швырнуть трубку, но я человек высокого воспитания, но умею и свою точку зрения отстаивать.
Через некоторое время мне перезвонила оператор call-центра и поставила в известность о том, мне вовсе отказано в страховании данного автомобиля. Ну как тут не понять. Мстительный Владислав договорился с СБ, чтобы мне отказали, и он мне тем самым отомстил. Уже обратился в страховую с заявлениями о проведении служебного расследования по этому дикому факту. Посмотрим, ответят, или нет. Подозреваю, что о наказании клерка вопрос даже не встанет. Буду готовить гневное письмо в головной офис Liberty Mutual Group в США, куда входит данная СК. Если оперативно не разберутся, буду натравливать на них «партнеров».
Подпись прошлого владельца в птс
Всем привет. Такой вопрос: решил продать машину, но в ПТС нет места для следующего хозяина. Как будет процедура продажи проходить?
Смотрите также
Комментарии 27
купил машину, птс вся забита, приехал в гаи дали новую не про какой дубликат и где хозяин продавший мне машину не спрашивали.
Нужно озадачиться получением дубликата самому, ну а потом продавать как обычно — вписать покупателя в ПТС и заключить ДКП.
Обязательно сделай копию старого ПТС, т.к. при следующей продаже с дубликатом могут возникнуть много вопросов у покупателя, а с копией они все сразу отпадут.
а лучше цветную
Я недавно покупал тарантайку в другом регионе, суть такая: продавец должен САМ позаботиться о ПТС. Если нет места — нужно получить дубликат. При продаже в ПТС ничего не вписывается, нужно только, чтобы старый хозяин расписался в поле «подпись предыдущего собственника». Мне при оформлении сказали — правильно, что ничего не писал, и вписали все самостоятельно. В крайнем разе, новый владелец сам его заполнит.
Вообще я когда покупал, все делал, как описано тут: labinsk24.ru/rubriki/avto…mobil-iz-drugogo-regiona/
Даже договор по их образцу. Регионы другие. Проблем никаких, все зарегистрировали без вопросов.
я семерку так продавал, места нет, поехал сделал дубликат и все, продал и не кто мне голову потом не морочил подписями)))))
У меня так же было с Nissan 350Z — надо было делать так, при продаже, вместе с покупашкой, идти в ГАИ, где делают постановку со снятием с учёта и говорить гайцам, вот я такой то такой то, (паспорт ему свой и ПТС) продаю свою машину вот этому человеку (его паспорт) он показывает где расписаться и отдаёт ваш паспорт (вас снимают с учёта и в этот же день делают новую ПТС и прописывают его там (но в ПТС будет слово «ДУБЛИКАТ» если ПТС не местная, а с другого региона, она станет тем регионом, где будешь делать переоформление) если есть какие вопросы пиши в личку помогу!
Имеются основания для отказа в регистрации транспортного средства («отсутствие признаков преступления» не подтверждают подписи, что дает основание для отказа в регистрации). Возможно, основанием для регистрации может быть решение суда, подтверждающее идентичность подписей (юридический факт).
На письмо из полиции надо подать вышестоящему должностному лицу жалобу на действия сотрудников полиции при проверки идентичности подписи ДКП и ПТС.
Сдавал задним ходом на парковке, для того что бы произвести разворот, не убедившись в отсутствии помех поперёк мне выехала женщина с парковочного места (тоже двигалась задом) произошло ДТП, кто виноват?
Здравствуйте, скажите пожалуйста что мне грозит за тонировку задних фар?
Добрый вечер. Брат вписал меня в страховку, компания Росгосстрах. Я сама страхуюсь в компании Аско. В мае месяце у меня было ДТП. Полис у брата закончился в ноябре месяце и Росгосстрах внес меня в базу данных без моих скидок, их было 50%. После дтп осталось 20%. Но и их у меня сейчас нет. Еще и повышающий коэффициент. В Росгосстрах обратилаьсь, на их сайте есть онлайн консультация. По телефону отвечают : рассмотрение дела 30 рабочих дней. То есть ответят только в конце января 2016 года. Как мне ездить без страховки почти 2 месяца. У меня работа связанная с автомобилем. Что делать. В Аско отвечают, что бы разбирались с Росгосстрахом. как быть.
добрый день. Вопрос такой, попала в ДТП (замена крыла, задний бампер покраска, дверь покраска, все элементы со стороны водителя), сегодня был суд с РГС, остатки ущерба выплатят уже в следующем году. Авто пока не отремонтировала т.к. ждала выплаты. В прошлые выходные снова ДТП (задний бампер уже в другом месте). Реально выплату со страховой получить по ОСАГО, страховая опять РГС?
Здравствуйте подскажите пожалуйста, в течении какого времени после выплаты страховки можно подать в суд на страховую если не согласен с суммой выплаты??выплатили примерно 30% от стоимости всех работ
Для жителей Санкт-Петербурга
Спасибо за проделанную работу. Все было выполнено в короткие сроки.
Бурмаченко И.В.
Все вопросы были решены профессионально. Претензий не имею. Все обещания по решению вопроса выполнены.
Иванова А. А.
Благодарю компанию «Авто-Юрист» за оказанную помощь при возмещении денежных средств со страховой компании после ДТП. Считаю, что юристы данной окмпании выполнили свои обязанности на отлично. Спасибо за оказанную помощь.
© 2014 г. АвтоЮристы
Все права защищены
Краткое содержание
- Поставили подпись не в том месте в птс, что делать.
- Бывшая жена подделала моб подпись в птс, договор я подписал. Как ее наказать?
- Должна ли быть подпись в птс Бывшего владельца.
- Что можно сделать если в птс стоит подпись настоящего собственника ошибочно.
- Кто ставит подпись предыдущего владельца в птс если куплен авто по второму договору.
- Да подпись в ПТС есть!
- Важна ли подпись в птс прежнего хозяина когда ставишь на переучет?
- Особые отметки в птс
- Подпись в паспорте
- ПТС в залоге у банка
- Подпись в дкп
- Подпись в расписке
Вопросы
1. Поставили подпись не в том месте в птс, что делать.
1.1. Обратитесь в МРЭО ГИБДД и внесите изменения.
2. Бывшая жена подделала моб подпись в птс, договор я подписал. Как ее наказать?
2.1. Обратитесь в суд о расторжении сделки. А в чем смысл, если договор Вы подписали, а в ПТС она расписалась? В сделке важнее договор, чем ПТС.
3. Должна ли быть подпись в птс Бывшего владельца.
3.1. Добрый день. Да, обязательно должна быть, иначе в ГИБДД Вам не поставят на учет автомобиль, т.к. не будет оснований, без подписи считается, что авто Вам не передан.
4. Что можно сделать если в птс стоит подпись настоящего собственника ошибочно.
4.1. Добрый вам день.
Уважаемый Евгений, в данном случае можно указать в ПТС, что подпись в такой-то графе надо считать недействительной.
5. Кто ставит подпись предыдущего владельца в птс если куплен авто по второму договору.
5.1. Здравствуйте.
Подпись владельца в ПТС Может поставить только сам владелец транспортного средства. Если вы приобретаете у человека, который владеет транспортным средством на основании договора купли-продажи, то он сам должен быть вписан в ПТС.
6. Да подпись в ПТС есть!
6.1. Ну тогда ставьте на учет в ГИБДД. Это уже подтверждение договорных отношений между старым собственником и новым. Удачи Вам в разрешении Вашего вопроса!
7. Важна ли подпись в птс прежнего хозяина когда ставишь на переучет?
7.1. Здравствуйте.
Без подписи прежнего хозяина поставить на учет транспортное средство не сможете. Подпись должна быть в обязательном порядке.
7.2. ☼ Здравствуйте,
Очень важна подпись продавца в паспорте транспортного средства, с которым вы заключили договор купли-продажи
Желаю Вам удачи и всех благ!
7.3. Анна, В ПТС-е, в пока еще чистой карточке, где будет записан следующий владелец, тоесть вы, есть графа «подпись прежнего собственника» — там расписывается продавец, вы расписываетесь в соседней «подпись настоящего собственника». Забираете ПТС себе.
7.4. Доброго времени суток! Конечно важна, если не хотите в будущем проблем с данным автомобилем необходимо что бы он ее поставил.
8. Как оформить договор купли-продажи автомобиля, если собственника у автомобиля 2 (наследство)? Кто из них ставит подпись в птс?
8.1. Здравствуйте Роман
В первую очередь автомобиль должен быть зарегистрирован за одним из наследников.
Подпись в птс ставит один из наследников и дкп заключается с одним из наследников, а между собой они сами должны договориться сколько денег отдает другому тот кто ставит подпись.
Регистрация транспортного средства производится только за одним юридическим или физическим лицом либо индивидуальным предпринимателем.
Регистрация транспортного средства, принадлежащего двум и более собственникам, осуществляется за одним из них при наличии письменного согласия на это остальных собственников, поданного ими в регистрационное подразделение Госавтоинспекции при производстве регистрационного действия согласно п. 24 Приказа МВД России от 26.06.2018 N 399 «Об утверждении Правил государственной регистрации автомототранспортных средств и прицепов к ним в Государственной инспекции безопасности дорожного движения Министерства внутренних дел Российской Федерации.
II. Порядок регистрации транспортных средств
9. Покупаю машину у наследника, собственник умер. Все нотариальные документы на право наследства в порядке. Вопрос такой. Скажите, кто должен расспиаться в ПТС, в графе «Подпись прежнего собственника» Спасибо.
9.1. Подпись наследника, если он вступил в право собственности.
Подпись умершего хозяина а у продавца должно быть нотариальное свидетельство о принятии наследства на этот автомобиль.
10. Я виновник ДТП. Отвлекся и догнал впереди едущий автомобиль 1984 г. выпуска, регистратора не было поэтому определить было ли резкое торможение впереди ведущего нет. Подозреваю о подставе. Пострадавший ездил по ДКП. В птс подпись продавца явно подделана. Предложили выплатить 60 т.р. на месте аварии, я отказал. Пострадавший сделал оценку Авто и намерен подавать в суд. Как поступить?
10.1. Если не вызывали ГИБДД, то ничего никто не докажет. Если вызывали, то в зависимости от постановлений которые вынесены.
11. Как восстановить номера с автомобиля (после угона, (собственник угонщик) оформил машину на себя подделав подпись в ПТС, будучи собственником переоформил номера на другой автомобиль и продал его).
На руках решение суда.
Другие номера
Что делать?
11.1. Нужно смотреть решение суда чтобы вам помочь.
11.2. Здравствуйте. В первую очередь, нужно доказать угон авто и подделку документов. Преступника в тюрьму, машину собственнику. Номера в придачу с автомобилем реальному владельцу. Для обжалования решения суда, нужна доказательная база. Если не истёк срок обжалования. Если истёк, придётся смириться.
12. Покупаю авто. В ПТС вписал сам свои данные. Подпись прежнего владельца и моя стоят. Законно ли это? Или эту запись должны заполнять в ГАИ?
12.1. Регистрирующий орган обязан вписывать согласно приказа мвд 1001 от 2008 года правил регистрации авто.
13. Приобрел автомобиль, в птс стоит подпись предыдущего владельца и того человека у которго я купил, но тот у кого я купил не переоформлял авто на себя! Что мне делать!?
13.1. Регистрировать авто на себя, главное есть подписи всех прошлых владельцев и ДКП от последнего владельца. Ничего страшного нет, в том, что он не ставил машину на учет, ему штраф выпишут и все.
Потеря сетевых пакетов, повторные передачи и дублирующие подтверждения
Это третья статья из нашей серии о TCP, охватывающей все, что вам нужно знать для устранения проблем с производительностью, влияющих на критически важные для бизнеса приложения. После рассмотрения того, как TCP открывает и закрывает соединения, мы теперь рассмотрим проблемы, которые могут произойти с текущим соединением, в частности, потерю сетевых пакетов.
Что вызывает потерю сетевых пакетов?
Две наиболее распространенные причины потери сетевых пакетов:
- Ошибки второго уровня (L2)
- и перегрузка сети
Если кадр становится ошибочным от точки к точке в соединении из-за проблем с кабелем, проблем дуплексной связи или других событий уровня 1, получатель определит, что данные повреждены, и сбросит их.В большинстве случаев счетчик ошибок будет увеличиваться на интерфейсе, что помогает определить место, где произошла потеря.
Перегрузка трафика может привести к сбоям ввода / вывода на интерфейсных ссылках, особенно при преобразовании между скоростями каналов (например, 10 Гбит / с на 1 Гбит / с). В этих подключениях исходящий канал может не справиться с объемом входящего трафика, что может привести к отбрасыванию пакетов. Отправитель трафика определит произошедшую потерю и осуществит повторную передачу. Обычно они помечаются как «отброшенные» на интерфейсах.
Как мы видели в этой серии статей, TCP — это протокол, ориентированный на установление соединения. Частью функции установления соединения является создание механизма для отслеживания отправленных данных и подтверждения того, что было получено. Таким образом, TCP может обнаружить пропадание пакета и, соответственно, повторно отправить его, обеспечивая надежную передачу данных.
Потеря сетевых пакетов: справляемся ли мы с этим сегодня?
Да. Несмотря на зрелость сетевых каналов со скоростью 10 Гбит / с и выше, потеря пакетов по-прежнему является основным сетевым событием, которое влияет на приложения сегодня.Чтобы устранить эти проблемы, нам сначала нужно понять, как отбрасываются пакеты, как мы можем обнаруживать эти события и как мы можем их решить.
Повторная передача TCPКаждый байт данных, отправленных в TCP-соединении, имеет соответствующий порядковый номер. Это указано в поле порядкового номера заголовка TCP.
Когда принимающий сокет обнаруживает входящий сегмент данных, он использует номер подтверждения в заголовке TCP, чтобы указать получение.После отправки пакета данных отправитель запускает таймер повторной передачи переменной длины. Если он не получит подтверждения до истечения таймера, отправитель предположит, что сегмент был потерян, и повторно передаст его.
Заголовок TCPМеханизм повторной передачи TCP обеспечивает надежную передачу данных от начала до конца. Если в TCP-соединении обнаруживаются повторные передачи, логично предположить, что потеря пакета произошла в сети где-то между клиентом и сервером.
TCP Дублирование / выборочное подтверждениеБольшинство анализаторов пакетов будут указывать на условие дублирования подтверждения, когда обнаруживаются два пакета ACK с одинаковыми номерами ACK.
Дублирующие / выборочные подтверждения TCP Как это происходит?Отправляющие TCP-сокеты обычно передают данные последовательно. Вместо того, чтобы отправлять по одному сегменту данных за раз и ждать подтверждения, передающие станции будут последовательно отправлять несколько пакетов.Если один из этих пакетов в потоке пропадает, принимающий сокет может указать, какой пакет был потерян, с помощью выборочных подтверждений.
Они позволяют получателю продолжать подтверждать входящие данные, одновременно информируя отправителя об отсутствующих пакетах в потоке.
Как показано выше, выборочные подтверждения будут использовать номер ACK в заголовке TCP, чтобы указать, какой пакет был потерян. В то же время в этих пакетах ACK получатель может использовать параметр SACK в заголовке TCP, чтобы показать, какие пакеты были успешно получены после точки потери.
Опция SACK — это функция, которая объявляется каждой станцией в начале TCP-соединения. Большинство сетевых анализаторов помечают эти пакеты как повторяющиеся подтверждения, потому что номер ACK останется неизменным до тех пор, пока отсутствующий пакет не будет повторно передан, заполняя пробел в последовательности.
Обычно повторяющиеся подтверждения означают, что один или несколько пакетов были потеряны в потоке и соединение пытается восстановить. Они являются частым признаком потери пакетов.В большинстве случаев, как только отправитель получает три повторяющихся подтверждения, он немедленно повторно передает отсутствующий пакет вместо того, чтобы ждать истечения таймера. Это называется быстрой повторной передачей.
Соединения с большей задержкой между клиентом и сервером обычно будут иметь больше повторяющихся пакетов подтверждения, когда сегмент потерян. В соединениях с высокой задержкой можно наблюдать несколько сотен повторяющихся подтверждений для одного потерянного пакета.
ЗаключениеЕсли в соединении обнаруживаются повторные передачи TCP и повторяющиеся подтверждения, не думайте, что небо падает и производительность резко упала.В зависимости от сети между конечными точками небольшое их количество может быть нормальным.
Например, если поставщик услуг подключает конечных пользователей к приложениям в центре обработки данных или если приложение размещено в облачной среде, существует несколько подключений, которые не могут контролироваться и находиться вне зоны видимости сетевой группы. Конечные пользователи могут воспринимать производительность как нормальную, но может существовать небольшое количество повторных передач.
Однако при устранении проблем с производительностью приложения с увеличением количества повторных передач для тех самых пользователей, которые жалуются, основной причиной, скорее всего, является потеря пакетов.Или, по крайней мере, потеря пакетов будет значительной частью головоломки.
Потерянные пакеты требуют повторной передачи, что требует времени, что замедляет работу приложений. В зависимости от того, сколько происходит и насколько быстро конечные точки могут восстановить отсутствующие пакеты, они могут значительно повлиять на производительность приложения.
В этих случаях пройдите по каналу связи между клиентом и сервером, анализируя ошибки на уровне канала для всех устройств инфраструктуры, которыми вы управляете. Возможно, вы обнаружили неисправный кабель, счетчик контрольной последовательности кадров (FCS) или индикатор сброса, которые способствуют потере пакетов.
delphi — Странный сброс TCP (RST) для некоторых HTTP-запросов
У нас есть приложение, написанное на Delphi, которое использует Delphi On Rails и действует как сервер и взаимодействует с клиентами, используя HTTP, JSON и веб-сокеты. В последнее время мы столкнулись с некоторыми проблемами, и их трудно отладить и найти источник проблемы.
Используя Wireshark для анализа трафика, мы могли наблюдать следующее поведение: есть запрос от клиента (HTTP GET для файла). Обычно мы обрабатываем этот запрос и отправляем код состояния HTTP, файл (если он не кэширован) и т. Д.Однако у нас есть воспроизводимая проблема, когда есть только запрос от клиента, TCP SYN от сервера, но после этого сервер отправляет пакет RST, и связь TCP прекращается.
Странно то, что мы можем довольно хорошо воспроизвести проблему (хотя файлы, в которых пакет RST нарушает связь, различаются), и она таинственным образом исчезает в одном из следующих случаев:
- В среде отладки (Delphi IDE) отключение madExcept
- В среде выпуска не исправлять исполняемый файл с помощью madExceptPatch
- Переведите фокус в другое окно, а не в главное окно приложения.
Поскольку у нас были некоторые проблемы с Delphi On Rails и нам пришлось внести в него незначительные изменения, чтобы избежать нарушений доступа и исключений отладки, я подозреваю, что виновником является DOR, а ошибкой является какое-то странное повреждение памяти или невыявленное исключение, но это все еще сбивает с толку, особенно тот факт, что проблема исчезает, если мы меняем фокус.
Мой главный вопрос не в том, как решить эту проблему, а в том, как ее отладить и где искать проблемы. Источник сброса TCP также меня озадачивает, поскольку мы не сталкиваемся с обычными процедурами, обрабатывающими запросы в этом случае, и похоже, что либо DOR, либо что-то еще (приложение, Winsock, ОС) сбрасывает соединение по ошибке.
Для полноты, поскольку это может быть связано, вот проблемы, о которых я сообщил в проекте Delphi On Rails и в ветке форума, где я спросил автора madExcept о проблеме: Issue # 6, Issue # 7, Issue # 8, запись на форуме .
tcp — Что такое дублирующийся ACK, когда это происходит?
ПротоколRDT был основой для реализации протокола TCP. Протокол RDT используется для повторной передачи пакета только по истечении таймера. TCP теперь использует повторяющиеся подтверждения, а также тайм-аут для повторной передачи пакета в случае потери.
Дублирующиеся подтверждения используются как часть быстрой повторной передачи и восстановления пакетов. Обычно, если таймер tcp истекает, предполагается, что пакет потерян, и tcp повторно передает тот же пакет. Но нужно подождать, пока не истечет таймер. Как часть методов управления перегрузкой, TCP ведет себя очень вежливо во время перегрузки, увеличивая интервал таймера в 2 раза, так что пакет будет повторно передаваться с замедлением, что не способствует перегрузке. Однако время ожидания увеличивается экспоненциально, если предположить, что пакет теряется каждый раз при отправке.
Повторная передача того же пакета занимает много времени из-за увеличенного тайм-аута, и отправителю необходимо ждать более длительное время, что вызывает задержку.
Следовательно, tcp реализовал дублирующие подтверждения, и единственная цель этого — установить связь с отправителем до истечения тайм-аута. Если отправитель-получатель дублирует пакеты больше 3, он повторно передаст пакет. Дублирующиеся пакеты немедленно отправляются получателем, если поступают неупорядоченные сегменты. Однако, если потери пакетов не обнаружено, подтверждение откладывается в надежде, что это подтвердит обратные сегменты и уменьшит количество подтверждений в сети.Этот подход заключается в отправке совокупных подтверждений вместо отправки подтверждения каждому сегменту.
Если отправитель получает повторяющиеся подтверждения, отправитель немедленно отправляет потерянный пакет на основе номера подтверждения и не отправляет никаких данных приложения в буфер отправки до тех пор, пока не будет отправлен потерянный пакет. Однако получатель не подтверждает повторно переданный пакет, а делает кумулятивное подтверждение. Это означает, что он отправляет номер подтверждения как последнее наивысшее успешно отправленное значение сегмента вне порядка перед отправкой первого дублирующего подтверждения.
Маршрутизация— что произойдет на стороне сервера, если он получит 2 пакета SYN от одного и того же клиентского приложения?
Обычно TCP, получающий дублирующиеся SYN, будет SYN, ACK их, но он получит RST для дубликата.
RFC 793, протокол управления передачей, раздел 3.4. Установка соединения в точности объясняет этот сценарий:
3.4. Установление соединения
«Трехстороннее рукопожатие» — это процедура, используемая для установления связь.Эта процедура обычно инициируется одним TCP и ответил другой TCP. Процедура также работает, если два TCP одновременно инициировать процедуру. При одновременной попытке происходит, каждый TCP получает сегмент «SYN», который не несет подтверждение после отправки «SYN». Конечно, приход старый дублированный сегмент «SYN» потенциально может сделать его видимым для получатель, что идет одновременное установление соединения. Правильное использование сегментов «сброса» может устранить неоднозначность этих случаев.
Далее в разделе идет более подробная информация:
Основная причина трехстороннего рукопожатия — предотвратить старые дублирование инициирования соединения, чтобы не вызвать путаницу. Иметь дело с для этого было разработано специальное управляющее сообщение сброса. Если принимающий TCP находится в несинхронизированном состоянии (т. е. SYN-SENT, SYN-RECEIVED), он возвращается в LISTEN при получении приемлемого сброса. Если TCP находится в одном из синхронизированных состояний (УСТАНОВЛЕН, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT), это прерывает соединение и информирует своего пользователя.Мы обсуждаем это последнее корпус под «полуоткрытые» соединения ниже.
TCP A TCP B 1. ЗАКРЫТОЕ ПРОСЛУШИВАНИЕ 2. СИНХРОНИЗАЦИЯ ->
... 3. (дубликат) ... -> SYN-RECEIVED 4. SYN-SENT <- <- SYN-RECEIVED 5. СИНХРОНИЗАЦИЯ -> -> СЛУШАТЬ 6.... -> СИНХРОНИЗАЦИЯ ПОЛУЧЕНА 7. SYN-SENT <- <- SYN-RECEIVED 8. УСТАНОВЛЕНО -> -> УСТАНОВЛЕНО Восстановление из старого дубликата SYN Рисунок 9. В качестве простого примера восстановления старых дубликатов рассмотрим рисунок 9. В строке 3 на TCP B поступает старый дубликат SYN.TCP B не может определить, что это старый дубликат, поэтому отвечает нормально (строка 4). TCP A обнаруживает, что поле ACK неверно, и возвращает RST (сбросить) с выбранным полем SEQ, чтобы сделать сегмент правдоподобным. TCP B, получив RST, возвращается в состояние LISTEN. Когда оригинальный SYN (каламбур), наконец, достигает строки 6, синхронизация протекает нормально. Если SYN в строке 6 прибыл до RST мог произойти более сложный обмен с RST отправлено в обоих направлениях.
RFC — это определение TCP, и вы должны ссылаться на него. Есть также более поздние RFC, которые обновляют (RFC 1122, 3168, 6093, 6528).
|
|
HTTP / 1.1: соединения
HTTP / 1.1: соединения часть протокола передачи гипертекста — HTTP / 1.1RFC 2616 Fielding, et al.
8 подключений
8.1 Постоянные соединения
8.1.1 Назначение
До постоянных подключений отдельное TCP-подключение было установлен для получения каждого URL, увеличивая нагрузку на HTTP-серверы и вызывая перегрузку в Интернете. Использование встроенных изображений и другие связанные данные часто требуют, чтобы клиент сделал несколько запросы одного и того же сервера за короткий промежуток времени.Анализ эти проблемы с производительностью и результаты прототипа реализации доступны [26] [30]. Опыт внедрения и измерения реальных реализаций HTTP / 1.1 (RFC 2068) показывают хорошие результаты [39]. Также были изучены альтернативы, например, T / TCP [27].
Постоянные HTTP-соединения имеют ряд преимуществ:
- За счет открытия и закрытия меньшего количества TCP-соединений экономится время ЦП. в маршрутизаторах и хостах (клиенты, серверы, прокси, шлюзы, туннели или кеши) и память, используемая для управления протоколом TCP блоки можно сохранять в hosts.
- HTTP-запросы и ответы могут передаваться по конвейеру в соединении. Конвейерная обработка позволяет клиенту делать несколько запросов без ожидая каждого ответа, разрешая одно TCP-соединение с можно использовать гораздо более эффективно, с гораздо меньшим затраченным временем.
- Перегрузка сети снижается за счет уменьшения количества пакетов вызвано открытием TCP и предоставлением TCP достаточного времени для определить состояние перегрузки сети.
- Задержка при последующих запросах уменьшена, так как нет времени потрачено на рукопожатие открытия TCP-соединения.
- HTTP может развиваться более изящно, поскольку можно сообщать об ошибках без штрафа за закрытие TCP-соединения. Клиенты, использующие будущие версии HTTP могут оптимистично попробовать новую функцию, но если вы обмениваетесь данными со старым сервером, повторите попытку со старым семантика после сообщения об ошибке.
Реализации HTTP ДОЛЖНЫ реализовывать постоянные соединения.
8.1.2 Общая работа
Существенная разница между HTTP / 1.1 и более ранними версиями HTTP заключается в том, что постоянные соединения являются поведением по умолчанию любого HTTP-соединение. То есть, если не указано иное, клиент СЛЕДУЕТ предполагать, что сервер будет поддерживать постоянное соединение, даже после сообщений об ошибках от сервера.
Постоянные соединения обеспечивают механизм, с помощью которого клиент и сервер может сигнализировать о закрытии TCP-соединения.Эта сигнализация занимает разместите, используя поле заголовка соединения (раздел 14.10). После закрытия был сигнализирован, клиент НЕ ДОЛЖЕН отправлять больше запросов на этом связь.
8.1.2.1 Согласование
Сервер HTTP / 1.1 МОЖЕТ предполагать, что клиент HTTP / 1.1 намеревается поддерживать постоянное соединение, если заголовок соединения не включает в запросе был отправлен токен соединения «закрыть». Если сервер решает закрыть соединение сразу после отправки ответ, он ДОЛЖЕН отправить заголовок соединения, включая токен подключения закрыть.
Клиент HTTP / 1.1 МОЖЕТ ожидать, что соединение останется открытым, но будет решите оставить его открытым в зависимости от того, будет ли ответ от сервера содержит заголовок соединения с закрытым токеном соединения. В случае клиент не хочет поддерживать соединение больше, чем это запрос, он ДОЛЖЕН отправить заголовок соединения, включая токен подключения закрыть.
Если клиент или сервер отправляют токен закрытия в Заголовок соединения, этот запрос становится последним для связь.
Клиентам и серверам НЕ СЛЕДУЕТ предполагать, что постоянное соединение поддерживается для версий HTTP ниже 1.1, если это явно не указано сигнализировал. См. Раздел 19.6.2 для получения дополнительной информации об обратном совместимость с клиентами HTTP / 1.0.
Чтобы оставаться постоянными, все сообщения в соединении ДОЛЖНЫ иметь самоопределяемую длину сообщения (т. е. не определенную закрытием соединения), как описано в разделе 4.4.
8.1.2.2 Трубопровод
Клиент, поддерживающий постоянные соединения, МОЖЕТ «конвейерно» запросов (т.е. отправлять несколько запросов, не дожидаясь каждого отклик). Сервер ДОЛЖЕН отправлять свои ответы на эти запросы в в том же порядке, в котором были получены запросы.
Клиенты, которые предполагают постоянные соединения и конвейер немедленно после установления соединения СЛЕДУЕТ быть готовым к повторной попытке соединение, если первая конвейерная попытка не удалась.Если клиент такая повторная попытка НЕ ДОЛЖНА быть конвейерной, пока не узнает, что соединение установлено. настойчивый. Клиенты ДОЛЖНЫ быть готовы повторно отправить свои запросы, если сервер закрывает соединение перед отправкой всех соответствующие ответы.
Клиентам НЕ СЛЕДУЕТ конвейерные запросы с использованием неидемпотентных методов или неидемпотентные последовательности методов (см. раздел 9.1.2). В противном случае преждевременное прекращение транспортного сообщения могло привести к неопределенные результаты.Клиент, желающий отправить неидемпотентный request СЛЕДУЕТ подождать отправки этого запроса, пока он не получит статус ответа на предыдущий запрос.
8.1.3 Прокси-серверы
Особенно важно, чтобы прокси правильно реализовали свойства поля заголовка соединения, как указано в разделе 14.10.
Прокси-сервер ДОЛЖЕН сигнализировать о постоянных соединениях отдельно с помощью своих клиентов и исходных серверов (или других прокси-серверов), которые он подключается к.Каждое постоянное соединение применяется только к одному транспорту связь.
Прокси-сервер НЕ ДОЛЖЕН устанавливать постоянное соединение HTTP / 1.1. с клиентом HTTP / 1.0 (но см. RFC 2068 [33] для информации и обсуждение проблем с заголовком Keep-Alive, реализованных многие клиенты HTTP / 1.0).
8.1.4 Практические соображения
Серверы обычно имеют некоторое значение тайм-аута, по истечении которого они будут больше не поддерживать неактивное соединение.Прокси-серверы могут сделать это более высокое значение, поскольку вполне вероятно, что клиент будет делать больше подключений через один и тот же сервер. Использование стойких соединений не предъявляет требований к длине (или наличию) этот тайм-аут либо для клиента, либо для сервера.
Когда клиент или сервер желает истечь тайм-аут, он ДОЛЖЕН выдать изящный Рядом транспортное сообщение. Клиенты и серверы ДОЛЖНЫ постоянно следить за другой стороной транспорта рядом, и ответьте на него соответствующим образом.Если клиент или сервер не обнаруживает быстрое закрытие другой стороны может вызвать ненужный ресурс сток в сети.
Клиент, сервер или прокси МОГУТ закрыть транспортное соединение в любой момент. время. Например, клиент мог начать отправлять новый запрос. при этом сервер решил закрыть «холостой» связь. С точки зрения сервера, соединение закрывается, пока он простаивает, но с точки зрения клиента запрос выполняется.
Это означает, что клиенты, серверы и прокси ДОЛЖНЫ иметь возможность восстанавливать от асинхронных событий закрытия. Клиентское программное обеспечение ДОЛЖНО снова открыть транспортное соединение и ретранслировать прерванную последовательность запросов без взаимодействия с пользователем, пока последовательность запроса идемпотентный (см. раздел 9.1.2). Неидемпотентные методы или последовательности НЕ ДОЛЖЕН повторяться автоматически, хотя пользовательские агенты МОГУТ предлагать человек-оператор выбор повторной попытки запроса (ов).Подтверждение ПО user-agent с семантическим пониманием приложения МОЖЕТ заменить подтверждение пользователя. Автоматическая повторная попытка НЕ ДОЛЖНА повторяться, если вторая последовательность запросов не удалась.
Серверы ДОЛЖНЫ всегда отвечать хотя бы на один запрос на каждое соединение, если вообще возможно. Серверам НЕ СЛЕДУЕТ закрывать соединение в середина передачи ответа, кроме сбоя сети или клиента подозревается.
Клиентам, использующим постоянные соединения, СЛЕДУЕТ ограничить количество одновременные соединения, которые они поддерживают с заданным сервером.А однопользовательский клиент НЕ ДОЛЖЕН поддерживать более 2 соединений с любой сервер или прокси. Прокси-сервер ДОЛЖЕН использовать до 2 * N подключений к другой сервер или прокси, где N — количество одновременно активные пользователи. Эти рекомендации предназначены для улучшения HTTP-ответа. раз и избежать заторов.
8.2 Требования к передаче сообщений
8.2.1 Постоянные соединения и управление потоком
Серверы HTTP / 1.1 ДОЛЖНЫ поддерживать постоянные соединения и использовать TCP механизмы управления потоком для устранения временных перегрузок, а не завершение соединений с ожиданием повторной попытки клиентов.Последний метод может усугубить перегрузку сети.
8.2.2 Мониторинг соединений для сообщений об ошибках
Клиент HTTP / 1.1 (или новее), отправляющий тело сообщения, ДОЛЖЕН отслеживать сетевое соединение для статуса ошибки во время передачи запрос. Если клиент видит статус ошибки, он ДОЛЖЕН немедленно прекратите передавать тело. Если тело отправляется используя «фрагментированное» кодирование (раздел 3.6), фрагмент нулевой длины и пустой трейлер МОЖЕТ использоваться для преждевременной отметки конца сообщения.Если телу предшествовал заголовок Content-Length, клиент ДОЛЖЕН закрыть соединение.
8.2.3 Использование статуса 100 (Продолжить)
Статус 100 (Продолжить) (см. Раздел 10.1.1) предназначен для разрешить клиенту, который отправляет сообщение запроса с телом запроса чтобы определить, готов ли исходный сервер принять запрос (на основе заголовков запроса) до того, как клиент отправит запрос тело. В некоторых случаях это может быть либо неуместным, либо крайне нежелательным. неэффективно для клиента отправить тело, если сервер отклонит сообщение, не глядя на тело.
Требования к клиентам HTTP / 1.1:
- Если клиент будет ждать ответа 100 (Продолжить) раньше отправляя тело запроса, он ДОЛЖЕН отправить заголовок запроса Expect поле (раздел 14.20) с ожиданием «100-continue».
- Клиент НЕ ДОЛЖЕН отправлять поле заголовка запроса Expect (раздел 14.20) с ожиданием «100-continue», если он не намерен отправить тело запроса.
Из-за наличия более старых реализаций протокол позволяет неоднозначные ситуации, в которых клиент может отправить «Ожидайте: 100- продолжить «без получения статуса 417 (ожидание не выполнено) или статус 100 (Продолжить). Следовательно, когда клиент отправляет это поле заголовка на исходный сервер (возможно, через прокси), с которого он никогда не видел статуса 100 (Продолжить), клиент НЕ ДОЛЖЕН ждать на неопределенный срок перед отправкой тела запроса.
Требования к исходным серверам HTTP / 1.1:
- После получения запроса, который включает заголовок запроса Expect поле с ожиданием «100-continue», исходный сервер ДОЛЖЕН либо ответьте со статусом 100 (Продолжить) и продолжайте читать из входного потока или ответьте окончательным кодом состояния. В исходный сервер НЕ ДОЛЖЕН ждать тела запроса перед отправкой ответ 100 (Продолжить).Если он отвечает с окончательным статусом код, он МОЖЕТ закрыть транспортное соединение или МОЖЕТ продолжить
, чтобы прочитать и отклонить остальную часть запроса. НЕ ДОЛЖЕН выполнить запрошенный метод, если он возвращает окончательный код состояния.
- Исходный сервер НЕ ДОЛЖЕН отправлять ответ 100 (Продолжить), если сообщение запроса не включает заголовок запроса Expect поле с ожиданием «100-continue» и НЕ ДОЛЖЕН отправлять 100 (Продолжить) ответ, если такой запрос исходит от HTTP / 1.0 (или более ранний) клиент. Есть исключение из этого правила: для совместимость с RFC 2068, сервер МОЖЕТ отправить 100 (Продолжить) статус в ответ на запрос HTTP / 1.1 PUT или POST, который не включать поле заголовка запроса Expect с "100- продолжить "ожидание. Это исключение, цель которого чтобы свести к минимуму любые задержки обработки клиентов, связанные с необъявленное ожидание статуса 100 (Продолжить), применяется только к HTTP / 1.1, а не на запросы с любыми другими HTTP- значение версии.
- Исходный сервер МОЖЕТ пропустить ответ 100 (Продолжить), если он уже получил часть или все тело запроса для соответствующий запрос.
- Сервер-источник, который отправляет ответ 100 (Продолжить), ДОЛЖЕН в конечном итоге отправить окончательный код состояния, как только тело запроса получены и обработаны, если это не прекращает транспортировку подключение преждевременно.
- Если исходный сервер получает запрос, не содержащий Ожидайте поле заголовка запроса с ожиданием "100-continue", запрос включает тело запроса, и сервер отвечает с окончательным кодом состояния перед чтением всего тела запроса из транспортного соединения, то серверу НЕ СЛЕДУЕТ закрывать транспортное соединение, пока не будет прочитан весь запрос, или пока клиент не закроет соединение.В противном случае клиент может ненадежно получить ответное сообщение. Однако это требование не должно толковаться как препятствие серверу защищаясь от атак типа "отказ в обслуживании" или от сильно сломанные клиентские реализации.
Требования к прокси HTTP / 1.1:
- Если прокси-сервер получает запрос, включающий запрос ожидания - поле заголовка с ожиданием "100-continue" и прокси либо знает, что сервер следующего перехода соответствует HTTP / 1.1 или выше или не знает HTTP-версию следующего перехода сервер, он ДОЛЖЕН пересылать запрос, включая заголовок Expect. поле.
- Если прокси-сервер знает, что версия сервера следующего перехода HTTP / 1.0 или ниже, он НЕ ДОЛЖЕН пересылать запрос и ДОЛЖЕН ответьте статусом 417 (ожидание не выполнено).
- Прокси-серверы ДОЛЖНЫ поддерживать в кэше запись версии HTTP. числа, полученные от серверов следующего перехода, на которые недавно ссылались.
- Прокси-сервер НЕ ДОЛЖЕН пересылать ответ 100 (Продолжить), если сообщение запроса было получено от HTTP / 1.0 (или более ранней версии) клиент и не включал поле заголовка запроса Expect с ожидание "100-продолжения". Это требование отменяет общее правило пересылки ответов 1xx (см. раздел 10.1).
8.2.4 Поведение клиента, если сервер преждевременно закрывает соединение
Если HTTP / 1.1 клиент отправляет запрос, который включает тело запроса, но который не включает поле заголовка запроса Expect с Ожидание «100-продолжения», и если клиент напрямую не подключен к исходному серверу HTTP / 1.1, и если клиент видит соединение закрывается до получения какого-либо статуса от сервера, клиент ДОЛЖЕН повторить запрос. Если клиент все же попытается это сделать запрос, он МОЖЕТ использовать следующую «двоичную экспоненциальную отсрочку» алгоритм, чтобы быть уверенным в получении надежного ответа:
1.Инициировать новое подключение к серверу
2. Передайте заголовки запроса.
3. Инициализируйте переменную R равным расчетному времени приема-передачи сервер (например, в зависимости от времени, которое потребовалось для установки соединение), или на постоянное значение 5 секунд, если раунд- время поездки недоступно.
4. Вычислить T = R * (2 ** N), где N - количество предыдущих повторные попытки этого запроса.
5. Дождитесь либо ответа с ошибкой от сервера, либо T секунды (в зависимости от того, что наступит раньше)
6. Если сообщение об ошибке не получено, через T секунд передайте сообщение тело запроса.
7. Если клиент видит, что соединение преждевременно закрыто, повторять с шага 1 до тех пор, пока запрос не будет принят, ошибка получен ответ, или пользователь становится нетерпеливым и завершает процесс повтора.
Если в какой-то момент получен статус ошибки, клиент
- НЕ ДОЛЖЕН продолжать и
- СЛЕДУЕТ закрыть соединение, если оно не завершило отправку сообщение-запрос.
Networking 101: Строительные блоки TCP Сеть (O’Reilly)
В начале 1984 года Джон Нэгл задокументировал состояние, известное как «перегрузка». коллапс «, который может повлиять на любую сеть с асимметричной пропускной способностью. емкость между узлами сети:
В отчете сделан вывод, что коллапс заторов еще не стал проблема для ARPANET, потому что большинство узлов имеют одинаковую пропускную способность, а магистраль имела значительную избыточную пропускную способность.Однако ни один из этих утверждения оставались верными долгое время. В 1986 году, когда число (5000+) и количество узлов в сети росло, серия коллапсов перегрузки инциденты охватили всю сеть — в некоторых случаях пропускная способность упало в 1000 раз, и сеть пришла в негодность.
Для решения этих проблем в TCP было реализовано несколько механизмов. для управления скоростью, с которой данные могут отправляться в обоих направлениях: контроль потока, контроль перегрузки и предотвращение перегрузки.
§Поток Контроль
Контроль потока — это механизм, предотвращающий перегрузку отправителя получатель с данными, которые он не может обработать — получатель может быть занятым, находящимся под большой нагрузкой или может быть готов выделить только объем буферного пространства. Чтобы решить эту проблему, каждая сторона TCP соединение объявляет (рис. 2-2) свое собственное окно приема (rwnd), которое сообщает размер доступного буферного пространства для хранения входящие данные.
Когда соединение устанавливается, обе стороны инициируют свои rwnd значения, используя их системные настройки по умолчанию. Типичная веб-страница будет передавать большую часть данных с сервера клиенту, сделать окно клиента вероятным узким местом. Однако если клиент передает большие объемы данных на сервер, например, в случае изображения или загрузки видео, тогда окно приема сервера может становятся ограничивающим фактором.
Если по какой-либо причине одна из сторон не может поспеть, то она может рекламировать отправителю меньшее окно. Если окно достигает ноль, то это рассматривается как сигнал о том, что больше не нужно отправлять данные пока существующие данные в буфере не будут очищены прикладной уровень. Этот рабочий процесс продолжается на протяжении всего срока службы каждое TCP-соединение: каждый пакет ACK содержит последнее значение rwnd для с каждой стороны, что позволяет обеим сторонам динамически регулировать скорость потока данных емкости и скорости обработки отправителя и получателя.Рисунок 2-2. Размер окна приема (rwnd) рекламное объявление
§Масштабирование окна (RFC 1323)
Исходная спецификация TCP выделяла 16 бит для рекламы размер окна приема, который устанавливает жесткую верхнюю границу максимальное значение (2 16 или 65 535 байт), которое может быть рекламируется отправителем и получателем. Оказывается, эта верхняя граница равна часто недостаточно для достижения оптимальной производительности, особенно в сетях которые демонстрируют продукт задержки с высокой пропускной способностью; больше об этом можно найти Продукт задержки полосы пропускания.
Чтобы решить эту проблему, RFC 1323 был разработан, чтобы предоставить «окно TCP масштабирование », которая позволяет увеличить максимальное окно приема размер от 65 535 байт до 1 гигабайта! Параметр масштабирования окна передается во время трехстороннего рукопожатия и имеет значение, которое представляет количество бит, чтобы сдвинуть влево размер 16-битного окна поле в будущих ACK.
Сегодня масштабирование окна TCP включено по умолчанию на всех основных платформы.Однако промежуточные узлы, маршрутизаторы и брандмауэры могут перепишите или даже полностью удалите эту опцию. Если ваше подключение к сервер или клиент не может в полной мере использовать доступные пропускной способности, то проверка взаимодействия размеров ваших окон всегда хорошее место для начала. На платформах Linux масштабирование окна настройку можно проверить и включить с помощью следующих команд:
§Медленный старт
Несмотря на наличие управления потоком в TCP, перегрузка сети коллапс стал реальной проблемой в середине-конце 1980-х годов.Проблема была в что управление потоком не позволяло отправителю перегружать получателя, но не было механизма, который бы помешал любой из сторон подавить базовая сеть: ни отправитель, ни получатель не знают доступная пропускная способность в начале нового соединения и, следовательно, нужен механизм для его оценки, а также для адаптации их скорости к постоянно меняющиеся условия в сети.
Чтобы проиллюстрировать один пример, когда такая адаптация полезна, представьте, что вы дома и смотрите потоковую передачу большого видео с пульта сервер, который сумел насытить ваш нисходящий канал, чтобы обеспечить максимальную качественный опыт.Затем другой пользователь в вашей домашней сети открывает новый подключение для загрузки некоторых обновлений программного обеспечения. Внезапно объем доступной полосы пропускания нисходящего канала для видеопотока очень велик меньше, и видеосервер должен настроить свою скорость передачи данных — в противном случае, если он продолжается с той же скоростью, данные будут просто накапливаться в некоторых промежуточный шлюз и пакеты будут отброшены, что приведет к неэффективное использование сети.
В 1988 году Ван Якобсон и Майкл Дж.Карелы задокументировали несколько алгоритмы для решения этих проблем: медленный старт, предотвращение перегрузки, быстрая ретрансляция и быстрое восстановление. Все четыре быстро стали обязательными часть спецификации TCP. На самом деле, широко распространено мнение, что это было эти обновления TCP, которые предотвратили обвал Интернета в 80-х и в начале 90-х, когда трафик продолжал расти в геометрической прогрессии. ставка.
Чтобы понять медленный старт, лучше всего увидеть его в действии.Итак, однажды Еще раз вернемся к нашему клиенту, который находится в Нью-Йорке, пытается получить файл с сервера в Лондоне. Во-первых, выполняется трехстороннее рукопожатие, во время которого обе стороны рекламируют их соответствующие размеры окна приема (rwnd) в пакетах ACK (Рисунок 2-2). Однажды заключительный пакет ACK помещается на провод, мы можем начать обмен Данные приложений.
Единственный способ оценить доступную емкость между клиентами и сервер должен измерить это путем обмена данными, и это именно для чего предназначен медленный старт.Для начала сервер инициализирует новую переменную окна перегрузки (cwnd) для каждого TCP-соединения и устанавливает его начальное значение на консервативное, заданное системой значение (initcwnd в Linux).
- Размер окна перегрузки (cwnd)
Ограничение на стороне отправителя на объем данных, которые отправитель может иметь в полет до получения подтверждения (ACK) от клиента.
Переменная cwnd не объявляется и не обменивается между отправителем и получатель — в этом случае это будет частная переменная, поддерживаемая сервером в Лондоне.Далее вводится новое правило: максимум количество данных в пути (не подтвержденных) между клиентом и сервером — это минимум переменных rwnd и cwnd. Пока все хорошо, но как определяют ли сервер и клиент оптимальные значения для своих размеры окна скопления? В конце концов, сетевые условия меняются на все время, даже между теми же двумя сетевыми узлами, как мы видели ранее пример, и было бы здорово, если бы мы могли использовать алгоритм без необходимость вручную настраивать размеры окон для каждого соединения.
Решение состоит в том, чтобы начать медленно и увеличивать размер окна по мере того, как пакеты подтверждаются: медленный старт! Первоначально начальное значение cwnd был установлен на 1 сегмент сети; RFC 2581 обновил это значение до 4 сегментов. в апреле 1999 г .; совсем недавно значение было увеличено еще раз до 10 сегментов по RFC 6928 в апреле 2013 г.
Максимальный объем передаваемых данных для нового TCP-соединения равен минимум значений rwnd и cwnd; следовательно, современный сервер может отправлять клиенту до десяти сетевых сегментов, после чего он должен остановиться и дождитесь подтверждения.Затем для каждого полученного ACK алгоритм медленного старта указывает, что сервер может увеличивать свой cwnd размер окна на один сегмент — для каждого ACKed пакета два новых пакета можно отправить. Эта фаза TCP-соединения широко известна как алгоритм «экспоненциального роста» (рис. 2-3), как клиент, так и сервер пытается быстро использовать доступную пропускную способность на сетевой путь между ними. Рисунок 2-3. Контроль перегрузки и предотвращение перегрузки
Итак, почему медленный старт — важный фактор, о котором нужно помнить, когда мы создавать приложения для браузера? Ну, HTTP и многое другое протоколы приложений работают через TCP, и независимо от доступных пропускная способность, каждое TCP-соединение должно проходить фазу медленного старта — мы не можем сразу использовать всю емкость ссылки!
Вместо этого мы начинаем с небольшого окна перегрузки и удваиваем его для каждую поездку туда и обратно — i.е., экспоненциальный рост. В результате время требуется для достижения определенной цели пропускной способности, это функция (Пора достичь размера cwnd размер N) времени двустороннего обмена между клиентом и сервером и начальный размер окна перегрузки.
Пора достичь размера cwnd размера N
В качестве практического примера воздействия медленного старта предположим, что следующий сценарий:
Окна приема клиента и сервера: 65 535 байт (64 КБ)
Окно начальной перегрузки: 10 сегментов (RFC 6928)
Время туда и обратно: 56 мс (из Лондона в Нью-Йорк)
Несмотря на размер окна приема 64 КБ, пропускная способность нового TCP соединение изначально ограничено размером окна перегрузки.Фактически, чтобы достичь предела окна приема в 64 КБ, нам сначала нужно увеличить размер окна перегрузки до 45 сегментов, что займет 168 миллисекунды:
Это три обхода (рис. 2-4) для достижения 64 КБ пропускной способности. между клиентом и сервером! Тот факт, что клиент и сервер могут иметь возможность передачи со скоростью Мбит / с + не влияет на новый соединение установлено — это медленный старт.
В приведенном выше примере используется новое (RFC 6928) значение десять сетей. сегменты для начального окна перегрузки.В качестве упражнения повторите тот же расчет со старым размером четырех сегментов — вы видите, что это добавит дополнительные 56 миллисекунд на обратный путь к выше результат!
Рисунок 2-4. Размер окна перегрузки ростДля уменьшения количества времени, необходимого для увеличения перегрузки окна, мы можем уменьшить время обратного обмена между клиентом и сервер — например, переместите сервер географически ближе к клиенту.Или же мы можем увеличить начальный размер окна перегрузки до нового RFC 6928 стоимость 10 сегментов.
Медленный запуск не является большой проблемой для больших потоковых загрузок, поскольку клиент и сервер достигнут своих максимальных размеров окна через несколько сотен миллисекунд и продолжайте передачу почти максимальные скорости — стоимость фазы медленного пуска амортизируется в течение время жизни большей передачи.
Однако для многих HTTP-соединений, которые часто короткие и прерывистый, передача данных нередко завершается до достигнут максимальный размер окна.В результате производительность многих веб-приложения часто ограничены временем обратного обмена между серверами и клиент: медленный старт ограничивает доступную пропускную способность, что отрицательно сказывается на выполнении мелких переводов.
§Медленный перезапуск
В дополнение к регулированию скорости передачи новых соединений, TCP также реализует медленный перезапуск (SSR) механизм, который сбрасывает окно перегрузки соединения после он не использовался в течение определенного периода времени.Обоснование просто: условия сети могли измениться во время подключения простаивает, и, чтобы избежать перегрузки, окно сбрасывается до «безопасный» дефолт.
Неудивительно, что SSR может оказывать значительное влияние на производительность долгоживущих TCP-соединений, которые могут простаивать в течение некоторого времени — например, из-за бездействия пользователя. В результате обычно рекомендуется отключить SSR на сервере, чтобы повысить производительность долгоживущих HTTP-соединений.На платформах Linux настройка SSR можно проверить и отключить с помощью следующих команд:
Чтобы проиллюстрировать влияние трехстороннего рукопожатия и фаза медленного старта простой передачи HTTP. Предположим, что наш клиент в Нью-Йорке запрашивает файл размером 64 КБ с сервера в Лондоне более новое TCP-соединение (рис. 2-5) и следующее соединение параметры на месте:
Время туда и обратно: 56 мс
Пропускная способность клиента и сервера: 5 Мбит / с
Окно приема клиента и сервера: 65 535 байт
Окно начальной перегрузки: 10 сегментов ()
Время обработки сервером ответа: 40 мс
Нет потери пакетов, ACK на пакет, запрос GET помещается в один сегмент
-
0 мс
Клиент начинает квитирование TCP с пакета SYN.
-
28 мс
Сервер отвечает SYN-ACK и указывает размер rwnd.
-
56 мс
Клиент подтверждает SYN-ACK, указывает его размер rwnd и немедленно отправляет HTTP-запрос GET.
-
84 мс
Сервер получает HTTP-запрос.
-
124 мс
Сервер завершает формирование ответа размером 64 КБ и отправляет 10 TCP сегменты перед приостановкой для ACK (начальный размер cwnd равен 10).
-
152 мс
Клиент получает 10 сегментов TCP и ACK каждый.
-
180 мс
Сервер увеличивает свой cwnd для каждого ACK и отправляет 20 TCP сегменты.
-
208 мс
Клиент получает 20 сегментов TCP и ACK каждый.
-
236 мс
Сервер увеличивает свой cwnd для каждого ACK и отправляет оставшиеся 15 Сегменты TCP.
-
264 мс
Клиент получает 15 сегментов TCP, каждый из которых получает подтверждение.
264 мс для передачи файла размером 64 КБ по новому TCP-соединению с 56 мс время обмена между клиентом и сервером! Для сравнения, давайте сейчас предполагаем, что клиент может повторно использовать одно и то же TCP-соединение (Рисунок 2-6) и отправляет тот же запрос еще раз. Рисунок 2-6. Получение файла через существующее TCP-соединение
-
0 мс
Клиент отправляет HTTP-запрос.
-
28 мс
Сервер получает HTTP-запрос.
-
68 мс
Сервер завершает создание ответа размером 64 КБ, но cwnd значение уже превышает 45 сегментов, необходимых для отправки файл; следовательно, он отправляет все сегменты за один пакет.
-
96 мс
Клиент получает все 45 сегментов, каждый из которых получает ACK.
Тот же запрос, сделанный по тому же соединению, но без затрат трехстороннего рукопожатия и штрафа фазы медленного старта, теперь потребовалось 96 миллисекунд, что означает улучшение на 275% спектакль!
В обоих случаях тот факт, что и сервер, и клиент доступ к 5 Мбит / с пропускной способности восходящего потока не повлиял на запуск фаза TCP-соединения. Вместо этого задержка и перегрузка размеры окон были ограничивающими факторами.
Фактически разница в производительности между первым и вторым запрос, отправленный через существующее соединение, будет расширяться, только если мы увеличить время поездки туда и обратно; в качестве упражнения попробуйте несколько разные значения. Как только вы разовьете интуицию в механике Контроль перегрузки TCP, десятки оптимизаций, таких как поддержка активности, конвейерная обработка и мультиплексирование не потребуют дополнительной мотивации.
§Увеличение окна начальной загрузки TCP
Увеличение начального размера cwnd на сервере до нового RFC 6928 значение 10 сегментов (IW10) — один из самых простых способов улучшить производительность для всех пользователей и всех приложений, работающих через TCP.И хорошая новость в том, что многие операционные системы уже обновлены. их последние ядра, чтобы использовать увеличенное значение — проверьте соответствующая документация и примечания к выпуску.
Для Linux IW10 является новым значением по умолчанию для всех ядер выше 2.6.39. Однако не останавливайтесь на достигнутом: обновитесь до версии 3.2+, чтобы также воспользоваться преимуществами другие важные обновления; см. Пропорциональное снижение скорости для TCP.
§Предотвращение перегрузки
Важно понимать, что TCP специально разработан для использовать потерю пакетов как механизм обратной связи, чтобы помочь регулировать его спектакль.Другими словами, речь идет не о , если , а о вместо , когда произойдет потеря пакета . Медленный старт инициализирует соединение с консервативным окном и для каждого туда и обратно, удваивает объем данных в полете, пока он не превысит окно управления потоком получателя, перегрузка, настроенная системой пороговое окно (ssthresh) или до тех пор, пока пакет не будет потерян, после чего алгоритм предотвращения перегрузки (рисунок 2-3) вступает во владение.
Неявное предположение при предотвращении перегрузки состоит в том, что потеря пакетов свидетельствует о перегрузке сети: где-то по пути у нас обнаружил перегруженный канал или маршрутизатор, который был вынужден отключить пакет, и, следовательно, нам нужно настроить наше окно, чтобы не вызывать дополнительных потеря пакетов, чтобы избежать перегрузки сети.
После сброса окна перегрузки, предотвращение перегрузки указывает собственные алгоритмы увеличения окна, чтобы минимизировать дальнейшие потери.В определенный момент произойдет еще одно событие потери пакета, и процесс повторится еще раз. Если вы когда-нибудь смотрели на пропускную способность отслеживание TCP-соединения и обнаружил в нем пилообразный узор, теперь вы знаете, почему это выглядит так: это контроль перегрузки и алгоритмы предотвращения, регулирующие размер окна перегрузки для учета за потерю пакетов в сети.
Наконец, стоит отметить, что улучшение контроля перегрузки и избегание — активная область как для академических исследований, так и для коммерческих продукты: есть приспособления под разные типы сетей, разные типы передачи данных и так далее.Сегодня, в зависимости от вашей платформы, вы, вероятно, запустите один из множества вариантов: TCP Tahoe и Reno (оригинальные реализации), TCP Vegas, TCP New Reno, TCP BIC, TCP CUBIC (по умолчанию в Linux) или составной TCP (по умолчанию в Windows), среди многих другие. Однако, независимо от вкуса, основная производительность последствия контроля перегрузок и предотвращения перегрузок актуальны для всех.
§Пропорциональное снижение скорости для TCP
Определение оптимального способа восстановления после потери пакетов — это нетривиальное упражнение: если вы слишком агрессивны, то прерывистое потерянный пакет существенно повлияет на пропускную способность всего подключения, и если вы не настроитесь достаточно быстро, вы будете вызвать большую потерю пакетов!
Первоначально TCP использовал мультипликативное уменьшение и добавление Алгоритм увеличения (AIMD): при потере пакета уменьшите вдвое размер окна перегрузки, а затем медленно увеличивайте окно на фиксированная сумма за поездку туда и обратно.