IP Library Granted Patent US 7,337,233
Granted Patent B2
US 7,337,233 · App. 10/750,356 · Granted Feb 26, 2008

Network system with TCP/IP protocol spoofing

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,337,233
App. No.
10/750,356
Granted
Feb 26, 2008
Kind
B2
Abstract

A system in which a personal computer sends messages into a TCP/IP network using a conventional dial-up link and downloads data from the TCP/IP network using a high-speed one-way satellite link. A preferred embodiment uses a conventional SLIP provider to connect to the TCP/IP network and uses a commercial software TCP/IP package that has a standard driver interface. A spoofing protocol compensates for the long propagation delays inherent to satellite communication.

Claims (120)

1. A system comprising:

TCP packet receiving means for receiving a TCP packet sent by a first apparatus on a TCP/IP network; and

protocol spoofing means for sending a TCP ACK to the first apparatus in response to said TCP packet receiving means receiving the TCP packet from the first apparatus so as to spoof receipt of the TCP packet by a second apparatus on the TCP/IP network,

wherein said TCP packet receiving means and said protocol spoofing means are provided in an apparatus.

2. A system according to claim 1 , further comprising sending means for sending data comprising the data field of the TCP packet to the second apparatus via a satellite link.

3. A system according to claim 2 , wherein the data comprises the entire TCP packet.

4. A system according to claim 1 , further comprising TCP ACK receiving means for receiving a TCP ACK from the second apparatus, the TCP ACK having been sent by the second apparatus in response to receipt by the second apparatus of the data, the TCP ACK having been sent in an IP packet addressed to the first apparatus.

5. A system according to claim 4 , further comprising means for discarding the TCP ACK received from the second apparatus without forwarding the TCP ACK to the first apparatus in response to the TCP ACK not containing data in its data field.

6. A system according to claim 4 , further comprising modifying means for modifying the TCP ACK received from the second apparatus and for forwarding the modified TCP ACK to the first apparatus, said modifying means comprising means for changing the acknowledgement number of the TCP ACK received from the second apparatus.

7. A system according to claim 6 , wherein said modifying means further comprises means for recalculating the TCP checksum in response to the acknowledgement number being changed.

8. A system according to claim 1 , further comprising information sending means for sending information to the second apparatus via a satellite link in response to receipt of the TCP packet sent by the first apparatus.

9. A system according to claim 1 , wherein data comprising the data field of the TCP packet is sent to the second apparatus via a connection comprising a satellite link, and

wherein for the satellite link, the data comprising the data field of the TCP packet is formatted for transmission including providing a first address field that identifies an IP address of the second apparatus and a second address field that identifies a destination satellite receiver.

10. A system according to claim 9 , wherein the destination satellite receiver comprises a device that is configured to interface the second apparatus to a satellite antenna.

11. A system according to claim 10 , wherein the device is disposed within the second apparatus and is embodied as an adapter card.

12. A system according to claim 9 , wherein the second address field is a six byte destination address.

13. A system according to claim 12 , wherein the six byte destination address comprises the bytes of an IP address in reverse order.

14. A system according to claim 1 , wherein the TCP packet is sent by the first apparatus in an IP packet having, as its destination IP address, the IP address of the second apparatus.

15. A system according to claim 1 , wherein the second apparatus has a web browser, and the first apparatus sends the TCP packet in response to a request from the web browser.

16. A system according to claim 1 , wherein the TCP/IP network is the Internet.

17. A method comprising:

a TCP packet receiving step of receiving a TCP packet sent by a first apparatus on a TCP/IP network; and

a protocol spoofing step of sending a TCP ACK to the first apparatus in response to said TCP packet receiving means receiving the TCP packet from the first apparatus so as to spoof receipt of the TCP packet by a second apparatus on the TCP/IP network.

18. A system comprising:

a TCP packet receiving unit configured to receive a TCP packet sent by a first apparatus on a network; and

a protocol spoofer configured to send a TCP ACK to the first apparatus on the network in response to said TCP packet receiving unit receiving the TCP packet from the first apparatus on the network so as to spoof receipt of the TCP packet by a second apparatus on the network.

