Curs: | DissenyXarxesLinux, LinuxAdministracioAvancada, LPIC1_102 |
Fitxers: | Consulteu LPI_109.1 |
Repositori SVN: | https://svn.projectes.lafarga.cat/svn/iescopernic/ServeisInternet/moodle/Wifi |
Usuari: | anonymous |
Paraula de pas: | sense paraula de pas |
Autors: | Sergi Tur Badenas |
http://acacha.org/~sergi/UD_4._Nivell_de_xarxa_i_nivell_de_transport._Dispositius_de_xarxes_d_rea_local.pdf
Nivell 1: | Nivell_d'interfície_de_xarxa_TCP/IP |
Nivell 2: | Nivell_d'internet_TCP/IP |
Nivell 3: | Nivell_de_transport_TCP/IP |
Nivell 4: | Nivell_d'aplicació_TCP/IP |
El nivell de transport és l'encarregat de que les dades transferides entre emissor i receptor estiguin lliures d'errors. També és l'encarregat de controlar el flux de dades.
Model de referència OSI
Pila de protocols TCP/IP
Els objectius són els mateixos que el nivell d'enllaç però aquest com la comunicació és entre màquines que no estan directament connectades.
És una capa de transició que connecta les aplicacions i/o usuaris amb la xarxa o el que és el mateix, entre els nivells orientats a la xarxa i els orientats a les aplicacions.
Treballa amb unitats de dades 4-PDU també anomenades TPDU o segments.
Té funcions similars al nivell d'enllaç (salt a salt) però entre dues màquines que no estan connectades directament (extrem a extrem) i s'encarrega de preparar les dades de les aplicacions per a la xarxa i assegurar-se que arribaran correctament al nivell de transport del destinatari.
Protocols: TCP (Transport Control Protocol) i UDP (User Datagram Protocol)
Té funcions similars al nivell d'enllaç (salt a salt) però entre dues màquines que no estan connectades directament (extrem a extrem)
Servei orientat a connexió
Servei no orientat a connexió
Servei confirmat o no confirmat
Propietats
Exemple: Trucada telefònica
El protocol orientat a connexió per excel·lència és TCP.
Els dispositius de cada banda de la connexió (emissor i receptor) utilitzen un protocol preliminar a l'enviament de dades per establir una connexió punta a punta. Sovint també s'anomenen serveis de xarxa fiables (reliable) per què es garanteix que les dades arribaren en l'ordre adequat.
La comunicació pot estar en diferents estats
La comunicació es duu a terme en tres fases:
Hi ha dos variants:
Propietats:
Exemple: Correu postal
El protocol no orientat a connexió per excel·lència és UDP o User Datagram Protocol.
A les unitats de dades d'aquests tipus de paquets se'ls anomena Datagrames. Els datagrames s'envien directament paquets de l'emissor al receptor sense establir prèviament una connexió.
NOTA: Datagrama: L'origen prové de la paraula telegrama
No és una connexió fiable, ja que els paquets poden arribar en qualsevol ordre, duplicats, es poden perdre...
Tipologies
Protocols que utilitzen UDP:
DNS, DHCP, VoIP, Videoconferència, jocs en xarxa.
El protocol TCP és orientat a connexió. El següent diagrama mostra el protocol d'establiment d'una connexió:
i aquest altre diagrama mostra el procés de terminació d'una connexió:
Consulteu Exemple amb netcat de captura de paquets de connexió TCP
TODO: http://www.tcpipguide.com/free/t_TCPSlidingWindowDataTransferandAcknowledgementMech.htm aka TCP Windowing
Un cop s'ha establert la comunicació, necessitem entendre com la transmissió de dades és gestionada i mantinguda. En xarxes TCP/IP, la transmissió entre màquines és controlada pel protocol TCP.
Que passa si els datagrames són enviats a més velocitat que la que pot processar el dispositiu? Els dispositius guarden els datagrames en unes memòries anomenades buffers. Els buffers no tenen però un espai il·limitat i si la seva capacitat és excedida aleshores el receptor començara a perdre paquets (DROP). Tots aquests paquets s'han de tornar a transmetre i aquesta és una de les raons per les quals el rendiment/velocitat de la transmissió pot disminuir.
Per solucionar aquest problema el protocol TCP utilitza un protocol de control de flux. El mecanisme de finestra (windowing) s'utilitza per controlar el flux de dades. Quan la connexió és establerta el receptor especifiquen el camp window la mida de la finestra TCP (vegeu capçalera TCP). La mida de la finestra (en bytes) representa la quantitat de dades rebudes que el receptor pot emmagatzemar al buffer. Aquesta mida s'indica al emissor en el paquet ACK. La mida de la finestra controla quin és el màxim d'informació que pot enviar el emissor abans de rebre una confirmació. El emissor envia la quantita d'informació especificada a la mida de la finestra i s'espera a rebre una confirmació abans d'enviar més dades. En les confirmacions es torna a enviar una mida de finestra actualitzada per a utilitzar-la en les següents transmissions.
IMPORTANT: La mida de la finestra tampoc es pot augmentar indefinidament. Si un sol paquets que s'envia dins d'una finestra ha de ser tornat a transmetre aleshores tota la finestra s'ha de tornar a enviar. En el cas d'un canal que perdi paquets, això pot afectar molt el rendiment
La mida de la finestra s'anirà augmentant mentrestant el receptor pugui processar els paquets. Un cop les velocitat dels dos receptors estan a la par la mida de la finestra ja no augmenta i en tot cas si el receptor es satura pot disminuir la mida de la finestra fins i tot fins a especificar una mida de zero. En aquest cas el emisor ha de parar d'enviar informació fins que la finestra torni a ser positiva.
TCP utilitza els algorismes Slow Start i Congestion Avoidance per tal de determinar quants paquets es poden enviar entre el emissor i el receptor o el que també s'anomena congestion window, és a dir la màxima quantitat de dades que es poden enviar abans de rebre un ACK (acknowledgment) per part del receptor. Si no es rep el ACK aleshores el emissor suposa que hi ha congestió a la xarxa i disminueix la velocitat de transmissió de paquets.
Cal tenir en compte que les configuracions per defecte de la finestra TCP poden ser molt poc adequades per a casos específics.
El control de la mida de la finestra es gestiona en diferents algorismes com Reno, Vegas, Tahoe, etc. Una llista completa:
TODO: This is a list of 14 congestion control algorithms available in TCP. I'm presenting it in alphabetical order. BIC TCP - Binary Increase Congestion Control, this is the default congestion control algorithm in Linux as of kernel version 2.6.7 Compound TCP (CTCP) - TCP Reno with a scalable delay-based component, developed by Microsoft and used in Windows Vista FAST TCP - uses queueing delay (rather than packet loss) as an indicator of congestion Hamilton TCP (H-TCP) - uses AIMD to control the congestion window HighSpeed TCP (HSTCP) - a recent (2003) implementation Scalable TCP - adaptation of the algorithms in TCP Reno TCP Hybla - aimed at overcoming the extremely long RTTs of satellite networks TCP Low Priority (TCP-LP) - designed to only use 'extra' bandwidth TCP NewReno - TCP Reno with a modified Fast Retransmit and Fast Recovery TCP Reno - adds Fast Recovery to TCP Tahoe's Fast Retransmit TCP Tahoe - uses Fast Retransmit to reduce wait time when a packet is lost TCP Vegas - similar to FAST TCP, uses delay rather than loss to determine congestion TCP Veno - slight modification to TCP Reno, optimized for heterogeneous networks, especially those involving wireless links TCP Westwood+ - based on end-to-end bandwidth estimates, especially effective in wireless networks
Vegeu també Throughput#TCP.
Vegeu també Throughput TODO
Maximum achievable throughput for a single TCP connection is determined by different factors. One trivial limitation is the maximum bandwidth of the slowest link in the path. But there are also other, less obvious limits for TCP throughput. Bit errors can create a limitation for the connection as well as round-trip time.
En xarxes, RWIN (TCP Receive Window) és la quantitat de dades màxima que un node pot acceptar sense la recepció de un acknowledge. Si un cop arribada aquesta quantitat no s'ha rebut el acknowledge, s'atura la transmisió (stop and wait) i esperara un cert temps (timeout) i si no es rep la confirmació es demanarà una retransmissió.
Even if there is no packet loss in the network, windowing can limit throughput. Because TCP transmits data up to the window size before waiting for the acknowledgements, the full bandwidth of the network may not always get used. The limitation caused by window size can be calculated as follows:
Throughput <= RWIN/RTT
where RWIN is the TCP Receive Window and RTT is the Round-trip delay time o Round-trip time for the path.
At any given time, the window advertised by the receive side of TCP corresponds to the amount of free receive memory it has allocated for this connection. Otherwise it would take the risk to have to drop received packets by lack of space.
Unrelated to the TCP receive window, the sending side should also allocate the same amount of memory as the receive side for good performance. That is because, even after data has been sent on the network, the sending side must hold it in memory until it has been acknowledged as successfully received, just in case it would have to be retransmitted. If the receiver is far away, acknowledgments will take a long time to arrive. If the send memory is small, it can saturate and block emission. A simple computation gives the same optimal send memory size as for the receive memory size given above.
Els podeu consultar amb
$ netstat --inet -t -a -c | grep upc.es:www tcp 1 0 casa-linux.local:48520 raiden.upc.es:www CLOSE_WAIT tcp 0 687 casa-linux.local:48529 raiden.upc.es:www ESTABLISHED tcp 0 1 casa-linux.local:48522 raiden.upc.es:www SYN_SENT tcp 0 709 casa-linux.local:48537 raiden.upc.es:www ESTABLISHED tcp 0 1 casa-linux.local:48522 raiden.upc.es:www SYN_SENT tcp 1 1 casa-linux.local:48560 raiden.upc.es:www LAST_ACK tcp 0 0 casa-linux.local:48556 raiden.upc.es:www TIME_WAIT tcp 0 0 casa-linux.local:48556 raiden.upc.es:www TIME_WAIT ...............................................
El següent diagrama mostra els canvis d'estats segons els serveis OSI:
I al diagrama següent podeu observar quin és l'evolució de l'establiment d'una connexió i els estats relacionats:
Vegeu també conntrack.
En les comunicacions sempre hi han errors (de programació, dispositius que es pengen, caigudes de xarxa, etc). Per evitar que els sockets es quedin penjats en una esta fins indeterminadament s'estableixen uns timeouts:
TODO
Una llista possible dels ports més habituals
Consulteu també /etc/services.
Dispositius virtuals de comunicacions bidireccionals.
Hi han tantes famílies de sockets com protocols. Els dos més importants:
Sockets Unix
Unix domain socket (UDS o IPC socket)
Components
$ ls -la /var/run/mysqld/mysqld.sock srwxrwxrwx 1 mysql mysql 0 2007-05-10 07:42 /var/run/mysqld/mysqld.sock
Sockets TCP/IP:
Components d'un socket d'Internet
Consulteu Telnet#Telnet_com_a_eina_per_a_obrir_connexions_TCP.
UDP o User Datagram Protocol és un protocol de nivell 4 OSI (Nivell 3 TCP/IP) que ofereix serveis no orientats a connexió.
Utilitzat en serveis on la velocitat és important i ens podem permetre perdre part de la informació (aplicacions en temps real com veu IP, videoconferència, jocs online...)
És un dels protocol importants d'Internet
Vegeu també:
Els dos protocols de nivell de transport més utilitzats són TCP i UDP.
Consulteu l'article Network Address Translation (NAT).