Chapter 10 - TCP/IP End-to-End Delivery

Published: August 10, 2005 | Updated: April 18, 2006

Writer: Joe Davies

Abstract

This chapter describes the end-to-end delivery processes for IPv4 and IPv6 traffic. A network administrator must understand these processes to determine how traffic flows on a network and troubleshoot connectivity problems. This chapter also describes end-to-end delivery processes in further detail by analyzing the steps for typical IPv4 and IPv6 traffic on an example network.

For a download of the entire "TCP/IP Fundamentals for Microsoft Windows" online book, which contains a version of this chapter that has been updated for Windows Vista and Windows Server 2008, click here.

On This Page

Chapter Objectives
End-to-End IPv4 Delivery Process
Step-by-Step IPv4 Traffic Example
End-to-End IPv6 Delivery Process
Step-by-Step IPv6 Traffic Example
Chapter Summary
Chapter Glossary

Chapter Objectives

After completing this chapter, you will be able to:

  • Describe the details of the end-to-end IPv4 delivery process for the source host, the intermediate routers, and the destination host.

  • List the steps involved when IPv4 traffic is sent across an example network.

  • Describe the details of the end-to-end IPv6 delivery process for the source host, the intermediate routers, and the destination host.

  • List the steps involved when IPv6 traffic is sent across an example network.

End-to-End IPv4 Delivery Process

The end-to-end delivery process for IPv4 traffic consists of the following:

  • The source host sends the packet either to a router or to the final destination (if the destination is a neighbor).

  • The router forwards the packet either to another router or to the final destination (if the destination is a neighbor).

  • The destination host receives the packet and passes the data to the appropriate application.

Note

The following processes assume that the IPv4 header contains no options.

IPv4 on the Source Host

When an IPv4 source host sends an IPv4 packet, the host uses a combination of local host tables and the Address Resolution Protocol (ARP). An IPv4 source host uses the following algorithm when sending a packet to an arbitrary destination:

  1. Specify either a default or application-specified value for the Time-to-Live (TTL) field.

  2. Check the route cache for an entry that matches the destination address. The route cache is a table that stores the next-hop IPv4 address and interface for destinations to which traffic has been recently sent. This step prevents IPv4 from performing the route determination process for every IPv4 packet sent.

  3. If the route cache contains an entry that matches the destination address, obtain the next-hop address and interface from the entry, and go to step 7.

  4. If the route cache does not contain an entry that matches the destination address, check the local IPv4 routing table for the longest matching route with the lowest metric to the destination address. If multiple longest matching routes have the lowest metric, choose the matching route for the interface that is first in the binding order.

  5. Based on the longest matching route with the lowest metric, determine the next-hop address and interface to use for forwarding the packet.
    If no route is found, indicate a routing error to the application that is sending the packet.

  6. Update the route cache with an entry that contains the destination IPv4 address of the packet and its corresponding next-hop address and interface.

  7. Check the ARP cache of the next-hop interface for an entry that matches the next-hop IPv4 address. You can view the ARP cache with the arp –a command.

  8. If the ARP cache contains an entry that matches the next-hop address, obtain the corresponding media access control (MAC) address, and go to step 10.

  9. If the ARP cache does not contain an entry that matches the next-hop address, use ARP to obtain the MAC address for the next-hop IPv4 address.
    If ARP is successful, update the ARP cache with an entry that contains the next-hop IP address and its corresponding MAC address.
    If ARP is not successful, indicate an error to IP.

  10. Send the packet by using the MAC address of the ARP cache entry.

Figure 10-1 shows the IPv4 sending process for a source host.

Bb727011.fig10-1-small(en-us,TechNet.10).gif

Figure 10-1 The IPv4 sending process for a source host

IPv4 on the Router

Just like an IPv4 source host, the process by which an IPv4 router forwards an IPv4 packet uses a combination of local router tables and ARP. An IPv4 router uses the following algorithm when receiving and forwarding a packet to an arbitrary unicast destination:

  1. Calculate the IPv4 header checksum. Compare the calculated value to the value included in the IPv4 header of the packet.
    If the checksums have different values, discard the packet.

  2. Verify whether the destination address in the IPv4 packet corresponds to an address assigned to an interface of the router.
    If so, process the IPv4 packet as the destination host. (See step 3 in "IPv4 on the Destination Host" in this chapter.)

  3. Decrement the value of the TTL field by 1.
    If the value of the TTL field is less than 1, send an Internet Control Message Protocol (ICMP) Time Exceeded-TTL Exceeded in Transit message to the sender, and discard the packet.
    If the value of the TTL field is greater than 0, recalculate the Checksum field, and then update the TTL and the Checksum fields in the IPv4 header of the packet.

  4. Check the route cache for an entry that matches the destination address.

  5. If the route cache contains an entry that matches the destination address, obtain the next-hop IPv4 address and interface from the entry, and go to step 10.

  6. If the route cache does not contain an entry that matches the destination address, check the local IPv4 routing table for the longest matching route to the destination IPv4 address.

  7. Based on the longest matching route, determine the next-hop IPv4 address and interface to use for forwarding the packet.
    If no route is found, send an ICMP Destination Unreachable-Host Unreachable message to the source host, and discard the packet.

  8. Update the route cache with an entry that contains the destination IPv4 address of the packet and its corresponding next-hop address and interface.

  9. Compare the IP maximum transmission unit (MTU) of the next-hop interface to the size of the IPv4 packet being forwarded. If the IP MTU of the next-hop interface is smaller than the packet size, check the Don’t Fragment (DF) flag in the IPv4 header.
    If DF flag is set to 1, send an ICMP Destination Unreachable-Fragmentation Needed and DF Set message to the source host, and discard the packet.
    If DF flag is set to 0, fragment the IPv4 packet payload.

  10. Check the ARP cache of the next-hop interface for an entry that matches the next-hop IPv4 address.

  11. If the ARP cache contains an entry that matches the next-hop IPv4 address, obtain the corresponding MAC address, and go to step 13.

  12. If the ARP cache does not contain an entry that matches the next-hop IPv4 address, use ARP to obtain the MAC address for the next-hop IPv4 address.
    If ARP is successful, update the ARP cache with an entry that contains the next-hop IP address and its corresponding MAC address.
    If ARP is not successful, send an ICMP Destination Unreachable-Host Unreachable message to the source host, and discard the packet.

  13. Send the packet by using the MAC address of the ARP cache entry.

Figures 10-2 and 10-3 show the router forwarding process.

Bb727011.fig10-2-small(en-us,TechNet.10).gif

Figure 10-2 IPv4 router forwarding process (part 1)

Bb727011.fig10-3-small(en-us,TechNet.10).gif

Figure 10-3 IPv4 router forwarding process (part 2)

Each IPv4 router in the path between the source host and the destination host repeats this process.

IPv4 on the Destination Host

A destination IPv4 host uses the following algorithm when receiving an IPv4 packet:

  1. Calculate the IPv4 header checksum. Compare the calculated value to the value included in the IPv4 header of the packet.
    If the checksums have different values, discard the packet.

  2. Verify whether the destination address in the IPv4 packet corresponds to an IPv4 address assigned to a local host interface.
    If the destination address is not assigned to a local host interface, discard the packet.

  3. Verify that the value of the Protocol field corresponds to an upper layer protocol in use on the host.
    If the protocol does not exist, send an ICMP Destination Unreachable-Protocol Unreachable message back to the sender, and discard the packet.

  4. If the upper layer protocol data unit (PDU) is not a Transmission Control Protocol (TCP) segment or User Datagram Protocol (UDP) message, pass the upper layer PDU to the appropriate protocol.

  5. If the upper layer PDU is a TCP segment or UDP message, check the destination port.
    If no application is listening on the UDP port number, send an ICMP Destination Unreachable-Port Unreachable message back to the sender, and discard the packet. If no application is listening on the TCP port number, send a TCP Connection Reset segment back to the sender, and discard the packet.

  6. For the application listening on the UDP or TCP destination port, process the contents of the TCP segment or UDP message.

Figure 10-4 shows the IPv4 receiving process on the destination host.

Bb727011.fig10-4-small(en-us,TechNet.10).gif

Figure 10-4 IPv4 receiving process on the destination host

Step-by-Step IPv4 Traffic Example

To show the end-to-end delivery process, this section steps through an example of IPv4 traffic when a user types the URL of a Web page in the Address bar of a Web browser and views a Web page from a Web server. This example demonstrates the following aspects of IPv4 traffic:

  • Name resolution using the Domain Name System (DNS)

  • End-to-end delivery using a source host, intermediate routers, and a destination host

  • Creation of a TCP connection, including the three-way TCP handshake

  • Use of the Hypertext Transfer Protocol (HTTP) to download the Hypertext Markup Language (HTML) text of a Web page

Network Configuration

Figure 10-5 shows a simple private IPv4 intranet consisting of four subnets connected with three routers. The example intranet contains a Web client, a DNS server, and a Web server.

Bb727011.fig10-5-small(en-us,TechNet.10).gif

Figure 10-5 An example IPv4 intranet

The following sections describe the IPv4 configuration of each of these components.

Web Client

The Web client is connected to the 10.0.13.0/24 subnet and uses the IPv4 address of 10.0.13.110/24, the default gateway at 10.0.13.1, and the DNS server at 10.0.47.91. The Web client has the following routes:

  • 10.0.13.0/24 (directly attached network route)

  • 0.0.0.0/0 with the next-hop address of 10.0.13.1 (default route)

Note

To simplify the discussion for each component of the example IPv4 intranet, this example lists only the most relevant routes.

Router 1

Router 1 is connected to the 10.0.13.0/24 subnet using the IPv4 address 10.0.13.1 and the 10.0.21.0/24 subnet using the IPv4 address 10.0.21.1. Router 1 has the following routes:

  • 10.0.13.0/24 (directly attached network route)

  • 10.0.21.0/24 (directly attached network route)

  • 10.0.47.0/24 with the next-hop address of 10.0.21.2

  • 10.0.48.0/24 with the next-hop address of 10.0.21.3

