Referencia del Archivo tcp.c

Implementacion de TCP. Más...

#include "includes.h"

Dependencia gráfica adjunta para tcp.c:


Funciones

WORD tcp_get_dlength (BYTE *rxtx_buffer)
 Devuelve el largo de datos de un paq. TCP
.
BYTE tcp_get_hlength (BYTE *rxtx_buffer)
 Devuelve el largo del encabezado de un paq. TCP
.
WORD tcp_puts_data_p (BYTE *rxtx_buffer, PGM_P data, WORD offset)
 Coloca datos de program memory en un paq. TCP
Los coloca con un OFFSET respecto al inicio del campo de datos
.
WORD tcp_puts_data (BYTE *rxtx_buffer, BYTE *data, WORD offset)
 Coloca datos de RAM en un paq. TCP
Los coloca con un OFFSET respecto al inicio del campo de datos
.
void tcp_send_packet (BYTE *rxtx_buffer, WORD_BYTES dest_port, WORD_BYTES src_port, BYTE flags, BYTE max_segment_size, BYTE clear_seqack, WORD next_ack_num, WORD dlength, BYTE *dest_mac, BYTE *dest_ip)
 Envio de paquetes TCP
.

Variables

static BYTE seqnum = 0xa

Descripción detallada

Implementacion de TCP.


Documentación de las funciones

WORD tcp_get_dlength ( BYTE rxtx_buffer  ) 

Devuelve el largo de datos de un paq. TCP
.

Parámetros:
rxtx_buffer puntero al paquete TCP.

WORD tcp_get_hlength ( BYTE rxtx_buffer  ) 

Devuelve el largo del encabezado de un paq. TCP
.

Parámetros:
rxtx_buffer puntero al paquete TCP.

WORD tcp_puts_data ( BYTE rxtx_buffer,
BYTE data,
WORD  offset 
)

Coloca datos de RAM en un paq. TCP
Los coloca con un OFFSET respecto al inicio del campo de datos
.

Parámetros:
rxtx_buffer el puntero al paquete en que se colocaran los datos.
data el puntero a los datos a colocar
offset el OFFSET respecto al origen del campo de datos

WORD tcp_puts_data_p ( BYTE rxtx_buffer,
PGM_P  data,
WORD  offset 
)

Coloca datos de program memory en un paq. TCP
Los coloca con un OFFSET respecto al inicio del campo de datos
.

Parámetros:
rxtx_buffer el puntero al paquete en que se colocaran los datos.
data el puntero a los datos a colocar
offset el OFFSET respecto al origen del campo de datos

void tcp_send_packet ( BYTE rxtx_buffer,
WORD_BYTES  dest_port,
WORD_BYTES  src_port,
BYTE  flags,
BYTE  max_segment_size,
BYTE  clear_seqack,
WORD  next_ack_num,
WORD  dlength,
BYTE dest_mac,
BYTE dest_ip 
)

Envio de paquetes TCP
.

Conexion normal:
1) envio SYN con SEQ=n
2)me responden SYN con SEQ=m y ACK n+1
3)retorno SEQ=n+1 ACK m+1
con esto quedan inicializadas las conexiones de ambos lados. Es importante definir quien es el que establece y corta la conexion.

Parámetros:
rxtx_buffer puntero al buffer
dest_port puerto de destino
src_port puerto de origen
flags 
max_segment_size 
clear_seqack indica si se limpia o no seq. ack.
next_ack_num siguiente numero a ser reconocido
dlength largo del campo de datos
dest_mac MAC de destino
dest_ip IP de destino

generate ethernet header

sequence numbers: add the rel ack num to SEQACK

copy the acknum sent to us into the sequence number

initial tcp sequence number setup maximum segment size require to setup first packet is receive or transmit only

initial sequence number

setup maximum segment size

setup tcp header length 24 bytes: 6*32/8 = 24

generate ip header and checksum

clear sequence ack number before send tcp SYN packet

setup tcp flags

setup destination port

setup source port

setup maximum windows size

setup urgend pointer (not used -> 0)

clear old checksum and calculate new checksum

send packet to ethernet media

Gráfico de llamadas para esta función:


Documentación de las variables

BYTE seqnum = 0xa [static]


Generado el Wed Jul 2 09:21:00 2008 para TCP/IP por  doxygen 1.5.6