La linea general de un paquete TCP es como sigue:
src > dst: flags [dataseq ack window urgent options]
El protocolo TCP se define en la
RFC 793 En principio
src,
dst y
flags estan siempre presentes. Los otros dependiendo del tipo de conexión TCP que se trate. El significado de dichos parámetros es:
- src: Dirección y puerto origen. En caso de no especificar el parámetro -n se intenta resover el nombre via DNS y el se busca el nombre del puerto vía (normalmente en los Unix en /etc/services).
- dst: Dirección y puerto destino, exactamente igual que el caso anterior.
- flags: Indica los flags de la cabecera TCP. Puede ser un ., cuyo significado es que no hay flags, o bien una combinación de S (SYN), F (FIN), P (PUSH), W (reducción de la ventana de congestión), E (ECN eco).
- dataseq: El námero de secuencia del primer byte de datos en este segmento TCP. El formato es primero:ultimo(n), que significa que desde a primero a ultimo (sin incluir ultimo) hay un total de n bytes de datos. Ojo cuando hay segmentos con SYN, que también ocupa un numero del espacio de secuencia.
- ack: El número de asentimiento. Indica el número siguiente de secuencia que se espera recibir. Ojo los SYN también se asienten.
- win: Tamaño de la ventana de recepción.
- urgent: Existen datos urgentes.
- options: Indica la existencia de opciones. En caso de que haya van entre < y >.
En el siguiente ejemplo, (viene en la página de manual del tcpdump), podemos ver:
- rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
- csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
- rtsg.1023 > csam.login: . ack 1 win 4096
- rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
- csam.login > rtsg.1023: . ack 2 win 4096
- rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
- csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
- csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
- csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
Esto simula una conexión originada por la máquina
rtsg con destino a
csam, con el servicio rlogin.
El significado de las líneas anteriores es:
- Inicio de conexion de rtsg -> csam SYN ISN 768512 ventana de 4096
- SYN de csam -> rtsg ISN 947648 ventana de 4096 ACK del SYN anterior.
- ACK del SYN mandado por csam. No hay flags
- 1 byte de datos de rtsg -> csam. Flag PUSH activado., (los números de secuencia son relativos al ISN a menos que especifiquemos la opción -S, en cuyo caso pone los números de secuencia se imprimen de manera absoluta).
- ACK del byte de datos anterior por parte de csam.
- 19 bytes de datos de rtsg a csam.
- csam manda 1 byte de datos a rtsg, y manda el ACK de los 19 bytes enviados por rtsg. La ventana de recepcisn ha bajado en 19 bytes. Flag PUSH
- csam envía un byte de datos urgente. Flag PUSH.
- Idem anterior.