Router 2

Router 2 is connected to the 10.0.21.0/24 subnet using the IPv4 address 10.0.21.2 and the 10.0.47.0/24 subnet using the IPv4 address 10.0.47.1. Router 2 has the following routes:

  • 10.0.21.0/24 (directly attached network route)

  • 10.0.47.0/24 (directly attached network route)

  • 10.0.13.0/24 with the next-hop address of 10.0.21.1

  • 10.0.48.0/24 with the next-hop address of 10.0.21.3

Router 3

Router 3 is connected to the 10.0.21.0/24 subnet using the IPv4 address 10.0.21.3 and the 10.0.48.0/24 subnet using the IPv4 address 10.0.48.1. Router 3 has the following routes:

  • 10.0.21.0/24 (directly attached network route)

  • 10.0.48.0/24 (directly attached network route)

  • 10.0.13.0/24 with the next-hop address of 10.0.21.1

  • 10.0.47.0/24 with the next-hop address of 10.0.21.2

DNS Server

The DNS server is connected to the 10.0.47.0/24 subnet and uses the IPv4 address of 10.0.47.91/24 and the default gateway of 10.0.47.1. The DNS server has the following routes:

  • 10.0.47.0/24 (directly attached network route)

  • 0.0.0.0/0 with the next-hop address of 10.0.47.1

The DNS server has an Address (A) resource record that maps the name web1.example.com to the IPv4 address of 10.0.48.12.

Web Server

The Web server is connected to the 10.0.48.0/24 subnet and uses the IPv4 address of 10.0.48.12/24, the default gateway of 10.0.48.1, and the DNS server of 10.0.47.91. The Web server has the following routes:

  • 10.0.48.0/24 (directly attached network route)

  • 0.0.0.0/0 with the next-hop address of 10.0.48.1

Web Traffic Example

This example assumes the following:

  • The ARP and route caches on all of the components of the network are empty.

  • The DNS client resolver cache on the Web client is empty.

  • The Web browser on the Web client has not cached the contents of the Web page on the Web server.

In this example, a user on the Web client runs a Web browser, types the address https://web1.example.com/example.htm in the Web browser's Address bar, and presses ENTER. The computers on this example intranet send the following set of messages:

  1. The Web client sends a DNS Name Query Request message to the DNS server.

  2. The DNS server sends a DNS Name Query Response message to the Web client.

  3. The Web client sends a TCP Synchronize (SYN) segment to the Web server.

  4. The Web server sends a TCP SYN-Acknowledgement (ACK) segment to the Web client.

  5. The Web client sends a TCP ACK segment to the Web server.

  6. The Web client sends an HTTP Get message to the Web server.

  7. The Web server sends an HTTP Get-Response message to the Web client.

The following sections describe the end-to-end delivery of each of these messages.

DNS Name Query Request Message to the DNS Server

The following process occurs when the Web client sends the DNS Name Query Request message to the DNS server:

  1. The Web browser parses the address in the Address bar and uses a Windows Sockets gethostbyname() or getaddrinfo() function to attempt to resolve the name web1.example.com to its IPv4 address. For this example, the DNS server is only storing a single A record for the name web1.example.com.

  2. The Web client constructs a DNS Name Query Request message with the source IPv4 address of 10.0.13.110 and the destination IPv4 address of 10.0.47.91.

  3. The Web client checks its route cache for an entry for the IPv4 address of 10.0.47.91 and does not find a match.

  4. The Web client performs the route determination process to find the closest matching route for the destination IPv4 address of 10.0.47.91. The default route (0.0.0.0/0) is the closest matching route. The Web client sets the next-hop IPv4 address to 10.0.13.1 and the next-hop interface to the network adapter that is attached to the 10.0.13.0/24 subnet.

  5. The Web client updates its route cache with an entry for 10.0.47.91 with the next-hop IPv4 address of 10.0.13.1 and the next-hop interface of the network adapter that is attached to the 10.0.13.0/24 subnet.

  6. The Web client checks its ARP cache for an entry with the IPv4 address of 10.0.13.1 and does not find a match.

  7. The Web client broadcasts an ARP Request message, querying all nodes on the 10.0.13.0/24 subnet for the MAC address of the interface that is assigned the IPv4 address of 10.0.13.1.

  8. Router 1 receives the ARP Request message. Because Router 1 is assigned the IPv4 address of 10.0.13.1, that router adds an entry to its ARP cache for the IPv4 address 10.0.13.110 and the MAC address of the Web client's interface on the 10.0.13.0/24 subnet.

  9. Router 1 sends a unicast ARP Reply message to the Web client.

  10. The Web client updates its ARP cache with an entry for the IPv4 address of 10.0.13.1 and the MAC address of Router 1's interface on the 10.0.13.0/24 subnet.

  11. The Web client sends the unicast DNS Name Query Request message destined for 10.0.47.91 to the MAC address of Router 1's interface on the 10.0.13.0/24 subnet.

  12. Router 1 receives the DNS Name Query Request message.

  13. Router 1 checks its route cache for an entry for 10.0.47.91 and does not find a match.

  14. Router 1 performs the route determination process for the destination address 10.0.47.91. The closest matching route is the route for 10.0.47.0/24. Router 1 sets the next-hop address to 10.0.21.2 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  15. Router 1 updates its route cache with an entry for 10.0.47.91 with the next-hop IPv4 address of 10.0.21.2 and the next-hop interface of the network adapter that is attached to the 10.0.21.0/24 subnet.

  16. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.21.2 and does not find a match.

  17. Router 1 broadcasts an ARP Request message, querying all nodes on the 10.0.21.0/24 subnet for the MAC address of the interface that is assigned the IPv4 address of 10.0.21.2.

  18. Router 2 receives the ARP Request message. Because it is assigned the IPv4 address of 10.0.21.2, Router 2 adds an entry to its ARP cache for the IPv4 address 10.0.21.1 and the MAC address of Router 1's interface on the 10.0.21.0/24 subnet.

  19. Router 2 sends a unicast ARP Reply message to Router 1.

  20. Router 1 updates its ARP cache with an entry for the IPv4 address of 10.0.21.2 and the MAC address of Router 2's interface on the 10.0.21.0/24 subnet.

  21. Router 1 forwards the unicast DNS Name Query Request message destined for 10.0.47.91 to Router 2's MAC address on the 10.0.21.0/24 subnet.

  22. Router 2 receives the DNS Name Query Request message.

  23. Router 2 checks its route cache for an entry for 10.0.47.91 and does not find a match.

  24. Router 2 performs the route determination process for the destination address 10.0.47.91. The closest matching route is the route for 10.0.47.0/24 (a directly attached network route). Router 2 sets the next-hop address to the packet's destination address of 10.0.47.91 and the next-hop interface to the network adapter that is attached to the 10.0.47.0/24 subnet.

  25. Router 2 updates its route cache with an entry for 10.0.47.91 with the next-hop IPv4 address of 10.0.47.91 and the next-hop interface of the network adapter that is attached to the 10.0.47.0/24 subnet.

  26. Router 2 checks its ARP cache for an entry with the IPv4 address of 10.0.47.91 and does not find a match.

  27. Router 2 broadcasts an ARP Request message, querying all nodes on the 10.0.47.0/24 subnet for the MAC address of the interface that is assigned the IPv4 address of 10.0.47.91.

  28. The DNS server receives the ARP Request message. Because the DNS server is assigned the IPv4 address of 10.0.47.91, the server adds an entry to its ARP cache for the IPv4 address 10.0.47.1 and the MAC address of Router 2's interface on the 10.0.47.0/24 subnet.

  29. The DNS server sends a unicast ARP Reply message to Router 2.

  30. Router 2 updates its ARP cache with an entry for the IPv4 address of 10.0.47.91 and the MAC address of the DNS server's interface on the 10.0.47.0/24 subnet.

  31. Router 2 forwards the unicast DNS Name Query Request message destined for 10.0.47.91 to the MAC address of the DNS server's interface on the 10.0.47.0/24 subnet.

  32. The DNS server receives the packet and passes the DNS Name Query Request message to the DNS Server service.

  33. The DNS Server service finds the A record for the name web1.example.com and resolves it to the IPv4 address of 10.0.48.12.

For the end-to-end delivery of the DNS Name Query Request message, the following has occurred:

  • The Web client sent the DNS Name Query Request message, and Router 1 and Router 2 forwarded it over the 10.0.13.0/24, 10.0.21.0/24, and 10.0.47.0/24 subnets to the DNS server.

  • The Web client's route cache has an entry for 10.0.47.91. The Web client's ARP cache has an entry for 10.0.13.1.

  • Router 1's route cache has an entry for 10.0.47.91. Router 1's ARP cache has entries for 10.0.13.110 and 10.0.21.2.

  • Router 2's route cache has an entry for 10.0.47.91. Router 2's ARP cache has entries for 10.0.21.1 and 10.0.47.91.

  • The DNS server's ARP cache has an entry for 10.0.47.1.

DNS Name Query Response Message to the Web Client