19. A system according to claim 18 , further comprising a data sending unit configured to send data comprising the data field of the TCP packet to the second apparatus via a satellite link.

20. A system according to claim 19 , wherein the data comprises the entire TCP packet.

21. A system according to claim 18 , further comprising a TCP ACK receiving unit configured to receive a TCP ACK from the second apparatus, the TCP ACK having been sent by the second apparatus in response to receipt by the second apparatus of the data sent by said data sending unit, the TCP ACK having been sent in an IP packet addressed to the first apparatus.

22. A system according to claim 21 , further comprising a TCP ACK discarding unit configured to discard the TCP ACK received from the second apparatus without forwarding the TCP ACK to the first apparatus in response to the TCP ACK not containing data in its data field.

23. A system according to claim 21 , further comprising a TCP ACK modifying unit configured to modify the TCP ACK received from the second apparatus and to forward the modified TCP ACK to the first apparatus, said TCP ACK modifying unit comprising an acknowledgement number changing unit configured to change the acknowledgement number of the TCP ACK received from the second apparatus.

24. A system according to claim 23 , wherein said TCP ACK modifying unit further comprises a checksum recalculating unit configured to recalculate the TCP checksum after the acknowledgment number is changed.

25. A system according to claim 18 , further comprising information sending means for sending information to the second apparatus via a satellite link in response to receipt of the TCP packet sent by the first apparatus.

26. A system according to claim 18 , wherein data comprising the data field of the TCP packet is sent to the second apparatus via a connection comprising a satellite link, and

wherein for the satellite link, the data comprising the data field of the TCP packet is formatted for transmission including providing a first address field that identifies an IP address of the second apparatus and a second address field that identifies a destination satellite receiver.

27. A system according to claim 26 , wherein the second address field is a six byte destination address.

28. A system according to claim 18 , wherein the second apparatus has a web browser, and the first apparatus sends the TCP packet in response to a request from the web browser.

29. A system according to claim 18 , wherein said TCP packet receiving unit and said protocol spoofer are provided in an apparatus.

30. A system comprising:

a receiving unit that is configured to receive data sent from a source apparatus, the data being addressed at the IP level to a destination apparatus; and

a TCP ACK generator that is configured to generate a TCP ACK to be sent to the source apparatus in an IP packet addressed to the source apparatus, the TCP ACK being arranged to spoof receipt of the data by the destination apparatus,

wherein the destination apparatus receives the data via a communication path comprising a satellite link.

31. A system according to claim 30 , wherein when the destination apparatus sends data addressed to the source apparatus, the ACK number of a TCP packet containing the data and addressed to the source apparatus is set by an apparatus other than the destination apparatus to be equal to a highest in-sequence sequence number.

32. A system according to claim 30 , wherein the destination apparatus is a personal computing device, and the source apparatus is an application server.

33. A system according to claim 30 , further comprising a data sending unit that is configured to send the data to the destination apparatus in a packet via the communication path comprising a satellite link.

34. A system according to claim 33 , wherein said data sending unit resends the data in response to non-receipt of an acknowledgement from the destination apparatus within a predetermined amount of time.

35. A system according to claim 34 , wherein the acknowledgment is a TCP ACK.

36. A system according to claim 30 , further comprising a data sending unit that is configured to effect the receipt of the data by the destination apparatus via the communication path comprising a satellite link,

wherein said data sending unit stores the data in a memory, and

wherein said data sending unit deletes the data from the memory in response to receipt of an acknowledgement that the destination apparatus has received the data.

37. A system according to claim 36 , wherein the acknowledgment is a TCP ACK.

38. A system according to claim 30 , further comprising an ACK editing unit that is configured so that upon receipt from the destination apparatus of a TCP ACK for the data, the TCP ACK containing data and being sent in an IP packet addressed to the source apparatus, said ACK editing unit edits the TCP ACK by replacing the ACK number in the TCP ACK with a highest in-sequence sequence number received from the source apparatus and sends the edited TCP ACK to the source apparatus.

39. A system according to claim 38 , wherein the TCP checksum of the TCP ACK is recalculated by said ACK editing unit after the ACK number is replaced.

