EXHIBIT A

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 1 of 29
| HAI LUI A UN NOU LIKE AN ALTINA ALI ONLINE US010069945B1 

( 12 ) United States Patent 

Morris 

( 10 ) Patent No . : US 10 , 069 , 945 B1 

( 45 ) Date of Patent : " Sep . 4 , 2018 

( 54 ) METHODS , SYSTEMS , AND COMPUTER ( 56 ) References Cited 

PROGRAM PRODUCTS FOR SHARING 

INFORMATION FOR DETECTING AN IDLE 

TCP CONNECTION 

U . S . PATENT DOCUMENTS 

( 71 ) Applicant : SITTING MAN , LLC , Raleigh , NC 

( US ) 

6 , 412 , 006 B2 6 / 2002 Naudus 

7 , 404 , 210 B2 7 / 2008 Lin 

7 , 426 , 569 B2 9 / 2008 Dunk 

7 , 684 , 346 B2 3 / 2010 Valli 

7 , 720 , 989 B2 5 / 2010 Dunk 

7 , 729 , 271 B26 / 2010 Tsuchiya et al . 7 , 808 , 941 B2 * 10 / 2010 Ramos . . . . . . . . . . . . . . . . . ( 72 ) Inventor : Robert Paul Morris , Raleigh , NC ( US ) H04L 47 / 14 

370 / 310 ( 73 ) Assignee : Sitting Man , LLC , Raleigh , NC ( US ) ( Continued ) 

( * ) Notice : 

OTHER PUBLICATIONS 

Subject to any disclaimer , the term of this 

patent is extended or adjusted under 35 

U . S . C . 154 ( b ) by 0 days . 

This patent is subject to a terminal dis 

claimer . 

Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Jun . 21 , 2012 . ( Continued ) 

( 21 ) Appl . No . : 15 / 915 , 053 

( 22 ) Filed : Mar . 7 , 2018 Primary Examiner — Moustafa M Meky ( 74 ) Attorney , Agent , or Firm — Patrick E . Caldwell , Esq . ; The Caldwell Firm , LLC 

( 57 ) ABSTRACT 

Related U . S . Application Data 

( 63 ) Continuation of application No . 15 / 694 , 802 , filed on 

Sep . 3 , 2017 , now Pat . No . 9 , 923 , 995 , which is a 

continuation - in - part of application No . 14 / 667 , 642 , filed on Mar . 24 , 2015 , which is a continuation - in - part of application No . 13 / 447 , 402 , filed on May 22 , 2012 , which is a continuation of application No . 12 / 714 , 454 , filed on Feb . 27 , 2010 , now Pat . No . 8 , 219 , 606 . 

A computer - implemented method is provided , comprising causing access to be provided , to a client computer , to code 

that causes the client computer to operate in accordance with 

a protocol that is separate from TCP , in order to establish a 

protocol connection with another server computer , by : 

receiving a packet , detecting an idle time period parameter 

field in the packet , identifying metadata in the idle time 

period parameter field for an idle time period , where , after 

the idle time period is detected , the second protocol con 

nection is deemed inactive , and creating or modifying , by 

the client computer and based on the metadata , a timeout 

attribute associated with the second protocol connection . 

( 51 ) Int . CI . G06F 15 / 16 ( 2006 . 01 ) 

H04L 29 / 06 ( 2006 . 01 ) 

( 52 ) U . S . CI . ??? . . . H04L 69 / 16 ( 2013 . 01 ) ( 58 ) Field of Classification Search 

CPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . HO4L 69 / 16 

See application file for complete search history . 144 Claims , 8 Drawing Sheets 

Receive , by a second node from a first node , a first transmission 302 302 

control protocol ( TCP ) packet in a TCP connection 

- 304 

Detect 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 

306 modifying , based on the metadata , by the second node a timeout 

attribute associated with the TCP connection 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 2 of 29
US 10 , 069 , 945 B1 

Page 2 

( 56 ) References Cited 

U . S . PATENT DOCUMENTS 

7 , 876 , 678 B2 * 1 / 2011 Ong . . . . . . . . . . . . . . . . . . H04L 47 / 10 370 / 230 . 1 

8 , 073 , 964 B2 12 / 2011 Dunk 

8 , 077 , 737 B2 * 12 / 2011 Ji HO4L 45 / 10 

370 / 465 

8 , 219 , 606 B2 7 / 2012 Morris 

9 , 060 , 310 B2 * 6 / 2015 Ji . . . . . . . . . HO4L 45 / 10 

9 , 923 , 996 B1 * 3 / 2018 Morris . . . . . . . . . . . . . . . . . . . HO4L 69 / 16 

2005 / 0054347 AL 3 / 2005 Kakani 

2005 / 0063304 AL 3 / 2005 Sillasto et al . 2006 / 0034179 AL 2 / 2006 Carter et al . 2008 / 0084826 Al * 4 / 2008 Ong . . . . . . HO4L 47 / 10 

370 / 237 

2008 / 0095124 A1 * 4 / 2008 Ramos . . . H04L 47 / 14 

370 / 336 

2009 / 0252072 Al 10 / 2009 Lind et al . 2010 / 0057844 AL 3 / 2010 Johnson 

2010 / 0074273 A1 * 3 / 2010 Ji H04L 45 / 10 

370 / 465 

2011 / 0213820 AL 9 / 2011 Morris 

Office Action Summary in U . S . Appl . No . 12 / 714 , 454 dated Feb . 23 , 2012 . Office Action Summary in U . S . Appl . No . 13 / 477 , 402 dated Sep . 24 , 2014 . Office Action Summary in U . S . Appl . No . 15 / 694 , 802 dated Nov . 29 , 2017 

Allman , M . , Paxson , V . , Stevens , W . , “ TCP Congestion Control ” , 

RFC 2581 , Internet Engineering Task Force , http : / / tools . ietf . org / rfc / 

rfc2581 . txt , - Apr . 1999 . Busatto , Fabio , “ TCP Keepalive Overview ” , TCP Keepalive 

HOWTO , Section 2 , http : / / tldp . org / HOWTO / html _ single / TCP 

Keepalive - HOWTO / # overview , accessed Jan . 2010 , May 2007 . Eggert , L . , Gont , F . , “ TCP User Timeout Option ” , RFC 5482 , Internet Engineering Task Force ( IEFT ) , http : / / tools . ietf . org / htm / 

rfc5482 . txt , Mar . 2009 . Koziero , Charles M . , TCP Connection Management and Problem 

Handling , the Connection Reset Function , and TCP “ Keepalives ” , 

The TCP / IP Guide , p . 3 , http : / / www . tcpipguide . com / free / 

t _ TCPConnection ManagementandProblemHandlingtheConnec - 3 . 

htm , accessed Feb . 2010 , ( c ) 2003 - 2010 . Mathis , M . , Mandave , J . , Floyd , S . , Romanow , A . , “ TCP Selective 

Acknowledgement Options ” , RFC 2018 , Internet Engineering Task 

Force , http : / / tools . ietf . org / rfc / rfc2018 . txt , Oct . 1996 . Nagle , John , “ Congestion Control in IP / TCP Internetworks ” , RFC 

896 , Ford Aerospace and Communications Corporation , http : / / tools . ietf . org / rfc / rfc896 . txt , Jan . 1984 . Postel , John ( ed . ) , Editor ; “ Transmission Control Protocol 

DARPA Internet Protocol Specification ” , RFC 793 , USC / Informa 

tion Sciences Institute , http : / / tools . ietf . org / rfc / rfc793 . txt , Sep . 1981 . 

. . . . . . . . . . . 

OTHER PUBLICATIONS 

Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Mar . 4 , 

2013 . Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Sep . 27 , 2013 . * cited by examiner 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 3 of 29
U . S . Patent Sep . 4 , 2018 Sheet 1 of 8 US 10 , 069 , 945 B1 

Execution Environment 102 

Device / Node 100 

Output Device 

130 

Input Device Cameroon 128 

Virtual IPU Memory 118 

Physical IPU 

Memory 106 

Instruction 

Processing 

Unit 104 

Output 

Device 

Adapter 112 

Input Device 

Adapter 110 

Applications 

122 

Other Libraries and 

Subsystems 124 Persistent 

Secondary 

Storage 108 

Network 

Interface 

Adapter 

To / From 

Operating Network 

System 120 114 

. 

Fig . 1 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 4 of 29
U . S . Patent Sep . 4 , 2018 Sheet 2 of 8 US 10 , 069 , 945 B1 

202 Receive , 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 

Generate a TCP packet including a first idle time period header 204 204 identify metadata for the first idle time period based on the first idle 

information 

206 Send 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 

208 

Detect the first idle time period based on the first idle information 

210 Deactivate the TCP connection in response to detecting the first idle 

time period 

Fig . 2 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 5 of 29
U . S . Patent Sep . 4 , 2018 Sheet 3 of 8 US 10 , 069 , 945 B1 

302 Receive , by a second node from a first node , a first transmission 

control protocol ( TCP ) packet in a TCP connection 

304 

Detect 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 

306 modifying , based on the metadata , by the second node a timeout 

attribute associated with the TCP connection 

Fig . 3 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 6 of 29
U . S . Patent Sep . 4 , 2018 

- 

Sheet 4 of 8 US 10 , 069 , 945 B1 

Connection 

State 458 

ITP Policy 450 me Poies se 

Option 

Attribute 

ITP Monitor 456 Handler 564 o Monitores 

Packet Generator 

452 

ITP Option 

Handler 462 

Net Out - Port 454 Net In - Port 460 

Fig . 4a Fig . 4b 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 7 of 29
U . S . Patent Sep . 4 , 2018 Sheet 5 of 8 US 10 , 069 , 945 B1 

Execution Environment 502 

Network Application 504 

Application Protocol Layer 520 

Sockets 518 

App In - Port 

522 

Settings 

Service 

526 

App Out 

Port 524 Option 

Attribute 

Handler 564 

Connection 

State 558 

Packet 

Generator 

552 

ITP 

Policy 

550 

Packet 

Handler 

516 ITP Monitor 

556 

ITP Option 

Net Out Handler 562 Net In - Port 

Port 554 560 TCP Layer 506 

IP Layer 514 

Link Layer 512 

NIC 508 

Physical Layer 

510 

Fig . 5 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 8 of 29
U . S . Patent Sep . 4 , 2018 Sheet 6 of 8 US 10 , 069 , 945 B1 

Second 

Node 

604 

Network 

606 

First Node 

602 

Fig . 6 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 9 of 29
U . S . Patent Sep . 4 , 2018 Sheet 7 of 8 US 10 , 069 , 945 B1 

First Node 

602 

Second 

Node 

604 

Idlelnfo 702 

704 

GeneratePacket ( ITI ) 

706 . 1 - Packet ( IH ) 

708 

Detectivo 

- Packet ( ) 706 . 2 • • • 

706 . n Packet ( ) 

710 . 1 

Idle TimerSet ( ) 

710 . 2 

IdlePop ( ) 

712 

Deactivate 

Fig . 7 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 10 of 29
U . S . Patent Sep . 4 , 2018 Sheet 8 of 8 US 10 , 069 , 945 B1 

804 806 prwid m 

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 

1 Source Port Destination Port 

Sequence Number 

Acknowledgment Number 

| Data 1 TUA PRSIE | 

