Els protocols de transport són una part fonamental de les xarxes de comunicació, ja que s'encarreguen de proporcionar serveis de transferència de dades fiables i eficients entre dispositius. En aquest tema, explorarem els conceptes clau dels protocols de transport, els tipus principals de protocols i com funcionen.
Objectius d'Aprenentatge
Al final d'aquest tema, hauràs de ser capaç de:
- Comprendre la funció dels protocols de transport en una xarxa.
- Diferenciar entre els protocols de transport més comuns: TCP i UDP.
- Explicar com funcionen els mecanismes de control de flux i control d'errors.
- Implementar exemples bàsics de comunicació utilitzant TCP i UDP.
Conceptes Clau
Funció dels Protocols de Transport
Els protocols de transport tenen diverses funcions essencials:
- Segmentació i Reassemblatge: Divideixen els missatges grans en segments més petits per a la seva transmissió i reassemblen els segments en el destinatari.
- Control de Flux: Gestionen la velocitat de transmissió de dades per evitar la saturació del receptor.
- Control d'Errors: Detecten i corregeixen errors en la transmissió de dades.
- Multiplexació: Permeten que múltiples aplicacions utilitzin la mateixa connexió de xarxa.
Tipus de Protocols de Transport
Els dos protocols de transport més comuns són:
-
TCP (Transmission Control Protocol):
- Connexió orientada.
- Fiable, amb control d'errors i retransmissions.
- Control de flux i congestió.
- Ús comú: navegació web, correu electrònic, transferència de fitxers.
-
UDP (User Datagram Protocol):
- Sense connexió.
- No fiable, sense control d'errors ni retransmissions.
- Menor sobrecàrrega.
- Ús comú: streaming de vídeo, jocs en línia, VoIP.
TCP vs UDP
Característica | TCP | UDP |
---|---|---|
Tipus de connexió | Orientada a connexió | Sense connexió |
Fiabilitat | Alta (control d'errors i retransmissions) | Baixa (sense control d'errors) |
Control de flux | Sí | No |
Control de congestió | Sí | No |
Velocitat | Més lent (més sobrecàrrega) | Més ràpid (menys sobrecàrrega) |
Ús comú | Navegació web, correu electrònic, transferència de fitxers | Streaming, jocs en línia, VoIP |
Mecanismes de TCP
Establiment de Connexió (Three-Way Handshake)
- SYN: El client envia un segment SYN al servidor per iniciar la connexió.
- SYN-ACK: El servidor respon amb un segment SYN-ACK.
- ACK: El client envia un segment ACK per confirmar la connexió.
Control de Flux
TCP utilitza una finestra desplaçable per gestionar la quantitat de dades que es poden enviar abans de rebre una confirmació del receptor.
Control d'Errors
TCP utilitza números de seqüència i confirmacions (ACK) per assegurar-se que els segments es reben correctament i en ordre.
Tancament de Connexió (Four-Way Handshake)
- FIN: El client o servidor envia un segment FIN per iniciar el tancament.
- ACK: L'altre extrem respon amb un segment ACK.
- FIN: L'altre extrem envia un segment FIN.
- ACK: El primer extrem respon amb un segment ACK final.
Exemples Pràctics
Exemple de TCP en Python
import socket # Crear un socket TCP server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Enllaçar el socket a una adreça i port server_socket.bind(('localhost', 8080)) # Escoltar connexions entrants server_socket.listen(1) print("Esperant connexions...") # Acceptar una connexió client_socket, client_address = server_socket.accept() print(f"Connexió acceptada de {client_address}") # Rebre dades data = client_socket.recv(1024) print(f"Dades rebudes: {data.decode()}") # Enviar resposta client_socket.sendall(b'Hola, client!') # Tancar la connexió client_socket.close() server_socket.close()
Exemple de UDP en Python
import socket # Crear un socket UDP server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Enllaçar el socket a una adreça i port server_socket.bind(('localhost', 8080)) print("Esperant missatges...") # Rebre dades data, client_address = server_socket.recvfrom(1024) print(f"Dades rebudes de {client_address}: {data.decode()}") # Enviar resposta server_socket.sendto(b'Hola, client!', client_address) # Tancar el socket server_socket.close()
Exercicis Pràctics
Exercici 1: Implementar un Client TCP
Implementa un client TCP que es connecti al servidor TCP de l'exemple anterior, enviï un missatge i rebi una resposta.
Exercici 2: Implementar un Client UDP
Implementa un client UDP que enviï un missatge al servidor UDP de l'exemple anterior i rebi una resposta.
Solucions
Solució Exercici 1: Client TCP
import socket # Crear un socket TCP client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Connectar-se al servidor client_socket.connect(('localhost', 8080)) # Enviar dades client_socket.sendall(b'Hola, servidor!') # Rebre resposta data = client_socket.recv(1024) print(f"Resposta del servidor: {data.decode()}") # Tancar la connexió client_socket.close()
Solució Exercici 2: Client UDP
import socket # Crear un socket UDP client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Enviar dades client_socket.sendto(b'Hola, servidor!', ('localhost', 8080)) # Rebre resposta data, server_address = client_socket.recvfrom(1024) print(f"Resposta del servidor: {data.decode()}") # Tancar el socket client_socket.close()
Resum
En aquest tema, hem explorat els protocols de transport, centrant-nos en TCP i UDP. Hem après les seves funcions, diferències i mecanismes interns, com el control de flux i el control d'errors. També hem vist exemples pràctics de com implementar comunicacions TCP i UDP en Python. Amb aquests coneixements, estàs preparat per aprofundir en altres aspectes dels protocols de comunicació en xarxes.
Curs de Xarxes
Mòdul 1: Introducció a les Xarxes
Mòdul 2: Protocols de Comunicació
- Introducció als Protocols de Comunicació
- Protocols d'Enllaç de Dades
- Protocols de Xarxa
- Protocols de Transport
- Protocols d'Aplicació
Mòdul 3: Model OSI
- Introducció al Model OSI
- Capa Física
- Capa d'Enllaç de Dades
- Capa de Xarxa
- Capa de Transport
- Capa de Sessió
- Capa de Presentació
- Capa d'Aplicació
Mòdul 4: Model TCP/IP
- Introducció al Model TCP/IP
- Capa d'Accés a la Xarxa
- Capa d'Internet
- Capa de Transport
- Capa d'Aplicació