40. A system according to claim 38 , wherein the TCP checksum is recalculated after the ACK number is replaced.

41. A system according to claim 30 , wherein when the destination apparatus sends a TCP ACK for the data, the TCP ACK containing data and being sent in an IP packet addressed to the source apparatus, the ACK number in the TCP ACK is replaced with the highest in-sequence sequence number received from the source apparatus and the resulting TCP ACK is then sent to the source apparatus.

42. A system according to claim 30 , wherein the TCP ACK has a source port corresponding to the destination apparatus.

43. A system according to claim 30 , further comprising a data sending unit that is configured to address the data for transmission to the destination apparatus.

44. A system according to claim 43 , wherein said data sending unit sends the data in a packet.

45. A system according to claim 43 , wherein said data sending unit effects retransmission of the data in response to non-receipt of an acknowledgment for the data within an amount of time.

46. A system according to claim 45 , wherein the acknowledgment is a TCP ACK.

47. A system according to claim 43 , wherein said data sending unit stores the data in a memory until receiving an acknowledgment for the data.

48. A system according to claim 47 , wherein said data sending unit deletes the data from the memory in response to receiving the acknowledgment.

49. A system according to claim 47 , wherein the acknowledgment is a TCP ACK.

50. A system according to claim 30 , wherein the data is sent to the destination apparatus via the communication path comprising a satellite link, and

wherein for the satellite link, the data is formatted for transmission including providing a first address field that identifies an IP address of the destination apparatus and a second address field that identifies a destination satellite receiver.

51. A system according to claim 45 , wherein the destination apparatus has a web browser, and the source apparatus sends the TCP packet in response to a request from the web browser.

52. A system according to claim 50 , wherein the second address field is a six byte destination address.

53. A system according to claim 30 , wherein the destination apparatus has a web browser, and the source apparatus sends the TCP packet in response to a request from the web browser.

54. A system according to claim 30 , wherein said receiving unit and said TCP ACK generator are provided in an apparatus.

55. A system comprising:

receiving means for receiving data sent from a source apparatus, the data being addressed at the IP level to a destination apparatus; and

TCP ACK generating means for generating a TCP ACK to be sent to the source apparatus in an IP packet addressed to the source apparatus, the TCP ACK being arranged to spoof receipt of the data by the destination apparatus,

wherein the destination apparatus receives the data via a communication path comprising a satellite link, and

wherein said receiving means and sais TCP ACK generating means are provided in an apparatus.

56. A method comprising:

a data receiving step of receiving, at a first apparatus on a network, data sent by a second apparatus on the network; and

a TCP ACK generating step of generating, by the first apparatus on the network, of a TCP ACK spoofing receipt of the data by a third apparatus on the network; and

receiving, by the third apparatus on the network, of the data via a communication path comprising a wireless link of the network.

57. A method according to claim 56 , wherein the first apparatus is a gateway, the second apparatus is an application server, and the third apparatus is a personal computer, and the wireless link comprises a satellite link.

58. A method according to claim 56 , further comprising a step of sending by the first apparatus to the third apparatus of the data via the communication path.

59. A method according to claim 58 , further comprising a step of resending by the first apparatus to the third apparatus of the data in response to non-receipt of a TCP ACK from the third apparatus within a predetermined amount of time.

60. A method according to claim 56 , further comprising a step of selectively discarding a TCP ACK to prevent the TCP ACK from reaching the second apparatus, the TCP ACK having been sent by the third apparatus in response to receipt of the data.

61. A method according to claim 56 , further comprising a step of resending to the third apparatus of the data in response to non-receipt of a TCP ACK from the third apparatus within a predetermined amount of time.

62. A method according to claim 56 , further comprising a step of editing a TCP ACK, which contains data and which was sent by the third apparatus, to replace the ACK number with a highest in-sequence sequence number.

63. A method according to claim 56 , wherein said generating step comprises setting the source port of the TCP ACK to correspond to the third apparatus, and wherein said method further comprises sending the TCP ACK in an IP packet having a source IP address corresponding to the third apparatus.