Toffset Reserved ( RICISIS | Y | I | | 11 G | K | HT | N | N | 

Window 

. Checksum 

? 

- Urgent Pointer 

Options 1 Padding 1 

data 

802 

1 I 1 + 812 + ce Addre — 

oto - + - - - - - - - - 1 IR I 1 1 + - - - - - - + 814 

: - Destination Address T 

- - - - - - - + + - - - T + + + 

- - | zero N 4 | PTCL I TCP Length 

? ?? ?? ??? ??? ?? ?? ?? ?? ??? ?? ?? ?? ?? ?? ?? ? ?? ??? ? ?? ?? ?? ?? ?? ?? ? ??? ??? ?? ?? ?? ?? ? ? ???? 

822 810 

wwwwwwwwwwwwwwwwwwwwwwww white www ww wohnt w w w wotet som * www w w w w w w we wou wwwwww oh w + 

| KI KIND | Length ITP Data 1 

824 820 - 826 

Figures are adapted from RFC 793 

Fig . 8 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 11 of 29
US 10 , 069 , 945 B1 

METHODS , SYSTEMS , AND COMPUTER opposition to one another and / or may waste resources by 

PROGRAM PRODUCTS FOR SHARING duplicating function , according to critics of the keep - alive 

INFORMATION FOR DETECTING AN IDLE option . TCP CONNECTION Proponents of the keep - alive option claim there is a 

5 benefit to detecting a dead peer / partner endpoint sooner . A 

RELATED APPLICATIONS node providing TCP keep - alive can also indirectly detect 

when a network is so congested that two nodes with end 

This application is a continuation of , and claims priority points in a TCP connection are effectively disconnected . to U . S . patent application Ser . No . 15 / 694 , 802 entitled Proponents argue that keep - alive can keep an inactive TCP 

“ METHODS , SYSTEMS , AND COMPUTER PROGRAM 10 connection open . For example , some network nodes such as 

PRODUCTS FOR SHARING INFORMATION FOR firewalls are configured to close TCP connections deter 

DETECTING AN IDLE TCP CONNECTION , " filed on mined to be idle or inactive in order to recover resources . Sep . 3 , 2017 which , in turn , is a continuation - in - part of , and Keep - alive can prevent this . This is good from the perspec claims priority to U . S . patent application Ser . No . 14 / 667 , tive of the node sending keep - alive packets , but the keep 

642 , entitled “ METHODS , SYSTEMS , AND COMPUTER 15 alive packets might cause the firewall to waste resources and 

PROGRAM PRODUCTS FOR SELECTING A possibly block or terminate TCP connections with other 

RESOURCE BASED ON A MEASURE OF A PROCESS - nodes . 

ING COST , ” filed on Mar . 24 , 2015 which , in turn , is a TCP keep - alive and the debate of its benefits and faults 

continuation - in - part of and claims priority to U . S . patent have been around for decades . To date no mechanism to 

application Ser . No . 13 / 477 , 402 , entitled “ METHODS , 20 allow two TCP connection endpoints to cooperate in sup 

SYSTEMS , AND COMPUTER PROGRAM PRODUCTS porting the keep - alive option has been proposed or imple 

FOR SHARING INFORMATION FOR DETECTING AN mented . The broader issue of enabling cooperation and 

IDLE TCP CONNECTION , ” filed May 22 , 2012 which is a negotiation between nodes in a TCP connection in detecting continuation of and claims priority to U . S . patent application and managing idle , underactive , and / or dead TCP connec 

Ser . No . 12 / 714 , 454 , entitled “ METHODS , SYSTEMS , 25 tions remains unaddressed . AND COMPUTER PROGRAM PRODUCTS FOR SHAR Accordingly , there exists a need for methods , systems , ING INFORMATION FOR DETECTING AN IDLE TCP and computer program products for sharing information for 

CONNECTION , " filed Feb . 27 , 2010 . detecting an idle TCP connection . U . S . patent application Ser . No . 12 / 714 , 454 , entitled 

“ METHODS , SYSTEMS , AND COMPUTER PROGRAM 30 SUMMARY 

PRODUCTS FOR SHARING INFORMATION FOR 

DETECTING AN IDLE TCP CONNECTION , ” filed Feb . The following presents a simplified summary of the 

27 , 2010 is incorporated herein by reference in its entirety disclosure in order to provide a basic understanding to the 

for all purposes . reader . This summary is not an extensive overview of the 

This application is related to the following commonly 35 disclosure and it does not identify key / critical elements of 

owned U . S . Patent Applications , the entire disclosure of the invention or delineate the scope of the invention . Its sole 

which is incorporated by reference herein in its entirety for purpose is to present some concepts disclosed herein in a 

all purposes : application Ser . No . 12 / 714 , 063 filed on 2010 simplified form as a prelude to the more detailed description Feb . 26 , entitled “ Methods , Systems , and Program Products that is presented later . for Detecting an Idle TCP Connection ” . 40 A computer - implemented method is provided , compris 

ing : causing access to be provided to a server computer 

BACKGROUND including : a non - transitory memory storing a network appli 

cation , and one or more processors in communication with 

Various implementations of the transmission control pro the non - transitory memory , wherein the one or more pro 

tocol ( TCP ) in network nodes support a number of options 45 cessors execute the network application to operate in accor 

that are not negotiated or even communicated between or d ance with a first protocol including a transmission control 

among any of the nodes . Some of these options are included protocol ( TCP ) ; causing a TCP connection to be established 

in the specification of the TCP while others are not . For with a client computer , by : communicating a segment example , the TCP keep - alive option is supported by a including at least one first synchronize bit , communicating 

number of implementations of the TCP . It is not , however , 50 a first acknowledgement of the segment , and at least one 

part of the TCP specification as described in “ Request for second synchronize bit , and communicating a second 

Comments ” ( RFC ) document RFC 793 edited by John acknowledgement ; causing first data to be communicated 

Postel , titled “ Transmission Control Protocol , DARPA Inter from the server computer to the client computer utilizing the 

net Program Internet Protocol Specification ” ( September TCP connection in accordance with the TCP protocol and a 

1981 ) , which is incorporated here in its entirety by refer - 55 hypertext transfer protocol ( HTTP ) , for being presented to a 

ence . One , both , or neither node including an endpoint in a user of the client computer ; causing the server computer to 

TCP connection may support a keep - alive option for the permit second data , from the user of the client computer , to connection . Each node supports or does not support keep - be received at the server computer from the client computer alive for a TCP connection based on each node ' s require utilizing the TCP connection in accordance with the TCP 

ments without consideration for the other node in the TCP 60 protocol and the hypertext transfer protocol ( HTTP ) ; and 

connection . causing access to be provided , to the client computer , to code 

With respect to the keep - alive option , some argue that it that causes the client computer to operate in accordance with 

is unnecessary and that it can waste network bandwidth . a second protocol that is separate from the TCP , in order to 

Some of these critics point out that a keep - alive packet can establish a second protocol connection with another server 

bring down a TCP connection . Further , since nodes includ - 65 computer , by : receiving a packet , detecting an idle time 

ing endpoints in a TCP connection do not cooperate in period parameter field in the packet , identifying metadata in 

supporting the keep - alive option , the nodes may operate in the idle time period parameter field for an idle time period , 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 12 of 29
US 10 , 069 , 945 B1 

where , after the idle time period is detected , the second protocol ( HTTP ) application layer , in order to setup a second 

protocol connection is deemed inactive , and creating or protocol connection with another server computer , by : 

modifying , by the client computer and based on the meta receiving , by the client computer from the another server 

data , a timeout attribute associated with the second protocol computer , a packet , identifying metadata , that specifies a 

connection . 5 number of seconds or minutes , in an idle time period Another computer - implemented method is provided com parameter field in the packet for an idle time period during prising : providing access to a server computer including : a which , no packet is communicated that meets each of the 

non - transitory memory storing a network application , and following criteria : a ) communicated via the second protocol one or more processors in communication with the non connection , and b ) causes the second protocol connection to transitory memory , wherein the one or more processors 10 be kept at least partially alive , and determining , by the client execute the network application to operate in accordance computer and based on the metadata , a timeout attribute with a first protocol including a transmission control proto 

col ( TCP ) ; causing a TCP connection to be established with associated with the second protocol connection . Still yet another computer - implemented method is pro a client computer , by communicating a segment including at 

least one first synchronize bit ; communicating a first 15 ! ing a first 15 vided comprising : providing access to a server computer 

acknowledgement of the segment , and at least one second including : a non - transitory memory storing instructions , and 

synchronize bit ; and communicating a second acknowledge one or more processors in communication with the non 

ment ; causing first data to be communicated from the server transitory memory , wherein the one or more processors 

computer to the client computer utilizing the TCP connec - execute the instructions such that a network application tion in accordance with the TCP protocol and a hypertext 20 operates in accordance with a first protocol including a 

transfer protocol ( HTTP ) , for being presented to a user of the transmission control protocol ( TCP ) that operates above an 

client computer , causing the server computer to permit Internet Protocol ( IP ) layer and below a hypertext transfer 

second data , from the user of the client computer , to be protocol ( HTTP ) application layer , the server computer , received at the server computer from the client computer when operating in accordance with the first protocol to set up 

utilizing the TCP connection in accordance with the TCP 25 a TCP connection with a client computer , configured to : 

protocol and the hypertext transfer protocol ( HTTP ) ; and communicate a segment including at least one first synchro providing access to code that results in the client computer nize bit , communicate a first acknowledgement of the seg operating in accordance with a second protocol that is ment , and at least one second synchronize bit , and commu separate from the TCP , in order to establish a second nicate a second acknowledgement ; causing first data to be protocol connection with another server computer , by : iden - 30 communicated from the server computer to the client com tifying idle information for detecting an idle time period , puter utilizing the TCP connection in accordance with the after which , the second protocol connection is subject to TCP protocol and a hypertext transfer protocol ( HTTP ) , for deactivation , generating a second protocol packet including 

an idle time period parameter field identifying metadata for being presented to a user of the client computer , causing the 

the idle time period based on the idle information , and 35 server computer to permit second data , of the user of the 

sending , from the client computer to the another server client computer , to be received at the server computer from 

computer , the second protocol packet to provide the meta the client computer utilizing the TCP connection in accor 

data for the idle time period to the another server computer , dance with the TCP protocol and the hypertext transfer 

for use by the another server computer in creating or protocol ( HTTP ) ; and providing access to code that results 

modifying , based on the metadata , a timeout attribute asso - 40 in the client computer operating in accordance with a second 

ciated with the second protocol connection . protocol , that is different from the TCP and operates above 

Yet another computer - implemented method is provided the IP layer and below the HTTP application layer , in order 

comprising : providing access to a server computer includ - to setup a second protocol connection with another server 

ing : a non - transitory memory storing instructions , and one computer , and to : receive idle information for use in detect 

or more processors in communication with the non - transi - 45 ing an idle time period during which no signal is commu 

tory memory , wherein the one or more processors execute nicated that meets each of the following criteria : a ) com 

the instructions such that a network application operates in municated in the second protocol connection , and b ) results 

accordance with a first protocol including a transmission in the second protocol connection being at least partially 

control protocol ( TCP ) , the server computer , when operating kept alive , generate , based on the idle information , a second 

in accordance with the first protocol to set up a TCP 50 protocol packet including an idle time period parameter field 

connection with a client computer , configured to : commu - identifying metadata that is specified in a number of seconds 

nicate a segment including at least one first synchronize bit , or minutes , and send , from the client computer to another 

communicate a first acknowledgement of the segment , and server computer and during the set up of the second protocol 

at least one second synchronize bit , and communicate a connection , the second protocol packet to provide the meta 

second acknowledgement ; causing first data to be commu - 55 data to the another server computer , for use by the another 

nicated from the server computer to the client computer server computer in determining a timeout attribute associ 

utilizing the TCP connection in accordance with the TCP ated with the second protocol connection . protocol and a hypertext transfer protocol ( HTTP ) , for being Other methods and systems are also described for sharing 

presented to a user of the client computer , causing the server information for detecting an idle TCP connection . In one 

computer to permit second data , of the user of the client 60 aspect , a method includes receiving , by a second node from 

computer , to be received at the server computer from the a first node , a first transmission control protocol ( TCP ) 

client computer utilizing the TCP connection in accordance packet in a TCP connection . The method further includes 

with the TCP protocol and the hypertext transfer protocol detecting a first idle time period header , in the first packet , ( HTTP ) ; and providing access to code that causes the client identifying metadata for a first idle time period , detectable 

computer to operate in accordance with a second protocol 65 by the first node , during which no TCP packet including data 

that is different from the TCP and that operates above an in a first TCP data stream sent in the TCP connection by the 

Internet Protocol ( IP ) layer and below a hypertext transfer second node is received by the first node . The method still 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 13 of 29
US 10 , 069 , 945 B1 

further includes modifying , based on the metadata , by the description in conjunction with the accompanying drawings , second node a timeout attribute associated with the TCP in which like reference numerals have been used to desig connection . nate like or analogous elements , and in which : 

Further , a system for sharing information for detecting an FIG . 1 is a block diagram illustrating an exemplary 

idle TCP connection is described . The system includes an 5 hardware device included in and / or otherwise providing an 

execution environment including an instruction processing execution environment in which the subject matter may be unit configured to process an instruction included in at least implemented ; 

one of a net in - port component , an idle time period option FIG . 2 is a flow diagram illustrating a method for sharing handler component , and an option attribute handler compo information for detecting an idle TCP connection according nent . The system includes the net in - port component con figured for receiving , by a second node from a first node , a 10 to an aspect of the subject matter described herein ; 

first transmission control protocol ( TCP ) packet in a TCP FIG . 3 is a flow diagram illustrating another method for 

connection . The system further includes the idle time period sharing information for detecting an idle TCP connection 

option handler component configured for detecting a first according to another aspect of the subject matter described 

idle time period header , in the first packet , identifying herein ; 

metadata for a first idle time period , detectable by the first 15 FIG . 4a and FIG . 4b show a block a diagram illustrating node , during which no TCP packet including data in a first an arrangement of components for sharing information for 

TCP data stream sent in the TCP connection by the second detecting an idle TCP connection according to a further 

node is received by the first node . The system still further aspect of the subject matter described herein ; 

includes the option attribute handler component configured FIG . 5 is a block diagram illustrating an arrangement of 

for modifying , based on the metadata , by the second node a 20 components for sharing information for detecting an idle 

timeout attribute associated with the TCP connection TCP connection according to still another aspect of the 

In another aspect , a method for sharing information for subject matter described herein ; 

detecting an idle TCP connection is described that includes FIG . 6 is a network diagram illustrating an exemplary 

receiving , by a first node , first idle information for detecting system for sharing information for detecting an idle TCP 

a first idle time period during which no TCP packet includ - 25 connection according to an aspect of the subject matter 

ing data in a first data stream sent in the TCP connection by described herein ; 

a second node is received by the first node . The method FIG . 7 is a message flow diagram illustrating an exem 

further includes generating a TCP packet including a first plary data and execution flow for sharing information for 

idle time period header identifying metadata for the first idle detecting an idle TCP connection according to an aspect of 

time period based on the first idle information . The method 30 the subject matter described herein ; and 

still further includes sending the TCP packet in the TCP FIG . 8 is a diagram illustrating a structure for a packet connection to the second node to provide the metadata for transmitted via a network according to an aspect of the 

the first idle time period to the second node . The method also subject matter described herein . includes detecting the first idle time period based on the first 

idle information . The method additionally includes deacti - 35 DETAILED DESCRIPTION 

vating the TCP connection in response to detecting the first 

idle time period . An exemplary device included in an execution environ 

Still further , a system for sharing information for detect - ment that may be configured according to the subject matter 

ing an idle TCP connection is described . The system is illustrated in FIG . 1 . An execution environment includes 

includes an execution environment including an instruction 40 an arrangement of hardware and , optionally , software that 

processing unit configured to process an instruction included may be further configured to include an arrangement of 

in at least one of an idle time period policy component , a components for performing a method of the subject matter 

packet generator component , a net out - port component , an described herein . idle time period monitor component , and a connection state An execution environment includes and / or is otherwise 

component . The system includes the idle time period policy 45 provided by one or more devices . An execution environment 

component configured for receiving , by a first node , first idle may include a virtual execution environment including information for detecting a first idle time period during software components operating in a host execution environ 

which no TCP packet including data in a first data stream ment . Exemplary devices included in or otherwise providing 

sent in the TCP connection by a second node is received by suitable execution environments for configuring according the first node . The system includes the packet generator 50 to the subject matter include personal computers , notebook 

component configured for generating a TCP packet includ computers , tablet computers , servers , hand - held and other 

