RCM2100

Digi RCM2100 User manual

  • Hello! I am an AI chatbot trained to assist you with the Digi RCM2100 User manual. I’ve already reviewed the document and can help you find the information you need or explain it in simple terms. Just ask your questions, and providing more details will help me assist you more effectively!
An Introduction to TCP/IP
For Embedded System Designers
019-0074 • 070720-J
The latest revision of this manual is available on the Rabbit Semiconductor Web
site, www.rabbit.com, for free, unregistered download.
ii
An Introduction to TCP/IP
Part Number 019-0074–J • 070720 • Printed in U.S.A.
©2006 Rabbit Semiconductor Inc. • All rights reserved.
Rabbit Semiconductor reserves the right to make changes and
improvements to its products without providing notice.
Trademarks
Rabbit and Dynamic C
®
are registered trademarks of Rabbit Semiconductor.
Windows
®
is a registered trademark of Microsoft Corporation
No part of the contents of this manual may be reproduced or transmitted in any form or by any means
without the express written permission of Rabbit Semiconductor.
Permission is granted to make one or more copies as long as the copyright page contained therein is
included. These copies of the manuals may not be let or sold for any reason without the express written
permission of Rabbit Semiconductor.
An Introduction to TCP/IP rabbit.com iii
Table of Contents
Chapter 1: Introduction 1
Chapter 2: Ethernet Basics 3
2.1 Ethernet Address................................................................................................................................................. 3
2.2 Physical Connections..........................................................................................................................................3
2.2.1 Cables..........................................................................................................................................................4
2.3 Frames................................................................................................................................................................. 4
2.3.1 Collisions ...................................................................................................................................................5
Chapter 3: Networks 7
3.1 LAN ....................................................................................................................................................................7
3.1.1 Repeaters and Bridges.................................................................................................................................7
3.2 WAN...................................................................................................................................................................8
3.2.1 Packet Switches...........................................................................................................................................8
3.2.2 Forwarding a Packet.................................................................................................................................... 8
3.3 VPN .................................................................................................................................................................... 9
3.4 Network Devices.................................................................................................................................................9
3.4.1 Routers ........................................................................................................................................................9
3.4.2 Firewalls...................................................................................................................................................... 9
3.4.3 Gateways................................................................................................................................................... 10
3.5 Network Architecture ....................................................................................................................................... 10
3.5.1 Client/Server Networks............................................................................................................................. 10
Port Numbers .................................................................................................................................................11
Chapter 4: Network Protocol Layers 13
4.1 Layering Models ............................................................................................................................................... 13
4.2 TCP/IP Protocol Stack ...................................................................................................................................... 14
Chapter 5: TCP/IP Protocols 15
5.1 IP....................................................................................................................................................................... 16
5.1.1 IP Address ................................................................................................................................................. 16
5.1.2 IP Address Classes .................................................................................................................................... 16
5.1.3 Netmasks................................................................................................................................................... 16
5.1.4 Subnet Address ......................................................................................................................................... 17
5.1.5 Directed Broadcast Address...................................................................................................................... 17
5.1.6 Limited Broadcast Address....................................................................................................................... 17
5.2 IP Routing ......................................................................................................................................................... 17
5.3 ARP................................................................................................................................................................... 18
5.4 The Transport Layer ......................................................................................................................................... 19
5.4.1 UDP...........................................................................................................................................................19
5.4.2 TCP ........................................................................................................................................................... 19
TCP Connection/Socket ................................................................................................................................19
TCP Header ................................................................................................................................................... 20
5.4.3 ICMP......................................................................................................................................................... 21
5.5 The Application Layer ...................................................................................................................................... 22
5.5.1 DNS...........................................................................................................................................................22
DCRTCP.LIB Implementation of DNS ........................................................................................................ 22
iv rabbit.com Table of Contents
Chapter 6: Dynamic C TCP/IP Implementation 25
6.1 TCP/IP Configuration Macros ..........................................................................................................................25
6.1.1 IP Addresses Set Manually........................................................................................................................25
6.1.2 IP Addresses Set Dynamically ..................................................................................................................25
6.1.3 Default Buffer Size....................................................................................................................................26
6.1.4 Delay a Connection ...................................................................................................................................26
6.1.5 Runtime Configuration..............................................................................................................................26
6.2 Skeleton Program ..............................................................................................................................................27
6.3 TCP Socket........................................................................................................................................................28
6.3.1 Passive Open .............................................................................................................................................28
Example of Passive Open ..............................................................................................................................29
6.3.2 Active Open...............................................................................................................................................30
6.3.3 TCP Socket Functions ...............................................................................................................................31
Control Functions ..........................................................................................................................................31
Status Functions .............................................................................................................................................32
I/O Functions .................................................................................................................................................33
6.4 UDP Interface....................................................................................................................................................33
6.4.1 Opening and Closing .................................................................................................................................34
6.4.2 Writing.......................................................................................................................................................34
6.4.3 Reading......................................................................................................................................................34
6.4.4 Checksums.................................................................................................................................................34
6.5 Program Design.................................................................................................................................................35
6.5.1 State-Based Program Design.....................................................................................................................35
6.5.2 Blocking vs. Non-Blocking .......................................................................................................................35
6.5.3 Blocking Macros .......................................................................................................................................36
6.6 Multitasking and TCP/IP...................................................................................................................................36
Chapter 7: References 37
An Introduction to TCP/IP rabbit.com 1
1. INTRODUCTION
This manual is intended for embedded systems engineers and support professionals who are not familiar
with basic networking concepts. An overview of an Ethernet network and the TCP/IP suite of protocols
used to communicate across the network will be given.
The implementation details that are discussed in this manual pertain to versions of Dynamic C prior to
7.05. Improvements and additions to the TCP/IP suite of protocols are fully documented in the Dynamic C
TCP/IP Users Manual, Vols. 1 and 2.
2 rabbit.com Introduction
An Introduction to TCP/IP rabbit.com 3
2. ETHERNET BASICS
TCP/IP (Transmission Control Protocol/Internet Protocol) is a set of protocols independent of the physical
medium used to transmit data, but most data transmission for Internet communication begins and ends
with Ethernet frames.
The Ethernet can use either a bus or star topology. A bus topology attaches all devices in sequence on a
single cable. In a star topology all devices are wired directly to a central hub. 10Base-T uses a combination
called a star-shaped bus topology because while the attached devices can share all data coming in on the
cable, the actual wiring is in a star shape.
The access method used by the Ethernet is called Carrier Sense Multiple Access with Collision Detect
(CSMA/CD). This is a contention protocol, meaning it is a set of rules to follow when there is competition
for shared resources.
2.1 Ethernet Address
All Ethernet interfaces have a unique 48-bit address that is supplied by the manufacturer. It is called the
Ethernet address (also known as the MAC address, for Media Access Control). Ethernet-enabled Rabbit
boards store this value in Flash Memory (EEPROM)
that is programmed at the factory. If you need unique
Ethernet addresses for some product you are making, you can obtain them from the IEEE Registration
Authority.
Run the utility program Samples/tcpip/display_MAC.c to read the MAC address of a Rabbit-
based board. The utility is included with Dynamic C starting with version 7.04.
2.2 Physical Connections
A Realtek RTL8019 10Base-T interface chip provides a 10 Mbps Ethernet connection. This chip is used
on many Ethernet-enabled Rabbit boards. The corresponding port can be connected directly to an Ethernet
network.
By using hubs and routers, a network can include a large number of computers. A network might include
all the computers in a particular building. A local network can be connected to the Internet by means of a
gateway. The gateway is a computer that is connected both to the local network and to the Internet. Data
that must be sent out over the Internet are sent to the local network interface of the gateway, and then the
gateway sends them on to the Internet for routing to some other computer in the world. Data coming in
from the Internet are directed to the gateway, which then sends them to the correct recipient on the local
network.
4 rabbit.com Ethernet Basics
2.2.1 Cables
Ethernet cables are similar to U.S. telephone plug cables, except they have eight connectors. For our pur-
poses, there are two types of cables—crossover and straight-through. In most instances, the straight-
through cables are used. It is necessary to use a crossover cable when two computers are connected
directly without a hub (for example, if you want to connect your PC’s Ethernet directly to the Rabbit Semi-
conductor TCP/IP Development Board.) Some hubs have one input that can accept either a straight-
through or crossover cable depending on the position of a switch. In this case make sure that the switch
position and cable type agree.
Figure 2.1 Ethernet Network
2.3 Frames
Bits flowing across the Ethernet are grouped into structures called frames. A frame must be between 46
and 1500 bytes in size. An Ethernet frame has four parts:
1. A Preamble of 8 bytes that helps synchronize the circuitry, thus allowing small bit rate differences
between sender and receiver.
2. A Header of 14 bytes that contains a 6 byte destination address, 6 byte source address and a 2 byte type
field.
3. A Data area of variable length that, along with the header, is passed to the IP layer (aka. the Network
layer).
4. A Trailer of 4 bytes that contains a CRC to guard against corrupted frames.
If the destination address is all 1 bits, it defines a broadcast frame and all systems on the local network
process the frame. There are also multicast frames. A subset of systems can form a “multicast” group that
has an address that does not match any other system on the network. All systems in a particular subset pro-
cess a packet with a destination address that matches their subset. A system can belong to any number of
subsets.
A system may put its interface(s) into promiscuous mode and process all frames sent across its Ethernet.
This is known as "sniffing the ether." It is used for network debugging and spying.
HUB
Local Network Computers
Gateway
To Internet
Ethernet
cables
An Introduction to TCP/IP rabbit.com 5
2.3.1 Collisions
In a star-shaped bus topology, all systems have access to the network at any time. Before sending data, a
system must determine if the network is free or if it is already sending a frame. If a frame is already being
sent, a system will wait. Two systems can “listen” on the network and “hear” silence and then proceed to
send data at the same time. This is called a collision. Ethernet hardware has collision detection sensors to
take care of this problem. This is the Collision Detect (CD) part of CSMA/CD. The colliding data is
ignored, and the systems involved will wait a random amount of time before resending their data.
6 rabbit.com Ethernet Basics
An Introduction to TCP/IP rabbit.com 7
3. NETWORKS
A network is a system of hardware and software, put together for the purpose of communication and
resource sharing. A network includes transmission hardware, devices to interconnect transmission media
and to control transmissions, and software to decode and format data, as well as to detect and correct prob-
lems.
There are several types of networks in use today. This chapter will focus on three of them:
LAN - Local Area Network
WAN - Wide Area Network
VPN - Virtual Private Network
3.1 LAN
The most widely deployed type of network, LANs were designed as an alternative to the more expensive
point-to-point connection. A LAN has high throughput for relatively low cost. LANs often rely on shared
media, usually a cable, for connecting many computers. This reduces cost. The computers take turns
using the cable to send data.
3.1.1 Repeaters and Bridges
LANs typically connect computers located in close physical proximity, i.e., all the computers in a building.
Repeaters are used to join network segments when the distance spanned causes electrical signals to
weaken. Repeaters are basically amplifiers that work at the bit level; they do not actively modify data that
is amplified and sent to the next segment.
Like repeaters, bridges are used to connect two LANs together. Unlike repeaters, bridges work at the
frame level. This is useful, allowing bridges to detect and discard corrupted frames. They can also perform
frame filtering, only forwarding a frame when necessary. Both of these capabilities decrease network con-
gestion.
Bridged LANs can span arbitrary distances when using a satellite channel for the bridge. The resulting net-
work is still considered a LAN and not a WAN.
8 rabbit.com Networks
3.2 WAN
To be considered a WAN, a network must be able to connect an arbitrary number of sites across an arbi-
trary distance, with an arbitrary number of computers at each site. In addition, it must have reasonable per-
formance (no long delays) and allow all of the computers connected to it to communicate simultaneously.
This is accomplished with packet switches.
Figure 3.1 WAN with 4 Switches
3.2.1 Packet Switches
Packet switches are small computers with CPUs, memory and I/O devices. They move complete packets,
using a technique called Store and Forward. An incoming packet is stored in a memory buffer and the CPU
is interrupted. The processor examines the packet and forwards it to the appropriate place. This strategy
allows the switch to accept multiple packets simultaneously.
As the figure above illustrates, WANs currently do not need to be symmetric.
3.2.2 Forwarding a Packet
A data structure contains the information that tells the switch where to send the packet next. This is called
a routing table. The destination address in the packet header determines the routing table entry that is used
to forward the packet. It could be forwarded to a computer attached to the switch that is examining the
packet or it could be to another switch in the WAN.
Switch
at Site 1
Switch
at Site 3
Switch
at Site 2
Connection
High-speed
Computer
Switch
at Site 4
An Introduction to TCP/IP rabbit.com 9
3.3 VPN
VPNs are built on top of a publicly-accessible infrastructure, such as the Internet or the public telephone
network. They use some form of encryption and have strong user authentication. Essentially a VPN is a
form of WAN; the difference is their ability to use public networks rather than private leased lines. A VPN
supports the same intranet services as a traditional WAN, but also supports remote access service. This is
good for telecommuting, as leased lines don’t usually extend to private homes and travel destinations.
A remote VPN user can connect via an Internet Service Provider (ISP) in the usual way. This eliminates
long-distance charges. The user can then initiate a tunnel request to the destination server. The server
authenticates the user and creates the other end of the tunnel. VPN software encrypts the data, packages it
in an IP packet (for compatibility with the Internet) and sends it through the tunnel, where it is decrypted at
the other end.
There are several tunneling protocols available: IP security (IPsec), Point-to-Point Tunneling Protocol
(PPTP) and Layer 2 Tunneling Protocol (L2TP).
3.4 Network Devices
Some network devices (repeaters, bridges and switches) were discussed in the previous sections. These are
all dedicated hardware devices. Network devices can also be non-dedicated systems running network soft-
ware.
3.4.1 Routers
A router is a hardware device that connects two or more networks. Routers are the primary backbone
device of the Internet, connecting different network technologies into a seamless whole. Each router is
assigned two or more IP addresses because each IP address contains a prefix that specifies a physical net-
work.
Before a packet is passed to the routing software, it is examined. If it is corrupted, it is discarded. If it is
not corrupted, a routing table is consulted to determine where to send it next. By default, routers do not
propagate broadcast packets (see “Directed Broadcast Address” on page 17). A router can be configured
to pass certain types of broadcasts.
3.4.2 Firewalls
A firewall is a computer, router, or some other communications device that controls data flow between net-
works. Generally, a firewall is a first-line defense against attacks from the outside world. A firewall can be
hardware-based or software-based. A hardware-based firewall is a special router with additional filter and
management capabilities. A software-based firewall runs on top of the operating system and turns a PC
into a firewall.
Conceptually, firewalls can be categorized as Network layer (aka Data Link layer) or Application layer.
Network layer firewalls tend to be very fast. They control traffic based on the source and destination
addresses and port numbers, using this information to decide whether to pass the data on or discard it.
Application layer firewalls do not allow traffic to flow directly between networks. They are typically hosts
running proxy servers. Proxy servers can implement protocol specific security because they understand the
application protocol being used. For instance, an application layer firewall can be configured to allow only
e-mail into and out of the local network it protects.
10 rabbit.com Networks
3.4.3 Gateways
A gateway performs routing functions. The term default gateway is used to identify the router that con-
nects a LAN to an internet. A gateway can do more than a router; it also performs protocol conversions
from one network to another.
3.5 Network Architecture
There are two network architectures widely used today: peer-to-peer and client/server. In peer-to-peer net-
works each workstation has the same capabilities and responsibilities. These networks are usually less
expensive and simpler to design than client/server networks, but they do not offer the same performance
with heavy traffic.
3.5.1 Client/Server Networks
The client/server paradigm requires some computers to be dedicated to serving other computers. A server
application waits for a client application to initiate contact.
Table 3-1. Summary of Differences between Client and Server Software
Client Software Server Software
An arbitrary application program that becomes
a client when a remote service is desired. It also
performs other local computations.
A special-purpose, privileged program
dedicated to providing one service. It can
handle multiple remote clients at the same time.
Actively initiates contact. Passively waits for contact.
Invoked by a user and executes for one session.
Invoked when the system boots and executes
through many sessions.
Capable of accessing multiple services as
needed, but actively contacts only one remote
server at a time.
Accepts contact from an arbitrary number of
clients, but offers a single service or a fixed set
of services.
Does not require special hardware or a
sophisticated operating system.
Can require powerful hardware and a
sophisticated operating system, depending on
how many clients are being served.
An Introduction to TCP/IP rabbit.com 11
3.5.1.1 Port Numbers
Port numbers are the mechanism for identifying particular client and server applications. Servers select a
port to wait for a connection. Most services have well-known port numbers. For example, HTTP uses port
80. When a web browser (the client) requests a web page it specifies port 80 when contacting the server.
Clients usually have ephemeral port numbers since they exist only as long as the session lasts.
Some of the common well-known TCP port numbers are listed in the table below.
Port
Number
Listening Application
7 Echo request
20/21 File Transfer Protocol (FTP)
23 Telnet
25 Simple Mail Transfer Protocol (SMTP)
53 Domain Name Server
80 HTTP Server
12 rabbit.com Networks
An Introduction to TCP/IP rabbit.com 13
4. NETWORK PROTOCOL LAYERS
Computers on a network communicate in agreed upon ways called protocols. The complexity of network-
ing protocol software calls for the problem to be divided into smaller pieces. A layering model aids this
division and provides the conceptual basis for understanding how software protocols together with hard-
ware devices provide a powerful communication system.
4.1 Layering Models
In the early days of networking, before the rise of the ubiquitous Internet, the International Organization
for Standardization (ISO) developed a layering model whose terminology persists today.
The 7-layer model has been revised to the 5-layer TCP/IP reference model to meet the current needs of
protocol designers.
Table 4-1. ISO 7-Layer Reference Model
Name of Layer Purpose of Layer
Layer 7 Application Specifies how a particular application uses a network.
Layer 6 Presentation Specifies how to represent data.
Layer 5 Session
Specifies how to establish communication with a remote
system.
Layer 4 Transport Specifies how to reliably handle data transfer.
Layer 3 Network
Specifies addressing assignments and how packets are
forwarded.
Layer 2 Data Link
Specifies the organization of data into frames and how to
send frames over a network.
Layer 1 Physical Specifies the basic network hardware.
Table 4-2. TCP/IP 5-Layer Reference Model
Name of Layer Purpose of Layer
Layer 5 Application Specifies how a particular application uses a network.
Layer 4 Transport Specifies how to ensure reliable transport of data.
Layer 3 Internet Specifies packet format and routing.
Layer 2 Network Specifies frame organization and transmittal.
Layer 1 Physical Specifies the basic network hardware.
14 rabbit.com Network Protocol Layers
4.2 TCP/IP Protocol Stack
TCP/IP is the protocol suite upon which all Internet communication is based. Different vendors have
developed other networking protocols, but even most network operating systems with their own protocols,
such as Netware, support TCP/IP. It has become the de facto standard.
Protocols are sometimes referred to as protocol stacks or protocol suites. A protocol stack is an appropriate
term because it indicates the layered approach used to design the networking software
Figure 4.1 Flow of Data Between Two Computers Using TCP/IP Stacks
Each host or router in the internet must run a protocol stack. The details of the underlying physical connec-
tions are hidden by the software. The sending software at each layer communicates with the corresponding
layer at the receiving side through information stored in headers. Each layer adds its header to the front of
the message from the next higher layer. The header is removed by the corresponding layer on the receiving
side.
Hardware
Hardware
Application Application
Transport
Transport
Network
Network
Data Link
Data Link
Virtual
Connection
Physical Connection
Identical Message
Identical Message
Identical Message
Identical Message
Sender Receiver
An Introduction to TCP/IP rabbit.com 15
5. TCP/IP PROTOCOLS
This chapter discusses the protocols available in the TCP/IP protocol suite. The following figure shows
how they correspond to the 5-layer TCP/IP Reference Model. This is not a perfect one-to-one correspon-
dence; for instance, Internet Protocol (IP) uses the Address Resolution Protocol (ARP), but is shown here
at the same layer in the stack.
Figure 5.1 TCP/IP Protocol Flow
Ethernet
ARP
IP
TCP UDP ICMP
HTTP
SMTP
FTP
DNS
TFTP
BOOTP
DHCP
PING
Transport
Network
Data Link
Application
16 rabbit.com TCP/IP Protocols
5.1 IP
IP provides communication between hosts on different kinds of networks (i.e., different data-link imple-
mentations such as Ethenet and Token Ring). It is a connectionless, unreliable packet delivery service.
Connectionless means that there is no handshaking, each packet is independent of any other packet. It is
unreliable because there is no guarantee that a packet gets delivered; higher-level protocols must deal with
that.
5.1.1 IP Address
IP defines an addressing scheme that is independent of the underlying physical address (e.g, 48-bit MAC
address). IP specifies a unique 32-bit number for each host on a network. This number is known as the
Internet Protocol Address, the IP Address or the Internet Address. These terms are interchangeable. Each
packet sent across the internet contains the IP address of the source of the packet and the IP address of its
destination.
For routing efficiency, the IP address is considered in two parts: the prefix which identifies the physical
network, and the suffix which identifies a computer on the network. A unique prefix is needed for each
network in an internet. For the global Internet, network numbers are obtained from Internet Service Pro-
viders (ISPs). ISPs coordinate with a central organization called the Internet Assigned Number Authority
(IANA).
5.1.2 IP Address Classes
The first four bits of an IP address determine the class of the network. The class specifies how many of the
remaining bits belong to the prefix (aka Network ID) and to the suffix (aka Host ID). The first three
classes, A, B and C, are the primary network classes.
When interacting with mere humans, software uses dotted decimal notation; each 8 bits is treated as an
unsigned binary integer separated by periods. IP reserves host address 0 to denote a network. 140.211.0.0
denotes the network that was assigned the class B prefix 140.211.
5.1.3 Netmasks
Netmasks are used to identify which part of the address is the Network ID and which part is the Host ID.
This is done by a logical bitwise-AND of the IP address and the netmask. For class A networks the net-
mask is always 255.0.0.0; for class B networks it is 255.255.0.0 and for class C networks the netmask is
255.255.255.0.
Class First 4 Bits
Number Of
Prefix Bits
Max # Of
Networks
Number Of
Suffix Bits
Max # Of Hosts Per
Network
A
0xxx 7 128 24 16,777,216
B
10xx 14 16,384 16 65,536
C
110x 21 2,097,152 8 256
D
1110 Multicast
E
1111 Reserved for future use.
/