When the DNS server sends the DNS Name Query Response message to the Web client, the following process occurs:

  1. The DNS Server service constructs a DNS Name Query Response message with the source IPv4 address of 10.0.47.91 and the destination IPv4 address of 10.0.13.110.

  2. The DNS server checks its route cache for an entry for the IPv4 address of 10.0.13.110 and does not find a match.

  3. The DNS server performs the route determination process to find the closest matching route for the destination IPv4 address of 10.0.13.110. The default route (0.0.0.0/0) is the closest matching route. The DNS server set the next-hop IPv4 address to 10.0.47.1 and the next-hop interface to the network adapter attached to the 10.0.47.0/24 subnet.

  4. The DNS server updates its route cache with an entry for 10.0.13.110 with the next-hop IPv4 address of 10.0.47.1 and the next-hop interface of the network adapter that is attached to the 10.0.47.0/24 subnet.

  5. The DNS server checks its ARP cache for an entry with the IPv4 address of 10.0.47.1 and finds a match.

  6. Using the ARP cache entry for 10.0.47.1, the DNS server sends the unicast DNS Name Query Response message destined for 10.0.13.110 to the MAC address of Router 2's interface on the 10.0.47.0/24 subnet.

  7. Router 2 receives the DNS Name Query Response message.

  8. Router 2 checks its route cache for an entry for 10.0.13.110 and does not find a match.

  9. Router 2 performs the route determination process for the destination address 10.0.13.110. The closest matching route is the route for 10.0.13.0/24. Router 2 sets the next-hop address to 10.0.21.1 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  10. Router 2 updates its route cache with an entry for 10.0.13.110 with the next-hop IPv4 address of 10.0.21.1 and the next-hop interface of the network adapter that is attached to the 10.0.21.0/24 subnet.

  11. Router 2 checks its ARP cache for an entry with the IPv4 address of 10.0.21.1 and finds a match.

  12. Using the ARP cache entry for 10.0.21.1, Router 2 forwards the unicast DNS Name Query Response message destined for 10.0.13.110 to Router 1's MAC address on the 10.0.21.0/24 subnet.

  13. Router 1 receives the DNS Name Query Response message.

  14. Router 1 checks its route cache for an entry for 10.0.13.110 and does not find a match.

  15. Router 1 performs the route determination process for the destination address 10.0.13.110. The closest matching route is the route for 10.0.13.0/24 (a directly attached network route). Router 1 sets the next-hop address to the packet's destination address of 10.0.13.110 and the next-hop interface to the network adapter that is attached to the 10.0.13.0/24 subnet.

  16. Router 1 updates its route cache with an entry for 10.0.13.110 with the next-hop IPv4 address of 10.0.13.110 and the next-hop interface of the network adapter that is attached to the 10.0.13.0/24 subnet.

  17. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.13.110 and finds a match.

  18. Using the ARP cache entry for 10.0.13.110, Router 1 forwards the unicast DNS Name Query Response message destined for 10.0.13.110 to the MAC address of the Web client's interface on the 10.0.13.0/24 subnet.

  19. The Web client receives the packet and passes the DNS Name Query Response message to the DNS Client service.

  20. The DNS Client service on the Web client passes the resolved IPv4 address of 10.0.48.12 to Windows Sockets.

  21. Windows Sockets passes the resolved IPv4 address of 10.0.48.12 to the Web browser.

For the end-to-end delivery of the DNS Name Query Response message, the following has occurred:

  • The DNS server sent the DNS Name Query Response message, and Router 2 and Router 1 forwarded it over the 10.0.47.0/24, 10.0.21.0/24, and 10.0.13.0/24 subnets to the Web client.

  • The DNS server's route cache has a new entry for 10.0.13.110.

  • Router 2's route cache has a new entry for 10.0.13.110.

  • Router 1's route cache has a new entry for 10.0.13.110.

TCP SYN Segment to the Web Server

Now that the Web server's name has been resolved to an IPv4 address, the Web client must establish a TCP connection with the Web server. TCP connections are initiated through a three-way handshake consisting of the following:

  • A TCP SYN segment that the Web client sends

  • A TCP SYN-ACK segment that the Web server sends

  • A TCP ACK segment that the Web client sends

When the Web client sends the TCP SYN segment to the Web server, the following process occurs:

  1. The Web browser, upon obtaining the resolved address of 10.0.48.12 from Windows Sockets, uses a Windows Sockets connect() function to create a TCP connection between the Web client and the Web server.

  2. The Web client constructs a TCP SYN segment with the source IPv4 address of 10.0.13.110 and the destination IPv4 address of 10.0.48.12.

  3. The Web client checks its route cache for an entry for the IPv4 address of 10.0.48.12 and does not find a match.

  4. The Web client performs the route determination process to find the closest matching route for the destination IPv4 address of 10.0.48.12. The default route (0.0.0.0/0) is the closest matching route. The Web client sets the next-hop IPv4 address to 10.0.13.1 and the next-hop interface to the network adapter attached to the 10.0.13.0/24 subnet.

  5. The Web client updates its route cache with an entry for 10.0.48.12 with the next-hop IPv4 address of 10.0.13.1 and the next-hop interface of the network adapter that is attached to the 10.0.13.0/24 subnet.

  6. The Web client checks its ARP cache for an entry with the IPv4 address of 10.0.13.1 and finds a match.

  7. Using the ARP cache entry for 10.0.13.1, the Web client sends the unicast TCP SYN segment destined for 10.0.48.12 to the MAC address of Router 1's interface on the 10.0.13.0/24 subnet.

  8. Router 1 receives the TCP SYN segment.

  9. Router 1 checks its route cache for an entry for 10.0.48.12 and does not find a match.

  10. Router 1 performs the route determination process for the destination address 10.0.48.12. The closest matching route is the route for 10.0.48.0/24. Router 1 sets the next-hop address to 10.0.21.3 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  11. Router 1 updates its route cache with an entry for 10.0.48.12 with the next-hop IPv4 address of 10.0.21.3 and the next-hop interface of the network adapter that is attached to the 10.0.21.0/24 subnet.

  12. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.21.3 and does not find a match.

  13. Router 1 broadcasts an ARP Request message, querying all nodes on the 10.0.21.0/24 subnet for the MAC address of the interface that is assigned the IPv4 address of 10.0.21.3.

  14. Router 3 receives the ARP Request message. Because it is assigned the IPv4 address of 10.0.21.3, Router 3 adds an entry to its ARP cache for the IPv4 address 10.0.21.1 and the MAC address of Router 1's interface on the 10.0.21.0/24 subnet.

  15. Router 3 sends a unicast ARP Reply message to Router 1.

  16. Router 1 updates its ARP cache with an entry for the IPv4 address of 10.0.21.3 and the MAC address of Router 3's interface on the 10.0.21.0/24 subnet.

  17. Router 1 forwards the unicast TCP SYN segment destined for 10.0.48.12 to Router 3's MAC address on the 10.0.21.0/24 subnet.

  18. Router 3 receives the TCP SYN segment.

  19. Router 3 checks its route cache for an entry for 10.0.48.12 and does not find a match.

  20. Router 3 performs the route determination process for the destination address 10.0.48.12. The closest matching route is the route for 10.0.48.0/24 (a directly attached network route). Router 3 sets the next-hop address to the packet's destination address of 10.0.48.12 and the next-hop interface to the network adapter that is attached to the 10.0.48.0/24 subnet.

  21. Router 3 updates its route cache with an entry for 10.0.48.12 with the next-hop IPv4 address of 10.0.48.12 and the next-hop interface of the network adapter that is attached to the 10.0.48.0/24 subnet.

  22. Router 3 checks its ARP cache for an entry with the IPv4 address of 10.0.48.12 and does not find a match.

  23. Router 3 broadcasts an ARP Request message, querying all nodes on the 10.0.48.0/24 subnet for the MAC address of the interface that is assigned the IPv4 address of 10.0.48.12.

  24. The Web server receives the ARP Request message. Because it is assigned the IPv4 address of 10.0.48.12, the Web server adds an entry to its ARP cache for the IPv4 address 10.0.48.1 and the MAC address of Router 3's interface on the 10.0.48.0/24 subnet.

  25. The Web server sends a unicast ARP Reply message to Router 3.

  26. Router 3 updates its ARP cache with an entry for the IPv4 address of 10.0.48.12 and the MAC address of the Web server's interface on the 10.0.48.0/24 subnet.

  27. Router 3 forwards the unicast TCP SYN segment destined for 10.0.48.12 to the MAC address of the Web server's interface on the 10.0.48.0/24 subnet.

  28. The Web server receives the TCP SYN segment.

For the end-to-end delivery of the TCP SYN segment, the following has occurred:

  • The Web client sent the TCP SYN segment, and Router 1 and Router 3 forwarded it over the 10.0.13.0/24, 10.0.21.0/24, and 10.0.48.0/24 subnets to the Web server.

  • The Web client's route cache has a new entry for 10.0.48.12.

  • Router 1's route cache has a new entry for 10.0.48.12. Router 1's ARP cache has a new entry for 10.0.21.3.

  • Router 3's route cache has an entry for 10.0.48.12. Router 3's ARP cache has entries for 10.0.21.1 and 10.0.48.12.

  • The Web server's ARP cache has an entry for 10.0.48.1.

TCP SYN-ACK Segment to the Web Client

When the Web server sends the TCP SYN-ACK segment to the Web client, the following process occurs:

  1. The Web server constructs a TCP SYN-ACK segment with the source IPv4 address of 10.0.48.12 and the destination IPv4 address of 10.0.13.110.

  2. The Web server checks its route cache for an entry for the IPv4 address of 10.0.13.110 and does not find a match.

  3. The Web server performs the route determination process to find the closest matching route for the destination IPv4 address of 10.0.13.110. The default route (0.0.0.0/0) is the closest matching route. The Web server sets the next-hop IPv4 address to 10.0.48.1 and the next-hop interface to the network adapter that is attached to the 10.0.48.0/24 subnet.

  4. The Web server updates its route cache with an entry for 10.0.13.110 with the next-hop IPv4 address of 10.0.48.1 and the next-hop interface of the network adapter that is attached to the 10.0.48.0/24 subnet.

  5. The Web server checks its ARP cache for an entry with the IPv4 address of 10.0.48.1 and finds a match.

  6. Using the ARP cache entry for 10.0.48.1, the Web server sends the unicast TCP SYN-ACK segment destined for 10.0.13.110 to the MAC address of Router 3's interface on the 10.0.48.0/24 subnet.

  7. Router 3 receives the TCP SYN-ACK segment.

  8. Router 3 checks its route cache for an entry for 10.0.13.110 and does not find a match.

  9. Router 3 performs the route determination process for the destination address 10.0.13.110. The closest matching route is the route for 10.0.13.0/24. Router 3 sets the next-hop address to 10.0.21.1 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  10. Router 3 updates its route cache with an entry for 10.0.13.110 with the next-hop IPv4 address of 10.0.21.1 and the next-hop interface of the network adapter that is attached to the 10.0.21.0/24 subnet.

  11. Router 3 checks its ARP cache for an entry with the IPv4 address of 10.0.21.1 and finds a match.

  12. Using the ARP cache entry for 10.0.21.1, Router 3 forwards the unicast TCP SYN-ACK segment destined for 10.0.13.110 to Router 1's MAC address on the 10.0.21.0/24 subnet.

  13. Router 1 receives the TCP SYN-ACK segment.

  14. Router 1 checks its route cache for an entry for 10.0.13.110 and finds a match.

  15. Using the route cache entry for 10.0.13.110, Router 1 sets the next-hop address to 10.0.13.110 and the next-hop interface to the network adapter that is attached to the 10.0.13.0/24 subnet.

  16. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.13.110 and finds a match.

  17. Using the ARP cache entry for 10.0.13.110, Router 1 forwards the unicast TCP SYN-ACK segment destined for 10.0.13.110 to the MAC address of the Web client's interface on the 10.0.13.0/24 subnet.

  18. The Web client receives the TCP SYN-ACK segment.

