TCP / IP Suite

 

AH

RFC1826 http://www.cis.ohio-state.edu/htbin/rfc/rfc1826.html
This RFC has been replaced by RFC 2402.
The information on this page will be updated to suit the new RFC in the near future.
RFC1827 http://www.cis.ohio-state.edu/htbin/rfc/rfc1827.html

The IP Authentication Header seeks to provide security by adding
authentication information to an IP datagram. This authentication
information is calculated using all of the fields in the IP datagram
(including not only the IP Header but also other headers and the user
data) which do not change in transit. Fields or options which need
to change in transit (e.g., hop count, time to live, ident, fragment offset, or routing pointer, such as audio and video. Sources of data can include both live data feeds and stored clips. This protocol is intended to control multiple data delivery sessions, provide a means for choosing delivery channels such as UDP, multicast UDP and TCP, and provide a means for choosing delivery mechanisms bases upon RTP. ) are considered to be zero
for the calculation of the authentication data. This provides
significantly more security than is currently present in IPv4 and
might be sufficient for the needs of many users.

When used with IPv6, the Authentication Header normally appears after the IPv6 Hop-by-Hop Header and before the IPv6 Destination Options. When used with IPv4, the Authentication Header normally follows the main IPv4 header.
The format of AH is shown in the following illustration:

Next header
Length
Reserved
Security parameters index
Authentication data
(variable number of 32-bit words)
1 byte 1 byte 2 bytes
IP Authentication Header structure

Interested in more details about testing this protocol? click here

 

ESP

RFC1826 http://www.cis.ohio-state.edu/htbin/rfc/rfc1826.html
RFC1827 http://www.cis.ohio-state.edu/htbin/rfc/rfc1827.html
This RFC has been replaced by RFC 2406.
The information on this page will be updated to suit the new RFC in the near future.

The IP Encapsulating Security Payload (ESP) seeks to provide confidentiality and integrity by encrypting data to be protected and placing the encrypted data in the data portion of the IP ESP. Depending on the user's security requirements, this mechanism may be used to encrypt either a transport-layer segment (e.g., TCP, UDP, ICMP, IGMP) or an entire IP datagram. Encapsulating the protected data is necessary to provide confidentiality for the entire original datagram.

ESP may appear anywhere after the IP header and before the final transport-layer protocol. The Internet Assigned Numbers Authority has assigned Protocol Number 50 to ESP. The header immediately preceding an ESP header will always contain the value 50 in its Next Header (IPv6) or Protocol (IPv4) field. ESP consists of an unencrypted header followed by encrypted data. The encrypted data includes both the protected ESP header fields and the protected user data, which is either an entire IP datagram or an upper-layer protocol frame (e.g., TCP or UDP).

Security association identifier (SPI)
Opaque transform data
(variable length)
32 bits
IP ESP structure

Security association identifier
The SPI is a 32-bit pseudo-random value identifying the security association for this datagram. If no security association has been established, the value of the SPI field is 0x00000000. An SPI is similar to the SAID used in other security protocols. The name has been changed because the semantics used here are not exactly the same as those used in other security protocols.

Interested in more details about testing this protocol? click here

 

TLS

ftp://ftp.rfc-editor.org/in-notes/rfc2246.txt

The primary goal of the TLS (Transport Layer Security) Protocol is to provide privacy and data integrity between two communicating applications. The protocol is composed of two layers: the TLS Record Protocol and the TLS Handshake Protocol. At the lowest level, layered on top of some reliable transport protocol (e.g., TCP[TCP]), is the TLS Record Protocol. The TLS Record Protocol provides connection security that has two basic properties:

  • Privacy - symmetric cryptography is used for data encryption (e.g., DES [DES], RC4 [RC4], etc.) The keys for this symmetric encryption are generated uniquely for each connection and are based on a secret negotiated by another protocol (such as the TLS Handshake Protocol). The Record Protocol can also be used without encryption.
  • Reliability - message transport includes a message integrity check using a keyed MAC. Secure hash functions (e.g., SHA, MD5, etc.) are used for MAC computations. The Record Protocol can operate without a MAC, but is generally only used in this mode while another protocol is using the Record Protocol as a transport for negotiating security parameters.

The TLS Record Protocol is used for encapsulation of various higher level protocols. One such encapsulated protocol, the TLS Handshake Protocol, allows the server and client to authenticate each other and to negotiate an encryption algorithm and cryptographic keys before the application protocol transmits or receives its first byte of data. The TLS Handshake Protocol provides connection security that has three basic properties:

  • The peer's identity can be authenticated using asymmetric, or public key, cryptography (e.g., RSA [RSA], DSS [DSS], etc.). This authentication can be made optional, but is generally required for at least one of the peers.
  • The negotiation of a shared secret is secure: the negotiated secret is unavailable to eavesdroppers, and for any authenticated connection the secret cannot be obtained, even by an attacker who can place himself in the middle of the connection.
  • The negotiation is reliable: no attacker can modify the negotiation communication without being detected by the parties to the communication.

