`DETECTING AN IDLE TCP CONNECTION
`RELATED APPLICATIONS
`[0001
`[0001] This application is a continuation-in-part of, and claims priority to
`U.S. Patent Application No. 14/667,642, entitled "METHODS, SYSTEMS, AND
`COMPUTER PROGRAM PRODUCTS FOR SELECTING A RESOURCE BASED ON A MEASURE
`OF A PROCESSING COST," filed on 03-24-2015 which, in turn, is a
`continuation-in-part of and claims priority to U.S. Patent Application No.
`13/477,402, entitled "METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR
`SHARING INFORMATION FOR DETECTING AN IDLE TCP CONNECTION," filed
`05-22-2012
`which is a continuation of and claims priority to U.S. Patent Application No.
`12/714,454, entitled "METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR
`SHARING INFORMATION FOR DETECTING AN IDLE TCP CONNECTION," filed 02- 27-2010.
`[0002] U.S. Patent Application No. 12/714,454, entitled "METHODS, SYSTEMS,
`AND COMPUTER
`PROGRAM
`PRODUCTS
`FOR
`SHARING
`INFORMATION FOR
`DETECTING AN IDLE TCP CONNECTION," filed 02-27-2010 is incorporated herein
`by reference in its entirety for all purposes.
`[0003] This application is related to the following commonly owned U.S. Patent
`Applications, the entire disclosure of each beingwhich is incorporated by
`reference herein in its
`entirety for all purposes: Application No. 12/714,063 (Docket No 0110) filed
`on 2010/02/26, entitled "Methods, Systems, and Program Products for Detecting
`an Idle TCP Connection".
`BACKGROUND
`[00020004] Various implementations of the transmission control protocol (TCP)
`in network nodes support a number of options that are not negotiated or even
`communicated between or among any of the nodes. Some of these options are
`included in the specification of the TCP while others are not. For example,
`the TCP keep-alive option is supported by a number of implementations of the
`TCP. It is not, however, part of the TCP specification as described in "Request
`for Comments" (RFC) document RFC 793 edited by John Postel, titled
`"Transmission Control Protocol, DARPA Internet Program Internet Protocol
`Specification" (September 1981), which is incorporated here in its entirety
`by reference. One, both, or neither node including an endpoint in a TCP
`connection may support a keep-alive option for the connection. Each node
`supports or does not support keep-alive for a TCP connection based on each
`node's requirements without consideration for the other node in the TCP
`connection.
`[00030005] With respect to the keep-alive option, some argue that it is
`unnecessary and that it can waste network bandwidth. Some of these critics
`point out that a keep-alive packet can bring down a TCP connection. Further,
`since nodes including endpoints in a TCP connection do not cooperate in
`supporting the keep-alive option, the nodes may
`
`Page 1 of 26
`
`GOOGLE EXHIBIT 1050
`
`
`
`operate in opposition to one another and/or may waste resources by duplicating
`function, according to critics of the keep-alive option.
`[00040006] Proponents of the keep-alive option claim there is a benefit to
`detecting a dead peer/partner endpoint sooner. A node providing TCP keep-alive
`can also indirectly detect when a network is so congested that two nodes with
`endpoints in a TCP connection are effectively disconnected. Proponents argue
`that keep-alive can keep an inactive TCP connection open. For example, some
`network nodes such as firewalls are configured to close TCP connections
`determined to be idle or inactive in order to recover resources. Keep-alive
`can prevent this. This is good from the perspective of the node sending
`keep-alive packets, but the keep-alive packets might cause the firewall to
`waste resources and possibly block or terminate TCP connections with other
`nodes.
`[00050007] TCP keep-alive and the debate of its benefits and faults have been
`around for decades. To date no mechanism to allow two TCP connection endpoints
`to cooperate in supporting the keep-alive option has been proposed or
`implemented. The broader issue of enabling cooperation and negotiation
`between nodes in a TCP connection in detecting and managing idle, underactive,
`and/or dead TCP connections remains unaddressed.
`[00060008] Accordingly, there exists a need for methods, systems, and computer
`program products for sharing information for detecting an idle TCP connection.
`SUMMARY
`[00070009] The following presents a simplified summary of the disclosure in
`order to provide a basic understanding to the reader. This summary is not
`an extensive overview of the disclosure and it does not identify key/critical
`elements of the invention or delineate the scope of the invention. Its sole
`purpose is to present some concepts disclosed herein in a simplified form as
`a prelude to the more detailed description that is presented later.
`
`[0008] Methods0010] An apparatus is provided comprising: a non-transitory
`memory storing instructions; and one or more processors in communication with
`the non-transitory memory, wherein the one or more processors execute the
`instructions for: receiving, by a second node from a first node, a transmission
`control protocol (TCP)-variant packet in advance of a TCP-variant connection
`being established; detecting an idle time period parameter field in the
`TCP-variant packet; identifying metadata in the idle time period parameter
`field for an idle time period that is detectable by the first node and, during
`which, no packet is communicated in the TCP-variant connection to keep the
`TCP- variant connection active; and modifying, by the second node and based
`on the metadata, a timeout attribute associated with the TCP-variant
`connection.
`[0011] Another apparatus is provided comprising: a non-transitory memory
`storing instructions; and one or more processors in communication with the
`non-transitory memory, wherein the one or more processors execute the
`instructions for: receiving idle information for detecting an idle time
`
`Page 2 of 26
`
`
`
`period, during which, no packet is communicated in a transmission control
`protocol (TCP)-variant connection to keep the TCP-variant
`connection active; generating a TCP-variant packet including an idle time
`period parameter field identifying metadata for the idle time period based
`on the idle information; and sending, from a first node to a second node, the
`TCP-variant packet in advance of the TCP-variant connection being established
`to provide the metadata for the idle time period to the second node, for use
`by the second node in modifying, based on the metadata, a timeout attribute
`associated with the TCP-variant connection.
`[0012] Yet another apparatus is provided comprising: a non-transitory memory
`storing a network application; and one or more processors in communication
`with the non- transitory memory, wherein the one or more processors execute
`the network application such that the network application is configured to
`operate in accordance with a non- transmission control protocol (TCP) protocol
`that operates above an Internet Protocol (IP) layer and below a hypertext
`transfer protocol (HTTP) application layer, the apparatus, when operating in
`accordance with the non-TCP protocol, configured to: receive, by a second node
`from a first node, a non-TCP packet during a setup of a non- TCP connection;
`identify metadata, that specifies a number of seconds or minutes, in an idle
`time period parameter field in the non-TCP packet, for an idle time period
`that is detectable by the first node, where, as a result of a detection of
`the idle time period, the non-TCP connection is subject to deactivation; and
`determine, based on the metadata, a timeout attribute associated with the
`non-TCP connection; wherein the apparatus, when operating in accordance with
`the TCP protocol, is configured to perform a three-
`way TCP handshake for establishing a TCP connection that is different than
`the non- TCP connection.
`[0013] Still yet another apparatus is provided comprising: a non-transitory
`memory storing a network application; and one or more processors in
`communication with the non-transitory memory, wherein the one or more
`processors execute the network application such that the network application
`is configured to operate in accordance with a non-transmission control
`protocol (TCP) protocol that operates above an Internet Protocol (IP) layer
`and below a hypertext transfer protocol (HTTP) application layer, the
`apparatus, when operating in accordance with the non-TCP protocol, configured
`to: receive idle information for use in detecting an idle time period that
`results in a non-TCP connection being subject to deactivation; generate, based
`on the idle information, a non-TCP packet including an idle time period
`parameter field identifying metadata that is specified in a number of seconds
`or minutes; and send, from a first node to a second node and for establishing
`the non-TCP connection, the non-TCP packet to provide the metadata to the
`second node, for use by the second node in determining a timeout attribute
`associated with the non-TCP connection; wherein the apparatus, when operating
`in accordance with the TCP protocol, is configured to perform a three-way TCP
`handshake for establishing a TCP connection that is separate from the non-TCP
`connection.
`[0014] Other methods and systems are also described for sharing information
`for detecting an idle TCP connection. In one aspect, a method includes
`receiving, by a
`
`Page 3 of 26
`
`
`
`second node from a first node, a first transmission control protocol (TCP)
`packet in a TCP connection. The method further includes detecting a first idle
`time period header, in the first packet, identifying metadata for a first idle
`time period, detectable by the first node, during which no TCP packet including
`data in a first TCP data stream sent in the TCP connection by the second node
`is received by the first node. The method still further includes modifying,
`based on the metadata, by the second node a timeout attribute associated with
`the TCP connection.
`[00090015] Further, a system for sharing information for detecting an idle
`TCP connection is described. The system includes an execution environment
`including an instruction processing unit configured to process an instruction
`included in at least one of a net in- port component, an idle time period option
`handler component, and an option attribute handler component. The system
`includes the net in-port component configured for receiving, by a second node
`from a first node, a first transmission control protocol (TCP) packet in a
`TCP connection. The system further includes the idle time period option
`handler component configured for detecting a first idle time period header,
`in the first packet, identifying metadata for a first idle time period,
`detectable by the first node, during which no TCP packet including data in
`a first TCP data stream sent in the TCP connection by the second node is
`received by the first node. The system still further includes the option
`attribute handler component configured for modifying, based on the metadata,
`by the second node a timeout attribute associated with the TCP connection
`[00100016] In another aspect, a method for sharing information for detecting
`an idle TCP connection is described that includes receiving, by a first node,
`first idle information for detecting a first idle time period during which
`no TCP packet including data in a first data stream sent in the TCP connection
`by a second node is received by the first node. The method further includes
`generating a TCP packet including a first idle time period header identifying
`metadata for the first idle time period based on the first idle information.
`The method still further includes sending the TCP packet in the TCP connection
`to the second node to provide the metadata for the first idle time period to
`the second node. The method also includes detecting the first idle time period
`based on the first idle information. The method additionally includes
`deactivating the TCP connection in response to detecting the first idle time
`period.
`[00110017] Still further, a system for sharing information for detecting an
`idle TCP connection is described. The system includes an execution
`environment including an instruction processing unit configured to process
`an instruction included in at least one of an idle time period policy
`component, a packet generator component, a net out-port component, an idle
`time period monitor component, and a connection state component. The system
`includes the idle time period policy component configured for receiving, by
`a first node, first idle information for detecting a first idle time period
`during which no TCP packet including data in a first data stream sent in the
`TCP connection by a second node is received by the first node. The system
`includes the packet generator component configured for generating a TCP
`packet including a first idle time period
`header identifying metadata for the first idle time period based on the first
`idle information. The system still further includes the net out-port component
`
`Page 4 of 26
`
`
`
`configured for sending the TCP packet in the TCP connection to the second node
`to provide the metadata for the first idle time period to the second node.
`The system includes the idle time period monitor component configured for
`detecting the first idle time period based on the first idle information. The
`system includes the connection state component configured for deactivating
`the TCP connection in response to detecting the first idle time period.
`BRIEF DESCRIPTION OF THE DRAWINGS
`[00120018] Objects and advantages of the present invention will become
`apparent to those skilled in the art upon reading this description in
`conjunction with the accompanying drawings, in which like reference numerals
`have been used to designate like or analogous elements, and in which:
`[00130019] Fig. 1 is a block diagram illustrating an exemplary hardware device
`included in and/or otherwise providing an execution environment in which the
`subject matter may be implemented;
`[00140020] Fig. 2 is a flow diagram illustrating a method for sharing
`information for detecting an idle TCP connection according to an aspect of
`the subject matter described herein;
`[00150021] Fig. 3 is a flow diagram illustrating another method for sharing
`information for detecting an idle TCP connection according to another aspect
`of the subject matter described herein;
`[00160022] Fig. 4 is a block a diagram illustrating an arrangement of
`components for sharing information for detecting an idle TCP connection
`according to a further aspect of the subject matter described herein;
`[00170023] Fig. 5 is a block diagram illustrating an arrangement of components
`for sharing information for detecting an idle TCP connection according to
`still another aspect of the subject matter described herein;
`[00180024] Fig. 6 is a network diagram illustrating an exemplary system for
`sharing information for detecting an idle TCP connection according to an
`aspect of the subject matter described herein;
`[00190025] Fig. 7 is a message flow diagram illustrating an exemplary data
`and execution flow for sharing information for detecting an idle TCP
`connection according to an aspect of the subject matter described herein; and
`[00200026] Fig. 8 is a diagram illustrating a structure for a packet
`transmitted via a network according to an aspect of the subject matter
`described herein.
`DETAILED DESCRIPTION
`[00210027] An exemplary device included in an execution environment that may
`be configured according to the subject matter is illustrated in Fig. 1. An
`execution environment includes an arrangement of hardware and, optionally,
`software that may be further configured to include an arrangement of
`components for performing a method of the subject matter described herein.
`
`Page 5 of 26
`
`
`
`[00220028] An execution environment includes and/or is otherwise provided by
`one or more devices. An execution environment may include a virtual execution
`environment including software components operating in a host execution
`environment. Exemplary devices included in or otherwise providing suitable
`execution environments for configuring according to the subject matter
`include personal computers, notebook computers, tablet computers, servers,
`hand-held and other mobile devices, multiprocessor devices, distributed
`devices, consumer electronic devices, and/or network-enabled devices. Those
`skilled in the art will understand that the components illustrated in Fig.
`1 are exemplary and may vary by particular execution environment.
`[00230029] Fig. 1 illustrates hardware device 100 included in execution
`environment 102 which includes instruction-processing unit (IPU) 104, such
`as one or more microprocessors; physical IPU memory 106 including storage
`locations identified by addresses in a physical memory address space of IPU
`104; persistent secondary storage 108, such as one or more hard drives and/or
`flash storage media; input device adapter 110, such as key or keypad hardware,
`keyboard adapter, and/or mouse adapter; output device adapter 112, such as
`a display or audio adapter for presenting
`information to a user; a network interface, illustrated by network interface
`adapter 114, for communicating via a network such as a LAN and/or WAN; and
`a communication mechanism that couples elements 104-114, illustrated as bus
`116. Elements 104-114 may be operatively coupled by various means. Bus 116
`may comprise any type of bus architecture, including a memory bus, a peripheral
`bus, a local bus, and/or a switching fabric.
`[00240030] IPU 104 is an instruction execution machine, apparatus, or device.
`Exemplary IPUs include one or more microprocessors, digital signal processors
`(DSP), graphics processing units (GPU), application-specific integrated
`circuits (ASIC), and/or field programmable gate arrays (FPGA).
`[00250031] IPU 104 may access machine code instructions and data via one or
`more memory address spaces in addition to the physical memory address space.
`A memory address space includes addresses identifying locations in an IPU
`memory. IPU 104 may have more than one IPU memory. Thus, IPU 104 may have more
`than one memory address space. IPU 104 may access a location in an IPU memory
`by processing an address identifying the location. The processed address may
`be in an operand of a machine code instruction and/or may be identified in
`a register or other portion of IPU 104.
`[00260032] Fig. 1 illustrates virtual IPU memory 118 spanning at least part
`of physical IPU memory 106 and at least part of persistent secondary storage
`108. Virtual memory addresses in a memory address space may be mapped to
`physical memory addresses
`identifying locations in physical IPU memory 106. An address space for
`identifying locations in a virtual IPU memory is referred to as a virtual
`memory address space; its addresses are referred to as virtual memory
`addresses; and its IPU memory is known as a virtual IPU memory or virtual
`memory. The term IPU memory may refer to physical IPU memory 106 and/or virtual
`IPU memory 118 depending on the context in which the term is used.
`[00270033] Various types of memory technologies may be included in physical
`IPU memory
`
`Page 6 of 26
`
`
`
`106. Exemplary memory technologies include static random access memory (SRAM)
`and/or dynamic RAM (DRAM) including variants such as dual data rate
`synchronous DRAM (DDR SDRAM), error correcting code synchronous DRAM
`(ECC SDRAM), and/or RAMBUS DRAM (RDRAM). Physical IPU memory 106 may include
`volatile memory as illustrated in the previous sentence and/or may include
`nonvolatile memory such as nonvolatile flash RAM (NVRAM) and/or read-only
`memory (ROM).
`[00280034] Persistent secondary storage 108 may include one or more flash
`memory storage devices, one or more hard disk drives, one or more magnetic
`disk drives, and/or one or more optical disk drives. Persistent secondary
`storage may include removable media. The drives and their associated
`computer-readable storage media provide volatile and/or nonvolatile storage
`for computer readable instructions, data structures, program components, and
`other data for execution environment 102.
`[00290035] Execution environment 102 may include software components stored
`in persistent secondary storage 108, in remote storage accessible via a
`network, and/or in
`an IPU memory. Fig. 1 illustrates execution environment 102 including
`operating system 120, one or more applications 122, other program code and/or
`data components illustrated by other libraries and subsystems 124.
`[00300036] Execution environment 102 may receive user-provided information
`via one or more input devices illustrated by input device 128. Input device
`128 provides input information to other components in execution environment
`102 via input device adapter
`110. Execution environment 102 may include an input device adapter for a
`keyboard, a touch screen, a microphone, a joystick, a television receiver,
`a video camera, a still camera, a document scanner, a fax, a phone, a modem,
`a network adapter, and/or a pointing device, to name a few exemplary input
`devices.
`[00310037] Input device 128 included in execution environment 102 may be
`included in device 100 as Fig. 1 illustrates or may be external (not shown)
`to device 100. Execution environment 102 may include one or more internal
`and/or external input devices. External input devices may be connected to
`device 100 via corresponding communication interfaces such as a serial port,
`a parallel port, and/or a universal serial bus (USB) port. Input device adapter
`110 receives input and provides a representation to bus 116 to be received
`by IPU 104, physical IPU memory 106, and/or other components included in
`execution environment 102.
`[00320038] Output device 130 in Fig. 1 exemplifies one or more output devices
`that may be included in and/or may be external to and operatively coupled to
`device 100. For example, output device 130 is illustrated connected to bus
`116 via output device
`adapter 112. Output device 130 may be a display device. Exemplary display
`devices include liquid crystal displays (LCDs), light emitting diode (LED)
`displays, and projectors. Output device 130 presents output of execution
`environment 102 to one or more users. In some embodiments, an output device
`
`Page 7 of 26
`
`
`
`is a device such as a phone, a joystick, and/or a touch screen. In addition
`to various types of display devices, exemplary output devices include
`printers, speakers, tactile output devices such as motion producing devices,
`and other output devices producing sensory information detectable by a user.
`[00330039] A device included in or otherwise providing an execution
`environment may operate in a networked environment communicating with one or
`more devices (not shown) via one or more network interfaces. The terms
`"communication interface" and "network interface" are used interchangeably.
`Fig. 1 illustrates network interface adapter 114 as a network interface
`included in execution environment 102 to operatively couple device 100 to a
`network. The terms "network node" and "node" in this document both refer to
`a device having a network interface operatively coupled to a network.
`[00340040] Exemplary network interfaces include wireless network adapters and
`wired network adapters. Exemplary wireless networks include a BLUETOOTH
`network, a wireless 802.11 network, and/or a wireless telephony network (e.g.,
`a cellular, PCS, CDMA, and/or GSM network). Exemplary wired networks include
`various types of LANs, wide area networks (WANs), and personal area networks
`(PANs). Exemplary network adapters for wired networks include Ethernet
`adapters, Token-ring adapters, FDDI
`adapters, asynchronous transfer mode (ATM) adapters, and modems of various
`types. Exemplary networks also include intranets and internets such as the
`Internet.
`[00350041] Fig. 2 is a flow diagram illustrating a first method for sharing
`information for detecting an idle TCP connection according to an exemplary
`aspect of the subject matter described herein. Fig. 3 is a flow diagram
`illustrating a second method for sharing information for detecting an idle
`TCP connection according to an exemplary aspect of the subject matter
`described herein. Fig. 4a is a block diagram illustrating a system for sharing
`information for detecting an idle TCP connection according to the first method
`in Fig. 2. Fig. 4b is a block diagram illustrating a system for sharing
`information for detecting an idle TCP connection according to the second
`method in Fig.
`3. It is expected that many, if not most, systems configured to perform one
`of the methods illustrated in Fig. 2 and Fig. 3 will also be configured to
`perform the other method.
`[00360042] A system for sharing information for detecting an idle TCP
`connection according to the method illustrated in Fig. 2 includes an execution
`environment, such as execution environment 102 in Fig. 1, including an
`instruction processing unit, such as IPU 104, configured to process an
`instruction included in at least one of an idle time period policy component
`450, a packet generator component 452, and a net out-port component 454, a
`idle time period monitor component 456, and a connection state component 458
`illustrated in Fig. 4a.
`[00370043] A system for sharing information for detecting an idle TCP
`connection performing the method illustrated in Fig. 3 includes an execution
`environment, such as execution environment 102 in Fig. 1, including an
`instruction processing unit, such as IPU 104, configured to process an
`instruction included in at least one of a net in-port component 460, an idle
`
`Page 8 of 26
`
`
`
`time period option handler component 462, an option attribute handler
`component 464 illustrated in Fig. 4b.
`[00380044] Components illustrated in Fig. 4a may be adapted for performing
`the method illustrated in Fig. 2 in a number of execution environments.
`Components illustrated in Fig. 4b may be adapted for performing the method
`illustrated in Fig. 3 in a number of execution environments. Fig. 5 is a block
`diagram illustrating adaptations and/or analogs of the components of Fig.
`4a and Fig. 4b in exemplary execution environment 502 including or otherwise
`provided by one or more nodes. The method depicted in Fig. 2 and the method
`depicted in Fig. 3 may be carried out by some or all of the exemplary components
`and/or their analogs.
`[00390045] The components illustrated in Fig. 4 and Fig. 5 may be included
`in or otherwise may be combined with some or all of the components of Fig.
`1 to create a variety of arrangements of components according to the subject
`matter described herein.
`[00400046] Fig. 6 illustrates first node 602 and second node 604 as exemplary
`devices included in and/or otherwise adapted for providing a suitable
`execution environment, such as execution environment 502 illustrated in Fig.
`5, for an adaptation of the arrangement of components in Fig. 4a and an
`adaptation of the arrangement of
`components in Fig. 4b. As illustrated in Fig. 6, first node 602 and second
`node 604 are operatively coupled to network 606 via respective network
`interfaces enabling first node 602 and second node 604 to communicate. Fig.
`7 is a message flow diagram illustrating an exemplary exchange of messages
`within and between first node 602 and second node 604 according to the subject
`matter described herein.
`[00410047] As stated, the various adaptations of the arrangements of
`components in Fig. 4a and in Fig. 4b described herein are not exhaustive.
`[00420048] In Fig. 5, execution environment 502 illustrates a network
`application 504 operating in a node configured to communicate with one or more
`other nodes via the TCP supported by TCP layer component 506. For example,
`first node 602 may be included in and/or provide execution environment 502.
`Network application 504 may be a first application configured to communicate
`with an application operating in second node 604 via network 606. Second node
`604 may be included in and/or provide another instance of execution
`environment 502. The operation of both first node 602 and second node 604 are
`described with respect to execution environment 502. For ease of illustration,
`both first node 602 and second node 604 are configured with adaptations of
`the arrangement in Fig 4a and the arrangement in Fig. 4b. As such, the
`description of components and corresponding operations with respect to
`execution environment 502 in Fig. 5 is applicable to both first node 602
`and second node 604 in Fig. 6.
`[00430049] In Fig. 5, network interface card (NIC) 508 is an exemplification
`of a network interface illustrated in Fig. 1 by network interface adapter 114.
`NIC 508 includes a
`
`Page 9 of 26
`
`
`
`physical layer component 510 operatively coupling execution environment 502
`to one or more physical media for carrying communication signals. The media
`may be wired, such as an Ethernet LAN operating over CAT 6 cabling, or may
`be wireless such as an
`802.11n LAN. Other exemplary physical layer protocols and corresponding media
`are identified above.
`[00440050] NIC 508 may also include a portion of link layer component 512.
`Link layer component 512 may provide for communication between two nodes in
`a point-to-point communication and/or two nodes in a local area network (LAN).
`Exemplary link layers and, their protocols have been described above including
`FDDI, ATM, and Ethernet. A portion of link layer component 512 is external
`to NIC 508. The external portion may be realized as a device driver for NIC
`508.
`[00450051] Link layer component 512 may receive data formatted as one or more
`internet protocol (IP) packets from internet protocol (IP) layer component
`514. Link layer component 512 packages data from IP layer component 514
`according to the particular link layer protocol supported. Analogously, link
`layer component 512 interprets data, received as signals transmitted by the
`physical media operatively coupled to physical layer component 510, according
`to a particular link layer protocol supported. Link layer component 512 may
`strip off link layer specific data and transfer the payload of link layer
`transmissions to IP layer component 514.
`[00460052] IP layer component 514 illustrated in Fig. 5 is configured to
`communicate with one or more remote nodes over a LAN and/or a network of
`networks such as an intranet
`or the Internet. IP layer component 514 may receive data formatted as TCP
`packets from TCP layer component 506. IP layer component 514 packages data
`from TCP layer component 506 into IP packets for transmission across a network.
`The network may be and/or may include an internet. Analogously, IP layer
`component 514 interprets data, received from link layer component 512 as IP
`protocol data and detects IP packets in the received data. IP layer component
`514 may strip off IP layer specific data and transfer the payload of one or
`more IP packets to TCP layer component 506.
`[00470053] In Fig. 5, IP layer component 514 is operatively coupled to TCP
`layer component 506. TCP layer component 506 is configured to provide a TCP
`connection over network 606 for sending and/or receiving packets included in
`the TCP connection between two nodes exemplified by first node 602 and second
`node 604.
`[00480054] In a TCP connection including first node 602 and second node 604,
`first node 602 may include a first TCP connection endpoint and second node
`604 may include a second TCP connection endpoint. The first and second TCP
`connection endpoints identify the TCP connection. The TCP connection may have
`other identifiers, in addition to the included endpoints.
`[00490055] Components of execution environment 502, in an aspect, may
`interoperate with TCP layer component 506 directly. In another aspect, one
`or more components, such as network application 504, may interoperate with
`TCP layer component 506 indirectly. Network application 504 may exchange data
`
`Page 10 of 26
`
`
`
`with TCP layer component 506 via sockets component 518 and/or an analog of
`sockets component 518. Alternatively or
`additionally, network application 504 may communicate with a remote node via
`an application protocol layer illustrated by application protocol layer
`component 520. Many application protocols currently exist and new application
`protocols will be developed. Exemplary application layer protocols include
`hypertext transfe