For the end-to-end delivery of the TCP SYN-ACK segment, the following has occurred:

  • The Web server sent the TCP SYN-ACK segment, and Router 3 and Router 1 forwarded it over the 10.0.48.0/24, 10.0.21.0/24, and 10.0.13.0/24 subnets to the Web client.

  • The Web server's route cache has a new entry for 10.0.13.110.

  • Router 3's route cache has a new entry for 10.0.13.110.

TCP ACK Segment to the Web Server

When the Web client sends the TCP ACK segment to the Web server, the following process occurs:

  1. The Web client constructs a TCP ACK segment message with the source IPv4 address of 10.0.13.110 and the destination IPv4 address of 10.0.48.12.

  2. The Web client checks its route cache for an entry for the IPv4 address of 10.0.48.12 and finds a match.

  3. Using the route cache entry for 10.0.48.12, the Web client sets the next-hop address to 10.0.13.1 and the next-hop interface to the network adapter that is attached to the 10.0.13.0/24 subnet.

  4. The Web client checks its ARP cache for an entry with the IPv4 address of 10.0.13.1 and finds a match.

  5. Using the ARP cache entry for 10.0.13.1, the Web client sends the unicast TCP ACK segment destined for 10.0.48.12 to the MAC address of Router 1's interface on the 10.0.13.0/24 subnet.

  6. Router 1 receives the TCP ACK segment, checks its route cache for an entry for 10.0.48.12, and finds a match.

  7. Using the route cache entry for 10.0.48.12, Router 1 sets the next-hop address to 10.0.21.3 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  8. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.21.3 and finds a match.

  9. Using the ARP cache entry for 10.0.21.3, Router 1 forwards the unicast TCP ACK segment destined for 10.0.48.12 to Router 3's MAC address on the 10.0.21.0/24 subnet.

  10. Router 3 receives the TCP ACK segment, checks its route cache for an entry for 10.0.48.12, and finds a match.

  11. Using the route cache entry for 10.0.48.12, Router 3 sets the next-hop address to the packet's destination address of 10.0.48.12 and the next-hop interface to the network adapter that is attached to the 10.0.48.0/24 subnet.

  12. Router 3 checks its ARP cache for an entry with the IPv4 address of 10.0.48.12 and finds a match.

  13. Using the ARP cache entry for 10.0.48.12, Router 3 forwards the unicast TCP ACK segment destined for 10.0.48.12 to the MAC address of the Web server's interface on the 10.0.47.0/24 subnet.

  14. The Web server receives the TCP ACK segment.

  15. Windows Sockets indicates to the Web browser that the requested TCP connection is complete.

The Web client sent the TCP ACK segment, which Router 1 and Router 3 forwarded over the 10.0.13.0/24, 10.0.21.0/24, and 10.0.48.0/24 subnets to the Web server.

HTTP Get Message to the Web Server

To download the contents of a Web page, a Web browser sends an HTTP Get message containing the name of the page. When the Web client sends the HTTP Get message to the Web server, the following process occurs:

  1. When the Web browser receives the indication that the TCP connection is complete, the browser constructs an HTTP Get message that requests the contents of the Web page from the Web server. In the message, the source IPv4 address is 10.0.13.110, and the destination IPv4 address is 10.0.48.12.

  2. The Web client checks its route cache for an entry for the IPv4 address of 10.0.48.12 and finds a match.

  3. Using the route cache entry for 10.0.48.12, the Web client sets the next-hop address to 10.0.13.1 and the next-hop interface to the network adapter that is attached to the 10.0.13.0/24 subnet.

  4. The Web client checks its ARP cache for an entry with the IPv4 address of 10.0.13.1 and finds a match.

  5. Using the ARP cache entry for 10.0.13.1, the Web client sends the unicast HTTP Get message destined for 10.0.48.12 to the MAC address of Router 1's interface on the 10.0.13.0/24 subnet.

  6. Router 1 receives the HTTP Get message, checks its route cache for an entry for 10.0.48.12, and finds a match.

  7. Using the route cache entry for 10.0.48.12, Router 1 sets the next-hop address to 10.0.21.3 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  8. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.21.3 and finds a match.

  9. Using the ARP cache entry for 10.0.21.3, Router 1 forwards the unicast HTTP Get message destined for 10.0.48.12 to Router 3's MAC address on the 10.0.21.0/24 subnet.

  10. Router 3 receives the HTTP Get message, checks its route cache for an entry for 10.0.48.12, and finds a match.

  11. Using the route cache entry for 10.0.48.12, Router 3 sets the next-hop address to the packet's destination address of 10.0.48.12 and the next-hop interface to the network adapter that is attached to the 10.0.48.0/24 subnet.

  12. Router 3 checks its ARP cache for an entry with the IPv4 address of 10.0.48.12 and finds a match.

  13. Using the ARP cache entry for 10.0.48.12, Router 3 forwards the unicast HTTP Get message destined for 10.0.48.12 to the MAC address of the Web server's interface on the 10.0.47.0/24 subnet.

  14. The Web server receives the HTTP Get message.

The Web client sent the HTTP Get message, which Router 1 and Router 3 forwarded over the 10.0.13.0/24, 10.0.21.0/24, and 10.0.48.0/24 subnets to the Web server.

HTTP Get-Response Message to the Web Client

The response to an HTTP Get message is an HTTP Get-Response message containing the HTML text of the Web page. To simplify this example, assume that the entire Web page can fit within a single TCP segment. When the Web server sends the HTTP Get-Response message to the Web client, the following occurs:

  1. The Web server constructs an HTTP Get-Response message with the source IPv4 address of 10.0.48.12 and the destination IPv4 address of 10.0.13.110.

  2. The Web server checks its route cache for an entry for the IPv4 address of 10.0.13.110 and finds a match.

  3. Using the route cache entry for 10.0.13.110, the Web server sets the next-hop IPv4 address to 10.0.48.1 and the next-hop interface to the network adapter attached to the 10.0.48.0/24 subnet.

  4. The Web server checks its ARP cache for an entry with the IPv4 address of 10.0.48.1 and finds a match.

  5. Using the ARP cache entry for 10.0.48.1, the Web server sends the unicast HTTP Get-Response message destined for 10.0.13.110 to the MAC address of Router 3's interface on the 10.0.48.0/24 subnet.

  6. Router 3 receives the HTTP Get-Response message.

  7. Router 3 checks its route cache for an entry for 10.0.13.110 and finds a match.

  8. Using the route cache entry for 10.0.13.110, Router 3 sets the next-hop address to 10.0.21.1 and the next-hop interface to the network adapter that is attached to the 10.0.21.0/24 subnet.

  9. Router 3 checks its ARP cache for an entry with the IPv4 address of 10.0.21.1 and finds a match.

  10. Using the ARP cache entry for 10.0.21.1, Router 3 forwards the unicast HTTP Get-Response message destined for 10.0.13.110 to Router 1's MAC address on the 10.0.21.0/24 subnet.

  11. Router 1 receives the HTTP Get-Response message.

  12. Router 1 checks its route cache for an entry for 10.0.13.110 and finds a match.

  13. Using the route cache entry for 10.0.13.110, Router 1 sets the next-hop address to 10.0.13.110 and the next-hop interface to the network adapter that is attached to the 10.0.13.0/24 subnet.

  14. Router 1 checks its ARP cache for an entry with the IPv4 address of 10.0.13.110 and finds a match.

  15. Using the ARP cache entry for 10.0.13.110, Router 1 forwards the unicast HTTP Get-Response message destined for 10.0.13.110 to the MAC address of the Web client's interface on the 10.0.13.0/24 subnet.

  16. The Web client receives the HTTP Get-Response message.

  17. The Web browser constructs the visual representation of the Web page at https://web1.example.com/example.htm.

The Web server sent the HTTP Get-Response message, which Router 3 and Router 1 forwarded over the 10.0.48.0/24, 10.0.21.0/24, and 10.0.13.0/24 subnets to the Web client.

End-to-End IPv6 Delivery Process

Similar to IPv4, the end-to-end delivery process for IPv6 traffic consists of the following:

  • The source host sends the packet either to a router or to the final destination (if the destination is a neighbor).

  • The router forwards the packet either to another router or to the final destination (if the destination is a neighbor).

  • The destination host receives the packet and passes the data to the appropriate application.

Note

The following processes assume that the IPv6 header contains no extension headers.

IPv6 on the Source Host

