Beruflich Dokumente
Kultur Dokumente
Blog Hojas de trucos Captura Arsenal Caja de instrumento Estante para libros Contáctame
El encabezado TCP contiene varios campos booleanos de un bit conocidos como indicadores utilizados para influir
en el flujo de datos a través de una conexión TCP. Al ignorar los indicadores CWR y ECE agregados para la
notificación de congestión por RFC 3168 , hay seis indicadores de control TCP. Cuatro de estos, que se enumeran
a continuación, se utilizan para controlar el establecimiento, mantenimiento y desmontaje de una conexión TCP, y
deben ser familiares para cualquiera que haya realizado un análisis de paquetes incluso rudimentario.
Las otras dos banderas, PSH (push) y URG (urgente), no son tan conocidas. Son el foco del artículo de hoy.
La bandera de PSH
Para comprender la función del indicador PSH, primero debemos entender cómo TCP almacena los datos. TCP
opera en la capa cuatro del modelo OSI; presenta a las capas superiores un simple zócalo que puede leerse y
escribirse, ocultando las complejidades de las comunicaciones basadas en paquetes. Para permitir que las
aplicaciones lean y escriban en este socket en cualquier momento, los buffers se implementan en ambos lados de
una conexión TCP en ambas direcciones.
El diagrama a continuación muestra cómo los datos son almacenados por el remitente antes de enviarlos y por el
receptor al momento de la recepción.
Los buffers permiten una transferencia de datos más eficiente al enviar más de un tamaño de segmento máximo
(MSS) de datos (por ejemplo, transferir un archivo grande). Sin embargo, los búferes grandes hacen más daño que
beneficio cuando se trata de aplicaciones en tiempo real que requieren que los datos se transmitan lo más rápido
posible. Considere lo que pasaría con una sesión de Telnet, por ejemplo, si TCP esperara hasta que hubiera
suficientes datos para llenar un paquete antes de que se enviara uno: tendría que escribir más de mil caracteres
antes de que el primer paquete llegara al dispositivo remoto. . No es muy útil.
Aquí es donde entra el indicador PSH. La aplicación puede escribir en el socket que TCP hace disponible a nivel
de sesión con la opción de "expulsar" los datos inmediatamente, en lugar de esperar a que ingresen datos
adicionales al búfer. Cuando esto sucede, el indicador PSH en el paquete TCP saliente se establece en 1
(activado). Al recibir un paquete con el conjunto de indicadores PSH, el otro lado de la conexión sabe que debe
reenviar el segmento inmediatamente a la aplicación. Para resumir, la capacidad de inserción de TCP logra dos
cosas:
La aplicación de envío informa a TCP que los datos deben enviarse inmediatamente.
El indicador PSH en el encabezado TCP informa al host receptor que los datos deben enviarse a la
aplicación receptora inmediatamente.
Podemos ver un ejemplo del indicador PSH que se está utilizando en esta captura de paquetes de una solicitud
HTTP GET. En el paquete # 4, vemos que la solicitud HTTP inicial tiene su indicador PSH establecido, lo que indica
que el cliente no tiene más datos para agregar y la solicitud debe enviarse a la aplicación (en este caso, un
demonio web) de inmediato. También vemos que el servidor ha establecido el indicador PSH en el paquete # 36,
que contiene los últimos bytes del archivo solicitado. Nuevamente, el indicador PSH se usa para informar al
receptor que el remitente no tiene más datos para transmitir (por ahora).
Como se mencionó, el indicador PSH también se usa para facilitar la comunicación en tiempo real a través de TCP.
Esta captura de paquetes de una breve sesión de Telnet muestra que todos los paquetes que contienen datos de
Telnet tienen el indicador PSH establecido para evitar que TCP presione en el búfer.
La bandera de URG
El indicador URG se usa para informar a una estación receptora que ciertos datos dentro de un segmento son
urgentes y deben tener prioridad. Si se establece el indicador URG, la estación receptora evalúa el puntero
urgente, un campo de 16 bits en el encabezado TCP. Este puntero indica la cantidad de datos en el segmento,
contando desde el primer byte, es urgente.
El indicador URG no es empleado mucho por los protocolos modernos, pero podemos ver un ejemplo de ello en la
captura de paquetes de Telnet que se mencionó anteriormente. El carácter 0xFF enviado en el paquete # 86
precede al comando Telnet 0xF2 (242) en el paquete # 70 que denota una marca de datos. Según RFC 854 , este
comando debe enviarse con el conjunto de indicadores TCP URG. El puntero urgente en el paquete n. ° 68 indica
que el primer byte del segmento (que en este caso es el segmento completo) debe considerarse como datos
urgentes.
Es cierto que probablemente este no sea el ejemplo más ilustrativo de la bandera de URG, pero fue
sorprendentemente difícil encontrar otros usos en las capturas del mundo real.
Para obtener más información sobre las funciones PSH y URG de TCP, consulte la Guía en línea de TCP / IP .
Sobre el Autor
Jeremy Stretch es un ingeniero de redes que vive en el área de Raleigh-Durham,
Carolina del Norte. Es conocido por su blog y hojas de trucos aquí en Packet Life.
Puede contactarlo por correo electrónico o seguirlo en Twitter .
Comentarios
CAMBIO Excelente redacción. Sinceramente, no tenía idea de para qué eran URG y
2 marzo 2011 a las 16:51 UTC PSH antes de leer esto.
Sin embargo, tengo una pregunta. ¿Algunas bibliotecas de redes activan
automáticamente el indicador PSH? Recuerdo que en una clase tuvimos
que escribir aplicaciones que hablaban entre sí a través de una conexión
TCP. Cuando un lado envió "FOO" sobre el zócalo, el otro lado obtendría
inmediatamente "FOO", aunque 1) nunca configuré ningún tipo de
indicador PSH y 2) el búfer de transmisión no se llenó.
gracias
stuh84 Siempre me había preguntado qué hacía la bandera de PSH, lo veo mucho
2 de marzo de 2011 a las 8:48 am UTC en las transacciones (chip y pin, sin contacto, etc.) y solo pensé que era el
mensaje que contenía datos. Esto tiene mucho más sentido ahora.
Gracias
Gracias,
Pablo
CJ (invitado) Gracias por el post Stretch. Este blog se ha convertido en uno de mis
4 de marzo de 2011 a las 3:24 pm UTC lugares goto. Usted publica información muy relevante y útil. ¡Seguid así!
Stefano.
Ste @ imMute:
. 25 de marzo de 2011 a las 7:02 pm ese comportamiento sugiere que el algoritmo de Nagle fue deshabilitado
UTC. en su socket
Por lo que sé, deshabilitarlo es en realidad la forma correcta de garantizar
la entrega inmediata, ya que cuando está habilitado (y por lo general lo es
por defecto), incluso los datos "enviados" se almacenan temporalmente
durante algún tiempo antes de ser enviados.
exgenoma (invitado) Me interesé en el software que usas para capturar paquetes de datos?
17 de abril de 2012 a las 2:06 pm UTC y por cierto bonito post !! :-)
Ashok (invitado) Muy informativo. :) Supongo que cuando dices "El carácter 0xFF enviado
23 de mayo de 2012 a las 3:44 pm UTC en el paquete # 86 es anterior al comando Telnet 0xF2 (242) en el paquete
# 70 que denota una marca de datos" que realmente quisiste decir "El
carácter 0xFF enviado en el paquete # 86 es anterior a la Telnet comando
0xF2 (242) en el paquete # 88 que denota una marca de datos ", y en lugar
de" El puntero urgente en el paquete # 68 indica "te refieres" El puntero
urgente en el paquete # 86 indica ". Me confundí por un tiempo, por favor
dime si estoy equivocado.
Gracias y saludos,
Abhaas Sood
Estoy un poco confundido en cuanto a por qué vacía su búfer si ambos bits
de PSH + ACK están configurados. Esto parece ser lo contrario del
propósito de la bandera PSH. ¿Alguien sabe el mecanismo detrás de esto?
¡Muchas gracias!
freeurmind111 (invitado) Gran artículo ... mantén tu pasión por la informática ... ¡que tengas un buen
13 de marzo de 2014 a las 1:49 pm UTC día! ;RE
Brooke King (invitado) Otro artículo útil entre muchos de los tuyos. Gracias por incluir el enlace a
13 de mayo de 2014 a las 6:50 pm UTC un ejemplo de captura de paquetes. Me gusta el comentario de Ashok
(invitado) el 23 de mayo de 2012 a las 3:44 pm UTC. Iba a escribir algo
parecido, pero ya lo hizo.
Aasim (invitado) Como siempre Jeremy, rockeras. Desearía haber podido conocer su sitio
29 de septiembre de 2014 a las 8:26 pm web antes, hubiera sido mucho mejor de lo que soy ahora en Networking.
UTC
¡Te amo hombre! Y muchas gracias por sus explicaciones.
Josh (invitado) Fantástica explicación! Muy claro y conciso con ejemplos impresionantes.
12 de marzo de 2015 a las 10:34 am ¡Apreciado enormemente!
UTC
Aclamaciones
Robar
LMD6204 (invitado) Gran explicación con ejemplos! ¡Ojalá fueras mi maestro! ¡Todo lo que
28 de enero de 2016 a las 4:46 pm UTC aprendí en Cisco fue autodidacta ya que mi maestra acaba de leer el
capítulo! Luché por aprender por mi cuenta.
Attila (invitado) Gracias por estas explicaciones informativas. Realmente aprecio estos
18 de marzo de 2016 a las 12:26 pm pequeños 'recordatorios' sobre cosas que escuché hace algún tiempo pero
UTC que poco a poco se fueron desvaneciendo;
umarmuqthiyar (invitado) Awe some, Realmente aprendí un gran conocimiento de este artículo ...
22 de julio de 2016 a las 7:10 am UTC Muchas gracias ...
Rajesh Singh (invitado) Buena explicación para la bandera TCP ... Gracias por el buen trabajo
16 de agosto de 2016 a las 6:08 am UTC hecho!
Casa | Blog | Hojas de trucos | Captura | Arsenal | Caja de instrumento | Estante para libros | Contáctame | Acerca de