ing a first idle time period header identifying metadata for mobile devices , multiprocessor devices , distributed devices , the first idle time period based on the first idle information . consumer electronic devices , and / or network - enabled 

The system still further includes the net out - port component devices . Those skilled in the art will understand that the 

configured for sending the TCP packet in the TCP connec - 55 components illustrated in FIG . 1 are exemplary and may 

tion to the second node to provide the metadata for the first vary by particular execution environment . idle time period to the second node . The system includes the FIG . 1 illustrates hardware device 100 included in execu 

idle time period monitor component configured for detecting tion environment 102 which includes instruction - processing 

the first idle time period based on the first idle information . unit ( IPU ) 104 , such as one or more microprocessors ; 

The system includes the connection state component con - 60 physical IPU memory 106 including storage locations iden 

figured for deactivating the TCP connection in response to tified by addresses in a physical memory address space of 

detecting the first idle time period . IPU 104 ; persistent secondary storage 108 , such as one or 

more hard drives and / or flash storage media ; input device 

BRIEF DESCRIPTION OF THE DRAWINGS adapter 110 , such as key or keypad hardware , keyboard 

65 adapter , and / or mouse adapter ; output device adapter 112 , Objects and advantages of the present invention will such as a display or audio adapter for presenting information 

become apparent to those skilled in the art upon reading this to a user ; a network interface , illustrated by network inter 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 14 of 29
US 10 , 069 , 945 B1 

face adapter 114 , for communicating via a network such as include an input device adapter for a keyboard , a touch 

a LAN and / or WAN ; and a communication mechanism that screen , a microphone , a joystick , a television receiver , a 

couples elements 104 - 114 , illustrated as bus 116 . Elements video camera , a still camera , a document scanner , a fax , a 

104 - 114 may be operatively coupled by various means . Bus phone , a modem , a network adapter , and / or a pointing 

116 may comprise any type of bus architecture , including a 5 device , to name a few exemplary input devices . memory bus , a peripheral bus , a local bus , and / or a switch Input device 128 included in execution environment 102 ing fabric . may be included in device 100 as FIG . 1 illustrates or may IPU 104 is an instruction execution machine , apparatus , be external ( not shown ) to device 100 . Execution environ 

or device . Exemplary IPUs include one or more micropro ment 102 may include one or more internal and / or external cessors , digital signal processors ( DSP ) , graphics processing 10 input devices . External input devices may be connected to units ( GPU ) , application - specific integrated circuits ( ASIC ) , device 100 via corresponding communication interfaces and / or field programmable gate arrays ( FPGA ) . such as a serial port , a parallel port , and / or a universal serial IPU 104 may access machine code instructions and data bus ( USB ) port . Input device adapter 110 receives input and via one or more memory address spaces in addition to the physical memory address space . A memory address space 15 provides a representation to bus 116 to be received by IPU 

includes addresses identifying locations in an IPU memory . 104 , physical IPU memory 106 , and / or other components 

IPU 104 may have more than one IPU memory . Thus . IPU included in execution environment 102 . 104 may have more than one memory address space . IPU Output device 130 in FIG . 1 exemplifies one or more 

104 may access a location in an IPU memory by processing output devices that may be included in and / or may be 

an address identifying the location . The processed address 20 external to and operatively coupled to device 100 . For 

may be in an operand of a machine code instruction and / or example , output device 130 is illustrated connected to bus 

may be identified in a register or other portion of IPU 104 . 116 via output device adapter 112 . Output device 130 may 

FIG . 1 illustrates virtual IPU memory 118 spanning at be a display device . Exemplary display devices include 

least part of physical IPU memory 106 and at least part of liquid crystal displays ( LCDs ) , light emitting diode ( LED ) persistent secondary storage 108 . Virtual memory addresses 25 displays , and projectors . Output device 130 presents output 

in a memory address space may be mapped to physical of execution environment 102 to one or more users . In some 

memory addresses identifying locations in physical IPU embodiments , an output device is a device such as a phone , memory 106 . An address space for identifying locations in a joystick , and / or a touch screen . In addition to various types a virtual IPU memory is referred to as a virtual memory of display devices , exemplary output devices include print address space ; its addresses are referred to as virtual 30 ers , speakers , tactile output devices such as motion produc memory addresses ; and its IPU memory is known as a ing devices , and other output devices producing sensory virtual IPU memory or virtual memory . The term IPU information detectable by a user . memory may refer to physical IPU memory 106 and / or 

virtual IPU memory 118 depending on the context in which A device included in or otherwise providing an execution 

the term is used . 25 environment may operate in a networked environment com 

Various types of memory technologies may be included in municating with one or more devices ( not shown ) via one or 

physical IPU memory 106 . Exemplary memory technologies more network interfaces . The terms " communication inter 

include static random access memory ( SRAM ) and / or face ” and “ network interface ” are used interchangeably . dynamic RAM ( DRAM ) including variants such as dual data FIG . 1 illustrates network interface adapter 114 as a network 

rate synchronous DRAM ( DDR SDRAM ) , error correcting 40 interface included in execution environment 102 to opera 

code synchronous DRAM ( ECC SDRAM ) , and / or RAM tively couple device 100 to a network . The terms “ network 

BUS DRAM ( RDRAM ) . Physical IPU memory 106 may node ” and “ node ” in this document both refer to a device 

include volatile memory as illustrated in the previous sen - having a network interface operatively coupled to a network . tence and / or may include nonvolatile memory such as Exemplary network interfaces include wireless network 

nonvolatile flash RAM ( NVRAM ) and / or read - only memory 45 adapters and wired network adapters . Exemplary wireless 

( ROM ) . networks include a BLUETOOTH network , a wireless 

Persistent secondary storage 108 may include one or more 802 . 11 network , and / or a wireless telephony network ( e . g . , 

flash memory storage devices , one or more hard disk drives , a cellular , PCS , CDMA , and / or GSM network ) . Exemplary 

one or more magnetic disk drives , and / or one or more optical wired networks include various types of LANs , wide area 

disk drives . Persistent secondary storage may include 50 networks ( WANs ) , and personal area networks ( PAN ) . 

removable media . The drives and their associated computer - Exemplary network adapters for wired networks include 

readable storage media provide volatile and / or nonvolatile Ethernet adapters , Token - ring adapters , FDDI adapters , storage for computer readable instructions , data structures , asynchronous transfer mode ( ATM ) adapters , and modems 

program components , and other data for execution environ of various types . Exemplary networks also include intranets 

ment 102 . 55 and internets such as the Internet . Execution environment 102 may include software com - FIG . 2 is a flow diagram illustrating a first method for 

ponents stored in persistent secondary storage 108 , in sharing information for detecting an idle TCP connection 

remote storage accessible via a network , and / or in an IPU according to an exemplary aspect of the subject matter 

memory . FIG . 1 illustrates execution environment 102 described herein . FIG . 3 is a flow diagram illustrating a 

including operating system 120 , one or more applications 60 second method for sharing information for detecting an idle 

122 , other program code and / or data components illustrated TCP connection according to an exemplary aspect of the 

by other libraries and subsystems 124 . subject matter described herein . FIG . 4a is a block diagram 

Execution environment 102 may receive user - provided illustrating a system for sharing information for detecting an 

information via one or more input devices illustrated by idle TCP connection according to the first method in FIG . 2 . 

input device 128 . Input device 128 provides input informa - 65 FIG . 4b is a block diagram illustrating a system for sharing tion to other components in execution environment 102 via information for detecting an idle TCP connection according input device adapter 110 . Execution environment 102 may to the second method in FIG . 3 . It is expected that many , if 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 15 of 29
US 10 , 069 , 945 B1 

10 

not most , systems configured to perform one of the methods ment in FIG . 4b . As such , the description of components and 

illustrated in FIG . 2 and FIG . 3 will also be configured to corresponding operations with respect to execution environ 

perform the other method . ment 502 in FIG . 5 is applicable to both first node 602 and 

A system for sharing information for detecting an idle second node 604 in FIG . 6 . 

TCP connection according to the method illustrated in FIG . 5 In FIG . 5 , network interface card ( NIC ) 508 is an exem 

2 includes an execution environment , such as execution plification of a network interface illustrated in FIG . 1 by 

environment 102 in FIG . 1 , including an instruction pro network interface adapter 114 . NIC 508 includes a physical cessing unit , such as IPU 104 , configured to process an layer component 510 operatively coupling execution envi 

instruction included in at least one of an idle time period ronment 502 to one or more physical media for carrying 

policy component 450 , a packet generator component 452 , 10 communication signals . The media may be wired , such as an 

and a net out - port component 454 , a idle time period monitor Ethernet LAN operating over CAT 6 cabling , or may be 

component 456 , and a connection state component 458 wireless such as an 802 . 11n LAN . Other exemplary physical illustrated in FIG . 4a . layer protocols and corresponding media are identified 

A system for sharing information for detecting an idle above . TCP connection performing the method illustrated in FIG . 3 15 NIC 508 may also include a portion of link layer com 

includes an execution environment , such as execution envi - ponent 512 . Link layer component 512 may provide for 

ronment 102 in FIG . 1 , including an instruction processing communication between two nodes in a point - to - point com 

unit , such as IPU 104 , configured to process an instruction munication and / or two nodes in a local area network ( LAN ) . included in at least one of a net in - port component 460 , an Exemplary link layers and , their protocols have been 

idle time period option handler component 462 , an option 20 described above including FDDI , ATM , and Ethernet . A 

attribute handler component 464 illustrated in FIG . 4b . portion of link layer component 512 is external to NIC 508 . 

Components illustrated in FIG . 4a may be adapted for The external portion may be realized as a device driver for 

performing the method illustrated in FIG . 2 in a number of NIC 508 . execution environments . Components illustrated in FIG . 4b Link layer component 512 may receive data formatted as 

may be adapted for performing the method illustrated in 25 one or more internet protocol ( IP ) packets from internet 

FIG . 3 in a number of execution environments . FIG . 5 is a protocol ( IP ) layer component 514 . Link layer component block diagram illustrating adaptations and / or analogs of the 512 packages data from IP layer component 514 according components of FIG . 4a and FIG . 4b in exemplary execution to the particular link layer protocol supported . Analogously , environment 502 including or otherwise provided by one or link layer component 512 interprets data , received as signals 

more nodes . The method depicted in FIG . 2 and the method 30 transmitted by the physical media operatively coupled to 

depicted in FIG . 3 may be carried out by some or all of the physical layer component 510 , according to a particular link 

exemplary components and / or their analogs . layer protocol supported . Link layer component 512 may The components illustrated in FIG . 4 and FIG . 5 may be strip off link layer specific data and transfer the payload of 

included in or otherwise may be combined with some or all link layer transmissions to IP layer component 514 . of the components of FIG . 1 to create a variety of arrange - 35 IP layer component 514 illustrated in FIG . 5 is configured 

ments of components according to the subject matter to communicate with one or more remote nodes over a LAN 

described herein . and / or a network of networks such as an intranet or the 

FIG . 6 illustrates first node 602 and second node 604 as Internet . IP layer component 514 may receive data formatted 

exemplary devices included in and / or otherwise adapted for as TCP packets from TCP layer component 506 . IP layer 

providing a suitable execution environment , such as execu - 40 component 514 packages data from TCP layer component 

tion environment 502 illustrated in FIG . 5 , for an adaptation 506 into IP packets for transmission across a network . The 

of the arrangement of components in FIG . 4a and an network may be and / or may include an internet . Analo 

adaptation of the arrangement of components in FIG . 4b . As gously , IP layer component 514 interprets data , received 

illustrated in FIG . 6 , first node 602 and second node 604 are from link layer component 512 as IP protocol data and 

operatively coupled to network 606 via respective network 45 detects IP packets in the received data . IP layer component 

interfaces enabling first node 602 and second node 604 to 514 may strip off IP layer specific data and transfer the 

communicate . FIG . 7 is a message flow diagram illustrating payload of one or more IP packets to TCP layer component 

an exemplary exchange of messages within and between 506 . first node 602 and second node 604 according to the subject In FIG . 5 , IP layer component 514 is operatively coupled 

matter described herein . 50 to TCP layer component 506 . TCP layer component 506 is 

As stated , the various adaptations of the arrangements of configured to provide a TCP connection over network 606 

components in FIG . 4a and in FIG . 4b described herein are for sending and / or receiving packets included in the TCP 

not exhaustive . connection between two nodes exemplified by first node 602 

In FIG . 5 , execution environment 502 illustrates a net and second node 604 . work application 504 operating in a node configured to 55 In a TCP connection including first node 602 and second 

communicate with one or more other nodes via the TCP node 604 , first node 602 may include a first TCP connection 

supported by TCP layer component 506 . For example , first endpoint and second node 604 may include a second TCP 

node 602 may be included in and / or provide execution connection endpoint . The first and second TCP connection 

environment 502 . Network application 504 may be a first endpoints identify the TCP connection . The TCP connection 

application configured to communicate with an application 60 may have other identifiers , in addition to the included 

operating in second node 604 via network 606 . Second node endpoints . 604 may be included in and / or provide another instance of Components of execution environment 502 , in an aspect , execution environment 502 . The operation of both first node may interoperate with TCP layer component 506 directly . In 

602 and second node 604 are described with respect to another aspect , one or more components , such as network 

execution environment 502 . For ease of illustration , both 65 application 504 , may interoperate with TCP layer compo 

first node 602 and second node 604 are configured with nent 506 indirectly . Network application 504 may exchange adaptations of the arrangement in FIG . 4a and the arrange data with TCP layer component 506 via sockets component 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 16 of 29
US 10 , 069 , 945 B1 

12 

518 and / or an analog of sockets component 518 . Alterna Idle information may be received from a configuration tively or additionally , network application 504 may com storage location for TCP layer component 506 in an IPU 

municate with a remote node via an application protocol memory and / or in secondary storage 108 . The configured 

layer illustrated by application protocol layer component idle information may be maintained and / or otherwise man 

520 . Many application protocols currently exist and new 5 aged by settings service component 526 configured to main 