The process by which an IPv6 host sends an IPv6 packet depends on a combination of the local host data structures and the Neighbor Discovery protocol. An IPv6 host uses the following algorithm when sending a packet to an arbitrary destination:

  1. Specify either a default or application-specified value for the Hop Limit field.

  2. Check the destination cache for an entry that matches the destination address. The destination cache is a table that stores the next-hop IPv6 addresses and interfaces for destinations to which traffic has been recently sent. You can view the destination cache with the netsh interface ipv6 show destinationcache command.

  3. If the destination cache contains an entry that matches the destination address, obtain the next-hop address and interface index from the destination cache entry, and go to step 8.

  4. Check the local IPv6 routing table for the longest matching route with the lowest metric to the destination address. If multiple longest matching routes have the lowest metric, choose a route to use.

  5. Based on chosen route, determine the next-hop interface and address used for forwarding the packet.

  6. If no route is found, assume that the destination is directly reachable and set the next-hop IPv6 address to the destination address and choose an interface.

  7. Update the destination cache.

  8. Check the neighbor cache for an entry that matches the next-hop address. The neighbor cache stores neighboring IPv6 addresses and their corresponding MAC address. You can view the neighbor cache with the netsh interface ipv6 show neighbors command.

  9. If the neighbor cache contains an entry that matches the next-hop address, obtain the link-layer address, and go to step 12.

  10. If the neighbor cache does not contain an entry that matches the next-hop address, use address resolution (an exchange of multicast Neighbor Solicitation and unicast Neighbor Advertisement messages) to obtain the link-layer address for the next-hop address.

  11. If address resolution fails, indicate an error.

  12. Send the packet by using the link-layer address of the neighbor cache entry.

Figure 10-6 shows the IPv6 sending process for a source host.

Bb727011.fig10-6-small(en-us,TechNet.10).gif

Figure 10-6 The IPv6 sending process for a source host

IPv6 on the Router

An IPv6 router uses the following algorithm when it receives and forwards a packet to an arbitrary unicast or anycast destination:

  1. Perform optional header error checks such as ensuring that the value of the Version field is 6 and that the source address is not the loopback address (::1) or a multicast address.

  2. Verify whether the destination address in the IPv6 packet corresponds to an address that is assigned to a router interface.
    If so, process the IPv6 packet as the destination host. (See step 3 in "IPv6 on the Destination Host" in this chapter.)

  3. Decrement the value of the Hop Limit field by 1.
    If the value of the Hop Limit field is less than 1, send an Internet Control Message Protocol for IPv6 (ICMPv6) Time Exceeded-Hop Limit Exceeded in Transit message to the sender, and discard the packet.

  4. If the value of the Hop Limit field is greater than 0, update the Hop Limit field in the IPv6 header of the packet.

  5. Check the destination cache for an entry that matches the destination address.

  6. If the destination cache contains an entry that matches the destination address, obtain the next-hop IPv6 address and interface from the destination cache entry, and go to step 10.

  7. Check the local IPv6 routing table for the longest matching route to the destination IPv6 address.

  8. Based on the longest matching route, determine the next hop IPv6 address and interface to use for forwarding the packet. If no route is found, send an ICMPv6 Destination Unreachable-No Route to Destination message to the source host, and discard the packet.

  9. Update the destination cache.

  10. Compare the IP MTU of the next-hop interface to the size of the IPv6 packet being forwarded.
    If the IP MTU of the next-hop interface is smaller than the packet size, send an ICMPv6 Packet Too Big message to the source host, and discard the packet.

  11. Check the neighbor cache for an entry that matches the next-hop IPv6 address.

  12. If the neighbor cache contains an entry that matches the next-hop IPv6 address, obtain the link-layer address.

  13. If the neighbor cache does not contain an entry that matches the next-hop address, use address resolution to obtain the link-layer address for the next-hop address.
    If address resolution fails, send an ICMPv6 Destination Unreachable-Address Unreachable message to the source host, and discard the packet.

  14. Send the packet by using the link-layer address of the neighbor cache entry.

Figures 10-7 and 10-8 show the IPv6 router forwarding process.

Bb727011.fig10-7-small(en-us,TechNet.10).gif

Figure 10-7 IPv6 router forwarding process (part 1)

Bb727011.fig10-8-small(en-us,TechNet.10).gif

Figure 10-8 IPv6 router forwarding process (part 2)

Each IPv6 router in the path between the source host and the destination host repeats this process.

IPv6 on the Destination Host

A destination IPv6 host uses the following algorithm when it receives an IPv6 packet:

  1. Perform optional header error checks such as ensuring that the value of the Version field is 6 and that the source address is not the loopback address (::1) or a multicast address.

  2. Verify whether the destination address in the IPv6 packet corresponds to an IPv6 address that is assigned to a local host interface.
    If the destination address is not assigned to a local host interface, discard the IPv6 packet.

  3. Verify that the value of the Next Header field corresponds to an upper layer protocol in use on the host.
    If the protocol does not exist, send an ICMPv6 Parameter Problem-Unrecognized Next Header Type Encountered message back to the sender, and discard the packet.

  4. If the upper layer PDU is not a TCP segment or UDP message, pass the upper layer PDU to the appropriate protocol.

  5. If the upper layer PDU is a TCP segment or UDP message, check the destination port.
    If no application exists for the UDP port number, send an ICMPv6 Destination Unreachable-Port Unreachable message back to the sender, and discard the packet. If no application exists for the TCP port number, send a TCP Connection Reset segment back to the sender, and discard the packet.

  6. If an application exists for the UDP or TCP destination port, process the contents of the TCP segment or UDP message.

Figure 10-9 shows the IPv6 receiving process on the destination host.

Bb727011.fig10-9-small(en-us,TechNet.10).gif

Figure 10-9 IPv6 receiving process on the destination host

Step-by-Step IPv6 Traffic Example

To show the IPv6 end-to-end delivery process, this section steps through an example of IPv6 traffic when a user types the URL of a Web page in the Address bar of a Web browser and views a Web page from a Web server. This example demonstrates the following aspects of IPv6 traffic:

  • Name resolution using DNS

  • End-to-end delivery using a source host, intermediate routers, and a destination host

  • Creation of a TCP connection

  • Use of HTTP to download the HTML text of a Web page

Network Configuration

Figure 10-10 shows a simple private IPv6 intranet consisting of four subnets connected with three routers. The example intranet contains a Web client, a DNS server, and a Web server.

Bb727011.fig10-10-small(en-us,TechNet.10).gif

Figure 10-10 An example IPv6 intranet

The following sections describe the IPv6 configuration of each of these components.

Web Client

The Web client is connected to the 3FFE:FFFF:0:13::/64 subnet and uses the IPv6 address of 3FFE:FFFF:0:13::1, the default router of FE80::A (Router 1), and the DNS server of 3FFE:FFFF:0:47::2. The Web client has the following routes:

  • 3FFE:FFFF:0:13::/64 (directly attached network route)

  • ::/0 with the next-hop address of FE80::A (default route)

Note

To simplify the discussion for each component of the example IPv6 intranet, this example lists only the most relevant routes.

Router 1

Router 1 is connected to the 3FFE:FFFF:0:13::/64 subnet using the IPv6 address FE80::A and the 3FFE:FFFF:0:21::/64 subnet using the IPv6 address FE80::B. Router 1 has the following routes:

  • 3FFE:FFFF:0:13::/64 (directly attached network route)

  • 3FFE:FFFF:0:21::/64 (directly attached network route)

  • 3FFE:FFFF:0:47::/64 with the next-hop address of FE80::C

  • 3FFE:FFFF:0:48::/64 with the next-hop address of FE80::E

Router 2

Router 2 is connected to the 3FFE:FFFF:0:21::/64 subnet using the IPv6 address FE80::C and the 3FFE:FFFF:0:47::/64 subnet using the IPv6 address FE80::D. Router 2 has the following routes:

  • 3FFE:FFFF:0:21::/64 (directly attached network route)

  • 3FFE:FFFF:0:47::/64 (directly attached network route)

  • 3FFE:FFFF:0:13::/64 with the next-hop address of FE80::B

  • 3FFE:FFFF:0:48::/64 with the next-hop address of FE80::E

Router 3

Router 3 is connected to the 3FFE:FFFF:0:21::/64 subnet using the IPv6 address FE80::E and the 3FFE:FFFF:0:48::/64 subnet using the IPv6 address FE80::F. Router 3 has the following routes:

  • 3FFE:FFFF:0:21::/64 (directly attached network route)

  • 3FFE:FFFF:0:48::/64 (directly attached network route)

  • 3FFE:FFFF:0:13::/64 with the next-hop address of FE80::B

  • 3FFE:FFFF:0:47::/64 with the next-hop address of FE80::C

DNS Server

The DNS server is connected to the 3FFE:FFFF:0:47::/64 subnet and uses the IPv6 address of 3FFE:FFFF:0:47::2/24 and the default router of FE80::D (Router 2). The DNS server has the following routes:

  • 3FFE:FFFF:0:47::/64 (directly attached network route)

  • ::/0 with the next-hop address of FE80::D

The DNS server has an IPv6 Address (AAAA) resource record that maps the name web1.example.com to the IPv6 address of 3FFE:FFFF:0:48::3.

Web Server

The Web server is connected to the 3FFE:FFFF:0:48::/64 subnet and uses the IPv6 address of 3FFE:FFFF:0:48::3/24, the default router of FE80::F (Router 3), and the DNS server of 3FFE:FFFF:0:47::2. The Web server has the following routes:

  • 3FFE:FFFF:0:48::/64 (directly attached network route)

  • ::/0 with the next-hop address of FE80::F

Web Traffic Example

This example assumes the following:

  • The neighbor and destination caches on all of the components of the network are empty.

  • The DNS client resolver cache on the Web client is empty.

  • The Web browser on the Web client has not cached the contents of the Web page on the Web server.

In this example, a user on the Web client opens a Web browser, types the address https://web1.example.com/example.htm in the Web browser's Address bar, and presses ENTER. The computers on this example intranet send the following set of messages:

  1. The Web client sends a DNS Name Query Request message to the DNS server.

  2. The DNS server sends a DNS Name Query Response message to the Web client.

  3. The Web client sends a TCP Synchronize (SYN) segment to the Web server.

  4. The Web server sends a TCP SYN-Acknowledgement (ACK) segment to the Web client.

  5. The Web client sends a TCP ACK segment to the Web server.

  6. The Web client sends an HTTP Get message to the Web server.

  7. The Web server sends an HTTP Get-Response message to the Web client.

The following sections describe the end-to-end delivery of each of these messages.

