TCP: Разлика помеѓу преработките

[проверена преработка][проверена преработка]
Избришана содржина Додадена содржина
сНема опис на уредувањето
с Јазична исправка, replaced: серверот → опслужувачот (11) using AWB
Ред 14:
TCP е оптимизиран за точна испорака наместо навремена испорака и затоа со TCP понекогаш настануваат релативно долги закаснувања(од ранг на секунди), додека се чекаат неподредените или изгубените пораки. TCP не е погоден за апликации кои работат во реално време како што се Voice over IP. За таквите апликации се препорачани протоколи како RTP (Real-time Transport Protocol) кој работи врз UDP.<ref name="comer">{{cite book|last=Comer|first=Douglas E.|authorlink=Douglas Comer|title=Internetworking with TCP/IP:Principles, Protocols, and Architecture|publisher=Prentice Hall|year=2006|edition=5th|volume=1|isbn=0-13-187671-6}}</ref>
 
TCP е сервис за надежна испорака кој гарантира дека сите пристигнати бајти ќе бидат идентични со бајтите испратени и во правилен редослед. Бидејќи трансферот на пакети не е сигурен, техника позната како позитивна потврда со реемитување(acknowledgment with retransmission) се користи за да се гарантира сигурноста на трансферот. Оваа фундаментална техника бара примачот да одговори со потврдна порака како што добива податоци. Испраќачот чува (record) евиденција за секој пакет што се испраќа. Испраќачот, исто така, има тајмер кој мери кога пакет бил испратен и го препраќа пакетот ако тајмерот истече пред испораката да е потврдена. Тајмерот е потребен во случај да се добиваат изгубени или оштетени пакети. <ref name="comer" />
 