application protocols will be developed . Exemplary appli tain and / or manage various options or settings for TCP layer cation layer protocols include hypertext transfer protocol component 506 and / or one or more TCP connections . ( HTTP ) , file transfer protocol ( FTP ) , and extensible mes - In an aspect , network application 504 provides idle infor saging and presence protocol ( XMPP ) . mation to ITP policy component 550 via settings service 

TCP layer component 506 in FIG . 5 may receive data 10 component 526 interoperating with sockets component 518 . from any of various sources for transmitting in correspond - Sockets component 518 and / or TCP layer component 506 

ing TCP connections to various corresponding identified may support TCP options applicable globally for some or all 

TCP connection endpoints in one or more network nodes . TCP connections and / or may support TCP options on a per 

FIG . 5 illustrates application in - port ( app in - port ) compo connection basis . Per connection TCP options may override 

nent 522 providing an interface component for receiving 15 global TCP options if global options are also supported . In 

data to transmit in a TCP connection . FIG . 5 illustrates TCP another aspect , idle information may be received from 

layer component 506 includes packet generator component and / or otherwise received based on information via appli 552 configured to package data received by application cation protocol layer 520 , via sockets component 518 , in - port component 522 for transmitting in one or more TCP and / or directly from network application 504 . packets . The one or more TCP packets are provided to IP20 Application protocol layer 520 may provide idle infor 

layer component 514 via net out - port component 554 exem - mation to ITP policy component 550 via settings service 

plifying an output interface component . component 526 and , optionally , via sockets component 518 . Analogously , TCP layer component 506 interprets data Idle information provided by application protocol layer 520 

received from IP layer component 514 via net in - port may be based on data received from network application component 560 . The data is interpreted as TCP data and TCP 25 504 , based on a particular configuration of application 

packets are detected in the received data by net in - port protocol layer 520 , and / or received from a user and / or 

component 560 and / or packet handler component 516 . FIG . administrator of one or both of network application 504 and 

5 illustrates TCP layer component 506 includes packet application protocol layer 520 . handler component 516 to strip off and / or otherwise process In an aspect , the idle information received may be based 

TCP layer specific data . Packet handler component 516 30 on a previous ITP header identified in a packet in the TCP 

interoperates with application out - port ( app out - port ) com - connection received by first node 602 from second node 604 . ponent 524 to transfer data in the TCP packet included in a The previous packet may be received by net in - port com 

TCP data stream to sockets component 518 , application ponent 560 . The previous ITP header may be detected by 

protocol layer 520 , network application 504 , and / or other ITP option handler component 562 interoperating with 

components associated with the local endpoint of the TCP 35 packet handler component 516 . Idle information may be 

connection . Detailed information on the operation of TCP is identified and / or otherwise determined by ITP option han 

included in RFC 793 . dler component 562 . ITP policy component 550 may inter 

With reference to the method illustrated in FIG . 2 , block operate with ITP option handler component 562 to receive 

202 illustrates the method includes receiving , by a first node , the idle information . first idle information for detecting a first idle time period 40 Idle information received , determined , and / or otherwise 

during which no TCP packet including data in a first data identified may include and / or identify a duration of time for 

stream sent in the TCP connection by a second node is detecting an idle time period . The duration may be specified 

received by the first node . Accordingly , a system for sharing according to various measures of time including seconds , information for detecting an idle TCP connection includes minutes , hours , and / or days . means for receiving , by a first node , first idle information for 45 Alternatively or additionally , idle information may detecting a first idle time period during which no TCP packet include and / or identify a generator for determining a dura 

including data in a first data stream sent in the TCP con - tion of time for detecting an idle time period . An exemplary nection by a second node is received by the first node . For generator may include a formula , an expression , a function , example , as illustrated in FIG . 4a , idle time period policy a policy , and / or other mechanism for generating and / or 

component 450 is configured for receiving , by a first node , 50 otherwise identifying a duration of time . first idle information for detecting a first idle time period In an aspect , one or more algorithms for generating a 

during which no TCP packet including data in a first data duration of time for detecting an idle time period may be 

stream sent in the TCP connection by a second node is associated with identifiers . The algorithm identifiers may be 

received by the first node . standardized within a group of nodes including first node 

FIG . 5 illustrates idle time period ( ITP ) policy component 55 602 and second node 604 . The received idle information 

550 as an adaptation of and / or analog of ITP policy com - may include and / or reference an algorithm identifier . First 

ponent 450 in FIG . 4a . One or more idle time period policy node 602 and second node 604 may each maintain an 

components 550 operate in execution environment 502 . association between one or more of the algorithm identifiers 

Message 702 in FIG . 7 illustrates a communication and a duration generator such as a function and / or a class 

including and / or otherwise identifying idle information 60 configured to perform the identified algorithm . received by ITP policy component 550 . Message 702 may duration generator may determine the duration of time 

take various forms in various aspects . Exemplary forms for for detecting an idle time period based on one or more 

message 702 include a function / method invocation , a mes - attributes accessible to one or both of first node 602 and 

sage passed via a message queue , data transmitted via a pipe , second node 604 . Exemplary attributes include a measure of 

a message received via a network , and / or a communication 65 network latency , a measure of network congestion , an indi 

via a shared location in IPU memory and / or secondary cation of the availability of a particular resource , a user 

storage . specified attribute , a security attribute , an energy usage 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 17 of 29
US 10 , 069 , 945 B1 

13 14 

attribute , a user attribute such as role of the user , and / or a In response to identifying the idle information , ITP policy 

measure of bandwidth supported by NIC 508 and / or a component 550 may activate , disable , and / or modify the 

physical network medium operatively coupled to NIC 508 . state of the keep - alive option via interoperation with one or 

Alternatively or additionally , idle information may more of settings service component 526 , connection state 

include a parameter such as one or more of the attributes 5 component 558 , and / or a keep - alive option handler . Thus , in 

identified in the previous paragraph for use in a duration response to identifying the idle information , ITP policy 

generator for determining a duration of time for measuring component 550 may prevent and / or alter the time a keep 

and / or otherwise detecting an idle time period . alive packet is sent to second node 604 from first node 602 . Alternatively or additionally , ITP policy component 550 ATCP connection may be identified by its endpoints . First 

node 602 and / or second node 604 may include an endpoint 10 operating in first node 602 may modify an attribute associ 

of the TCP connection . Alternatively or additionally , first ated with an acknowledgment timeout configured for TCP 

layer component 506 . Modifying an acknowledgment tim node 602 and / or second node 604 may include a proxy eout attribute may include creating the attribute , deleting the endpoint representing an endpoint in a TCP connection . attribute , and / or modifying the attribute . ITP policy compo Nodes , that provide a network address translation ( NAT NAI ) ) 15 15 . nent 550 may interoperate with settings service component service , are exemplary nodes including proxy endpoints . 526 , connection state component 558 , and / or an acknowl Anode including a TCP connection endpoint is referred to edgment option handler component ( not shown ) to detect the 

as a host . Hosts are typically user devices and / or servers that existence and state of one or more packet acknowledgment typically operate at the edge of a network . While endpoints attributes . In response to identifying the idle information , of most TCP connections are not typically included in 20 ITP policy component 550 may modify the state of the 

network nodes for relaying , routing , and / or otherwise for - packet acknowledgment option . Thus , in response to iden 

warding TCP packet data within a network such as routing tifying the idle information , ITP policy component 550 may nodes and switching nodes . Such network nodes may prevent and / or alter the time an acknowledgment is sent in 

include one or more connection endpoints for one or more a packet in a TCP connection . respective TCP connections . It should be understood that the 25 Returning to FIG . 2 , block 204 illustrates the method 

term " hos? ” refers to a role played by a device in a network . further includes generating a TCP packet including a first 

First node 602 and / or second node 604 may play the role of idle time period header identifying metadata for the first idle 

a host in a TCP connection and / or may be proxy nodes . time period based on the first idle information . Accordingly , A node is referred to as being in or included in a TCP a system for sharing information for detecting an idle TCP 

connection when the node includes an endpoint of the 30 connection includes means for generating a TCP packet connection and / or includes a proxy for a connection end - including a first idle time period header identifying metadata 

point , referred to as a proxy endpoint . A proxy endpoint and for the first idle time period based on the first idle informa 

an endpoint in a TCP connection may be in the same node tion . For example , as illustrated in FIG . 4a , packet generator 

or in different nodes . component 452 is configured for generating a TCP packet 

In FIG . 5 , connection state component 558 may maintain 35 including a first idle time period header identifying metadata 

state information for one or more TCP connection endpoints for the first idle time period based on the first idle informa 

and / or proxy endpoints of corresponding TCP connections tion . included in an instance of an execution environment , such as FIG . 5 illustrates packet generator component 552 as an 

execution environment 502 , included in and / or provided by adaptation of and / or analog of packet generator component first node 602 or second node 604 . 40 452 in FIG . 4a . One or more packet generator components 

First node 602 and / or second node 604 may play a role of 552 operate in execution environment 502 . a proxy node for a node including a TCP connection Packet generator component 552 in FIG . 5 may receive 

endpoint . First node 602 and / or second node 604 may idle information and / or information based on the received 

include a proxy endpoint representing an endpoint in a TCP idle information from ITP policy component 550 . Whether 

connection . A proxy node forwards TCP packet data , sent by 45 and when packet generator component 552 receives infor 

a host including a TCP connection endpoint , to another host mation for including an idle time period ( ITP ) header in a 

including a corresponding connection endpoint represented TCP packet may depend on a current state of the associated 

by a proxy endpoint included in the proxy node and vice TCP connection . In FIG . 5 , ITP policy component 550 may 

versa . Exemplary proxy nodes in addition to including interoperate with connection state component 558 to deter 

routing and / or switching capabilities may include a bridge , 50 mine whether and when to provide information to packet 

a hub , a repeater , a gateway , and a firewall . generator component 552 for including an ITP header in a 

In an aspect , a TCP keep - alive option , a TCP user timeout , TCP packet . a retransmission timeout , an acknowledgment timeout , and / In an aspect , an ITP header may be included in a packet 

or another timeout associated with a TCP connection may be exchanged during setup of TCP connection . RFC 793 

modified based on the first idle information . 55 describes a “ three - way handshake ” for establishing a TCP 

For example , in FIG . 5 , ITP policy component 550 connection . The synchronization requires each side to send 

operating in first node 602 may modify an attribute of a TCP it ' s own initial sequence number and to receive a confirma 

keep - alive option provided by one or more keep - alive com tion of it in acknowledgment from the other side . Each side 

ponents that may include settings service component 526 . must also receive the other side ' s initial sequence number 

Modifying a keep - alive attribute may include creating the 60 and send a confirming acknowledgment . 

attribute , deleting the attribute , and / or modifying the attri 1 ) ATMB SYN my sequence number is X 

bute . ITP policy component 550 may interoperate with 2 ) A B ACK your sequence number is X 

settings service component 526 , connection state component 3 ) A B SYN my sequence number is Y 

558 , and / or a keep - alive option handler component ( not 4 ) A B ACK your sequence number is Y 

shown ) to detect the existence and state of one or more 65 Because steps 2 and 3 can be combined in a single keep - alive attributes in determining whether a keep - alive message this is called the three way ( or three message ) 

option is active and / or in identifying its current state . handshake . 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 18 of 29
US 10 , 069 , 945 B1 

15 16 

Other message exchanges may be used in setting up a idle time period , a duration generator for determining a 

TCP connection as those skilled in the art will understand duration of time for detecting an idle time period , and a 

Such other exchanges are not currently supported by the parameter for use in a duration generator for determining a 

TCP as described in RFC 793 . The specified “ three - way duration of time for measuring and detecting an idle time 

handshake ” and other patterns of message exchange for 5 period . setting up a TCP connection include packets that are con - Message 704 in FIG . 7 illustrates an invocation and / or 

sidered to be in the TCP connection for purposes of this other access to packet generator component 552 for gener 

disclosure . Including an ITP header may be restricted to ating a TCP packet including an ITP header based on 

packets exchanged in connection setup , excluded from pack - received idle information . ets exchanged during connection establishment , or allowed 10 Returning to FIG . 2 , block 206 illustrates the method 

in one or more packets exchanged during connection estab - further includes sending the TCP packet in the TCP con 

lishments and in packets exchanged after connection setup . nection to the second node to provide the metadata for the 

In an aspect , when connection state component 558 first idle time period to the second node . Accordingly , a 

and / or ITP policy component 550 determine an ITP header system for sharing information for detecting an idle TCP 

should be included in a TCP packet based on received idle 15 connection further includes means for sending the TCP 

information , packet generator component 552 may include packet in the TCP connection to the second node to provide 

the ITP header in a next TCP packet generated in response the metadata for the first idle time period to the second node . to data received via application in - port component 522 for For example , as illustrated in FIG . 4a , the net out - port sending to first node 602 . In another aspect , packet generator component 454 is configured for sending the TCP packet in 

component 552 may send the ITP header in a TCP packet in 20 the TCP connection to the second node to provide the 

the TCP connection with no data included in the TCP data metadata for the first idle time period to the second node . 

stream sent by first node 602 to second node 604 . Such a FIG . 5 illustrates net out - port component 554 as an packet is referred to as an empty Packet generator compo - adaptation of and / or analog of net out - port component 454 

nent 554 may send the empty TCP packet when TCP layer in FIG . 4a . One or more net out - port components 554 

component 506 has no for data from an application in second 25 operate in execution environment 502 . Net out - port compo 

node 604 to send in the TCP data stream to first node 602 . nent 554 is illustrated operatively coupled to packet genera Packet generator component 552 may generate a packet tor component 552 . Net out - port component 554 may according to the TCP specifications and may include a receive TCP packet data from packet generator component 

header identified as an ITP header in accordance with 552 and interoperate with IP layer component 514 to send 

specifications for including TCP option headers in a TCP 30 the TCP packet in one or more IP packets via network 606 

