Протокол ТСР.

ТСР выполняет безошибочную передачу больших блоков донных, являющийся главным протоколом интернета. На рис.4 показан формат сегмента ТСР (он не называется датаграмма). ТСР располагается внутри IP-датаграммы, как показано на рис.5.

Протокол ТСР устанавливает между двумя компьютерами дуплексное соединение типа «точка-точка». Прогаммы на каждом конце соединения используют собственный порт. Комбинация IP-адреса и № порта называется сокет (socket). Соединение устанавливается путем трехкратного квитирования (three-way handshake). Инициирующая программа посылает сегмент с установленными флажками SYN и ACK и, наконец, инициирующая программа посылает сегмент с установленным флажком АСК.

После установления соединения каждая программа может посылать другой программе поток байтов. Для управления потоком ТСР использует поля номеров последовательностей и флажки АСК. Программа-отправитель не ожидает подтверждения каждого сегмента, а посылает несколько сегментов и ждет первого подтверждения. Если программа-получатель должна отослать данные обратно отправителю, она может совместить подтверждения и данные в одних и тех же сегментах.

Номера последовательности программы-отправителя являются не индексами сегментов, а индексами в потоке байтов. Программа-получатель отсылает обратно номера последовательности (в поле номера подтверждения), удостоверяя тем самым, что все байты приняты и объединены в правильной последовательности. Программа-отправитель заново пересылает неподтвержденные сегменты.

Каждая программа со своей стороны закрывает ТСР-соединение, отправляя сегмент FIN, что должно быть подтверждено программой на другой стороне соединения. Программа не может получать байты по соединению, которое закрыто на другой стороне.

API Winsock и WinInet скрывают большинство деталей, поэтому не придется иметь дело с флажками АСК и номерами последовательности. Ваша программа вызывает функцию для передачи блока данных, а Windows заботится о разделении блока на сегменты и размещении их в IP-датаграммах. Windows также обеспечивает доставку байтов на приемный конец.

 

Рис.4 Упрощенный формат сегмента ТСР

 

Рис.5. Сегмент ТСР внутри датаграммы IP