TCP состои од множество правила: правила за протоколот за контрола на пренос, и правила за IP, за праќање на податоци "во форма на порака единици" помеѓу компјутерите на интернет. Додека IP справува со реалната испорака на податоци, TCP ги следи поединечните единици на пренос на податоци, наречени ''сегменти''. Пораката која се праќа е поделена за ефикасно рутирање преку мрежата. На пример, кога една HTML датотека се праќа од веб серверотопслужувачот, софтверскиот TCP слој на тој сервер ја дели низата октети на датотеката во сегменти и ги предава на IP софтверскиот слој (интернет слој). Интернет слојот го енкапсулира секој сегмент во IP пакет со додавање на наслов (header) кој ја вклучува (меѓу другите податоци) дестинациската IP адреса. Иако секој пакет има истата дестинациска адреса, тие може да се рутраат низ различни патеки на мрежата. Кога клиентската програма на дестинацискиот компјутер ги прима, TCP слојот (Transport Layer) ги спојува одделните сегменти и обезбедува тие се правилно да се подредат, без грешки, при што се пренесуваат на апликацијата.
== Структура на TCP сегмент ==
Протоколот за контрола на трансмисија ги прифаќа податоците од поток, ги сегментира, и со додавање на TCP заглавје ги креира TCP сегментите. Тогаш сегментите се енкапсулираат во пакети на Интернет Протоколот (IP пакети/датаграми). Еден TCP сегмент е „пакет од информации кои TCP ги користи за размена на податоци со другите нодови“.<ref>[http://www.linktionary.com/t/tcp.html TCP (Linktionary term)]</ref>
Терминот ''TCP пакет'', иако понекогаш е неформално користен, не е во согласност со прифатената терминологија. Прифатено е PDU-то (Податочна единица на протокол = Protocol Data Unit) на TCP да се нарекува сегмент, PDU на IP е датаграм<ref>[http://tools.ietf.org/html/rfc791#section-2.1 RFC 791 – section 2.1]</ref>, а на слојот за податочна врска се рамки.
 
Еден TCP сегмент се состои од заглавје на сегментот и дел за податоци. Заглавјето содржи 10 задолжителни полиња и опционално поле за екстензии. (Опции, со портокалова позадина во табелата).
Ред 106:
===Воспоставување конекција===
 
За да се воспостави врска, ТСР користи three-way handshake. Пред клиентот да се обиде да се поврзе со серверотопслужувачот, серверотопслужувачот мора прво да се врзе за [[Порт (компјутерски мрежи)|порта]] и да ја слушне за да ја отвори за конекција: ова се нарекува пасивно отварање. Откако ќе се воспостави пасивно отварање, клиентот може да бара активно отварање. За да се воспостави конекција, three-way handshake се појавува:
 
1. '''SYN''': Активното отварање се врши од страна на праќањето на SYN до серверотопслужувачот од клиентот. Клиентот го поставува низискиот број на сегментот на случајна вредност А.
 
2. '''SYN-АСК''': Како одговор, серверотопслужувачот одговара со SYN-АСК. Број за потврда е поставен на еден повеќе од примениот низиски број (А+1), и низискиот број што го избира серверотопслужувачот за пакетот е уште еден случаен број В.
 
3. '''АСК''': Конечно, клиентот праќа назад АСК до серверотопслужувачот. низискиот број е поставен на добиениот број за потврда т.е А+1, и бројот за потврда е поставен на еден повеќе од примениот низиски број односно В+1.
 
Во овој момент, и клиентот и серверотопслужувачот имаат добиено потврда за конекција. Чекорите 1 и 2, воспоставуваат врска параметар(низиски број) во еден правец и тоа се потврдува. Чекорите 2 и 3, воспоставуваат врска параметар (низиски број) во другиот правец и тоа се потврдува. Со овие, се воспоставува full-duplex комуникација.
===Терминирање на конекцијата===
[[File:TCP CLOSE.svg|right|thumbnail|260px|Терминирање на конекција]]
Фазата на терминирање на врска користи ракување преку четири чекори и со секоја страна од врската раскинувањето независно. Кога крајна точка сака да прекине половина од врската, таа испраќа FIN пакет, кој на другиот крај потврдува со ACK. Затоа, типичното прекинување бара еден пар на FIN и ACK сегмент од двете крајни точки на TCP. Откако двете размени на FIN/ACK се заклучени, страната која ја испрати првата FIN чека за истек на време пред конечно да ја затвори врската, време за кое локалната [[Порт (компјутерски мрежи)|порта]] е недостапна за нови врски, тоа спречува конфузија при испорака на задоцнети пакети да стигнат во текот на следните врски.
 
Врската може да биде "полу-отворена", во кој случај едната страна ја прекинува врската од својот крај, но другата не. Страната што ја раскинала не може да испрати податоци во врската, но од друга страна може. Терминираната страна треба да го продолжи читањето на податоците додека другата страна побара раскинување.
 
Исто така е можно да се прекине врската со 3 чекори на ракување, кога домаќинот А испраќа FIN и домаќинот Б одговара со FIN и ACK (комбинира 2 чекори во еден) и домаќинот враќа со ACK. Ова е можеби најчестиот метод.<ref>{{cite book |last= Tanenbaum|first= Andrew S.|authorlink= Andrew S. Tanenbaum|title= Computer Networks|edition= Fourth |date= 2003-03-17|publisher= Prentice Hall|isbn= 0-13-066102-3}}</ref>
Ред 127:
Некои TCP стакови на страна на домаќинот може да имплементираат полу-дуплекс низа на терминирање, како што прават [[Linux]] или [[HP-UX]]. Ако таков домаќин активно ја затвора конекцијата, но сепак не ги прочитал сите влезни податоци кои стакот веќе ги добил од линкот, овој хост праќа RST наместо FIN (Секција 4.2.2.13 во RFC 1122). Ова им овозможува на TCP апликациите да бидат сигурни апликацијата од другата страна ги прочитала сите податоци пред тоа испратени - чекајќи на FIN од далечинската страна, кога е активно затворена врската. Сепак, далечинскиот TCP стак не може да прави разлика помеѓу ''Прекинување на Врската RST'' и оваа ''Загубени податоци RST''. И двете причинуваат TCP стакот на апликацијата од другата страна да ги отфрли сите податоци што ги добил, но апликацијата не ги прочитала.
 
Некои апликациски протоколи може да го нарушат [[OSI_модел|OSI моделотмодел]]от користејќи го ракувањето со TCP open/close во апликацискиот протокол. Ваквите апликации можат да се соочат со RST проблемот на затварање на активна врска. Како пример:
s = connect(remote);
send(s, data);
Ред 134:
===Употреба на ресурси===
Повеќето имплементации алоцираат влез во табела која мапира сесија до активен процес на оперативниот систем. Бидејќи TCP пакетите не вклучуваат идентификатор за сесија, двете крајни точки ја идентификуваат сесијата користејќи ја адресата на клиентот и [[Порт (компјутерски мрежи)|портата]]. Секогаш кога еден пакет е примен, имплементација на TCP мора да изврши пребарување на оваа табела да се најде дестинацијата на процесот.
Бројот на сесии во страна на серверотопслужувачот е ограничен само од меморија и можат да расте како што пристигаат нови конекции, но клиентот мора да алоцира број на [[Порт (компјутерски мрежи)|порта]] на случаен начин пред испраќањето на првиот SYN пакет на серверотопслужувачот. Оваа [[Порт (компјутерски мрежи)|порта]] останува алоцирана во текот на целиот разговор, и ефикасно го ограничува бројот на излезни конекции на секоја од IP адресите на клиентот. Ако некоја апликација не успее правилно да ги затвори непотребните врски, клиентот може да снема ресурси и биде оневозможен да воспостави нови TCP конекции, дури и од други апликации.
Двете крајни точки, исто така, мора да одвојат простор за непотврдени пакети и примени (но непрочитани) податоци.
 
Ред 153:
== Контрола на застој ==
 
Еден од главните аспекти на ТСР е контрола на застој. ТСР користи голем број на механизми за да постигне високи перформанси и да избегне застој, каде ефикасноста на мрежата може да се намали. Овие маханизми ја контролираат стапката на влез на податоци во мрежата, одржувајќи го протокот на податоци под стапката која ќе го предизвика застојот. Тие исто така, даваат приближно максимум-минимум фер распределба помеѓу тековите.
 
Потврди за испратените податоци, или недостаток на потврди, се користат од страна испраќачите да ги заклучат мрежните услови помеѓу ТСР испраќачот и примачот. Заедно со тајмерите, ТСР испраќачите и примачите може да го сменат однесувањето на протокот на податоци. Ова е општо познато како контрола на застој и/или избегнување на застој на мрежата.
Ред 162:
TCP може да биде нападнат на различни начини. Резултатите од сеопфата проценка на протоколот, заедно со можните начини за избегнување на идентификуваните проблеми се публикувани во 2009 и моментално се разгледуваат од страна на IETF<ref>[http://tools.ietf.org/html/draft-ietf-tcpm-tcp-security Security Assessment of the Transmission Control Protocol (TCP)]</ref>
===Denial of Service===
Со користење на лажна IP адреса и повеќекратно праќање на намерно креирани SYN пакети, напаѓачите може да го натераат серверотопслужувачот да заземе огромно количество ресурси обидувајќи се да ги следи лажните конекции. Ова е познато како напад со SYN поплава (SYN flood attack). Предлог решенијата вклучуваат SYN колачиња и криптографски загатки. Друг начин на избегнување на вакви напади е со подобро менаџирање на системските ресурси.<ref>[http://www.gont.com.ar/talks/hacklu2009/fgont-hacklu2009-tcp-security.pdf Some insights about the recent TCP DoS (Denial of Service) vulnerabilities]</ref>
===Преземање на конекција===
Напаѓач кој е во можност да прислушкува една TCP сесија и да ги насочува пакетите може и да преземе нечија TCP конекција. За да го стори тоа прво што напаѓачот прави е го открива бројот на секвенцата на постоечката комуникација и прави лажен сегмент кој изгледа како следниот сегмент кој се очекува во комуникацијата. Ова резултира еден пакет да биде прифатен на другиот крај по грешка. Кога хостот кој прима ќе го потврди екстра сегментот се губи синхронизацијата. Преземањето на конекција може да се комбинира со ARP или рутирачки напади кои дозволуваат добивање контрола над протокот на пакети, со цел да се добие трајна контрола на преземаната TCP сесија.<ref>[http://www.usenix.org/publications/library/proceedings/security95/joncheray.html Laurent Joncheray, ''Simple Active Attack Against TCP'', 1995]</ref>
Ред 173:
 
{{наводи}}
 
[[Категорија:Transmission Control Protocol| ]]
[[Категорија:Transport layer protocols]]
Преземено од „https://mk.wikipedia.org/wiki/TCP