packet . See RFC 793 for more details . FIG . 8 illustrates a t o second node 604 . Message 706 . 1 in FIG . 7 illustrates a 

format or structure for a TCP packet 802 as described in TCP packet including an ITP header sent by first node 602 

RFC 793 . Each “ + ” character in FIG . 8 , indicates a bit - and received by second node 604 . boundary . TCP packet 802 specifies a location and format In one aspect , an ITP header may be sent to make sending 

for including a source port 804 portion including an iden - 35 one or more TCP keep - alive packets by a partner node in the 

tifier for an endpoint of the TCP connection for a sending connection unnecessary . A receiver of a packet including an 

node and a destination port 806 including an identifier for a ITP header , such as second node 604 , may keep a TCP 

corresponding endpoint of the TCP connection in a receiving connection alive based on information in the ITP header . node . IP packet 810 illustrates a format for an IP packet In another aspect , first node 602 may set a keep - alive 

header for an IP packet including TCP packet data . Source 40 timeout attribute based on a duration of the first idle time 

address 812 specifies a location and format in an IP header period identified in the first idle information and / or in the 

for including a network address identifying a network inter - metadata provided to second node 604 . For example , first 

face of the sending node , and destination address 814 node 602 may monitor a time period during which no 

identifying a network interface for the receiving node . A non - empty packets are sent or received in the TCP connec 

network address and a port number identify a connection 45 tion . A keep - alive option handler and / or keep - alive compo 

endpoint in a network . Two endpoints identify a TCP n ent ( not shown ) operating in first node 602 may set a 

connection . keep - alive timer according to the timeout attribute , with a 

FIG . 8 also illustrates a format for an exemplary ITP duration that will result in the keep - alive timer expiring header 820 . A KIND location is specified for including an before an idle time period can occur . In response to detecting 

identifier indicating that the option is an idle time period 50 a keep - alive timeout , which may be indicated by the expi 

( ITP ) option in an ITP header . Identifiers for option headers ration of the keep - alive timer , the keep - alive option handler 

are currently under the control of the Internet Assigned and / or keep - alive policy component may provide informa 

Numbers Authority ( IANA ) . Length field 824 identifies a tion to packet generator component 552 to generate a TCP 

length of an ITP header . An ITP data field 826 is specified keep - alive packet . The packet generator component 552 

for including ITP header information for detecting an idle 55 may provide the generated packet to net out - port component 

time period as described herein 554 for sending the TCP keep - alive packet to second node 

Those skilled in the art will recognize given this disclo - 604 to determine whether the TCP connection is active 

sure that an ITP header may have other suitable formats and and / or to keep the TCP connection active . may be included in a TCP packet in structures and locations In another aspect , ITP policy component 550 operating in 

other than those specified for TCP options in RFC 793 . An 60 first node 602 may set a timer , analogous to the keep - alive 

equivalent or analog of an ITP header may be included in a timer described in the previous paragraph that expires before 

footer of a protocol packet in an extension and / or variant of an time period can occur . In response the timer expiring , ITP 

the current TCP policy component 550 may provide idle information to 

ITP data field 826 in FIG . 8 may include and / or otherwise packet generator component 552 to generate a TCP packet identify metadata for the first idle time period . For example , 65 including a second ITP header . Content of the second ITP 

an ITP data field in a packet may include and / or otherwise header may be based on the first idle information received , 

identify one or more of a duration of time for detecting an data received from second node 604 , information received 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 19 of 29
US 10 , 069 , 945 B1 

18 

from a network application that may be from a user , and / or unacknowledged by second node 604 . ITP policy compo 

on any information accessible to TCP layer component 506 nent 550 may prevent ITP monitor component 556 from 

in execution environment 502 in first node 602 . The TCP initiating detection of an idle time period while unacknowl 

packet generated by packet generator component 552 is edged data exists . In a further aspect , a time duration may be 

provided to IP layer component 514 via net out - port com - 5 associated and / or included in the policy identifying a limit to 

ponent 554 to send to second node 604 in the TCP connec - a period of waiting to receive acknowledgment of TCP 

tion . Along with sending the message , first node 602 may packet data sent by first node 602 . In one aspect , waiting for 

reset and / or otherwise restart detection of the first idle time lack of an acknowledgment for an empty packet does not 

period . Thus , a second ITP header may be sent in a second delay detection of an idle time period , while in another 

TCP packet by first node 602 to second node 602 along with 10 aspect ITP monitor component 556 will not initiate detection 

restarting detection of the first idle time period . Alterna - while an empty packet remains unacknowledged . tively , first node 602 may reset and initiate detection of an In an aspect , idle information , received by a node may be idle time period with a different duration than the previous included in and / or otherwise based on a previous idle time 

idle time period , based on the idle information for generating period header identified in a previous TCP packet received 

the second ITP header . 15 in the TCP connection by the node from a remote node prior Returning to FIG . 2 , block 208 illustrates the method to sending an ITP header based on the idle information by further includes detecting the first idle time period based on the node . For example , the first idle information received by the first idle information . Accordingly , a system for sharing ITP policy component 550 in first node 602 may be based on 

information for detecting an idle TCP connection further an idle time period header included a TCP packet in the TCP 

includes means for detecting the first idle time period based 20 connection sent by second node 604 and received by first 

on the first idle information . For example , as illustrated in node 602 prior to sending the first TCP packet by first node 

FIG . 4a , the idle time period monitor component 456 is 602 . The exchange of ITP headers may include a negotiation configured for idle time period monitor . between first node 602 and second node 604 . FIG . 5 illustrates idle time period monitor component 556 A duration of time may be identified based on the idle 

as an adaptation of and / or analog of idle time period monitor 25 information received by ITP policy component in first node 

component 456 in FIG . 4a . One or more idle time period 602 . A timer may be set according to the identified duration . 

monitor components 556 operate in execution environment Detecting the first idle time period may include and / or 

502 . otherwise may be based on detecting the timer expiration . In an aspect , in response to receiving the first idle infor - ITP monitor component 556 may set a timer configured to 

mation , ITP policy component 550 may store a value rep - 30 expire in a time duration identified based on the first idle 

resenting a duration of time in a configuration storage information received by ITP policy component 550 . The 

location . Alternatively , or additionally , ITP policy compo - identified duration may be longer , shorter , or equal to a 

nent 550 may invoke a duration generator to determine a duration of the idle time period . ITP monitor component 556 

duration of time for detecting the idle time period . The may use multiple timers . ITP monitor component 556 may duration generator may be preconfigured for the TCP con - 35 recalculate and / or otherwise generate a new idle duration 

nection and / or may be identified based on the idle informa - based on the idle information at one or more times during 

tion received . As described , the invoked generator may be detection of the first idle time period . That is , a duration of 

invoked with a parameter included in and / or otherwise an idle time period may be static and / or may be dynamic , identified based on the received idle information . changing based on attribute information accessible during 

ITP policy component 550 may interoperate with ITP 40 the detection process and / or based on one or more duration 

monitor component 556 to identify the duration for detecting generators . the idle time period . ITP monitor component 556 , in various Message 710 . 1 illustrates a call and / or other communi 

aspects , may receive information including and / or otherwise cation between ITP monitor component 556 and a timer 

identifying a duration of time , a duration generator , and / or component in first node 602 to set a timer included in 

a parameter for a duration generator . ITP monitor compo - 45 detecting an idle time period . Prior to the setting the timer , nent 556 may initiate and / or restart a process for detecting first node 602 and second node 602 may be active in 

an idle time period . In an aspect , ITP monitor component exchanging TCP packets as illustrated by messages includ 

556 detects and / or otherwise identifies a beginning of a ing message 706 . 2 through message 706 . n . Those skilled in 

potential idle time period based on one or more specified the art will recognize that detection of an idle time period 

events . 50 may not include explicitly and / or directly using a timer . ITP 

In an aspect , detecting the first idle time period by ITP monitor component 556 may monitor other events as a 

monitor component 556 may include detecting a time period proxy or indirect mechanism for initiating detection and 

in the idle time period during which first node 602 has detecting an idle time period . received acknowledgment for all data sent via the TCP ITP monitor component 556 may detect one or more 

connection in the TCP data stream by first node 602 to 55 events configured to indicate that an idle time period has 

second node 604 . Further , the first idle time period may occurred . For example , expiration of a timer or multiple include a time period during which first node 602 has sent associated timers may be interpreted by ITP monitor com 

one or more TCP packets to second node 604 to acknowl - ponent 556 as marking an occurrence of the first idle time 

edge all data received in a TCP data stream in the TCP period . Message 710 . 2 illustrates ITP monitor component 

connection from second node 604 to first node 602 . Detect - 60 556 receiving information identifying expiration of a timer 

ing the first idle time period by ITP monitor component 556 for detecting the first idle time period . may include detecting that all received data has been In a further aspect , in response to detecting the expiration acknowledged and / or that all sent data has been acknowl - of a timer set as described above , a TCP keep - alive packet edged . may be sent by first node 602 to determine whether the TCP 

In an aspect , ITP policy component 550 may include a 65 connection is action and / or to keep the TCP connection 

policy with a rule indicating that an idle time period cannot active . When the keep - alive packet is sent , an acknowledg begin while a TCP packet sent by first node 602 remains ment timer may be set . If a timeout of the acknowledgment 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 20 of 29
19 

US 10 , 069 , 945 B1 

20 

timer is detected indicating no TCP packet has been received first idle time period may be detected by ITP monitor 

acknowledging the keep - alive packet , the first idle time component 556 in first node 602 based on the second ITP 

period may be detected in response to and / or otherwise header and based on the received idle information . The 

based on the timeout of the acknowledgment timer . second ITP header received in the TCP packet from second 

In FIG . 5 , ITP policy component 550 in first node 602 5 node 604 may be based on the first ITP header in the TCP 

may provide a duration identified based on the received idle packet sent in the TCP connection by first node 602 to 

information to a keep - alive monitor component ( not shown ) . second node 604 . The keep - alive monitor component may configure a keep In some aspects , the first node and second node 604 may 

alive timer to expire based on the identified duration . In continue to exchange ITP headers . Information in the 

response to detecting expiration of the keep - alive timer , ITP 10 exchanged ITP headers may be based on ITP headers 

monitor component 556 may invoke packet generator com - received in the TCP connection and / or on data accessible 

ponent 552 to generate a TCP keep - alive packet . First node locally to one or both of the nodes . In some aspects , the 

602 may send the TCP packet to second node 604 . The TCP exchange may be a negotiation while in other the exchange keep - alive packet may be sent to prevent detection of an idle may simply be informational . time period by second node 604 and / or may otherwise be 15 Returning to FIG . 2 , block 210 illustrates the method 

sent to detect by first node 602 whether the TCP connection further includes deactivating the TCP connection in response 

is active . to detecting the first idle time period . Accordingly , a system First node 602 may set an acknowledgment timer asso - for sharing information for detecting an idle TCP connection 

ciated with sending the packet . If the acknowledgment timer further includes means for deactivating the TCP connection 

expires before a TCP packet is received from second node 20 in response to detecting the first idle time period . For 

602 acknowledging the packet sent , ITP monitor component example , as illustrated in FIG . 4a , the connection state 

556 may detect the idle time period in response to and / or component 458 is configured for deactivating the TCP 

otherwise based on expiration of the acknowledgment timer . connection in response to detecting the first idle time period . Receiving a packet from second node 604 included in the FIG . 5 illustrates connection state component 558 as an 

TCP connection is an event that , in various aspects , may 25 adaptation of and / or analog of connection state component directly and / or indirectly indicate the beginning of a poten - 458 in FIG . 4a . One or more connection state components 

tial idle time period . A potential idle time period may begin 558 operate in execution environment 502 . at at some specified point during and / or after processing a When ITP monitor component 556 in first node 602 

received TCP packet . In one aspect , an empty TCP packet detects an idle time period , ITP monitor component 556 may 

may be received while a potential idle time period is being 30 provide an indication to connection state component 558 . monitored . That is , a beginning of the potential idle time The indication may indicate that the idle time period for the 

period has been detected . In response to receiving the empty TCP connection has been detected and / or otherwise may 

TCP packet , monitoring of the current potential time period instruct connection state component 558 and / or other com 

may be aborted . Further , in response to receiving the empty ponents in TCP layer component 506 to deactivate the TCP 

TCP packet , a beginning of a next potential idle time period 35 connection . Message 712 in FIG . 7 illustrates a communi 

may be detected . cation to deactivate the TCP connection communicated in 

In FIG . 5 , ITP policy component 550 and ITP monitor response to detecting the idle time period . component 556 may operate to reset and / or initiate detection Deactivating the TCP connection may include closing the 

of an idle time period in response to receiving an empty TCP TCP connection . A TCP connection may be closed using a 

packet . First node 602 may receive an empty packet . In 40 three - way handshake packet exchange described in RFC 

response , ITP monitor component 556 may receive an event 793 . Deactivating the TCP connection may include sending 

and / or other indication to reset detection of an idle time a TCP packet by the detecting node to reset the TCP 

period . Resetting the detecting process may be based on connection . According to RFC 793 , first node 602 may send 

whether or not a received empty TCP packet matches a a TCP packet including a reset ( RST ) bit set to “ 1 ” to 

specified condition . ITP option handler component 562 may45 indicate a connection reset . Deactivating the TCP connec 

be configured to determine whether a received empty TCP tion may include , alternatively or additionally , releasing a 

packet matches the condition . If ITP option handler com - resource allocated for maintaining and / or activating the TCP 

ponent 562 determines the empty packet matches the con connection . dition , ITP monitor component 556 may be instructed to With respect to the method illustrated in FIG . 3 , block 302 

reset and / or restart detection of the first idle time period 50 illustrates the method includes receiving , by a second node 

including detecting the beginning of a next potential time from a first node , a first transmission control protocol ( TCP ) 

packet in a TCP connection . Accordingly , a system for 

The condition may match received TCP packets including sharing information for detecting an idle TCP connection 

ITP headers and / or other TCP option headers . A condition includes means for receiving , by a second node from a first 

