Linux Kernel Networking : implementation and theory /

Saved in:
Bibliographic Details
Author / Creator:Rosen, Rami.
Imprint:[New York, N.Y.] : Apress, ©2014.
Description:1 online resource (1 volume) : illustrations.
Language:English
Series:The expert's voice in open source
Expert's voice in open source.
Subject:
Format: E-Resource Book
URL for this record:http://pi.lib.uchicago.edu/1001/cat/bib/11083040
Hidden Bibliographic Details
ISBN:9781430261971
1430261978
9781430261964
143026196X
Notes:Online resource; title from title page (Safari, viewed Jan. 24, 2014).
Summary:Linux Kernel Networking takes you on a guided in-depth tour of the current Linux networking implementation and the theory behind it. Linux kernel networking is a complex topic, so the book won't burden you with topics not directly related to networking. This book will also not overload you with cumbersome line-by-line code walkthroughs not directly related to what you're searching for; you'll find just what you need, with in-depth explanations in each chapter and a quick reference at the end of each chapter. Linux Kernel Networking is the only up-to-date reference guide to understanding how networking is implemented, and it will be indispensable in years to come since so many devices now use Linux or operating systems based on Linux, like Android, and since Linux is so prevalent in the data center arena, including Linux-based virtualization technologies like Xen and KVM.
Other form:9781430261964
9781430261971
Standard no.:10.1007/978-1-4302-6197-1
Table of Contents:
  • At a Glance; Chapter 1: Introduction; The Linux Network Stack; The Network Device; New API (NAPI) in Network Devices; Receiving and Transmitting Packets; The Socket Buffer; The Linux Kernel Networking Development Model; Summary; Chapter 2: Netlink Sockets; The Netlink Family; Netlink Sockets Libraries; The sockaddr_nl Structure; Userspace Packages for Controlling TCP/IP Networking; Kernel Netlink Sockets; The Netlink Message Header; NETLINK_ROUTE Messages; Adding and Deleting a Routing Entry in a Routing Table; Generic Netlink Protocol; Creating and Sending Generic Netlink Messages.
  • Socket Monitoring InterfaceSummary; Quick Reference; Chapter 3: Internet Control Message Protocol (ICMP); ICMPv4; ICMPv4 Initialization; ICMPv4 Header; Receiving ICMPv4 Messages; Sending ICMPv4 Messages: "Destination Unreachable"; Code 2: ICMP_PROT_UNREACH (Protocol Unreachable); Code 3: ICMP_PORT_UNREACH ("Port Unreachable"); Code 4: ICMP_FRAG_NEEDED; Code 5: ICMP_SR_FAILED; ICMPv6; ICMPv6 Initialization; ICMPv6 Header; Receiving ICMPv6 Messages; Sending ICMPv6 Messages; Example: Sending "Hop Limit Time Exceeded" ICMPv6 Messages.
  • Example: Sending "Fragment Reassembly Time Exceeded" ICMPv6 MessagesExample: Sending "Destination Unreachable"/"Port Unreachable" ICMPv6 Messages; Example: Sending "Fragmentation Needed" ICMPv6 Messages; Example: Sending "Parameter Problem" ICMPv6 Messages; ICMP Sockets ("Ping sockets"); Summary; Quick Reference; Methods; int icmp_rcv(struct sk_buff *skb); ; extern void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info); ; struct icmp6hdr *icmp6_hdr(const struct sk_buff *skb); ; void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info).
  • Void icmpv6_param_prob(struct sk_buff *skb, u8 code, int pos); Tables; procfs entries; sysctl_icmp_echo_ignore_all; sysctl_icmp_echo_ignore_broadcasts; sysctl_icmp_ignore_bogus_error_responses; sysctl_icmp_ratelimit; sysctl_icmp_ratemask; sysctl_icmp_errors_use_inbound_ifaddr; Creating "Destination Unreachable" Messages with iptables; Chapter 4: IPv4; IPv4 Header; IPv4 Initialization; Receiving IPv4 Packets; Receiving IPv4 Multicast Packets; IP Options; Timestamp Option; Record Route Option; IP Options and Fragmentation; Building IP Options; Sending IPv4 Packets; Fragmentation; Fast Path.
  • Slow PathDefragmentation; Forwarding; Summary; Quick Reference; Methods; int ip_queue_xmit(struct sk_buff *skb, struct flowi *fl); ; int ip_append_data(struct sock *sk, struct flowi4 *fl4, int getfrag(void *from, char *to, int offset, int len, int odd, str ... ; struct sk_buff *ip_make_skb(struct sock *sk, struct flowi4 *fl4, int getfrag(void *from, char *to, int offset, int len, int ... ; int ip_generic_getfrag(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb); ; static int icmp_glue_bits(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb).