Referencia del Archivo tcp.h

Declaracion de TCP. Más...

Gráfico de los archivos que directa o indirectamente incluyen a este archivo:


Definiciones

Longitud de encabezados
#define TCP_HEADER_LEN   20
#define TCP_OPTION_LEN   4
Constantes de las Flags
Define los valores de SYN, FIN, ACK, etc

#define TCP_FLAG_FIN_V   0x01
#define TCP_FLAG_SYN_V   0x02
#define TCP_FLAG_RST_V   0x04
#define TCP_FLAG_PSH_V   0x08
#define TCP_FLAG_ACK_V   0x10
#define TCP_FLAG_URG_V   0x20
#define TCP_FLAG_ECE_V   0x40
#define TCP_FLAG_CWR_V   0x80
Puerto por defecto
#define TCP_AVR_PORT_V   8080
#define TCP_AVR_PORT_H_V   (UDP_AVR_PORT_V>>8)
#define TCP_AVR_PORT_L_V   (UDP_AVR_PORT_V&0xff)
Campos de TCP
#define TCP_SRC_PORT_H_P   0x22
#define TCP_SRC_PORT_L_P   0x23
#define TCP_DST_PORT_H_P   0x24
#define TCP_DST_PORT_L_P   0x25
#define TCP_SEQ_P   0x26
#define TCP_SEQACK_P   0x2A
#define TCP_HEADER_LEN_P   0x2E
#define TCP_FLAGS_P   0x2F
#define TCP_WINDOWSIZE_H_P   0x30
#define TCP_WINDOWSIZE_L_P   0x31
#define TCP_CHECKSUM_H_P   0x32
#define TCP_CHECKSUM_L_P   0x33
#define TCP_URGENT_PTR_H_P   0x34
#define TCP_URGENT_PTR_L_P   0x35
#define TCP_OPTIONS_P   0x36
#define TCP_DATA_P   0x36

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 (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
.
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
.
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
.

Descripción detallada

Declaracion de TCP.

Se definen los campos y valores tipicos de los paquetes TCP.


Documentación de las definiciones

#define TCP_AVR_PORT_H_V   (UDP_AVR_PORT_V>>8)

#define TCP_AVR_PORT_L_V   (UDP_AVR_PORT_V&0xff)

#define TCP_AVR_PORT_V   8080

#define TCP_CHECKSUM_H_P   0x32

#define TCP_CHECKSUM_L_P   0x33

#define TCP_DATA_P   0x36

#define TCP_DST_PORT_H_P   0x24

#define TCP_DST_PORT_L_P   0x25

#define TCP_FLAG_ACK_V   0x10

#define TCP_FLAG_CWR_V   0x80

#define TCP_FLAG_ECE_V   0x40

#define TCP_FLAG_FIN_V   0x01

#define TCP_FLAG_PSH_V   0x08

#define TCP_FLAG_RST_V   0x04

#define TCP_FLAG_SYN_V   0x02

#define TCP_FLAG_URG_V   0x20

#define TCP_FLAGS_P   0x2F

#define TCP_HEADER_LEN   20

#define TCP_HEADER_LEN_P   0x2E

#define TCP_OPTION_LEN   4

#define TCP_OPTIONS_P   0x36

#define TCP_SEQ_P   0x26

#define TCP_SEQACK_P   0x2A

#define TCP_SRC_PORT_H_P   0x22

#define TCP_SRC_PORT_L_P   0x23

#define TCP_URGENT_PTR_H_P   0x34

#define TCP_URGENT_PTR_L_P   0x35

#define TCP_WINDOWSIZE_H_P   0x30

#define TCP_WINDOWSIZE_L_P   0x31


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.

BYTE 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:


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