One advantage of TLS is that it is application protocol independent.
Higher level protocols can layer on top of the TLS Protocol transparently. The TLS standard, however, does not specify how protocols add security with TLS; the decisions on how to initiate TLS handshaking and how to interpret the authentication certificates exchanged are left up to the judgment of the designers and implementors of protocols which run on top of TLS.

Header
Fragmentation

struct {
    uint8 major, minor;
} ProtocolVersion;

enum {
   change_cipher_spec(20), alert(21), handshake(22),
   application_data(23), (255)
} ContentType;

struct {
   ContentType type;
   ProtocolVersion version;
   uint16 length;
   opaque fragment[TLSPlaintext.length];
} TLSPlaintext;

Record compression and decompression

struct {
   ContentType type; /* same as TLSPlaintext.type */
   ProtocolVersion version;/* same as TLSPlaintext.version */
   uint16 length;
   opaque fragment[TLSCompressed.length];
} TLSCompressed;

Record payload protection

struct {
   ContentType type;
   ProtocolVersion version;
   uint16 length;
   select (CipherSpec.cipher_type) {
      case stream: GenericStreamCipher;
      case block: GenericBlockCipher;
   } fragment;
} TLSCiphertext;

Interested in more details about testing this protocol? click here

 

BGP-4

RFC1654: http://www.cis.ohio-state.edu/htbin/rfc/rfc1654.html
This RFC has been replaced by RFC 1771.
The information on this page will be updated to suit the new RFC in the near future.


The Border Gateway Protocol (BGP) is an inter-Autonomous System routing protocol. The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. BGP-4 provides a new set of mechanisms for supporting classes interdomain routing.
(Compliant with IETF RFC1654.)

The format of the header is shown in the following illustration:

Marker
Length
Type
 
16
2
1
bytes
BGP-4 header structure
 

Marker
A 16-byte message containing a value predictable by the receiver of the message.

Length
The length of the message including the header.

Type
The message type. Possible messages are:
Open, Update, Notification, KeepAlive.

Interested in more details about testing this protocol? click here

 

 EGP

RFC904 http://www.cis.ohio-state.edu/htbin/rfc/rfc904.html

The Exterior Gateway Protocol (EGP) exists in order to convey net-reachability information between neighboring gateways, possibly in different autonomous systems. The protocol includes mechanisms to acquire neighbors, monitor neighbor reachability and exchange net-reachability information in the form of Update messages. The protocol is based on periodic polling using Hello/I-Heard-You (I-H-U) message exchanges to monitor neighbor reachability and Poll commands to solicit Update responses.

The format of the header is shown in the following illustration:

EGP Version Type Code Status
Checksum Autonomous System number
 Sequence number  
1 byte 1 byte 1 byte 1 byte
EGP structure

EGP version
The version number. This version is version 2.

Type
Identifies the message type.

Code
Identifies the message code.

Status
Contains message-dependent status information.

Checksum
The EGP checksum is the 16-bit one's complement of the one's complement sum of the EGP message starting with the EGP version number field. When computing the checksum the checksum field itself should be zero.

Autonomous System Number
Assigned number identifying the particular autonomous system.

Sequence Number
Send state variable (commands) or receive state variable (responses and indications).

Interested in more details about testing this protocol? click here

EIGRP

EIGRP Enhanced Interior Gateway Routing Protocol (EIGRP) is an enhanced version of IGRP. IGRP is Cisco's Interior Gateway Routing Protocol used in TCP/IP and OSI internets. It is regarded as an interior gateway protocol (IGP) but has also been used extensively as an exterior gateway protocol for inter-domain routing. IGRP uses distance vector routing technology. The same distance vector technology found in IGRP is also used in EIGRP, and the underlying distance information remains unchanged. The convergence properties and the operating efficiency of this protocol have improved significantly.

The format of the EIGRP header is shown in the following illustration.

8
16
32 bits
Version
Opcode
Checksum
Flags
Sequence number
Acknowledge number
Autonomous system number
Type
Length
EIGRP header structure

Version
The version of the protocol.

Opcode

1    Update.
2    Reserved.
3    Query.
4    Hello.
5    IPX-SAP.

Type
1    EIGRP Parameters.
2    Reserved.
3    Sequence.
4    Software version.
5    Next Multicast sequence.

Length
Length of the frame.