64. A method according to claim 56 , wherein the data is sent from the first apparatus to the third apparatus via the communication path, and

wherein for the wireless link, the data is formatted for transmission including providing a first address field that identifies an IP address of the third apparatus and a second address field that identifies a destination satellite receiver.

65. A method according to claim 64 , wherein the second address field is a six byte destination address.

66. A method according to claim 56 , wherein the third apparatus has a web browser, and the second apparatus sends the data in response to a request from the web browser.

67. A system comprising:

an ACK spoofing subsystem for performing transport level ACK spoofing on a transport level connection between a first apparatus on a network and a second apparatus on the network, wherein said subsystem is configured to:

(1) receive data sent from the first apparatus toward the second apparatus,

(2) send a transport level ACK to the first apparatus in response to receipt of the data from the first apparatus, the transport level ACK being arranged to spoof receipt of the data by the second apparatus, and

(3) in the case that the second apparatus sends toward the first apparatus a transport level ACK in response to receipt of the data, which transport level ACK contains data, receive the transport level ACK and forward it to the first apparatus after ensuring that its ACK number is set equal to a highest in-sequence sequence number received from the first apparatus over the connection.

68. A system according to claim 67 , wherein said ACK spoofing subsystem ensures that the ACK number of the received transport level ACK is set equal to the highest in-sequence sequence number received from the first apparatus over the connection by replacing the ACK number with the highest in-sequence sequence number received from the first apparatus over the connection.

69. A system according to claim 68 , wherein when replacing the ACK number, said ACK spoofing subsystem also recalculates the checksum of the received transport level ACK.

70. A system according to claim 67 , further comprising the first apparatus and the second apparatus.

71. A system according to claim 67 , wherein said ACK spoofing subsystem is provided in an apparatus.

72. A system comprising:

an ACK spoofing subsystem for performing TCP ACK spoofing on a TCP connection between a first apparatus on a network and a second apparatus on the network, wherein said subsystem is configured to:

(1) receive a TCP packet indicating that a new TCP connection is being formed between the first apparatus and the second apparatus;

(2) initialize, in response to receiving the TCP packet, a data structure in a memory, the data structure being arranged to store data sent on the TCP connection by the first apparatus toward the second apparatus;

(3) receive data sent on the TCP connection by the first apparatus toward the second apparatus;

(4) generate a TCP ACK in response to receipt of the data, the TCP ACK being arranged to spoof receipt by the second apparatus of the data;

(5) store the data in the data structure;

(6) forward the data toward the second apparatus;

(7) in response to an acknowledgement for the data not being received within a predetermined amount of time, forward the data stored in the data structure toward the second apparatus to thereby forward the data again;

(8) delete the data from the data structure in response to receipt of an acknowledgement for the data;

(9) keep track of a highest in-sequence sequence number on the TCP connection; and

(10) in the case that the second apparatus sends toward the first apparatus a TCP ACK for the data, the TCP ACK containing data, receive the TCP ACK and forward it toward the first apparatus after ensuring that its ACK number is set equal to the number.

73. A system according to claim 72 , wherein said ACK spoofing subsystem is further configured to delete the data structure in response to receipt of a TCP close connection packet.

74. A system according to claim 72 , further comprising the first apparatus and the second apparatus.

75. A system according to claim 72 , wherein the ensuring comprises replacing the ACK number of the TCP ACK with the number and recalculating the checksum of the TCP ACK.

76. A system according to claim 72 , wherein the packet indicating that a new TCP connection is being formed is sent in an IP packet having, as its source address, the IP address of the first apparatus, and having, as its destination address, the IP address of the second apparatus.

77. A system according to claim 72 , wherein said ACK spoofing subsystem is provided in an apparatus.

78. A system comprising:

a forwarding unit that is configured to receive data from a first apparatus on a network, which data is addressed to a second apparatus on the network, and to forward the data toward the second apparatus;

a TCP ACK sender that is configured to send a TCP ACK to the first apparatus, the TCP ACK being arranged to spoof receipt of the data by the second apparatus; and

a TCP ACK processor that, when the second apparatus sends a TCP ACK to the first apparatus and the TCP ACK contains data, edits the TCP ACK's ACK number.

