TCP/IP Networking
8/3/2020 - 8/7/2020


COURSE COST: $2495.00

COURSE TIMES: 9:00am - 4:30pm

Printable version of this course
Register for this course


This TCP/IP training provides a solid understanding of each of the most important networking protocols within the IP suite. Nearly 50% of this TCP/IP network training consists of hands-on labs! Participants will learn everything about a TCP/IP-based network - from initial setup and configuration to troubleshooting. Please browse through the course agenda below to get an idea of what is covered in this course.


TCP/IP Network training is ideal for professionals responsible for designing, installing, configuring, and maintaining TCP/IP networks. Professionals who needs to understand TCP/IP protocol structures and functions will also benefit from this course. The course will prepare participants for higher level network training.


Course is subject to minimum enrollment. Course may run as a Virtual Instructor Led class if minimum enrollment is not met. *Course cost listed does not include the cost of courseware. Please contact us at email: or 207-775-0244 for additional pricing information, or if you have any questions.


What You Will Learn
The basics of the TCP/IP protocol
Installation and configuration of TCP/IP network in a live classroom environment
The roles of various devices in a TCP/IP network
IP addressing and subnetting including Variable Length Subnet Masking
How to subnet an IP network and implement the resulting addresses
ARP, IP, ICMP, TCP, and UDP - their functions and relationships
How to automate address assignment and name resolution using DHCP and DDNS
IP routing and the protocols that support it, like RIP and OSPF
How applications like FTP, HTTP, Telnet, and others work in a TCP/IP network
The functions of IPv6 and its related protocols
Multicasting, VoIP, instant messaging, and email
Using a protocol analyzer for isolating and troubleshooting network problems

How to troubleshoot problems at each layer of a TCP/IP network

Source Code Presentation
Application Programming Interfaces
Example Program
System Calls and Library Functions
Network Implementation Overview
Mbufs (Memory Buffers) and Output Processing
Input Processing
Network Implementation Overview Revisited
Interrupt Levels and Concurrency
Source Code Organization
Test Network

Memory Buffers: Introduction
Code Introduction
Mbuf Definitions
mbuf Structure
Simple Mbuf Macros and Functions
m_devget and m_pullup Functions
Summary of Mbuf Macros and Functions
Summary of Net/3 Networking Data Structures
m_copy and Cluster Reference Counts

Interface Layer
Code Introduction
ifnet Structure
ifaddr Structure
sockaddr Structure
ifnet and ifaddr Specialization
Network Initialization Overview
Ethernet Initialization
SLIP Initialization
Loopback Initialization
if_attach Function
ifinit Function

Ethernet: Introduction
Code Introduction
Ethernet Interface
ioctl System Call

SLIP and Loopback: Introduction
Code Introduction
SLIP Interface
Loopback Interface

IP Addressing
Code Introduction
Interface and Address Summary
sockaddr_in Structure
in_ifaddr Structure
Address Assignment
Interface ioctl Processing
Internet Utility Functions
ifnet Utility Functions

Domains and Protocols
Code Introduction
domain Structure
protosw Structure
IP domain and protosw Structures
pffindproto and pffindtype Functions
pfctlinput Function
IP Initialization
sysctl System Call

IP: Internet Protocol
Code Introduction
IP Packets
Input Processing: ipintr Function
Forwarding: ip_forward Function
Output Processing: ip_output Function
Internet Checksum: in_cksum Function
setsockopt and getsockopt System Calls
ip_sysctl Function

IP Option Processing
Option Format
ip_dooptions Function
Record Route Option
Source and Record Route Options
Timestamp Option
ip_insertoptions Function
ip_pcbopts Function

IP Fragmentation and Reassembly
Code Introduction
ip_optcopy Function
ip_reass Function
ip_slowtimo Function

ICMP: Internet Control Message Protocol
Code Introduction
icmp Structure
ICMP protosw Structure
Input Processing: icmp_input Function
Error Processing
Request Processing
Redirect Processing
Reply Processing
Output Processing
icmp_error Function, icmp_reflect Function
icmp_send Function, icmp_sysctl Function

IP Multicasting
Code Introduction
Ethernet Multicast Addresses
ether_multi Structure
Ethernet Multicast Reception
in_multi Structure
ip_moptions Structure
Multicast Socket Options
Multicast TTL Values
ip_setmoptions Function, ip_getmoptions Function
Joining, leaving an IP Multicast Group,
Multicast Input Processing: ipintr Function, Multicast Output Processing: ip_output Function

IGMP: Internet Group Management Protocol
Code Introduction
igmp Structure
IGMP protosw Structure
Joining a Group: igmp_joingroup Function
igmp_fasttimo Function
Input Processing: igmp_input Function
Leaving a Group: igmp_leavegroup Function

IP Multicast Routing
Code Introduction
Multicast Output Processing Revisited
ip_mrouted Daemon
Virtual Interfaces
IGMP Revisited
Multicast Routing
Multicast Forwarding: ip_mforward Function
Cleanup: ip_mrouter_done Function

Socket Layer
Code Introduction
socket Structure
System Calls
Processes, Descriptors, and Sockets
socket System Call
getsock and sockargs Functions
bind System Call, Listen System Call
tsleep and wakeup Functions, accept System Call
sonewconn and soisconnected Functions
connect System call, shutdown System Call
close System Call

Socket I/O
Code Introduction
Socket Buffers
write, writev, sendto, and sendmsg System Calls
sendmsg System Call, sendit Function
sosend Function, read, readv, recvfrom, and recvmsg System Calls
recvmsg System Call
recvit Function
soreceive Function
soreceive Code
select System Call

Socket Options
Code Introduction
setsockopt System Call
getsockopt System Call
fcntl and ioctl System Calls
getsockname System Call
getpeername System Call

Radix Tree Routing Tables
Routing Table Structure
Routing Sockets
Code Introduction
Radix Node Data Structures
Routing Structures
Initialization: route_init and rtable_init Functions
Initialization: rn_init and rn_inithead Functions
Duplicate Keys and Mask Lists
rn_match Function
rn_search Function

Routing Requests and Routing Messages
rtalloc and rtalloc1 Functions
RTFREE Macro and rtfree Function
rtrequest Function
rt_setgate Function
rtinit Function
rtredirect Function
Routing Message Structures
rt_missmsg Function, rt_ifmsg Function
rt_newaddrmsg Function, rt_msg1 Function
rt_msg2 Function, sysctl_rtable Function
sysctl_dumpentry Function,
sysctl_iflist Function

Routing Sockets
routedomain and protosw Structures
raw_init Function
route_output Function
rt_xaddrs Function
rt_setmetrics Function
raw_input Function
route_usrreq Function
raw_usrreq Function
raw_attach, raw_detach, and raw_disconnect Functions

ARP: Address Resolution Protocol
ARP and the Routing Table
Code Introduction
ARP Structures
arpwhohas Function, arprequest Function
arpintr Function,
in_arpinput Function
ARP Timer Functions
arpresolve Function
arplookup Function
Proxy ARP
arp_rtrequest Function
ARP and Multicasting

Protocol Control Blocks
UDP: User Datagram Protocol
TCP: Transmission Control Protocol
TCP Timers
TCP Output
TCP Functions
TCP Input
TCP User Requests
BPF: BSD Packet Filter
Raw IP