Interested in more details about testing this protocol? click here

 

GRE

RFC 1701: http://www.cis.ohio-state.edu/htbin/rfc/rfc1701.html
RFC 1702: http://www.cis.ohio-state.edu/htbin/rfc/rfc1702.html

The Generic Routing Encapsulation (GRE) protocol provides a mechanism for encapsulating arbitrary packets within an arbitrary transport protocol. In the most general case, a system has a packet that needs to be encapsulated and routed (the payload packet). The payload is first encapsulated in a GRE packet, which possibly also includes a route. The resulting GRE packet is then encapsulated in some other protocol and forwarded (the delivery protocol).

GRE is also used with IP, using IP as the delivery protocol or the payload protocol. The GRE header used in PPTP is enhanced slightly from that specified in the current GRE protocol specification.

The format of the header is shown in the following illustration:

Flags Protocol type
Checksum (optional) Offset (optional)
Key (optional)
Sequence number (optional)
Routing (optional)
1 byte 1 byte 1 byte 1 byte
GRE header structure

Flags
The GRE flags are encoded in the first two octets.
Bit 0 is the most significant bit, bit 12 is the least significant bit.
Flags are as follows:
Checksum present (bit 0). When set to 1, the Checksum field is present and contains valid information.
Routing present (bit 1). When set to 1, the Offset and Routing fields are present and contain valid information.
Key present (bit 2). When set to 1, the Key field is present in the GRE header.
Sequence number present (bit 3). When set to 1, the Sequence number field is present.
Strict Source Route (bit 4). It is recommended that this bit only be set to 1 if all of the Routing Information consists of Strict Source Routes.
Recursion Control (bits 5-7). Contains a three bit unsigned integer which contains the number of additional encapsulations which are permissible.
Version Number (bits 13-15). Contains the value 0.

Protocol type
Contains the protocol type of the payload packet. In general, the value will be the Ethernet protocol type field for the packet.

Offset
Indicates the octet offset from the start of the Routing field to the first octet of the active Source Route Entry to be examined.

Checksum
Contains the IP (one’s complement) checksum of the GRE header and the payload packet.

Key
Contains a four octet number which was inserted by the encapsulator. It may be used by the receiver to authenticate the source of the packet.

Sequence number
Contains an unsigned 32 bit integer which is inserted by the encapsulator. It may be used by the receiver to establish the order in which packets have been transmitted from the encapsulator to the receiver.

Routing
Contains data which may be used in routing this packet.

The format of the enhanced GRE header is as follows:

Flags Protocol type
Key (HW) payload length
Key (LW) call ID
Sequence number (optional)
Acknowledgement number (optional)
1 byte 1 byte 1 byte 1 byte
Enhanced GRE header structure

Flags
Flags are defined as follows:
C (bit 0). Checksum Present.
R (bit 1). Routing Present.
K (bit 2). Key Present.
S (bit 3). Sequence Number Present.
s (bit 4). Strict source route present.
Recur (bits 5-7). Recursion control.
A (bit 8). Acknowledgment sequence number present.
Flags (bits 9-12). Must be set to zero.
Ver (bits 13-15). Must contain 1 (enhanced GRE).

Protocol type
Set to hex 880B. Key Use of the Key field is up to the implementation.

Sequence number
Contains the sequence number of the payload.

Acknowledgment number
Contains the sequence number of the highest numbered GRE packet received by the sending peer for this user session.

Interested in more details about testing this protocol? click here

 

HSRP

RFC2281 http://www.cis.ohio-state.edu/htbin/rfc/rfc2281.html

The Cisco Hot Standby Router Protocol (HSRP) provides a mechanism which is designed to support non-disruptive failover of IP traffic in certain circumstances. In particular, the protocol protects against the failure of the first hop router when the source host cannot learn the IP address of the first hop router dynamically. The protocol is designed for use over multi-access, multicast or broadcast capable LANs (e.g., Ethernet). A large class of legacy host implementations that do not support dynamic discovery are capable of configuring a default router. HSRP provides failover services to those hosts.

HSRP runs on top of UDP, and uses port number 1985. Packets are sent to multicast address 224.0.0.2 with TTL 1. Routers use their actual IP address as the source address for protocol packets, not the virtual IP address. This is necessary so that the HSRP routers can identify each other. The format of the data portion of the UDP datagram is:

Version
Op code
State
Hellotime 
 Holdtime  Priority  Group  Reserved
Authentication data
Authentication data  
Virtual IP address
1 byte 1 byte 1 byte 1 byte
HSRP structure

Version
HSRP version number, 0 for this version.