79. A system according to claim 78 , wherein said forwarding unit, said TCP ACK sender, and said TCP ACK processor are provided in an apparatus.

Assignments (12)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION NUMBER 15649418 PREVIOUSLY RECORDED ON REEL 050600 FRAME 0314. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF PATENT SECURITY AGREEMENTS. Recorded Sep 3, 2020
From: WELLS FARGO, NATIONAL BANK ASSOCIATION
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 053703/0367 →
ASSIGNMENT OF PATENT SECURITY AGREEMENTS Recorded Oct 1, 2019
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 050600/0314 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED ON REEL 026499 FRAME 0290. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT. Recorded Sep 4, 2018
From: EH HOLDING CORPORATION; ECHOSTAR 77 CORPORATION; ECHOSTAR GOVERNMENT SERVICES L.L.C.; ECHOSTAR ORBITAL L.L.C.; ECHOSTAR SATELLITE OPERATING CORPORATION; ECHOSTAR SATELLITE SERVICES L.L.C.; ADVANCED SATELLITE RESEARCH, LLC; HELIUS ACQUISITION, LLC; HELIUS, LLC; HNS FINANCE CORP.; HNS LICENSE SUB, LLC; HNS REAL ESTATE, LLC; HNS-INDIA VSAT, INC.; HNS-SHANGHAI, INC.; HUGHES COMMUNICATIONS, INC.; HUGHES NETWORK SYSTEMS, LLC; HUGHES NETWORK SYSTEMS INTERNATIONAL SERVICE COMPANY
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 047014/0886 →
SECURITY AGREEMENT Recorded Jun 24, 2011
From: EH HOLDING CORPORATION; ECHOSTAR 77 CORPORATION; ECHOSTAR GOVERNMENT SERVICES L.L.C.; ECHOSTAR ORBITAL L.L.C.; ECHOSTAR SATELLITE OPERATING CORPORATION; ECHOSTAR SATELLITE SERVICES L.L.C.; ADVANCED SATELLITE RESEARCH, LLC; HELIUS ACQUISITION, LLC; HELIUS, LLC; HNS FINANCE CORP.; HNS LICENSE SUB, LLC; HNS REAL ESTATE, LLC; HNS-INDIA VSAT, INC.; HNS-SHANGHAI, INC.; HUGHES COMMUNICATIONS, INC.; HUGHES NETWORK SYSTEMS, LLC; HUGHES NETWORK SYSTEMS INTERNATIONAL SERVICE COMPANY
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 026499/0290 →
PATENT RELEASE Recorded Jun 16, 2011
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: HUGHES NETWORK SYSTEMS, LLC
Reel/Frame 026459/0883 →
ASSIGNMENT AND ASSUMPTION OF REEL/FRAME NOS. 16345/0401 AND 018184/0196 Recorded Apr 9, 2010
From: BEAR STEARNS CORPORATE LENDING INC.
To: JPMORGAN CHASE BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 024213/0001 →
RELEASE OF SECOND LIEN PATENT SECURITY AGREEMENT Recorded Aug 29, 2006
From: JPMORGAN CHASE BANK, N.A.
To: HUGHES NETWORK SYSTEMS, LLC
Reel/Frame 018184/0170 →
ASSIGNMENT OF SECURITY INTEREST IN U.S. PATENT RIGHTS Recorded Aug 29, 2006
From: JPMORGAN CHASE BANK, N.A.
To: BEAR STEARNS CORPORATE LENDING INC.
Reel/Frame 018184/0196 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 11, 2005
From: HUGHES NETWORK SYSTEMS, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 016345/0368 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jul 11, 2005
From: HUGHES NETWORK SYSTEMS, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 016345/0401 →
MERGER Recorded Jun 21, 2005
From: HUGHES ELECTRONICS CORPORATION
To: DIRECTV GROUP, INC.,THE
Reel/Frame 016427/0731 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2005
From: DIRECTV GROUP, INC., THE
To: HUGHES NETWORK SYSTEMS, LLC
Reel/Frame 016323/0867 →