may match a port number and / or other field in TCP packet . 55 node , a first transmission control protocol ( TCP ) packet in a 

A condition may further be based on a network address in an TCP connection . For example , as illustrated in FIG . 4b , the 

IP header including the TCP packet . net in - port component 460 is configured for receiving , by a 

In a further aspect , first node 602 may receive via network second node from a first node , a first transmission control 

606 from second node 604 a TCP packet in the TCP protocol ( TCP ) packet in a TCP connection . connection including an second ITP header . Message 706 . 2 60 FIG . 5 illustrates net in - port component 560 as an adap 

in FIG . 7 illustrates the TCP packet sent by second node 604 . tation of and / or analog of net in - port component 460 in FIG . ITP option handler component 562 may identify the second 4b . One or more net in - port components 560 operate in 

ITP header received from second node 604 . The identified execution environment 502 . second ITP header may be for detecting by first node 602 an As described above , net in - port component 560 in FIG . 5 

idle time period , during which no TCP packet in the TCP 65 may operate in an instance of execution environment 502 

connection is received , by the first node 602 that includes and / or an analog included in and / or including second node 

data in the first TCP data stream from second node 604 . The 604 . The TCP packet , illustrated by message 706 . 1 in FIG . 

period . 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 21 of 29
21 

US 10 , 069 , 945 B1 

22 

7 and described above , may be received by net in - port second node a timeout attribute associated with the TCP 

component 560 in second node 604 . The TCP packet may connection . Accordingly , a system for sharing information 

include data in a second TCP data stream sent by first node for detecting an idle TCP connection includes means for 

602 to second node 604 to deliver to a user of TCP layer modifying , based on the metadata , by the second node a 

component 506 in second node 604 such as network appli - 5 timeout attribute associated with the TCP connection . For 

cation 504 . Alternatively , the TCP packet may be an empty example , as illustrated in FIG . 4b , the option attribute 

TCP packet . The received TCP packet may be a packet handler component 464 is configured for modifying , based 

included in setting up the TCP connection as described on the metadata , by the second node a timeout attribute 

above . associated with the TCP connection . Returning to FIG . 3 , block 304 illustrates the method 10 FIG . 5 illustrates option attribute handler component 564 

further includes detecting a first idle time period header , in as an adaptation of and / or analog of option attribute handler 

the first packet , identifying metadata for a first idle time component 464 in FIG . 4b . One or more option attribute 

period , detectable by the first node , during which no TCP handler components 564 operate in execution environment 

packet including data in a first TCP data stream sent in the 502 . TCP connection by the second node is received by the first 15 In an aspect , ITP option handler component 562 may one 

node . Accordingly , a system for sharing information for or more attribute option handler components 564 to modify 

detecting an idle TCP connection includes means for detect - one or more corresponding attributes of a keep - alive option , ing a first idle time period header , in the first packet , a TCP user timeout , a retransmission timeout , an acknowl 

identifying metadata for a first idle time period , detectable edgment timeout , and another timeout associated with the 

by the first node , during which no TCP packet including data 20 TCP connection , in response to identifying the ITP header . in a first TCP data stream sent in the TCP connection by the The modifying may be based on the content of the ITP 

second node is received by the first node . For example , as header . illustrated in FIG . 4b , idle time period option handler For example , ITP option handler component 562 in sec 

component 462 is configured for detecting a first idle time ond node 604 may interoperate with a keep - alive attribute 

period header , in the first packet , identifying metadata for a 25 option handler component 564 directly and / or indirectly via 

first idle time period , detectable by the first node , during settings service component 526 , connection state component which no TCP packet including data in a first TCP data 558 , and / or a keep - alive policy component ( not shown ) to 

stream sent in the TCP connection by the second node is detect the existence and state of one or more keep - alive 

received by the first node . attributes in determining whether the keep - alive option is 

FIG . 5 illustrates idle time period option handler compo - 30 active and / or the state of the keep - alive option . nent 562 as an adaptation of and / or analog of idle time In response to identifying the idle time period header , ITP 

period option handler component 462 in FIG . 4b . One or option handler component 562 may activate , disable , and / or 

more idle time period option handler components 562 oper - modify the state of the keep - alive option via interoperation 

ate in execution environment 502 . with the keep - alive attribute option handler . Thus , in 

In FIG . 5 , ITP option handler component 562 is opera - 35 response to identifying the idle information , attribute option 

tively coupled to packet handler component 516 The TCP handler component 564 may prevent and / or alter the time a 

packet , including the ITP header sent by first node 602 , may keep - alive packet is sent by second node 604 to first node 

be received , and identified as a TCP packet by net in - port 602 . component 560 operating in second node 604 . As illustrated Alternatively or additionally , an attribute option handler 

in FIG . 5 , net in - port component 560 and / or an analog of net 40 component 564 may modify an attribute associated with a 

in - port component 560 may provide and / or otherwise iden - packet acknowledgment option provided by TCP layer com 

tify the received packet to packet handler component 516 . ponent 506 in first node 602 . Modifying a packet acknowl 

Packet handler component 516 may detect various portions edgment attribute may include creating the attribute , delet 

of the TCP packet according to the TPC packet 802 structure ing the attribute , and / or modifying the attribute . Attribute 

as illustrated in FIG . 8 . Alternatively , packet handler com - 45 option handler component 564 may interoperate with set 

ponent 516 may provide some or all of the packet to various tings service component 526 , connection state component 

components in TCP layer component 506 to identify por - 558 , and / or an acknowledgment policy component ( not 

tions of the packet according to the TCP specification and / or shown ) to detect the existence and state of one or more 

according to a particular implementation . packet acknowledgment attributes . In response to identify 

The ITP header sent by first node 602 may be received by 50 ing the idle information , attribute option handler component 

and / or otherwise identified by ITP option handler compo - 564 may modify the state of the packet acknowledgment 

nent 562 . Message 708 in FIG . 7 exemplifies activation of option . Thus , in response to identifying the idle information , ITP option handler component 562 for detecting the ITP attribute option handler component 564 may prevent and / or 

header in the TCP packet received from first node 602 by alter the time an acknowledgment is sent in a packet data 

second node 604 . 55 from second node 604 to first node 602 in the TCP connec 

In various aspects , ITP option handler component 562 tion . operating in second node 604 may detect and / or otherwise As described herein an ITP header for detecting an idle 

determine a duration of time for associated with detection of time period for a TCP connection may serve a number of 

the idle time period by first node 602 , a duration generator , purposes . A first node in a TCP connection may via an ITP 

and / or a parameter for a duration generator . The first idle 60 header inform and / or otherwise identify to a second node in 

time period header may identify metadata including and / or the connection one or more durations for detecting an idle 

identifying for detection of the first idle time period by first time period by one or both nodes . Given multiple purposes , node 602 a duration of time , a generator for determining a one or more types of ITP headers may be supported and / or 

duration of time , and / or an input for determining a duration an ITP header may be structured to support one or more of 

of time . 65 the described services . An exchange of ITP headers may be 

Returning to FIG . 3 , block 306 illustrates the method yet informational and / or may be included in negotiation 

further includes modifying , based on the metadata , by the between two nodes included in a TCP connection . When 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 22 of 29
23 

US 10 , 069 , 945 B1 

24 

used in a negotiation , an ITP header may be included in a to include the singular and the plural , unless otherwise 

negotiation protocol that has an identifiable end during a indicated herein explicitly or clearly contradicted by con 

portion of the existence of a TCP connection or may be text . The foregoing description is not to be interpreted as 

included in a negotiation that may remain ongoing through indicating any non - claimed element is essential to the prac 

out the existence of a TCP connection . Those skilled in the 5 tice of the subject matter as claimed . art will recognize the list of services in this paragraph is not 

exhaustive . I claim : It should be understood that the various components 1 . A computer - implemented method , comprising : illustrated in the various block diagrams represent logical causing access to be provided to a server computer components that are configured to perform the functionality 10 

described herein and may be implemented in software , including : 

hardware , or a combination of the two . Moreover , some or a non - transitory memory storing a network application , all of these logical components may be combined , some may and 

be omitted altogether , and additional components may be one or more processors in communication with the 

added while still achieving the functionality described 15 non - transitory memory , wherein the one or more 

herein . Thus , the subject matter described herein may be processors execute the network application to oper 

embodied in many different variations , and all such varia ate in accordance with a first protocol including a 

tions are contemplated to be within the scope of what is transmission control protocol ( TCP ) ; 

claimed . causing a TCP connection to be established with a client 

To facilitate an understanding of the subject matter 20 computer , by : 

described above , many aspects are described in terms of communicating a segment including at least one first 

sequences of actions that may be performed by elements of synchronize bit , a computer system . For example , it will be recognized that communicating a first acknowledgement of the seg 

the various actions may be performed by specialized circuits ment , and at least one second synchronize bit , and 

or circuitry ( e . g . , discrete logic gates interconnected to 25 communicating a second acknowledgement ; 

perform a specialized function ) , by program instructions causing first data to be communicated from the server 

being executed by one or more instruction processing units , computer to the client computer utilizing the TCP 

or by a combination of both . The description herein of any connection in accordance with the TCP protocol and a 

sequence of actions is not intended to imply that the specific hypertext transfer protocol ( HTTP ) , for being presented 

order described for performing that sequence must be fol - 30 to a user of the client computer ; 

lowed . causing the server computer to permit second data , from 

Moreover , the methods described herein may be embod the user of the client computer , to be received at the 

ied in executable instructions stored in a computer readable server computer from the client computer utilizing the 

medium for use by or in connection with an instruction TCP connection in accordance with the TCP protocol 

execution machine , system , apparatus , or device , such as a 35 and the hypertext transfer protocol ( HTTP ) ; and 

computer - based or processor - containing machine , system , causing access to be provided , to the client computer , to 

apparatus , or device . As used herein , a " computer readable code that causes the client computer to operate in 

medium ” may include one or more of any suitable media for accordance with a second protocol that is separate from 

storing the executable instructions of a computer program in the TCP , in order to establish a second protocol con 

one or more of an electronic , magnetic , optical , electromag - 40 nection with another server computer , by : 

netic , and infrared form , such that the instruction execution receiving a packet , machine , system , apparatus , or device may read ( or fetch ) detecting an idle time period parameter field in the 

the instructions from the computer readable medium and packet , execute the instructions for carrying out the described meth identifying metadata in the idle time period parameter 

ods . A non - exhaustive list of conventional exemplary com - 45 field for an idle time period , where , after the idle time 

puter readable media includes a portable computer diskette ; period is detected , the second protocol connection is 

a random access memory ( RAM ) ; a read only memory deemed inactive , and 

( ROM ) ; an erasable programmable read only memory creating or modifying , by the client computer and 

( EPROM or Flash memory ) ; optical storage devices , includ based on the metadata , a timeout attribute associated 

ing a portable compact disc ( CD ) , a portable digital video 50 with the second protocol connection . disc ( DVD ) , a high definition DVD ( HD - DVDTM ) , a Blu - 2 . The computer - implemented method of claim 1 wherein 

rayTM disc ; and the like . the creating or modifying the timeout attribute renders one 

Thus , the subject matter described herein may be embod or more keep - alive packets in the second protocol connec 

ied in many different forms , and all such forms are contem - tion unnecessary . plated to be within the scope of what is claimed . It will be 55 3 . The computer - implemented method of claim 1 wherein 

understood that various details may be changed without the code causes the client computer to utilize the second 

departing from the scope of the claimed subject matter . protocol instead of the TCP in order to permit communica 

Furthermore , the foregoing description is for the purpose of tion , between the client computer and the another server 

illustration only , and not for the purpose of limitation , as the computer , of the timeout attribute , where no timeout attri 

scope of protection sought is defined by the claims as set 60 bute is communicated when establishing the TCP connec 

forth hereinafter together with any equivalents thereof tion in accordance with the TCP , but is communicated when 

entitled to . establishing the second protocol connection so as to permit 

All methods described herein may be performed in any the second protocol connection to be placed in a particular order unless otherwise indicated herein explicitly or by state based on the timeout attribute when the second proto 

context . The use of the terms “ a ” and “ an ” and “ the ” and 65 col connection is inactive , where the particular state is such 

similar referents in the context of the foregoing description that only one of the client computer or the another server 

and in the context of the following claims are to be construed computer is allowed to transmit information to the other one . 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 23 of 29
25 

US 10 , 069 , 945 B1 

26 

4 . The computer - implemented method of claim 1 wherein 19 . The computer - implemented method of claim 1 

the access is caused to be provided to the code , by permitting wherein the timeout attribute is specified in a number of 

the client computer to fetch the code from the server seconds . computer . 20 . The computer - implemented method of claim 1 

5 . The computer - implemented method of claim 1 wherein 5 wherein the code causes the client computer to operate such 

the access is caused to be provided to the code , by permitting that the timeout attribute is used to keep the second protocol 

the client computer to receive the code from the server connection open when inactive , and to prevent the another 

computer utilizing the TCP connection and the hypertext server computer from closing the second protocol connec 

transfer protocol ( HTTP ) . tion when inactive . 6 . The computer - implemented method of claim 1 wherein 21 . The computer - implemented method of claim 1 

the access is caused to be provided to the code , by including wherein the code causes the client computer to operate such 

the code with the first data . that the metadata is used as input of an algorithm for 

7 . The computer - implemented method of claim 1 wherein determining a duration of time specified by the timeout 

the access is caused to be provided to the code , by permitting 15 attribute . the code to be received from the another server computer . 22 . The computer - implemented method of claim 21 

8 . The computer - implemented method of claim 1 wherein wherein the code causes the client computer to operate such 

the access is caused to be provided to the code , by permitting that the algorithm is determined based on at least one 

the code to be received from yet another server that is particular attribute . different from the server computer and the another server 2023 . The computer - implemented method of claim 1 

computer . wherein the code causes the client computer to operate such 

9 . The computer - implemented method of claim 1 wherein that the creation or the modification of the timeout attribute 

the code causes the client computer to operate such that the results from a negotiation between the another server com 