DNS Name Query Request Message to the DNS Server

When the Web client sends the DNS Name Query Request message to the DNS server, the following process occurs:

  1. The Web browser parses the address in the Address bar and uses a Windows Sockets getaddrinfo() function to attempt to resolve the name web1.example.com to its IPv6 address. For this example, the DNS server is storing only a single AAAA record for the name web1.example.com.

  2. The Web client constructs a DNS Name Query Request message with the source IPv6 address of 3FFE:FFFF:0:13::1 and the destination IPv6 address of 3FFE:FFFF:0:47::2.

  3. The Web client checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:47::2 and does not find a match.

  4. The Web client performs the route determination process to find the closest matching route for the destination IPv6 address of 3FFE:FFFF:0:47::2. The default route (::/0) is the closest matching route. The Web client sets the next-hop IPv6 address to FE80::A and the next-hop interface to the network adapter attached to the 3FFE:FFFF:0:13::/64 subnet.

  5. The Web client updates its destination cache with an entry for 3FFE:FFFF:0:47::2 with the next-hop IPv6 address of FE80::A and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  6. The Web client checks its neighbor cache for an entry with the IPv6 address of FE80::A and does not find a match.

  7. The Web client sends a Neighbor Solicitation message to the solicited node multicast IPv6 address FF02::1:FF00:A, querying the 3FFE:FFFF:0:13::/64 subnet for the MAC address of the interface that is assigned the IPv6 address of FE80::A.

  8. Because Router 1 is listening on the solicited node multicast address of FF02::1:FF00:A, the router receives the Neighbor Solicitation message. The router adds an entry to its neighbor cache for the IPv6 address 3FFE:FFFF:0:13::1 and the MAC address of the Web client's interface on the 3FFE:FFFF:0:13::/64 subnet.

  9. Router 1 sends a unicast Neighbor Advertisement message to the Web client.

  10. The Web client updates its neighbor cache with an entry for the IPv6 address of FE80::A and the MAC address of Router 1's interface on the 3FFE:FFFF:0:13::/64 subnet.

  11. The Web client sends the unicast DNS Name Query Request message destined for 3FFE:FFFF:0:47::2 to the MAC address of Router 1's interface on the 3FFE:FFFF:0:13::/64 subnet.

  12. Router 1 receives the DNS Name Query Request message.

  13. Router 1 checks its destination cache for an entry for 3FFE:FFFF:0:47::2 and does not find a match.

  14. Router 1 performs the route determination process for the destination address 3FFE:FFFF:0:47::2. The closest matching route is the route for 3FFE:FFFF:0:47::/64. Router 1 sets the next-hop address to FE80::C and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  15. Router 1 updates its destination cache with an entry for 3FFE:FFFF:0:47::2 with the next-hop IPv6 address of FE80::C and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  16. Router 1 checks its neighbor cache for an entry with the IPv6 address of FE80::C and does not find a match.

  17. Router 1 sends a Neighbor Solicitation message to the solicited node multicast IPv6 address FF02::1:FF00:C, querying the 3FFE:FFFF:0:21::/64 subnet for the MAC address of the interface that is assigned the IPv6 address of FE80::C.

  18. Because Router 2 is listening on the solicited node multicast address of FF02::1:FF00:C, it receives the Neighbor Solicitation message and adds an entry to its neighbor cache for the IPv6 address FE80::B and the MAC address of Router 1's interface on the 3FFE:FFFF:0:21::/64 subnet.

  19. Router 2 sends a unicast Neighbor Advertisement message to Router 1.

  20. Router 1 updates its neighbor cache with an entry for the IPv6 address of FE80::C and the MAC address of Router 2's interface on the 3FFE:FFFF:0:21::/64 subnet.

  21. Router 1 forwards the unicast DNS Name Query Request message destined for 3FFE:FFFF:0:47::2 to Router 2's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  22. Router 2 receives the DNS Name Query Request message, checks its destination cache for an entry for 3FFE:FFFF:0:47::2, and does not find a match.

  23. Router 2 performs the route determination process for the destination address 3FFE:FFFF:0:47::2. The closest matching route is the route for 3FFE:FFFF:0:47::/64 (a directly attached network route). Router 2 sets the next-hop address to the packet's destination address of 3FFE:FFFF:0:47::2 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:47::/64 subnet.

  24. Router 2 updates its destination cache with an entry for 3FFE:FFFF:0:47::2 with the next-hop IPv6 address of 3FFE:FFFF:0:47::2 and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:47::/64 subnet.

  25. Router 2 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:47::2 and does not find a match.

  26. Router 2 sends a Neighbor Solicitation message to the solicited node multicast IPv6 address FF02::1:FF00:2, querying the 3FFE:FFFF:0:47::/64 subnet for the MAC address of the interface that is assigned the IPv6 address of 3FFE:FFFF:0:47::2.

  27. Because the DNS server is listening on the solicited node multicast address of FF02::1:FF00:2, it receives the Neighbor Solicitation message and adds an entry to its neighbor cache for the IPv6 address FE80::D and the MAC address of Router 2's interface on the 3FFE:FFFF:0:47::/64 subnet.

  28. The DNS server sends a unicast Neighbor Advertisement message to Router 2.

  29. Router 2 updates its neighbor cache with an entry for the IPv6 address of 3FFE:FFFF:0:47::2 and the MAC address of the DNS server's interface on the 3FFE:FFFF:0:47::/64 subnet.

  30. Router 2 forwards the unicast DNS Name Query Request message destined for 3FFE:FFFF:0:47::2 to the MAC address of the DNS server's interface on the 3FFE:FFFF:0:47::/64 subnet.

  31. The DNS server receives the packet and passes the DNS Name Query Request message to the DNS Server service.

  32. The DNS Server service finds the AAAA record for the name web1.example.com and resolves it to the IPv6 address of 3FFE:FFFF:0:48::3.

For the end-to-end delivery of the DNS Name Query Request message, the following has occurred:

  • The Web client sent the DNS Name Query Request message, and Router 1 and Router 2 forwarded it over the 3FFE:FFFF:0:13::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:47::/64 subnets to the DNS server.

  • The Web client's destination cache has an entry for 3FFE:FFFF:0:47::2. The Web client's neighbor cache has an entry for FE80::A.

  • Router 1's destination cache has an entry for 3FFE:FFFF:0:47::2. Router 1's neighbor cache has entries for 3FFE:FFFF:0:13::1 and FE80::C.

  • Router 2's destination cache has an entry for 3FFE:FFFF:0:47::2. Router 2's neighbor cache has entries for FE80::B and 3FFE:FFFF:0:47::2.

  • The DNS server's neighbor cache has an entry for FE80::D.

DNS Name Query Response Message to the Web Client

When the DNS server sends the DNS Name Query Response message to the Web client, the following process occurs:

  1. The DNS Server service constructs a DNS Name Query Response message with the source IPv6 address of 3FFE:FFFF:0:47::2 and the destination IPv6 address of 3FFE:FFFF:0:13::1.

  2. The DNS server checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:13::1 and does not find a match.

  3. The DNS server performs the route determination process to find the closest matching route for the destination IPv6 address of 3FFE:FFFF:0:13::1. The default route (::/0) is the closest matching route. The DNS server sets the next-hop IPv6 address to FE80::D and the next-hop interface to the network adapter attached to the 3FFE:FFFF:0:47::/64 subnet.

  4. The DNS server updates its destination cache with an entry for 3FFE:FFFF:0:13::1 with the next-hop IPv6 address of FE80::D and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:47::/64 subnet.

  5. The DNS server checks its neighbor cache for an entry with the IPv6 address of FE80::D and finds a match.

  6. Using the neighbor cache entry for FE80::D, the DNS server sends the unicast DNS Name Query Response message destined for 3FFE:FFFF:0:13::1 to the MAC address of Router 2's interface on the 3FFE:FFFF:0:47::/64 subnet.

  7. Router 2 receives the DNS Name Query Response message, checks its destination cache for an entry for 3FFE:FFFF:0:13::1, and does not find a match.

  8. Router 2 performs the route determination process for the destination address 3FFE:FFFF:0:13::1. The closest matching route is the route for 3FFE:FFFF:0:13::/64. Router 2 sets the next-hop address to FE80::B and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  9. Router 2 updates its destination cache with an entry for 3FFE:FFFF:0:13::1 with the next-hop IPv6 address of FE80::B and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  10. Router 2 checks its neighbor cache for an entry with the IPv6 address of FE80::B and finds a match.

  11. Using the neighbor cache entry for FE80::B, Router 2 forwards the unicast DNS Name Query Response message destined for 3FFE:FFFF:0:13::1 to Router 1's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  12. Router 1 receives the DNS Name Query Response message, checks its destination cache for an entry for 3FFE:FFFF:0:13::1, and does not find a match.

  13. Router 1 performs the route determination process for the destination address 3FFE:FFFF:0:13::1. The closest matching route is the route for 3FFE:FFFF:0:13::/64 (a directly attached network route). Router 1 sets the next-hop address to the packet's destination address of 3FFE:FFFF:0:13::1 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  14. Router 1 updates its destination cache with an entry for 3FFE:FFFF:0:13::1 with the next-hop IPv6 address of 3FFE:FFFF:0:13::1 and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  15. Router 1 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:13::1 and finds a match.

  16. Using the neighbor cache entry for 3FFE:FFFF:0:13::1, Router 1 forwards the unicast DNS Name Query Response message destined for 3FFE:FFFF:0:13::1 to the MAC address of the Web client's interface on the 3FFE:FFFF:0:13::/64 subnet.

  17. The Web client receives the packet and passes the DNS Name Query Response message to the DNS Client service.

  18. The DNS Client service on the Web client passes the resolved IPv6 address of 3FFE:FFFF:0:48::3 to Windows Sockets.

  19. Windows Sockets passes the resolved IPv6 address of 3FFE:FFFF:0:48::3 to the Web browser.

