Gniazda bez i połączeniowe

0

Witam krótkie pytanie
Gniazda niepołączonego to UDP?
Gniazda połączonego to TCP?
Czy można z UDP zrobić gniazdo połączeniowe? wiem że można korzystać z connect, ale jaką ma ten connect w UDP funkcję
Z góry dzięki

0
  1. Nie, UDP to protokół opisujący transmisję bezpołączeniową
  2. Nie, TCP to protokół opisujący transmisję połączeniową
  3. Można, ale musiałbyś to sobie zaimplementować. connect() pozwala jedynie związać gniazdo z adresem odbiorcy i mozesz wysyłać pakiety przez send() a nie sendto()
0

Czym rózni się implementacja w udp
Gniazda połączonego od niepołączonego?

2

Tym się różni, że sam musisz zaimplementować potwierdzanie doręczenia pakietów, ponawianie transmisji w przypadku błędu, podtrzymanie połączenia, sygnalizację itp. Robi się to tworząc protokół nad UDP. Poczytaj o protokołach IP.

0

Generalna różnica jest następująca.

W trybie połączeniowym (TCP):

  • możesz wysłać dowolną ilość danych na raz
  • dane dotrą wszystkie i w takiej kolejności w jakiej zostaną wysłane
    W trybie bezpołączeniowym (UDP):
  • dane możesz wysyłać w postaci porcji (pakietów), rozmiar pakietu jest ograniczony do ok. 1500 bajtów (więcej pod hasłem "MTU").
  • pakiety mogą docierać do klienta w innej kolejności niż zostały wysłane, mogą nie dotrzeć wszystkie, mogą być też zwielokrotnione
    UDP jest szybsze od TCP.

W uproszczeniu TCP to tak jakby nakładka na UDP która dba o to aby pakiety nie były gubione i układa je w odpowiedniej kolejności.

0
adf88 napisał(a)

W trybie połączeniowym (TCP):

  • możesz wysłać dowolną ilość danych na raz

To nie jest do końca prawda. TCP jest protokołem strumieniowym, więc nie ma tam czegoś takiego jak "na raz".

adf88 napisał(a)

W trybie bezpołączeniowym (UDP):

  • dane możesz wysyłać w postaci porcji (pakietów),

Nie możesz. Musisz. I nazywają się to datagramy.

adf88 napisał(a)

rozmiar pakietu jest ograniczony do ok. 1500 bajtów (więcej pod hasłem "MTU").

Mylisz dwa różne protokoły. MTU to parametr protokołów niższego poziomu (np. Ethernet). Warstwa IP zajmuje się fragmentacją pakietów. Od strony użytkownika teoretycznie ograniczenia na rozmiar datagramu nie ma. RFC także nie definiuje żadnych ograniczeń, a w szczególności uzależniania długości datagramu od MTU.

adf88 napisał(a)

W uproszczeniu TCP to tak jakby nakładka na UDP która dba o to aby pakiety nie były gubione i układa je w odpowiedniej kolejności.

Ale to bardzo duże uproszczenie. Te protokoły znacznie się różnią i nie mówię tutaj o warstwie kontrolnej.

0
adf88 napisał(a)

W uproszczeniu TCP to tak jakby nakładka na UDP która dba o to aby pakiety nie były gubione i układa je w odpowiedniej kolejności.

TCP to nie jest nakładka na UDP nawet w uproszczeniu. To są dwa odrębne protokoły tyle, że w tej samej warstwie sieciowej. Do przesyłania danych za pomocą TCP trzeba nawiązać połączenie. Protokół ten gwarantuje dostarczenie danych w całości, w sensie takim, że jeżeli jakieś dane zagubią się po drodze to są retransmitowanie i to samo w przypadku wykrycia przekłamania w danych (suma kontrolna). W UDP po prostu wysyłasz dane i tyle. Siłą rzeczy dlatego UDP jest szybszy. To jest najważniejsza różnica.

0

Dla ciekawskich: jest też taki mix TCP i UDP o nazwie SCTP ;)

0

Jest, ale przyjmuje się w strasznych bólach. Niestety.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0