packet is received before the second protocol connection is puter and the client computer via a negotiation protocol of 

established 25 a TCP - variant protocol . 10 . The computer - implemented method of claim 1 2 4 . The computer - implemented method of claim 1 

wherein the code causes the client computer to operate such wherein the creating or the modifying of the timeout attri 

that , after the second protocol connection is established , bute results from a negotiation between the another server 

another packet is received with the idle time period param - computer and the client computer . 30 eter field . 25 . The computer - implemented method of claim 1 

11 . The computer - implemented method of claim 1 wherein the creating or modifying , includes the creating . wherein the code causes the client computer to operate such 26 . The computer - implemented method of claim 1 

that the timeout attribute is subject to a global setting . wherein the creating or modifying , includes the modifying . 12 . The computer - implemented method of claim 1 3 27 . The computer - implemented method of claim 1 

wherein the code causes the client computer to operate such wherein the second protocol connection includes a TCP 

that the timeout attribute is subject to a connection - specific variant connection . setting that is capable of overriding a global setting . 28 . The computer - implemented method of claim 1 

13 . The computer - implemented method of claim 1 wherein the second protocol connection includes a non - TCP 

wherein the code causes the client computer to operate such 40 connection . that a state of a keep - alive option for the second protocol 29 . The computer - implemented method of claim 1 

connection , is accessible to the client computer . wherein the code causes the client computer to : 

14 . The computer - implemented method of claim 1 detect the idle time period based on the timeout attribute ; 

wherein the code causes the client computer to operate such and 

that : 45 in response to detecting the idle time period , deactivate 

third data is received at the client computer from the the second protocol connection by releasing a resource 

another server computer utilizing the second protocol allocated for the second protocol connection by the 

connection in accordance with the second protocol that client computer without signaling the another server 

is separate from the TCP , for being presented to the user computer . of the client computer ; and 50 30 . The computer - implemented method of claim 1 

fourth data from the user of the client computer is wherein the code causes the client computer to operate such 

communicated from the client computer to the another that the detecting and the identifying are performed at a 

server computer utilizing the second protocol connec - TCP - variant layer other than a TCP layer , where the TCP 

tion in accordance with the second protocol that is variant layer is above an Internet Protocol ( IP ) layer and 

separate from the TCP . 55 below a hypertext transfer protocol ( HTTP ) application 15 . The computer - implemented method of claim 1 layer . wherein the timeout attribute is an attribute of a keep - alive . 31 . The computer - implemented method of claim 1 

16 . The computer - implemented method of claim 1 wherein the code causes the client computer to operate such 

wherein the code causes the client computer to operate such that at least one of the detecting or the identifying is 

that the receiving is performed subsequent to sending , by the 60 performed at a non - TCP layer other than a TCP layer , where 

client computer to the another server computer , another the non - TCP layer is above an Internet Protocol ( IP ) layer packet including other metadata including an idle time and below a hypertext transfer protocol ( HTTP ) application period parameter . layer . 17 . The computer - implemented method of claim 16 32 . The computer - implemented method of claim 1 

wherein the metadata is the same as the other metadata . 65 wherein the creating or the modifying of the timeout attri 

18 . The computer - implemented method of claim 16 bute reduces a number of keep - alive signals that are required 

wherein the metadata is different from the other metadata . to be communicated . 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 24 of 29
27 

US 10 , 069 , 945 B1 

28 

33 . The computer - implemented method of claim 1 37 . The computer - implemented method of claim 34 

wherein the packet is sent in advance of the second protocol wherein the access is provided to the code by permitting the 

connection being established . client computer to fetch the code from the server computer . 34 . A computer - implemented method comprising : 38 . The computer - implemented method of claim 34 

providing access to a server computer including : 5 wherein the access is provided to the code by permitting the 

a non - transitory memory storing a network application , client computer to receive the code from the server computer 

and utilizing the TCP connection and the hypertext transfer 

one or more processors in communication with the protocol ( HTTP ) . 

non - transitory memory , wherein the one or more 39 . The computer - implemented method of claim 34 

10 wherein the access is provided to the code by including the processors execute the network application to oper code with the first data . ate in accordance with a first protocol including a 40 . The computer - implemented method of claim 34 transmission control protocol ( TCP ) ; wherein the use of the code by the client computer results in causing a TCP connection to be established with a client the client computer operating such that a state of a keep computer , by 15 alive option for receiving a keep - alive packet , is accessible communicating a segment including at least one first to the client computer , where the state of the keep - alive synchronize bit ; option one of activates or disables the keep - alive option such communicating a first acknowledgement of the seg that , when activated , the keep - alive option is based on the 

ment , and at least one second synchronize bit ; and idle information . communicating a second acknowledgement ; 20 41 . The computer - implemented method of claim 34 

causing first data to be communicated from the server wherein the code includes at least one instruction for con 

computer to the client computer utilizing the TCP necting to the another server . connection in accordance with the TCP protocol and a 42 . The computer - implemented method of claim 34 

hypertext transfer protocol ( HTTP ) , for being presented wherein the use of the code by the client computer results in 

to a user of the client computer ; 25 the client computer operating such that the second protocol 

causing the server computer to permit second data , from packet includes third data . the user of the client computer , to be received at the 43 . The computer - implemented method of claim 34 

wherein the use of the code by the client computer results in server computer from the client computer utilizing the 

TCP connection in accordance with the TCP protocol the client computer operating such that the second protocol 

and the hypertext transfer protocol ( HTTP ) ; and 30 packet includes no data . 

providing access to code that , after use by the client 44 . The computer - implemented method of claim 34 

wherein the use of the code by the client computer results in computer , results in the client computer operating in the client computer operating such that the second protocol accordance with a second protocol that is separate from packet and the metadata included therewith are sent by the the TCP , in order to establish a second protocol con - , " 35 client computer to the another server computer , in response nection with another server computer , by : to receiving , by the client computer from the another server identifying idle information for detecting an idle time computer , another second protocol packet with other meta period , after which , the second protocol connection data . is subject to deactivation , 45 . The computer - implemented method of claim 34 

generating a second protocol packet including an idle 40 wherein the timeout attribute is an attribute of a keep - alive . time period parameter field identifying metadata for 46 . The computer - implemented method of claim 34 

the idle time period based on the idle information , wherein the use of the code by the client computer results in 

and the client computer sending , to the another server computer , sending , from the client computer to the another server another second protocol packet including other metadata 

computer , the second protocol packet to provide the 45 including an idle time period parameter . metadata for the idle time period to the another 47 . The computer - implemented method of claim 46 

server computer , for use by the another server com - wherein the metadata is the same as the other metadata . puter in creating or modifying , based on the meta - 48 . The computer - implemented method of claim 46 

data , a timeout attribute associated with the second wherein the metadata is different from the other metadata . protocol connection . 50 49 . The computer - implemented method of claim 34 

35 . The computer - implemented method of claim 34 wherein the timeout attribute is specified in a number of 

wherein the use of the code by the client computer results in seconds . the client computer utilizing the second protocol instead of 50 . The computer - implemented method of claim 34 

the TCP in order to permit communication , between the wherein the use of the code by the client computer results in 

client computer and the another server computer , of the 55 the client computer operating such that the timeout attribute 

timeout attribute , where the timeout attribute is not commu - is used to keep the second protocol connection open when 

nicated when establishing the TCP connection in accordance inactive , and to prevent the another server computer from 

with the TCP , but is communicated when establishing the closing the second protocol connection when inactive . second protocol connection so as to permit the second 51 . The computer - implemented method of claim 34 

protocol connection to be at least partially closed when 60 wherein the use of the code by the client computer results in 

inactive based on the timeout attribute . the client computer operating such that the metadata is used 

36 . The computer - implemented method of claim 34 as input of an algorithm for determining a duration of time 

wherein the use of the code by the client computer results in specified by the timeout attribute . the client computer operating such that the timeout attribute 52 . The computer - implemented method of claim 51 

serves to keep the second protocol connection open when 65 wherein the use of the code by the client computer results in 

inactive , and to prevent one or more other computers from the client computer operating such that the algorithm is 

closing the second protocol connection when inactive . determined based on at least one particular attribute . 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 25 of 29
29 

10 

20 

30 

US 10 , 069 , 945 B1 

30 

53 . The computer - implemented method of claim 34 70 . The computer - implemented method of claim 34 

wherein the use of the code by the client computer results in wherein the code is configured to be used by the client 

the client computer operating such that the timeout attribute computer via the hypertext transfer protocol ( HTTP ) . 

results from a negotiation between the another server com 71 . The computer - implemented method of claim 70 

puter and the client computer via a negotiation protocol of 5 wherein the hypertext transfer protocol ( HTTP ) transports 

a TCP - variant protocol . hypertext that includes a hypertext transfer protocol ( HTTP ) 54 . The computer - implemented method of claim 34 link . wherein the creating or the modifying of the timeout attri 72 . A computer - implemented method comprising : 

bute results from a negotiation between the another server providing access to a server computer including : 

computer and the client computer . a non - transitory memory storing instructions , and 

55 . The computer - implemented method of claim 34 one or more processors in communication with the 

wherein the creating or modifying , includes the creating . non - transitory memory , wherein the one or more 

56 . The computer - implemented method of claim 34 processors execute the instructions such that a net 

wherein the creating or modifying , includes the modifying . work application operates in accordance with a first 

57 . The computer - implemented method of claim 34 15 protocol including a transmission control protocol 

wherein the second protocol connection includes a TCP ( TCP ) , the server computer , when operating in accor 

variant connection . dance with the first protocol to set up a TCP con 

58 . The computer - implemented method of claim 34 nection with a client computer , configured to : 

wherein the second protocol connection includes a non - TCP communicate a segment including at least one first 

connection . synchronize bit , 59 . The computer - implemented method of claim 34 communicate a first acknowledgement of the seg wherein the use of the code by the client computer results in ment , and at least one second synchronize bit , and 

the client computer operating to : communicate a second acknowledgement ; 

detect the idle time period based on the timeout attribute ; causing first data to be communicated from the server 

and 25 computer to the client computer utilizing the TCP 

in response to detecting the idle time period , deactivate connection in accordance with the TCP protocol and a 

the second protocol connection by releasing a resource hypertext transfer protocol ( HTTP ) , for being presented 

allocated for the second protocol connection by the to a user of the client computer ; 

client computer without signaling the another server causing the server computer to permit second data , of the 

computer . 30 user of the client computer , to be received at the server 

60 . The computer - implemented method of claim 34 computer from the client computer utilizing the TCP 

wherein a resource allocated for the second protocol con connection in accordance with the TCP protocol and 

nection is released by at least one of the client computer or the hypertext transfer protocol ( HTTP ) ; and 

the another server computer without signaling at least one providing access to code that causes the client computer other of the client computer or the another server computer . 35 to operate in accordance with a second protocol that is 

61 . The computer - implemented method of claim 34 different from the TCP and that operates above an 

wherein the use of the code by the client computer results in Internet Protocol ( IP ) layer and below a hypertext the client computer operating such that at least one of the transfer protocol ( HTTP ) application layer , in order to 

identifying the idle information or the identifying the meta setup a second protocol connection with another server 

data is performed at a non - TCP layer other than a TCP layer , 40 computer , by : 

where the non - TCP layer is above an Internet Protocol ( IP ) receiving , by the client computer from the another 

layer and below a hypertext transfer protocol ( HTTP ) appli server computer , a packet , cation layer . identifying metadata , that specifies a number of sec 

62 . The computer - implemented method of claim 34 onds or minutes , in an idle time period parameter 

wherein the timeout attribute reduces a number of keep - alive 45 field in the packet for an idle time period during 

signals that are required to be communicated . which , no packet is communicated that meets each of 

63 . The computer - implemented method of claim 34 the following criteria : a ) communicated via the sec 

wherein the second protocol packet is sent in advance of the ond protocol connection , and b ) causes the second 

second protocol connection being established . protocol connection to be kept at least partially alive , 64 . The computer - implemented method of claim 34 50 and 

wherein the access to the code is provided via hypertext . determining , by the client computer and based on the 

65 . The computer - implemented method of claim 64 metadata , a timeout attribute associated with the 

wherein the hypertext includes a hypertext transfer protocol second protocol connection . ( HTTP ) link . 73 . The computer - implemented method of claim 72 

66 . The computer - implemented method of claim 34 55 wherein the access is provided by including the code with 

wherein the code is configured to be used by the client the first data such that the code is communicated from the 

computer via hypertext . server computer to the client computer utilizing the TCP 

67 . The computer - implemented method of claim 66 connection and the hypertext transfer protocol ( HTTP ) . 

wherein the hypertext includes a hypertext transfer protocol 74 . The computer - implemented method of claim 73 

( HTTP ) link . 60 wherein at least one of : 

68 . The computer - implemented method of claim 34 the communication includes only receiving ; 

wherein the access to the code is provided via the hypertext the communication includes only sending ; 

transfer protocol ( HTTP ) . the communication includes receiving and sending ; 

69 . The computer - implemented method of claim 68 the first acknowledgement of the segment and the at least 

wherein the hypertext transfer protocol ( HTTP ) transports 65 one second synchronize bit are communicated together ; 

hypertext that includes a hypertext transfer protocol ( HTTP ) the communication of : the segment including the at least 

link . one first synchronize bit , the first acknowledgement of 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 26 of 29
US 10 , 069 , 945 B1 

32 

10 

the segment , the at least one second synchronize bit , 78 . The computer - implemented method of claim 72 

and the second acknowledgement , is carried out via a wherein the access is provided to the code , by permitting the 

3 - way handshake ; client computer to receive the code from the server computer the segment includes a signal ; utilizing the TCP connection and the hypertext transfer the segment includes a packet ; 5 protocol ( HTTP ) . the second protocol includes a variant to the TCP ; 79 . The computer - implemented method of claim 72 