For the end-to-end delivery of the DNS Name Query Response message, the following has occurred:

  • The DNS server sent the DNS Name Query Response message, and Router 2 and Router 1 forwarded it over the 3FFE:FFFF:0:47::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:13::/64 subnets to the Web client.

  • The DNS server's destination cache has a new entry for 3FFE:FFFF:0:13::1.

  • Router 2's destination cache has a new entry for 3FFE:FFFF:0:13::1.

  • Router 1's destination cache has a new entry for 3FFE:FFFF:0:13::1.

When the Web client sends the TCP SYN segment to the Web server, the following process occurs:

  1. The Web browser, upon obtaining the resolved address of 3FFE:FFFF:0:48::3 from Windows Sockets, uses a Windows Sockets connect() function to create a TCP connection between the Web client and the Web server.

  2. The Web client constructs a TCP SYN segment message with the source IPv6 address of 3FFE:FFFF:0:13::1 and the destination IPv6 address of 3FFE:FFFF:0:48::3.

  3. The Web client checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:48::3 and does not find a match.

  4. The Web client performs the route determination process to find the closest matching route for the destination IPv6 address of 3FFE:FFFF:0:48::3. The default route (::/0) is the closest matching route. The Web client sets the next-hop IPv6 address to FE80::A and the next-hop interface to the network adapter attached to the 3FFE:FFFF:0:13::/64 subnet.

  5. The Web client updates its destination cache with an entry for 3FFE:FFFF:0:48::3 with the next-hop IPv6 address of FE80::A and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  6. The Web client checks its neighbor cache for an entry with the IPv6 address of FE80::A and finds a match.

  7. Using the neighbor cache entry for FE80::A, the Web client sends the unicast TCP SYN segment destined for 3FFE:FFFF:0:48::3 to the MAC address of Router 1's interface on the 3FFE:FFFF:0:13::/64 subnet.

  8. Router 1 receives the TCP SYN segment, checks its destination cache for an entry for 3FFE:FFFF:0:48::3, and does not find a match.

  9. Router 1 performs the route determination process for the destination address 3FFE:FFFF:0:48::3. The closest matching route is the route for 3FFE:FFFF:0:48::/64. Router 1 sets the next-hop address to FE80::E and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  10. Router 1 updates its destination cache with an entry for 3FFE:FFFF:0:48::3 with the next-hop IPv6 address of FE80::E and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  11. Router 1 checks its neighbor cache for an entry with the IPv6 address of FE80::E and does not find a match.

  12. Router 1 sends a Neighbor Solicitation message to the solicited node multicast IPv6 address FF02::1:FF00:E, querying the 3FFE:FFFF:0:21::/64 subnet for the MAC address of the interface that is assigned the IPv6 address of FE80::E.

  13. Because Router 3 is listening on the solicited node multicast address of FF02::1:FF00:E, the router receives the Neighbor Solicitation message. The router adds an entry to its neighbor cache for the IPv6 address FE80::B and the MAC address of Router 1's interface on the 3FFE:FFFF:0:21::/64 subnet.

  14. Router 3 sends a unicast Neighbor Advertisement message to Router 1.

  15. Router 1 updates its neighbor cache with an entry for the IPv6 address of FE80::E and the MAC address of Router 3's interface on the 3FFE:FFFF:0:21::/64 subnet.

  16. Router 1 forwards the unicast TCP SYN segment destined for 3FFE:FFFF:0:48::3 to Router 3's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  17. Router 3 receives the TCP SYN segment, checks its destination cache for an entry for 3FFE:FFFF:0:48::3, and does not find a match.

  18. Router 3 performs the route determination process for the destination address 3FFE:FFFF:0:48::3. The closest matching route is the route for 3FFE:FFFF:0:48::/64 (a directly attached network route). Router 3 sets the next-hop address to the packet's destination address of 3FFE:FFFF:0:48::3 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:48::/64 subnet.

  19. Router 3 updates its destination cache with an entry for 3FFE:FFFF:0:48::3 with the next-hop IPv6 address of 3FFE:FFFF:0:48::3 and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:48::/64 subnet.

  20. Router 3 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:48::3 and does not find a match.

  21. Router 3 sends a Neighbor Solicitation message to the solicited node multicast IPv6 address FF02::1:FF00:3, querying the 3FFE:FFFF:0:48::/64 subnet for the MAC address of the interface that is assigned the IPv6 address of 3FFE:FFFF:0:48::3.

  22. Because the Web server is listening on the solicited node multicast address of FF02::1:FF00:3, the server receives the Neighbor Solicitation message. The server adds an entry to its neighbor cache for the IPv6 address FE80::F and the MAC address of Router 3's interface on the 3FFE:FFFF:0:48::/64 subnet.

  23. The Web server sends a unicast Neighbor Advertisement message to Router 3.

  24. Router 3 updates its neighbor cache with an entry for the IPv6 address of 3FFE:FFFF:0:48::3 and the MAC address of the Web server's interface on the 3FFE:FFFF:0:48::/64 subnet.

  25. Router 3 forwards the unicast TCP SYN segment destined for 3FFE:FFFF:0:48::3 to the MAC address of the Web server's interface on the 3FFE:FFFF:0:48::/64 subnet.

  26. The Web server receives the TCP SYN segment.

For the end-to-end delivery of the TCP SYN segment, the following has occurred:

  • The Web client sent the TCP SYN segment, and Router 1 and Router 3 forwarded it over the 3FFE:FFFF:0:13::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:48::/64 subnets to the Web server.

  • The Web client's destination cache has a new entry for 3FFE:FFFF:0:48::3.

  • Router 1's destination cache has a new entry for 3FFE:FFFF:0:48::3. Router 1's neighbor cache has a new entry for FE80::E.

  • Router 3's destination cache has an entry for 3FFE:FFFF:0:48::3. Router 3's neighbor cache has entries for FE80::B and 3FFE:FFFF:0:48::3.

  • The Web server's neighbor cache has an entry for FE80::F.

TCP SYN-ACK Segment to the Web Client

When the Web server sends the TCP SYN-ACK segment to the Web client, the following process occurs:

  1. The Web server constructs a TCP SYN-ACK segment with the source IPv6 address of 3FFE:FFFF:0:48::3 and the destination IPv6 address of 3FFE:FFFF:0:13::1.

  2. The Web server checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:13::1 and does not find a match.

  3. The Web server performs the route determination process to find the closest matching route for the destination IPv6 address of 3FFE:FFFF:0:13::1. The default route (::/0) is the closest matching route. The Web server sets the next-hop IPv6 address to FE80::F and the next-hop interface to the network adapter attached to the 3FFE:FFFF:0:48::/64 subnet.

  4. The Web server updates its destination cache with an entry for 3FFE:FFFF:0:13::1 with the next-hop IPv6 address of FE80::F and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:48::/64 subnet.

  5. The Web server checks its neighbor cache for an entry with the IPv6 address of FE80::F and finds a match.

  6. Using the neighbor cache entry for FE80::F, the Web server sends the unicast TCP SYN-ACK segment destined for 3FFE:FFFF:0:13::1 to the MAC address of Router 3's interface on the 3FFE:FFFF:0:48::/64 subnet.

  7. Router 3 receives the TCP SYN-ACK segment, checks its destination cache for an entry for 3FFE:FFFF:0:13::1, and does not find a match.

  8. Router 3 performs the route determination process for the destination address 3FFE:FFFF:0:13::1. The closest matching route is the route for 3FFE:FFFF:0:13::/64. Router 3 sets the next-hop address to FE80::B and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  9. Router 3 updates its destination cache with an entry for 3FFE:FFFF:0:13::1 with the next-hop IPv6 address of FE80::B and the next-hop interface of the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  10. Router 3 checks its neighbor cache for an entry with the IPv6 address of FE80::B and finds a match.

  11. Using the neighbor cache entry for FE80::B, Router 3 forwards the unicast TCP SYN-ACK segment destined for 3FFE:FFFF:0:13::1 to Router 1's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  12. Router 1 receives the TCP SYN-ACK segment, checks its destination cache for an entry for 3FFE:FFFF:0:13::1, and finds a match.

  13. Using the destination cache entry for 3FFE:FFFF:0:13::1, Router 1 sets the next-hop address to 3FFE:FFFF:0:13::1 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  14. Router 1 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:13::1 and finds a match.

  15. Using the neighbor cache entry for 3FFE:FFFF:0:13::1, Router 1 forwards the unicast TCP SYN-ACK segment destined for 3FFE:FFFF:0:13::1 to the MAC address of the Web client's interface on the 3FFE:FFFF:0:13::/64 subnet.

  16. The Web client receives the TCP SYN-ACK segment.

For the end-to-end delivery of the TCP SYN-ACK segment, the following has occurred:

  • The Web server sent the TCP SYN-ACK segment, and Router 3 and Router 1 forwarded it over the 3FFE:FFFF:0:48::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:13::/64 subnets to the Web client.

  • The Web server's destination cache has a new entry for 3FFE:FFFF:0:13::1.

  • Router 3's destination cache has a new entry for 3FFE:FFFF:0:13::1.

TCP ACK Segment to the Web Server