Op code
Type of message contained in the packet. Possible values are:
0 - Hello, sent to indicate that a router is running and is capable of becoming the active or standby router.
1 - Coup, sent when a router wishes to become the active router.

2 - Resign, sent when a router no longer wishes to be the active router.

State
Internally, each router in the standby group implements a state machine. The State field describes the current state of the router sending the message. Possible values are:
0    Initial
1    Learn
2    Listen
4    Speak
8    Standby
16   Active

Hellotime
Approximate period between the Hello messages that the router sends (for Hello messagesonly). The time is given in seconds. If the Hellotime is not configured on a router, then it may be learned from the Hello message from the active router. The Hellotime should only be learned if no Hellotime is configured and the Hello message is authenticated. A router that sends a Hello message must insert the Hellotime that it is using in the Hellotime field in the Hello message. If the Hellotime is not learned from a Hello message from the active router and it is not manually configured, a default value of 3 seconds is recommended.

Holdtime
The amount of time, in seconds, that the current Hello message should be considered valid. (For Hello messags only.)

Priority
Used to elect the active and standby routers. When comparing priorities of two different routers, the router with the numerically higher priority wins. In the case of routers with equal priority the router with the higher IP address wins.

Group
Identifies the standby group. For Token Ring, values between 0 and 2 inclusive are valid. For other media, values between 0 and 255 inclusive are valid.

Authentication data
(8 bytes) Clear-text 8 character reused password. If no authentication data is configured, the recommended default value is 0x63 0x69 0x73 0x63 0x6F 0x00 0x00 0x00.

Virtual IP address
(4 bytes) Virtual IP address used by this group. If the virtual IP address is not configured on a router, then it may be learned from the Hello message from the active router. An address should only be learned if no address was configured and the Hello message is authenticated.

Interested in more details about testing this protocol? click here

 

IGRP

The Interior Gateway Routing Protocol (IGRP) was developed by the Cisco company. It is used to transfer routing information between routers.
IGRP is sent using IP datagrams with IP 9 (IGP). The packet begins with a header which starts immediately after the IP header.

 
Octets
Version
1
Opcode
1
Edition
1
ASystem
1
Ninterior
1
Nsystem
1
Nexterior
1
Checksum
1
IGRP header structure
1

Version
Protocol version number (currently 1).

Opcode
Operation code indicating the message type:
1   Update.
2   Request.

Edition
Serial number which is incremented whenever there is a change in the routing table. The edition number allows gateways to avoid processing updates containing information that they have already seen.

ASystem
Autonomous system number. A gateway can participate in more than one autonomous system where each system runs its own IGRP. For each autonomous system, there are completely separate routing tables. This field allows the gateway to select which set of routing tables to use.
Ninterior, Nsystem, Nexterior
Indicate the number of entries in each of these three sections of update messages. The first entries (Ninterior) are taken to be interior, the next entries (Nsystem) as being system, and the final entries (Nexterior) as exterior.

Checksum
IP checksum which is computed using the same checksum algorithm as a UDP checksum. The checksum is computed on the IGRP header and any routing information that follows it. The checksum field is set to zero when computing the checksum. The checksum does not include the IP header and there is no virtual header as in UDP and TCP.
An IGRP request asks the recipient to send its routing table. The request message has only a header. Only the Version, Opcode and ASystem fields are used; all other fields are zero.
An IGRP update message contains a header, immediately followed by routing entries. As many routing entries as possible are included to fit into a 1500-byte datagram (including the IP header). With current structure declarations, this allows up to 104 entries. If more entries are needed, several update messages are sent.

Interested in more details about testing this protocol? click here

 

1 2 3 4 5 6 7 8 9

TCP/IP Family Protocol Information
AH | ATMP | ARP/RARP | BGMP | BGP-4 | COPS | DCAP | DHCP | Diameter | DIS | DNS | DVMRP | EGP | EIGRP | ESP | FANP | Finger | FTP | HSRP | HTTP | ICMP/ICMPv6 | IGMP | IGRP | IMAP4 | IMPPpre/IMPPmes | IPDC | IP | IPv6 | IRC | ISAKMP | ISAKMP/IKE | iSCSI | ISTP | ISP | LDAP | L2F | L2TP | MARS | Mobile IP | MZAP | NARP | NetBIOS/IP | NHRP | NTP | OSPF | PIM | POP3 | PPTP | Radius | RLOGIN | RIP2 | RIPng for IPv6 | RSVP | RTSP | RUDP | SCTP | S-HTTP | SLP | SMTP | SNMP | SOCKS | TACACS+ | TALI | TCP | TELNET | TFTP | TLS | TRIP | UDP | Van Jacobson | VRRP | WCCP | X-Window | XOT

 
Additional Information