the second protocol includes an extension to the TCP ; wherein the access is provided to the code , by including the the second protocol includes a non - TCP protocol ; code with the first data . the second protocol connection includes a first connection 80 . The computer - implemented method of claim 72 that is set up ; wherein the access is provided to the code , by permitting the the second protocol connection includes an initial con code to be received from the another server computer . nection that is set up ; 

the metadata specifies a number of seconds ; 81 . The computer - implemented method of claim 72 

wherein the access is provided to the code , by permitting the the metadata specifies a number of minutes ; 

the packet is informational ; 15 code to be received from yet another server that is different 

the packet is received directly by the another server from the server computer and the another server computer . 

computer from the client computer ; 82 . The computer - implemented method of claim 72 

the packet is received by the another server computer wherein the packet is received before the second protocol 

from the client computer via at least one other inter connection is set up . mediate computer ; 20 83 . The computer - implemented method of claim 72 

the timeout attribute is capable being the same as the wherein , after the second protocol connection is set up , metadata ; another packet is received with the idle time period param the timeout attribute is capable being different from the eter field . metadata ; 84 . The computer - implemented method of claim 72 

the timeout attribute specifies a time duration ; 25 wherein the timeout attribute is subject to a global setting . the determining the timeout attribute includes at least one 85 . The computer - implemented method of claim 72 

of modifying , creating , or deleting the timeout attri - wherein the timeout attribute is subject to a connection 

bute ; specific setting that is capable of overriding a global setting . the second protocol operates directly above the IP layer ; 86 . The computer - implemented method of claim 72 

the second protocol operates directly below a hypertext 30 wherein a state of a keep - alive option for the second protocol transfer protocol ( HTTP ) application layer ; connection is accessible to the client computer . the code includes machine code or program code ; 87 . The computer - implemented method of claim 72 

the code includes at least one instruction ; wherein : 

the code is used in connection with a link component ; third data is received at the client computer from the 

the code includes a readable instruction ; 35 another server computer utilizing the second protocol 

the code includes a data structure ; connection in accordance with the second protocol , for 

the code includes a program component ; being presented to the user of the client computer ; and 

the code is a readable instruction ; fourth data from the user of the client computer is 

the code is a data structure ; communicated from the client computer to the another 

the code is a program component ; 40 server computer utilizing the second protocol connec 

the code is software ; tion in accordance with the second protocol . the code resides at the server computer that is different 88 . The computer - implemented method of claim 72 

from the another server computer , and is fetched from wherein the timeout attribute is an attribute of a keep - alive . the server computer by the client computer ; or 89 . The computer - implemented method of claim 72 

during the idle time period , a data - equipped second pro - 45 wherein the receiving is performed subsequent to sending , tocol packet is capable of being received by the client by the client computer to the another server computer , computer in another connection separate from the sec - another packet including other metadata including an idle 

ond protocol connection . time period parameter . 75 . The computer - implemented method of claim 72 9 0 . The computer - implemented method of claim 89 

wherein the timeout attribute renders one or more keep - alive 50 wherein the metadata is the same as the other metadata . packets in the second protocol connection unnecessary . 91 . The computer - implemented method of claim 89 

76 . The computer - implemented method of claim 72 wherein the metadata is different from the other metadata . wherein the second protocol is utilized instead of the TCP in 92 . The computer - implemented method of claim 72 

order to permit communication , between the client computer wherein the timeout attribute is specified in a number of 

and the another server computer , of the timeout attribute , 55 seconds . where no timeout attribute is communicated when setting up 93 . The computer - implemented method of claim 72 

the TCP connection in accordance with the TCP , but is wherein the timeout attribute is used to keep the second 

communicated when setting up the second protocol connec - protocol connection open when inactive , and to prevent the 

tion so as to permit the second protocol connection to be another server computer from closing the second protocol 

placed in a particular state based on the timeout attribute 60 connection when inactive . when the second protocol connection is inactive , where the 94 . The computer - implemented method of claim 72 

particular state is such that only one of the client computer wherein the metadata is used as input of an algorithm for 

or the another server computer is allowed to transmit infor - determining a duration of time specified by the timeout 

mation to the other one . attribute . 77 . The computer - implemented method of claim 72 65 95 . The computer - implemented method of claim 94 

wherein the access is provided to the code , by permitting the wherein the algorithm is determined based on at least one 

client computer to fetch the code from the server computer . particular attribute . 

35 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 27 of 29
US 10 , 069 , 945 B1 

33 34 

96 . The computer - implemented method of claim 72 protocol ( HTTP ) application layer , in order to setup a 

wherein the timeout attribute results from a negotiation second protocol connection with another server com 

between the another server computer and the client com puter , and to : 

puter via a negotiation protocol of a TCP - variant protocol . receive idle information for use in detecting an idle 

97 . The computer - implemented method of claim 72 5 time period during which no signal is communicated 

wherein the determination of the timeout attribute results that meets each of the following criteria : a ) commu from a negotiation between the another server computer and nicated in the second protocol connection , and b ) the client computer . results in the second protocol connection being at 98 . The computer - implemented method of claim 72 least partially kept alive , wherein the second protocol connection includes a TCP - 10 generate , based on the idle information , a second variant connection . protocol packet including an idle time period param 99 . The computer - implemented method of claim 72 eter field identifying metadata that is specified in a wherein the second protocol connection includes a non - TCP 

connection . number of seconds or minutes , and 

100 . The computer - implemented method of claim 72 15 send , from the client computer to another server com 

wherein the code causes the client computer to : puter and during the set up of the second protocol 

detect the idle time period based on the timeout attribute ; connection , the second protocol packet to provide 

and the metadata to the another server computer , for use 

in response to detecting the idle time period , deactivate by the another server computer in determining a 

the second protocol connection by releasing a resource 20 timeout attribute associated with the second protocol allocated for the second protocol connection by the connection . client computer without signaling the another server 105 . The computer - implemented method of claim 104 

computer . wherein the access is provided by including the structured 

101 . The computer - implemented method of claim 72 data with the first data such that the structured data is 

wherein the code causes the client computer to : 25 communicated from the server computer to the client com 

detect the idle time period based on the timeout attribute ; puter utilizing the TCP connection and the hypertext transfer 

and protocol ( HTTP ) ; and further wherein the structured data 

in response to detecting the idle time period , deactivate results in the client computer communicating with different 

the second protocol connection by releasing a resource servers using different protocols with the TCP being used 

allocated for the second protocol connection by the 30 without benefit of the timeout attribute during connection set 

client computer without signaling the another server up and the second protocol being used with the benefit of the 

computer . timeout attribute during connection set up . 102 . The computer - implemented method of claim 72 106 . The computer - implemented method of claim 104 

wherein the determination of the timeout attribute reduces a wherein the timeout attribute renders one or more keep - alive 

number of keep - alive signals that are required to be com - 35 packets in the second protocol connection unnecessary . municated . 107 . The computer - implemented method of claim 104 

103 . The computer - implemented method of claim 72 wherein the structured data causes the client computer to 

wherein the packet is sent in advance of the second protocol utilize the second protocol instead of the TCP in order to 

connection being set up . permit communication , between the client computer and the 

104 . A computer - implemented method comprising : 40 another server computer , of the timeout attribute , where no 

providing access to a server computer including : timeout attribute is communicated when setting up the TCP 

a non - transitory memory storing instructions , and connection in accordance with the TCP , but is communi 

one or more processors in communication with the cated when setting up the second protocol connection so as 

non - transitory memory , wherein the one or more to permit the second protocol connection to be placed in a 

processors execute the instructions such that a net - 45 particular state based on the timeout attribute when the 

work application operates in accordance with a first second protocol connection is inactive , where the particular 

protocol including a transmission control protocol state is such that only one of the client computer or the 

( TCP ) that operates above an Internet Protocol ( IP ) another server computer is allowed to transmit information 

layer and below a hypertext transfer protocol to the other one . ( HTTP ) application layer , the server computer con - 50 108 . The computer - implemented method of claim 104 

figured to operate in accordance with the first pro - wherein the access is provided to the structured data , by 

tocol to set up a TCP connection with a client permitting the client computer to fetch the structured data 

computer ; from the server computer . causing first data to be communicated from the server 109 . The computer - implemented method of claim 104 

computer to the client computer utilizing the TCP 55 wherein the access is provided to the structured data , by 

connection in accordance with the TCP protocol and a permitting the client computer to fetch the structured data 

hypertext transfer protocol ( HTTP ) , for being presented from the server computer via hypertext transfer protocol 

to a user of the client computer ; ( HTTP ) that transports hypertext including a hypertext causing the server computer to permit second data , of the transfer protocol ( HTTP ) link . user of the client computer , to be received at the server 60 110 . The computer - implemented method of claim 104 

computer from the client computer utilizing the TCP wherein the access is provided to the structured data , by 

connection in accordance with the TCP protocol and permitting the client computer to receive the structured data 

the hypertext transfer protocol ( HTTP ) ; and from the server computer utilizing the TCP connection and 

providing access to structured data that results in the the hypertext transfer protocol ( HTTP ) . 

client computer operating in accordance with a second 65 111 . The computer - implemented method of claim 104 

protocol , that is different from the TCP and operates wherein the access is provided to the structured data , by 

above the IP layer and below the hypertext transfer including the structured data with the first data . 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 28 of 29
35 

US 10 , 069 , 945 B1 

36 

112 . The computer - implemented method of claim 104 130 . The computer - implemented method of claim 104 

wherein the access is provided to the structured data , by wherein the determination of the timeout attribute results 

permitting the structured data to be received from the from a negotiation between the another server computer and 

another server computer . the client computer . 113 . The computer - implemented method of claim 104 5 131 . The computer - implemented method of claim 104 

wherein the access is provided to the structured data , by wherein the second protocol connection includes a TCP 

permitting the structured data to be received from yet variant connection . another server that is different from the server computer and 132 . The computer - implemented method of claim 104 the another server computer . wherein the second protocol connection includes a non - TCP 114 . The computer - implemented method of claim 104 10 connection . wherein the packet is received before the second protocol 133 . The computer - implemented method of claim 104 connection is set up . 115 . The computer - implemented method of claim 104 wherein the structured data causes the client computer to : 

detect the idle time period based on the timeout attribute ; wherein , after the second protocol connection is set up , another packet is received with the idle time period param - 15 and 

eter field . in response to detecting the idle time period , deactivate 

116 . The computer - implemented method of claim 104 the second protocol connection by releasing a resource 

wherein the timeout attribute is subject to a global setting . allocated for the second protocol connection by the 

117 . The computer - implemented method of claim 104 client computer without signaling the another server 

wherein the timeout attribute is subject to a connection - 20 computer . specific setting that is capable of overriding a global setting . 134 . The computer - implemented method of claim 104 

118 . The computer - implemented method of claim 104 wherein the structured data causes the client computer to : 

wherein a state of a keep - alive option for the second protocol detect the idle time period based on the timeout attribute ; 

connection , is accessible to the client computer . and 

119 . The computer - implemented method of claim 104 25 in response to detecting the idle time period , deactivate 

wherein : the second protocol connection by releasing a resource third data is received at the client computer from the allocated for the second protocol connection by the another server computer utilizing the second protocol client computer without signaling the another server connection in accordance with the second protocol , for computer . being presented to the user of the client computer ; and 30 135 . The computer - implemented method of claim 104 fourth data from the user of the client computer is wherein the determination of the timeout attribute reduces a communicated from the client computer to the another 

server computer utilizing the second protocol connec number of keep - alive signals that are required to be com 

municated . tion in accordance with the second protocol . 120 . The computer - implemented method of claim 104 35 136 . The computer - implemented method of claim 104 

wherein the timeout attribute is an attribute of a keep - alive . wherein the packet is sent in advance of the second protocol 

121 . The computer - implemented method of claim 104 connection being set up . wherein the structured data causes the client computer to 137 . The computer - implemented method of claim 104 

wherein the access to the structured data is provided in send , to the another server computer , another packet includ ing other metadata including an idle time period parameter . 40 connection with hypertext . 122 . The computer - implemented method of claim 121 138 . The computer - implemented method of claim 137 

wherein the hypertext includes a hypertext transfer protocol wherein the metadata is the same as the other metadata . 123 . The computer - implemented method of claim 121 ( HTTP ) link . 

wherein the metadata is different from the other metadata . 139 . The computer - implemented method of claim 104 

124 . The computer - implemented method of claim 104 45 is wherein the structured data is configured to be used by the 

client computer in connection with hypertext . wherein the timeout attribute is specified in a number of 

seconds . 140 . The computer - implemented method of claim 139 

125 . The computer - implemented method of claim 104 wherein the hypertext includes a hypertext transfer protocol 

wherein the structured data includes a data structure . ( HTTP ) link . 126 . The computer - implemented method of claim 104 50 141 . The computer - implemented method of claim 104 

wherein the timeout attribute is used to keep the second wherein the access to the structured data is provided in 

protocol connection open when inactive , and to prevent the connection with the hypertext transfer protocol ( HTTP ) . 

another server computer from closing the second protocol 142 . The computer - implemented method of claim 141 

connection when inactive . wherein the hypertext transfer protocol ( HTTP ) transports 

127 . The computer - implemented method of claim 104 55 hypertext that includes a hypertext transfer protocol ( HTTP ) 

wherein the metadata is used as input of an algorithm for link . 

determining a duration of time specified by the timeout 143 . The computer - implemented method of claim 104 

attribute . wherein the structured data is configured to be used by the 

128 . The computer - implemented method of claim 127 client computer in connection with the hypertext transfer 

protocol ( HTTP ) . wherein the algorithm is determined based on at least one 60 

particular attribute . 144 . The computer - implemented method of claim 143 

129 . The computer - implemented method of claim 104 wherein the hypertext transfer protocol ( HTTP ) transports 

wherein the timeout attribute results from a negotiation hypertext that includes a hypertext transfer protocol ( HTTP ) 

link . between the another server computer and the client com 

puter via a negotiation protocol of a TCP - variant protocol . 

se 

* * * * * 

Case 6:20-cv-00453-ADA Document 1-1 Filed 06/01/20 Page 29 of 29