When the Web client sends the TCP ACK segment to the Web server, the following process occurs:

  1. The Web client constructs a TCP ACK segment message with the source IPv6 address of 3FFE:FFFF:0:13::1 and the destination IPv6 address of 3FFE:FFFF:0:48::3.

  2. The Web client checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:48::3 and finds a match.

  3. Using the destination cache entry for 3FFE:FFFF:0:48::3, the Web client sets the next-hop address to FE80::A and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  4. The Web client checks its neighbor cache for an entry with the IPv6 address of FE80::A and finds a match.

  5. Using the neighbor cache entry for FE80::A, the Web client sends the unicast TCP ACK segment destined for 3FFE:FFFF:0:48::3 to the MAC address of Router 1's interface on the 3FFE:FFFF:0:13::/64 subnet.

  6. Router 1 receives the TCP ACK segment, checks its destination cache for an entry for 3FFE:FFFF:0:48::3, and finds a match.

  7. Using the destination cache entry for 3FFE:FFFF:0:48::3, Router 1 sets the next-hop address to FE80::E and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  8. Router 1 checks its neighbor cache for an entry with the IPv6 address of FE80::E and finds a match.

  9. Using the neighbor cache entry for FE80::E, Router 1 forwards the unicast TCP ACK segment destined for 3FFE:FFFF:0:48::3 to Router 3's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  10. Router 3 receives the TCP ACK segment, checks its destination cache for an entry for 3FFE:FFFF:0:48::3, and finds a match.

  11. Using the destination cache entry for 3FFE:FFFF:0:48::3, Router 3 sets the next-hop address to the packet's destination address of 3FFE:FFFF:0:48::3 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:48::/64 subnet.

  12. Router 3 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:48::3 and finds a match.

  13. Using the neighbor cache entry for 3FFE:FFFF:0:48::3, Router 3 forwards the unicast TCP ACK segment destined for 3FFE:FFFF:0:48::3 to the MAC address of the Web server's interface on the 3FFE:FFFF:0:47::/64 subnet.

  14. The Web server receives the TCP ACK segment.

  15. Windows Sockets indicates to the Web browser that the requested TCP connection is complete.

The Web client sent the TCP ACK segment, and Router 1 and Router 3 forwarded it over the 3FFE:FFFF:0:13::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:48::/64 subnets to the Web server.

HTTP Get Segment to the Web Server

When the Web client sends the HTTP Get message to the Web server, the following process occurs:

  1. When the Web browser receives the indication that the TCP connection is complete, it constructs an HTTP Get message with the source IPv6 address of 3FFE:FFFF:0:13::1 and the destination IPv6 address of 3FFE:FFFF:0:48::3, requesting the contents of the Web page from the Web server.

  2. The Web client checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:48::3 and finds a match.

  3. Using the destination cache entry for 3FFE:FFFF:0:48::3, the Web client sets the next-hop address to FE80::A and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  4. The Web client checks its neighbor cache for an entry with the IPv6 address of FE80::A and finds a match.

  5. Using the neighbor cache entry for FE80::A, the Web client sends the unicast HTTP Get message destined for 3FFE:FFFF:0:48::3 to the MAC address of Router 1's interface on the 3FFE:FFFF:0:13::/64 subnet.

  6. Router 1 receives the HTTP Get message, checks its destination cache for an entry for 3FFE:FFFF:0:48::3, and finds a match.

  7. Using the destination cache entry for 3FFE:FFFF:0:48::3, Router 1 sets the next-hop address to FE80::E and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  8. Router 1 checks its neighbor cache for an entry with the IPv6 address of FE80::E and finds a match.

  9. Using the neighbor cache entry for FE80::E, Router 1 forwards the unicast HTTP Get message destined for 3FFE:FFFF:0:48::3 to Router 3's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  10. Router 3 receives the HTTP Get message, checks its destination cache for an entry for 3FFE:FFFF:0:48::3, and finds a match.

  11. Using the destination cache entry for 3FFE:FFFF:0:48::3, Router 3 sets the next-hop address to the packet's destination address of 3FFE:FFFF:0:48::3 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:48::/64 subnet.

  12. Router 3 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:48::3 and finds a match.

  13. Using the neighbor cache entry for 3FFE:FFFF:0:48::3, Router 3 forwards the unicast HTTP Get message destined for 3FFE:FFFF:0:48::3 to the MAC address of the Web server's interface on the 3FFE:FFFF:0:47::/64 subnet.

  14. The Web server receives the HTTP Get message.

The Web client sent the HTTP Get message, and Router 1 and Router 3 forwarded it over the 3FFE:FFFF:0:13::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:48::/64 subnets to the Web server.

HTTP Get-Response Segment to the Web Client

When the Web server sends the HTTP Get-Response message to the Web client, the following occurs:

  1. The Web server constructs an HTTP Get-Response message with the source IPv6 address of 3FFE:FFFF:0:48::3 and the destination IPv6 address of 3FFE:FFFF:0:13::1.

  2. The Web server checks its destination cache for an entry for the IPv6 address of 3FFE:FFFF:0:13::1 and finds a match.

  3. Using the destination cache entry for 3FFE:FFFF:0:13::1, the Web server sets the next-hop IPv6 address to FE80::F and the next-hop interface to the network adapter attached to the 3FFE:FFFF:0:48::/64 subnet.

  4. The Web server checks its neighbor cache for an entry with the IPv6 address of FE80::F and finds a match.

  5. Using the neighbor cache entry for FE80::F, the Web server sends the unicast HTTP Get-Response message destined for 3FFE:FFFF:0:13::1 to the MAC address of Router 3's interface on the 3FFE:FFFF:0:48::/64 subnet.

  6. Router 3 receives the HTTP Get-Response message, checks its destination cache for an entry for 3FFE:FFFF:0:13::1, and finds a match.

  7. Using the destination cache entry for 3FFE:FFFF:0:13::1, Router 3 sets the next-hop address to FE80::B and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:21::/64 subnet.

  8. Router 3 checks its neighbor cache for an entry with the IPv6 address of FE80::B and finds a match.

  9. Using the neighbor cache entry for FE80::B, Router 3 forwards the unicast HTTP Get-Response message destined for 3FFE:FFFF:0:13::1 to Router 1's MAC address on the 3FFE:FFFF:0:21::/64 subnet.

  10. Router 1 receives the HTTP Get-Response message.

  11. Router 1 checks its destination cache for an entry for 3FFE:FFFF:0:13::1 and finds a match.

  12. Using the destination cache entry for 3FFE:FFFF:0:13::1, Router 1 sets the next-hop address to 3FFE:FFFF:0:13::1 and the next-hop interface to the network adapter that is attached to the 3FFE:FFFF:0:13::/64 subnet.

  13. Router 1 checks its neighbor cache for an entry with the IPv6 address of 3FFE:FFFF:0:13::1 and finds a match.

  14. Using the neighbor cache entry for 3FFE:FFFF:0:13::1, Router 1 forwards the unicast HTTP Get-Response message destined for 3FFE:FFFF:0:13::1 to the MAC address of the Web client's interface on the 3FFE:FFFF:0:13::/64 subnet.

  15. The Web client receives the HTTP Get-Response message.

  16. The Web browser constructs the visual representation of the Web page at https://web1.example.com/example.htm.

The Web server sent the HTTP Get-Response message, and Router 3 and Router 1 forwarded it over the 3FFE:FFFF:0:48::/64, 3FFE:FFFF:0:21::/64, and 3FFE:FFFF:0:13::/64 subnets to the Web client.

Chapter Summary

The key information in this chapter is the following:

  • The end-to-end delivery process consists of a source host process, a router forwarding process, and a destination host process.

  • To send an IPv4 packet, an IPv4 source host checks its route cache (performing route determination if needed) and then checks its ARP cache (performing address resolution if needed). When the source host has determined the MAC address that corresponds to the next-hop address for the IPv4 packet, the host sends the packet to the destination or to an intermediate router.

  • To forward an IPv4 packet, an IPv4 router decrements the TTL, updates the checksum, checks its route cache (performing route determination if needed) and then checks its ARP cache (performing address resolution if needed). When the router has determined the MAC address that corresponds to the next-hop address for the IPv4 packet, the router forwards the packet to the destination or to another router.

  • To receive an IPv4 packet, an IPv4 destination host verifies that the packet is addressed to an IPv4 address that has been assigned to the host and then passes the IPv4 payload to the appropriate upper layer protocol. For TCP and UDP traffic, the host passes the data to the listening application.

  • To send an IPv6 packet, an IPv6 source host checks its destination cache (performing route determination if needed) and then checks its neighbor cache (performing address resolution if needed). When the source host has determined the MAC address that corresponds to the next-hop address for the IPv6 packet, the host sends the packet to the destination or to an intermediate router.

  • To forward an IPv6 packet, an IPv6 router decrements the hop limit, checks its destination cache (performing route determination if needed) and then checks its neighbor cache (performing address resolution if needed). When the router has determined the MAC address that corresponds to the next-hop address for the IPv6 packet, the router forwards the packet to the destination or to another router.

  • To receive an IPv6 packet, an IPv6 destination host verifies that the packet is addressed to an IPv6 address assigned to the host and then passes the IPv6 payload to the appropriate upper layer protocol. For TCP and UDP traffic, the host passes the data to the listening application.

Chapter Glossary

  • ARP cache – A table for each interface of static or dynamically resolved IPv4 addresses and their corresponding MAC addresses.

  • default gateway – The IPv4 address of a neighboring IPv4 router. Configuring a default gateway creates a default route in the IPv4 routing table. The default gateway is an important parameter for the Internet Protocol (TCP/IP) component.

  • default route – A route that is used when the routing table contains no other routes for the destination. For example, if a router or end system cannot find a network route or host route for the destination, the default route is used. The default route is used to simplify the configuration of end systems or routers. For IPv4 routing tables, the default route is the route with the network destination of 0.0.0.0 and the netmask of 0.0.0.0. For IPv6 routing tables, the default route has the prefix ::/0.

  • destination cache – A table in which IPv6 stores the next-hop IPv6 address and interface for recently determined destination IPv6 addresses.

  • longest matching route – The algorithm by which the route determination process selects the routes in the routing table that most closely match the destination address of the packet being sent or forwarded.

  • neighbor cache – A cache that every IPv6 node maintains to store the on-subnet IPv6 addresses of neighbors and their corresponding MAC addresses. The neighbor cache is equivalent to the ARP cache in IPv4.

  • next-hop determination – The process of determining the next-hop address and interface for sending or forwarding a packet based on the contents of the routing table.

  • route determination process – The process of determining which single route in the routing table to use for forwarding a packet.

  • route cache – A table in which IPv4 stores the next-hop IPv4 addresses and interfaces for recently determined destination IPv4 addresses.

  • router – A Transmission Control Protocol/Internet Protocol (TCP/IP) node that can forward received packets that are not addressed to itself (also called a gateway for IPv4).

  • routing table - The set of routes used to determine the next-hop address and interface for IP traffic that a host sends or a router forwards.