Co TCP / UDP dodaje do „surowego adresu IP”?

18

Wiem, że zarówno protokół TCP, jak i UDP są oparte na protokole IP i znam różnice między protokołem TCP i UDP, ale nie jestem pewien, co to dokładnie jest „raw ip”. Czy uczciwie byłoby powiedzieć, że zarówno TCP, jak i UDP implementują IP, ale że IP samo w sobie nie jest w stanie przesyłać danych? Czy IP jest jakąś formą komunikacji na bardzo niskim poziomie, którą dodatkowo abstrahują TCP i UDP?

John Dorian
źródło
2
W celu uzupełnienia niektórych z poniższych komentarzy (niewystarczające do uzyskania pełnej odpowiedzi, tylko ze względu na przejrzystość): IP to protokół, który przenosi dane. TCP lub UDP to protokoły, które również przenoszą dane. TCP i UDP często znajdują się na szczycie IP, więc w przypadku IP wartością danych może być TCP lub UDP. Ethernet jest często używany do przesyłania IP. Na przykład ramka Ethernet może przenosić i pakiet IP jako ładunek danych, a ten pakiet IP może przenosić segment TCP jako ładunek i tak dalej. Skończysz
jwbensley
3
IP z pewnością przesyła dane - na przykład przenosi te pakiety TCP / UDP. Jednak zwykle nie nadaje się do zastosowania. UDP jest bardzo surowym protokołem nad IP, ale już dodaje numery portów , umożliwiając wielu usługom jednoczesne obsługiwanie ruchu UDP w systemie. W przeciwnym razie będziesz mieć tyle usług, ile masz adresów IP.
Luaan,

Odpowiedzi:

23

IP to protokół warstwy 3 . TCP / UDP to protokoły warstwy 4 . Każdy z nich służy innym celom.

Warstwa 3 odpowiada za kompleksową dostawę . Jego jedyną funkcją jest dodawanie wszystkiego, co jest konieczne do pakietu, aby uzyskać pakiet z jednego hosta do drugiego.

Warstwa 4 odpowiada za dostawę usługi . Jego jedyną funkcją jest segregacja strumieni danych. W komputerze może być uruchomionych wiele programów, z których każdy wysyła / odbiera bity na drut. IE: Możesz mieć uruchomionych wiele kart przeglądarki, strumieniować radio internetowe, pobierać pliki, uruchamiać legalne torrenty, korzystać z aplikacji czatu itp. Wszystkie z nich otrzymują zera 1 i 0 z drutu, a warstwa 4 segreguje każdy strumień danych do unikalna aplikacja, która ich potrzebuje. Oto ilustracja:

L4 segregująca strumienie danych

IP nie może dostarczyć pakietu do właściwej usługi / aplikacji. A TCP / UDP nie jest w stanie dostarczyć pakietu z jednego końca Internetu na drugi.

Zarówno TCP, jak i IP współpracują ze sobą, aby umożliwić im osiągnięcie „końcowego celu” komunikacji internetowej.

Dane, które muszą być przekazywane z jednego hosta do drugiego, są generowane przez górne warstwy modelu OSI.

Dane te są przekazywane do L4, który doda informacje niezbędne do dostarczenia danych z usługi do usługi, takie jak nagłówek TCP z portem źródłowym i docelowym. Dane i nagłówek L4 są teraz określane jako segment.

Następnie segment zostanie przekazany do L3, który doda informacje niezbędne do dostarczenia segmentu od końca do końca, jak nagłówek IP ze źródłowym i docelowym adresem IP. Nagłówek L3 i segment można teraz nazywać pakietem.

Proces ten znany jest jako enkapsulacja i dekapsułkowanie (lub czasami dekapsulacja). Oto animacja tego, jak to działa:

Encapsulation and De-encapsulation, używane za zgodą Practical Networking.net

Jeśli to nie ma sensu, proponuję przeczytać więcej na temat modelu OSI i tego, jak każda warstwa ma różne obowiązki, które wszystkie działają razem, aby osiągnąć przeniesienie pakietu przez Internet .

Eddie
źródło
7
Pamiętaj, że Internet tylko luźno podąża za modelem OSI.
user253751
2
inside an IP header is usually a TCP or UDP headerjest niepoprawny, nagłówek TCP / UDP nie znajduje się w nagłówku IP, znajduje się w części danych pakietu IP.
Eborbob
„Jego jedyną funkcją jest segregacja strumieni danych”, chociaż jest to w większości prawdą w przypadku UDP (istnieje również suma kontrolna, ale meh), z pewnością nie jest prawdą w przypadku TCP.
Peter Green
1
@immibis To prawda, ale nie widziałem jeszcze, gdzie zastosowanie modelu OSI doprowadziło do rozbieżnej implementacji lub zrozumienia travesty. W przeważającej części, a zwłaszcza dla kogoś, kto dopiero podejdzie do technologii internetowych, bardziej wartościowe jest kontynuowanie myślenia zgodnie z ograniczeniami modelu OSI.
Eddie
@Eborbob Widzę, jak jest źle, w zależności od tego, jak spojrzeć na zdanie. Szczerze mówiąc, ten cały akapit mógłby użyć przeredagowania, postaram się do niego później wieczorem. Dzięki za zwrócenie na to uwagi.
Eddie
6

IP może dobrze przesyłać dane, problemem jest to, co dzieje się, gdy dane te docierają na drugi koniec. Jedynymi informacjami identyfikacyjnymi są adresy IP hostów i numer protokołu. Żaden z nich nie pozwala w żaden sposób odróżnić, dla jakiego gniazda są dane.

Możliwe jest, że programy używają IP bezpośrednio przez tak zwane „surowe gniazda”, ale brak odpowiedniego mechanizmu decydowania, które gniazdo wysłać dane, powoduje obawy dotyczące bezpieczeństwa i wydajności (jądro musi wysyłać dane do wszystkich surowych gniazd dla danego numeru protokołu). Z tego powodu możliwość otwierania „surowych gniazd” jest zwykle ograniczona do rootowania (lub ekwiwalentu twojej platformy).

UDP jest dość minimalną warstwą w sieci IP. Dodaje numery portów, aby zidentyfikować gniazdo danych i sumę kontrolną (w celu odrzucenia uszkodzonych pakietów). Aplikacja pozostaje odpowiedzialna za obsługę utraconych pakietów, kontrolowanie przeciążenia i dzielenie danych na pakiety o odpowiednich rozmiarach.

TCP jest bardziej złożonym protokołem, który oprócz podania numerów portów i sum kontrolnych dzieli strumienie bajtów na pakiety, ponownie składa w miejscu docelowym i zapewnia funkcje kontroli przeciążenia i odzyskiwania.

Peter Green
źródło
4

IP to protokół warstwy 3 OSI, podczas gdy TCP i UDP to protokoły warstwy 4 OSI. Jako protokół warstwy 3, IP może przenosić wiele różnych protokołów warstwy 4. TCP i UDP są prawdopodobnie najczęstsze, ale nie są jedynymi. Protokoły warstwy 4 są tym, czego aplikacje używają jako swoje kompleksowe połączenia. IP przenosi protokoły warstwy 4 z sieci do sieci (host-host). Protokoły warstwy 2, takie jak Ethernet, transportują protokoły warstwy 3 w sieci LAN.

Powinieneś zbadać model OSI, ale zdaj sobie sprawę, że jest to model konceptualny, a rzeczywisty świat często nie do końca pasuje.

Ron Maupin
źródło