next up previous contents
Next: IP Up: Netzwerkkommunikation Previous: INET-Socket   Contents

TCP/UDP

Aufgerufen durch die Funktionen der INET-Schicht erledigen die verschiedenen TCP- und UDP-Funktionen die Arbeit für die Transport-Schicht im Netzwerkschichtenmodell.

Von besonderer Bedeutung ist hier die Struktur struct msghdr [include/linux/socket.h]

struct msghdr { 
  void             * msg_name;      /* Socket name */ 
  int              msg_namelen;     /* Length of name */ 
  struct iovec     * msg_iov;       /* Data blocks */ 
  __kernel_size_t  msg_iovlen;      /* Number of blocks */ 
  void             * msg_control;   /* Per protocol magic (eg BSD file descriptor passing) */ 
  __kernel_size_t  msg_controllen;  /* Length of cmsg list */ 
  unsigned         msg_flags; 
};
Sie implementiert eine allgemeine ''Nachricht'' nach Art des 4.4BSD message passing system.

Im folgenden die wichtigsten Funktionen der TCP/UDP Implementierungen.

int udp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) [net/ipv4/udp.c]

int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) [net/ipv4/tcp_ipv4.c]

int tcp_sendmsg(struct sock *sk, struct msghdr *msg, int size) [net/ipv4/tcp.c]

int udp_sendmsg(struct sock *sk, struct msghdr *msg, int len) [net/ipv4/udp.c]

int tcp_recvmsg(struct sock *sk, struct msghdr *msg, int len, int nonblock, int flags, int *addr_len) [net/ipv4/tcp.c]

int udp_recvmsg(struct sock *sk, struct msghdr *msg, int len, int nonblock, int flags, int *addr_len) [net/ipv4/udp.c]

Diese Funktionen verarbeiten die Nachrichten zu Paketen von struct sk_buff und rufen die entsprechenden Funktionen der IP-Schicht auf. Bei TCP werden vorher die bekannten Features zur verbindungsorientierten Kommunikation implementiert.



2002-02-17