Techniques to detect and react to proxy interference

Techniques to detect and react to proxy interference are described. In one embodiment, an apparatus may comprise a first network protocol component operative to receive a first network connection initiation attempt from a client at a server; determine that the first network connection initiation attempt is malformed; extract a cookie from the first network connection initiation attempt, the cookie comprising a client identifier; a client record component operative to record a malformed network connection initiation record in response to determining that the first network connection initiation attempt is malformed; and a second network protocol component operative to receive a second network connection initiation attempt from the client at the server; extract the cookie from the second network connection initiation attempt; and transmit a malformed network connection message to the client based on the malformed network connection initiation record. Other embodiments are described and claimed.

BACKGROUND

Client and server devices may interact with each other using a communications network such as the Internet. Clients may include applications executing within a web browser on a computing device. Clients executing within a web browser may communicate using various portions, components, elements, or extensions of the hypertext transport protocol (HTTP) or hypertext transport protocol secure (HTTPS). Clients may operate within a complex network environment and encounter various considerations that complicate their operation.

SUMMARY

Various embodiments are generally directed to techniques to detect and react to proxy interference. Some embodiments are particularly directed to techniques to detect and react to proxy interference with a communication protocol. In one embodiment, for example, an apparatus may comprise a first network protocol component operative to receive a first network connection initiation attempt from a client at a server, the first network connection initiation attempt based on a first network communication protocol; determine that the first network connection initiation attempt is malformed; extract a cookie from the first network connection initiation attempt, the cookie comprising a client identifier; and reject the first network connection initiation attempt based on the first network connection initiation attempt being malformed; a client record component operative to record a malformed network connection initiation record in response to determining that the first network connection initiation attempt is malformed, the malformed network connection initiation record associated with the client based on the client identifier; and retrieve the malformed network connection initiation record based on the client identifier; and a second network protocol component operative to receive a second network connection initiation attempt from the client at the server, the second network connection initiation attempt based on a second network communication protocol; extract the cookie from the second network connection initiation attempt, the cookie comprising the client identifier; and transmit a malformed network connection message to the client based on the malformed network connection initiation record. Other embodiments are described and claimed.

DETAILED DESCRIPTION

Server devices may support rich network protocols that depend on specific settings of the communications headers for their communication protocol. Networks may include network devices, such as proxies, that perform actions to improve and otherwise modify the operation of a communications network. However, some of these actions may modify the operations of communication protocols, such as by modifying communication headers, and may thereby interfere with the operation of the communication protocols.

For instance, a network proxy may mediate in a client's interactions with a server. A proxy may, for example, modify an HTTP header for an HTTP or HTTPS connection to introduce alternative header settings intended to improve network performance. In many use cases, these modifications may improve network performance without negatively impacting users. However, web applications using specific protocols or specific elements of protocols may be disrupted by these modifications. As such, it may be beneficial to detect the presence of a proxy interfering with a network connection in order to inform a user as to why a web application is unavailable and to inform the user as to possible proxy reconfigurations that may resolve the problem. As a result, the embodiments can improve the performance of a web application system.

It is worthy to note that “a” and “b” and “c” and similar designators as used herein are intended to be variables representing any positive integer. Thus, for example, if an implementation sets a value for a=5, then a complete set of components122illustrated as components122-1through122-amay include components122-1,122-2,122-3,122-4and122-5. The embodiments are not limited in this context.

FIG. 1illustrates a block diagram for a proxy interference detection system100. In one embodiment, the proxy interference detection system100may comprise a computer-implemented system having software applications comprising one or more components. Although the proxy interference detection system100shown inFIG. 1has a limited number of elements in a certain topology, it may be appreciated that the proxy interference detection system100may include more or less elements in alternate topologies as desired for a given implementation.

A messaging system110may be generally arranged to receive, store, and deliver messages. The messaging system110may store messages while messaging clients, such as may execute on client devices120are offline and deliver the messages once the messaging clients are available. The messaging system110may empower the engagement and performance of other communication tasks, such as audio and/or video calls. The messaging system110may be implemented by a plurality of server devices150.

A plurality of client devices120may operate as part of the proxy interference detection system100, transmitting messages and otherwise communicating between each other as part of a messaging system110. The client devices120may execute messaging clients for the messaging system110, wherein each of the client devices120and their respective messaging clients are associated with a particular user of the messaging system110. In some embodiments, the client devices120may be cellular devices such as smartphones and may be identified to the messaging system110based on a phone number associated with each of the client devices120. In some embodiments, the client devices120may be identified to the messaging system110based on a user account registered with the messaging system110—and potentially a social networking system that comprises or is associated with the messaging system110—and logged into from the messaging client executing on the client devices120. In general, each messaging client may be addressed through various techniques for the reception of messages. While in some embodiments the client devices120may comprise cellular devices, in other embodiments one or more of the client devices120may include personal computers, tablet devices, any other form of computing device without limitation. Personal computers and other devices may access a messaging system110using web browser accessing a web server, for instance.

Network connections within the messaging system110may be performed as direction connections130or as proxied connections135. A direct connection may correspond to a network connection in which the network packets from a client device are not mediated by a proxy. A proxied connection may correspond to a network connection in which the network packets from a client device are mediated by a proxy. In some embodiments, a proxy may be external to a client device, such as by a proxy device or proxy server device on the communication network used by a client device. In some embodiments, a proxy may be internal to a client device, such as may be implemented as local software on a client device.

The client devices120may communicate using wireless transmissions to exchange network traffic. Exchanging network traffic, such as may be included in the exchange of messaging transactions, may comprise transmitting and receiving network traffic via a network interface controller (NIC). A NIC comprises a hardware component connecting a computer device, such as each of client devices120and server devices150, to a computer network. The NIC may be associated with a software network interface empowering software applications to access and use the NIC. Network traffic may be received over the computer network as signals transmitted over data links. The network traffic may be received by capturing these signals and interpreting them. The NIC may receive network traffic over the computer network and transfer the network traffic to memory storage accessible to software applications using a network interface application programming interface (API). The network interface controller may be used for the network activities of the embodiments described herein.

Proxy interference detection system100may include an authorization server (or other suitable component(s)) that allows users to opt in to or opt out of having their actions logged by proxy interference detection system100or shared with other systems (e.g., third-party systems), for example, by setting appropriate privacy settings. A privacy setting of a user may determine what information associated with the user may be logged, how information associated with the user may be logged, when information associated with the user may be logged, who may log information associated with the user, whom information associated with the user may be shared with, and for what purposes information associated with the user may be logged or shared. Authorization servers or other authorization components may be used to enforce one or more privacy settings of the users of proxy interference detection system100and other elements of a messaging system110through blocking, data hashing, anonymization, or other suitable techniques as appropriate. For instance, a user may be empowered to configure privacy settings determining whether network usage is logged by the proxy interference detection system100and analyzed. In some embodiments, a user may be presented with information regarding may be collected and how that information may be used, such as informing the user that collected information may be anonymized prior to analysis.

FIG. 2illustrates an embodiment of a plurality of servers implementing various functions of a messaging system200. It will be appreciated that different distributions of work and functions may be used in various embodiments of a messaging system200. The messaging system200may comprise the streaming audio system100with the operations of the streaming audio system100comprising a portion of the overall operations of the messaging system200. The illustrated embodiment of the messaging system200may particularly correspond to a portion of the messaging system110described with reference toFIG. 1comprising one or more server devices providing messaging services to the user of the messaging system200.

The messaging system200may comprise a domain name front end210. The domain name front end210may be assigned one or more domain names associated with the messaging system200in a domain name system (DNS). The domain name front end210may receive incoming connections and distribute the connections to servers providing various messaging services.

The messaging system200may comprise one or more chat servers215. The chat servers215may comprise front-end servers for receiving and transmitting user-to-user messaging updates such as chat messages. Incoming connections may be assigned to the chat servers215by the domain name front end210based on workload balancing.

The messaging system200may comprise backend servers230. The backend servers230may perform specialized tasks in the support of the chat operations of the front-end chat servers215. A plurality of different types of backend servers230may be used. It will be appreciated that the assignment of types of tasks to different backend serves230may vary in different embodiments. In some embodiments some of the back-end services provided by dedicated servers may be combined onto a single server or a set of servers each performing multiple tasks divided between different servers in the embodiment described herein. Similarly, in some embodiments tasks of some of dedicated back-end servers described herein may be divided between different servers of different server groups.

The messaging system200may comprise one or more offline storage servers231. The one or more offline storage servers231may store messaging content for currently-offline messaging endpoints in hold for when the messaging endpoints reconnect.

The messaging system200may comprise one or more sessions servers232. The one or more session servers232may maintain session state of connected messaging endpoints.

The messaging system200may comprise one or more presence servers233. The one or more presence servers233may maintain presence information for the messaging system200. Presence information may correspond to user-specific information indicating whether or not a given user has an online messaging endpoint and is available for chatting, has an online messaging endpoint but is currently away from it, does not have an online messaging endpoint, and any other presence state.

The messaging system200may comprise one or more push storage servers234. The one or more push storage servers234may cache push requests and transmit the push requests to messaging endpoints. Push requests may be used to wake messaging endpoints, to notify messaging endpoints that a messaging update is available, and to otherwise perform server-side-driven interactions with messaging endpoints.

The messaging system200may comprise one or more chat activity monitoring servers235. The one or more chat activity monitoring servers235may monitor the chats of users to determine unauthorized or discouraged behavior by the users of the messaging system200. The one or more chat activity monitoring servers235may work in cooperation with the spam logging servers239and block list servers236, with the one or more chat activity monitoring servers235identifying spam or other discouraged behavior and providing spam information to the spam logging servers239and blocking information, where appropriate to the block list servers236.

The messaging system200may comprise one or more block list servers236. The one or more block list servers236may maintain user-specific block lists, the user-specific incoming-block lists indicating for each user the one or more other users that are forbidden from transmitting messages to that user. Alternatively or additionally, the one or more block list servers236may maintain user-specific outgoing-block lists indicating for each user the one or more other users that that user is forbidden from transmitting messages to. It will be appreciated that incoming-block lists and outgoing-block lists may be stored in combination in, for example, a database, with the incoming-block lists and outgoing-block lists representing different views of a same repository of block information.

The messaging system200may comprise one or more last seen information servers237. The one or more last seen information servers237may receive, store, and maintain information indicating the last seen location, status, messaging endpoint, and other elements of a user's last seen connection to the messaging system200.

The messaging system200may comprise one or more profile photo servers238. The one or more profile photo servers238may store and make available for retrieval profile photos for the plurality of users of the messaging system200.

The messaging system200may comprise one or more spam logging servers239. The one or more spam logging servers239may log known and suspected spam (e.g., unwanted messages, particularly those of a promotional nature). The one or more spam logging servers239may be operative to analyze messages to determine whether they are spam and to perform punitive measures, in some embodiments, against suspected spammers (users that send spam messages).

The messaging system200may comprise one or more statistics servers240. The one or more statistics servers may compile and store statistics information related to the operation of the messaging system200and the behavior of the users of the messaging system200.

The messaging system200may comprise one or more sync servers241. The one or more sync servers241may sync the messaging system240with contact information from a messaging endpoint, such as an address book on a mobile phone, to determine contacts for a user in the messaging system200.

The messaging system200may comprise one or more web servers242. The one or more web servers242may engage in hypertext transport protocol (HTTP) and hypertext transport protocol secure (HTTPS) connections with web browsers. The one or more web servers242may, in some embodiments, host the remote web server350as part of the operation of the messaging web access system100.

The messaging system200may comprise one or more key servers243. The one or more key servers243may host public keys for public/private key encrypted communication.

The messaging system200may comprise one or more group servers244. The one or more group servers244may maintain lists of groups, add users to groups, remove users from groups, and perform the reception, caching, and forwarding of group chat messages.

The messaging system200may comprise one or more multimedia database (MMD) servers245. The MMD servers245may store a database, which may be a distributed database, of media objects known to the messaging system200. In some embodiments, only media objects currently stored or otherwise in-transit within the messaging system200may be tracked by the MMD servers245. In other embodiments, the MMD servers245may maintain a record of media objects that are no longer in-transit, such as may be for tracking popularity or other data-gathering purposes.

The MMD servers245may determine the storage location of media objects when they are to be stored by the messaging system200, such as on multimedia servers246. The MMD servers245may determine the existing storage location of media objects when they are to be transmitted by the messaging system200, such as which of a plurality of multimedia servers236store a particular media object. The MMD servers245may generate the uniform resource locators (URLs) for use by messaging clients to request and retrieve media objects. The MMD servers245may track when a media object has been corrupted or otherwise lost and should be reacquired.

The messaging system200may comprise one or more multimedia servers246. The one or more multimedia servers may store multimedia (e.g., images, video, audio) in transit between messaging endpoints, multimedia cached for offline endpoints, and may perform transcoding of multimedia.

The messaging system200may comprise one or more payment servers247. The one or more payment servers247may process payments from users. The one or more payment servers247may connect to external third-party servers for the performance of payments.

The messaging system200may comprise one or more registration servers248. The one or more registration servers248may register new users of the messaging system200.

The messaging system200may comprise one or more voice relay servers249. The one or more voice relay servers249may relay voice-over-internet-protocol (VoIP) voice communication between messaging endpoints for the performance of VoIP calls.

FIG. 3illustrates an embodiment of a application protocol initiation interaction. The application protocol initiation interaction may correspond to an attempt by a client320to initiate a network connection with a server350using a communications network that includes a proxy390acting as an intermediary between the client320and the server350. The application protocol initiation interaction may generally proceed from the top to the bottom ofFIG. 3as an exchange of messages between the client320and the server350as mediated by the proxy390.

The client320may comprise a web application executing in a web browser on a client device. The web application may be a front end to a server system, such as a messaging system110. The web application may empower using a web system to access the server system via a web browser. The web application may attempt to initiate a full-duplex communications channel with the server system for the performance of the operations of the web application. The web application may use a full-duplex communications protocol that includes an emulation of a HTTP or HTTPS handshake as an element of the protocol, the HTTP or HTTPS emulation used to gain access to server functions via a web server expecting incoming HTTP or HTTPS connection. The HTTP or HTTPS emulation may further empower the web application to traverse firewalls allowing web traffic. The application protocol may comprise the WebSocket protocol, in which the WebSocket handshake resembles an HTTP or HTTPS connection upgrade request.

The client320may transmit an application protocol initiation330to the server350mediated by the proxy390. The application protocol initiation330may comprise at least a portion of a handshake for the application protocol, such as an emulation of a HTTP connection upgrade request. The proxy390may modify the application protocol initiation330to produce the malformed application protocol initiation333. The modification of the application protocol initiation330by the proxy390may be performed by the proxy390in an attempt to improve network performance. For example, if the application protocol emulates the handshake for another protocol, a modification intended to improve the performance of connections using the other protocol and reasonable for use with the other protocol may break the application protocol. Specifically, an HTTP connection upgrade request emulated by the WebSocket protocol may be replaced with a keep-alive request by the proxy390in an attempt to reduce the recreation of HTTP connections by increasing the reuse of HTTP connections in the network. This keep-alive request may be functional when used on an actual HTTP connection, but may produce a malformed application protocol initiation333when used with another protocol, such as the WebSocket protocol. A protocol initiation may be malformed when it fails to abide by the specification for the protocol.

The server350may respond to the malformed application protocol initiation333with an application protocol rejection335because of the malformation of the initiation request. This application protocol rejection335may be transmitted via the proxy390back to the client320.

The client320may react to an application protocol rejection335with an attempt to initiation a web protocol transaction with the server390using a web protocol initiation340. In some embodiments, the web protocol transaction may be used to detect if the server390is available on the network accessible to the client320, to determine if the server390is generally reachable by and responsive to the client320. In some embodiments, the web protocol initiation340may comprise an actual HTTP request, and may therefore be mediated without malformation—though possibly still with modification—by the proxy390. As such, a web connection created by the web protocol initiation340may be available for the communication of information between the client320and server390. However, the web connection may be inappropriate for some desired activities of the client320, such as the performed of general full-duplex communication, such as may be used in using the client320as a frontend to a messaging system110.

Where a web connection can be successfully created, as in the illustrated embodiment, the client320may be configured to re-try an initiation of the application protocol. The web application may be unaware that the initiation of the application protocol is unavailable despite any confirmed network connectivity due to the interference of the proxy390. The error reporting features of the application protocol or a particular implementation of the application protocol may be insufficiently rich to inform the client320of the interference by the proxy390. Therefore, the server390may be configured to use the web connection to communicate to the client320information regarding the failure of the application protocol initiation330.

However, the communication of the problem and information regarding its possible solution may be furthered by including and analyzing information received as part of the application protocol initiation330. However, the server350might not be operative to identify a particular malformed application protocol initiation333for the client320from which it received the web protocol initiation340. As such, the server350may store a cookie310(e.g., an HTTP cookie, a web cookie, an Internet cookie, a browser cookie) identifying the client320to the server350on the client320in a client cookie specification345sent as a response to the web protocol initiation340. The cookie310may record a client identifier unique to the client320within an identifier namespace for the server390and/or messaging system110.

With the web protocol connection having been successfully performed, the client320may transmit a second application protocol initiation360to the server350mediated by the proxy390. The second application protocol initiation360may include the cookie310set by the server350. The proxy390may modify the second application protocol initiation360into a second malformed application protocol initiation363, the second malformed application protocol initiation363still comprising the cookie310.

The server350may respond to the second malformed application protocol initiation363with a second application protocol rejection365because of the malformation of the initiation request. This second application protocol rejection365may similarly be transmitted via the proxy390back to the client320. Further, the server350may detect the cookie310and therefore log information for the malformed application protocol initiation333in association with the client identifier included within the cookie310. This information may be logged in order to aid the user of the client320in understanding and responding to the malformation caused by the proxy390interfering with communication between the client320and the server350.

The client320may again react to an application protocol rejection with an attempt to initiation a web protocol transaction with the server390using a second web protocol initiation370. The second web protocol initiation370may also include the cookie310set by the server350. The second web protocol initiation370may be mediated without malformation—though possibly again still with modification—by the proxy390. As such, a web connection created by the second web protocol initiation370may again be available for the communication of information between the client320and server390.

Because the web connection is available for communication between the client320and the server350, and because the cookie310can be used to identify the client320, the server350may response to the second web protocol initiation370with a malformed network connection message375communication information regarding the failure of the second application protocol initiation360for which it has information stored. The malformed network connection message375may include a record of the second malformed application protocol initiation363. The malformed network connection message375may include information explaining the network connection problem and the manner in which a proxy may interfere with network connection. The malformed network connection message375may include instructions for reconfiguring a proxy so as to not interfere with the application protocol.

It will be appreciated that in some embodiments, a cookie310for the messaging system110—or for an encompassing system, such as a social-networking system—may already be present on the client320. In these embodiments, an initial application protocol initiation may be received including the cookie310. In these embodiments, the exchanges330,333,335,340, and345may be excluded, with the caching of malformation information and providing of the information to the client320by the server390being performed immediately in response to the initial application protocol initiation. In these embodiments, the operations of the client320and the server390may generally correspond to the second-stage exchanges described herein, the exchanges360,363,365,370, and375, which may be performed once a cookie310is present in the application protocol initiation and web protocol initiation by the client320.

FIG. 4Aillustrates an embodiment of a application protocol initiation.

A server350may comprise a plurality of components. The plurality of components may comprise software components comprising portions of a software application. The operations of the plurality of components may include software operations and hardware operations. The server350may comprise additional or alternative components for the performance of the operations of the proxy interference detection system100. The server350may comprise a first network protocol component440, second network protocol component450, and client record component460. The first network protocol component440may be generally arranged to engage in network communication interactions based on a first network protocol, such as a full-duplex communication protocol. The second network protocol component450may be generally arranged to engage in network communication interactions based on a second network protocol, such as the HTTP protocol, the second network protocol different from the first network protocol. The client record component460may be generally arranged to store records of malformed network connections in association with client identifiers for clients. The client record component460may comprise a client repository component470, the client repository component generally arranged to store records related to the operation of the server350and specifically records comprising information regarding malformed protocol requests.

The first network protocol component440may be generally arranged to receive a network connection initiation attempt as an application protocol initiation330from a client320. The network connection initiation attempt may be based on a first network communication protocol, using the first network communication protocol to define the interactions of the network connection initiation attempt. The first network communication protocol may comprise a full-duplex communication protocol. The first network communication protocol may include an emulation of a hypertext transport protocol handshake so as to allow for the bridging of a network firewall.

The first network protocol component440may determine that the network connection initiation attempt is malformed. The first network connection initiation attempt may have been malformed based on a header modification made by a proxy390retransmitting the network connection initiation attempt. The first network protocol component440may determine that the network connection initiation attempt is malformed by determining that the header for an application protocol initiation330does not match the network protocol.

The first network protocol component440may reject the first network connection initiation attempt based on the first network connection initiation attempt being malformed. The first network protocol component440may determine that the network connection initiation attempt lacks a cookie and that, therefore, the client320is not available to be identified by the server350. As such, the first network protocol component440may log information related to the malformed network connection initiation attempt but not in a form available for retrieval for reporting to the client320.

In some embodiments, identifiers other than a cookie may be used. For example, a client320may be identifier based on a listed user agent, an internet protocol (IP) address, or additional or alternative headers. In general, any known technique for identifying a client320based on a web protocol initiation may be used to identify the client320for the purposes of communicating malformed network connection information to the client320.

FIG. 4Billustrates an embodiment of a web protocol initiation.

The second network protocol component450may be generally arranged to receive another network connection initiation attempt from the client320as a web protocol initiation340. This network connection initiation attempt may be based on a second network communication protocol different from the first network communication protocol, using the second network communication protocol to define the interactions of the network connection initiation attempt. The second network communication protocol may comprise HTTP. The client320may perform this network connection initiation attempt automatically in response to the server350rejecting the previous network connection initiation attempt via the application protocol rejection335.

The second network protocol component450may determine that the network connection initiation attempt does not include a cookie identifying the client320. As a result, the second network protocol component450may set a cookie310on the client320in response to the network connection initiation attempt via a client cookie specification345network transaction. The cookie310may comprise a client identifier for the client320.

FIG. 5Aillustrates an embodiment of a second application protocol initiation.

The first network protocol component440may receive another network connection initiation attempt from the client320. This network connection initiation attempt may be based on the first network communication protocol. The first network protocol component440may determine that the first network connection initiation attempt is malformed. The first network protocol component440may determine that the network connection initiation attempt is malformed by determining that the header for an application protocol initiation330does not match the network protocol.

The first network protocol component440may determine that the network connection initiation attempt includes a cookie310. The first network protocol component440may extract a cookie310from the network connection initiation attempt. The cookie310may comprise a client identifier identifying the client320. The first network protocol component440may reject the network connection initiation attempt based on the network connection initiation attempt being malformed.

The client record component460may be generally arranged to record a malformed network connection initiation record580in response to determining that a network connection initiation attempt is malformed. The malformed network connection initiation record580may be associated with the client based on the client identifier. The client record repository470may include a plurality of malformed network connection initiation records indexed by their associated client identifiers.

A network connection initiation attempt may comprise one or more network headers. In some instances, these one or more network headers may comprise headers added by a proxy390during the retransmission, this retransmission possibly including modification, of an application protocol initiation. In some instances, the one or more network headers may comprise protocol headers that may have been sent by the client320and may have been modified by the proxy390. The client record component460may record the one or more network headers in the malformed network connection initiation record580.

FIG. 5Billustrates an embodiment of a second web protocol initiation.

The second network protocol component450may receive another network connection initiation attempt from the client320, this network connection initiation attempt based on the second network communication protocol. The client320may perform this network connection initiation attempt automatically in response to the server350rejecting the network connection initiation attempt that used the first network communication protocol.

The second network protocol component450may determine that this network connection initiation attempt includes a cookie310and extract the cookie310from the network connection initiation attempt. This cookie310may comprise the client identifier.

The client record component460may retrieve the malformed network connection initiation record580based on the client identifier. The second network protocol component450may configure a malformed network connection message375based on the malformed network connection initiation record580. The second network protocol component450may transmit the malformed network connection message375to the client320. Where the malformed network connection initiation record580includes one or more network headers, the second network protocol component450may transmit the one or more network headers to the client as part of the malformed network connection message375.

The client record component460may identify a proxy server type based on the network connection initiation attempt and specifically based on the malformed network connection initiation record580. The client record component460may be configured with one or more patterns corresponding to header information for malformed network connection initiations or, generally, header modifications made by various proxy server types. The client record component460may match the malformed network connection initiation record580against the one or more patterns to determine a proxy server type. A proxy server type may one or more of a proxy manufacturer, proxy distributer, proxy model, or other proxy identifiers.

The client record component460may retrieve proxy server reconfiguration information based on the proxy server type. The malformed network connection message375may include this proxy server reconfiguration information. Proxy server reconfiguration information may comprise textual or other information made available to a user to inform the user or, for instance and without limitation, a network administrator associated with the user of how to reconfigure a proxy to allow for the operation of a web application using the first network communication protocol.

The malformed network connection message375may instruct the client320to refrain from further network connection attempts. The malformed network connection message375may comprise an instruction, flag, or other signifier communicating that the failure to establish a network connection using the application protocol is the result of a proxy390incorrectly modifying application protocol initiation attempts. The client320may generally be configured to automatically retry application protocol initiation attempts when a subsequent web protocol initiation attempt is successful. The client320may be configured to refrain from automatically retrying application protocol initiation attempts when a malformed network connection message375is received.

In some embodiments, the second network protocol component450may clear the cookie310from the client320based on transmitting the malformed network connection message375to the client320. Where the cookie310was placed on the client in response to a malformed application protocol initiation, the cookie310may be removed once the information regarding the malformed application protocol initiation is communicated to the client310. This may serve to further the privacy of the client320and its user by removing an identifying client identifier from the client320once its has been used.

FIG. 6illustrates an embodiment of a first branching logic flow600and a second branching logic flow650for the system ofFIG. 1. The logic flows600,650may be representative of some or all of the operations executed by one or more embodiments described herein.

The logic flow600may correspond to a logic flow initiated in response to an incoming application network connection. The logic flow600may correspond to some or all of the logic flow for a first network protocol component440.

The logic flow600may receive an incoming application network connection at block610. The logic flow600may then proceed to block620.

The logic flow600may determine whether the incoming application network connection is malformed at block620. If the incoming application network connection is malformed, the logic flow600may proceed to block630. If the incoming application network connection is not malformed, the logic flow600may proceed to block625.

The logic flow600may conduct an application session at block625. As the incoming application network connection was not malformed, the logic flow600may conduct one or more application transactions in service of the operations of the server system, such as may comprise the performance of the operations of a messaging system110.

The logic flow600may determine whether the application network connection was received in association with a cookie310. If the application network connection was received in association with a cookie310, the logic flow600may proceed to block640. If the application network connection was not received in association with a cookie310, the logic flow600may proceed to block645.

The logic flow600may create a malformed network connection initiation record580at block640. Because the cookie310is available, the logic flow600can create a malformed network connection initiation record580that can be associated with the client320based on the client identifier stored in the cookie310. This then sets the proxy interference detection system100in a position to be able to provide the information from the malformed network connection initiation record580to the client320during a subsequent web connection. The logic flow600may then proceed to block645.

The logic flow600may terminate the connection at block645. With the connection being malformed, and the logic flow600having created the malformed network connection initiation record580where the cookie310is available, the productive actions of the logic flow600have concluded.

The logic flow650may correspond to a logic flow initiated in response to an incoming web connection. The logic flow650may correspond to some or all of the logic flow for a second network protocol component450.

The logic flow650may receive an incoming web connection at block660. The logic flow650may then proceed to block665.

The logic flow650may determine whether the web connection has an associated record at block665. The logic flow650may determine whether the web connection included a cookie310. Where a cookie310is present, the logic flow650may check whether a malformed network connection initiation record580associated with a client identifier stored in the cookie310is available. If the record is available, the logic flow650may proceed to block680. If the record is not available, the logic flow650may proceed to block670.

The logic flow650may set a cookie310on the client320at block670. The cookie310may comprise a client identifier identifying the client320. The logic flow650may then proceed to block675.

The logic flow650may retrieve the malformed network connection initiation record580at block680. The logic flow650may then proceed to block685.

The logic flow650may transmit the malformed network connection initiation record580to the client320at block685. The logic flow650may then proceed to block690.

The logic flow650may clear the cookie310from the client320at block690. However, in some embodiments, such as where the cookie310is a preexisting cookie used for purposes other than the identification of a client associated with a malformed network connection, the cookie310may not be cleared from the client320. The logic flow may then proceed to block675.

The logic flow650may terminate the connection at block675. Either the malformed network connection initiation record580has been broadcast to the client320to inform the client320of the source of their inability to productively connect to the server320, or the cookie310has been set on the client to prepare the proxy interference detection system100for the recording of the malformed network connection initiation record580and eventual transmission to the client320. As such, the productive actions of the logic flow650have concluded.

FIG. 7illustrates one embodiment of a logic flow700. The logic flow700may be representative of some or all of the operations executed by one or more embodiments described herein.

In the illustrated embodiment shown inFIG. 7, the logic flow700may receive a first network connection initiation attempt from a client at a server, the first network connection initiation attempt based on a first network communication protocol at block702.

The logic flow700may determine that the first network connection initiation attempt is malformed at block704.

The logic flow700may extract a cookie from the first network connection initiation attempt, the cookie comprising a client identifier at block706.

The logic flow700may record a malformed network connection initiation record in response to determining that the first network connection initiation attempt is malformed, the malformed network connection initiation record associated with the client based on the client identifier at block708.

The logic flow700may reject the first network connection initiation attempt based on the first network connection initiation attempt being malformed at block710.

The logic flow700may receive a second network connection initiation attempt from the client at the server, the second network connection initiation attempt based on a second network communication protocol at block712.

The logic flow700may extract the cookie from the second network connection initiation attempt, the cookie comprising the client identifier at block714.

The logic flow700may retrieve the malformed network connection initiation record based on the client identifier at block716.

The logic flow700may transmit a malformed network connection message to the client based on the malformed network connection initiation record at block718.

The embodiments are not limited to this example.

FIG. 8illustrates a block diagram of a centralized system800. The centralized system800may implement some or all of the structure and/or operations for the proxy interference detection system100in a single computing entity, such as entirely within a single centralized server device820.

The centralized server device820may comprise any electronic device capable of receiving, processing, and sending information for the proxy interference detection system100. Examples of an electronic device may include without limitation an ultra-mobile device, a mobile device, a personal digital assistant (PDA), a mobile computing device, a smart phone, a telephone, a digital telephone, a cellular telephone, ebook readers, a handset, a one-way pager, a two-way pager, a messaging device, a computer, a personal computer (PC), a desktop computer, a laptop computer, a notebook computer, a netbook computer, a handheld computer, a tablet computer, a server, a server array or server farm, a web server, a network server, an Internet server, a work station, a mini-computer, a main frame computer, a supercomputer, a network appliance, a web appliance, a distributed computing system, multiprocessor systems, processor-based systems, consumer electronics, programmable consumer electronics, game devices, television, digital television, set top box, wireless access point, base station, subscriber station, mobile subscriber center, radio network controller, router, hub, gateway, bridge, switch, machine, or combination thereof. The embodiments are not limited in this context.

The centralized server device820may execute communications operations or logic for the proxy interference detection system100using communications component840. The communications component840may implement any well-known communications techniques and protocols, such as techniques suitable for use with packet-switched networks (e.g., public networks such as the Internet, private networks such as an enterprise intranet, and so forth), circuit-switched networks (e.g., the public switched telephone network), or a combination of packet-switched networks and circuit-switched networks (with suitable gateways and translators). The communications component840may include various types of standard communication elements, such as one or more communications interfaces, network interfaces, network interface cards (NIC), radios, wireless transmitters/receivers (transceivers), wired and/or wireless communication media, physical connectors, and so forth. By way of example, and not limitation, communication media812includes wired communications media and wireless communications media. Examples of wired communications media may include a wire, cable, metal leads, printed circuit boards (PCB), backplanes, switch fabrics, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, a propagated signal, and so forth. Examples of wireless communications media may include acoustic, radio-frequency (RF) spectrum, infrared and other wireless media.

The centralized server device820may execute the server350, including the first network protocol component440, second network protocol component450, and client record component460. The centralized server device820may communicate with other devices over a communications media812using communications signals814via the communications component840. The centralized server device820may communicate with client devices120, such as may be mediated by proxies190, with the client devices120possibly including an execution of the client320.

FIG. 9illustrates a block diagram of a distributed system900. The distributed system900may distribute portions of the structure and/or operations for the proxy interference detection system100across multiple computing entities. Examples of distributed system900may include without limitation a client-server architecture, a 3-tier architecture, an N-tier architecture, a tightly-coupled or clustered architecture, a peer-to-peer architecture, a master-slave architecture, a shared database architecture, and other types of distributed systems. The embodiments are not limited in this context.

The distributed system900may comprise a plurality of server devices150. In general, the server devices150may be the same or similar to the centralized server device820as described with reference toFIG. 8. For instance, the server devices150may each comprise a processing component930and a communications component940which are the same or similar to the processing component830and the communications component840, respectively, as described with reference toFIG. 8. In another example, the server devices150may communicate over a communications media912using communications signals914via the communications components940.

The server devices150may comprise or employ one or more programs that operate to perform various methodologies in accordance with the described embodiments. In one embodiment, for example, the server devices150may collectively the server350as a distributed server350. The server devices150may each execute one or more server applications that collectively comprise a distributed server350. The server devices150may communicate with the client devices120, such as may include an execution of the client320, as intermediated by one or more proxies190, such as may include the proxy390. In some embodiments, the client record repository470may be an external device to the server devices150, such as may be stored in a single or distributed storage device or storage system.

FIG. 10illustrates an embodiment of an exemplary computing architecture1000suitable for implementing various embodiments as previously described. In one embodiment, the computing architecture1000may comprise or be implemented as part of an electronic device. Examples of an electronic device may include those described with reference toFIG. 8, 9, among others. The embodiments are not limited in this context.

The system bus1008provides an interface for system components including, but not limited to, the system memory1006to the processing unit1004. The system bus1008can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Interface adapters may connect to the system bus1008via a slot architecture. Example slot architectures may include without limitation Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), and the like.

The computer1002may include various types of computer-readable storage media in the form of one or more lower speed memory units, including an internal (or external) hard disk drive (HDD)1014, a magnetic floppy disk drive (FDD)1016to read from or write to a removable magnetic disk1018, and an optical disk drive1020to read from or write to a removable optical disk1022(e.g., a CD-ROM or DVD). The HDD1014, FDD1016and optical disk drive1020can be connected to the system bus1008by a HDD interface1024, an FDD interface1026and an optical drive interface1028, respectively. The HDD interface1024for external drive implementations can include at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies.

The drives and associated computer-readable media provide volatile and/or nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For example, a number of program modules can be stored in the drives and memory units1010,1012, including an operating system1030, one or more application programs1032, other program modules1034, and program data1036. In one embodiment, the one or more application programs1032, other program modules1034, and program data1036can include, for example, the various applications and/or components of the proxy interference detection system100.

A monitor1044or other type of display device is also connected to the system bus1008via an interface, such as a video adaptor1046. The monitor1044may be internal or external to the computer1002. In addition to the monitor1044, a computer typically includes other peripheral output devices, such as speakers, printers, and so forth.

The computer1002may operate in a networked environment using logical connections via wire and/or wireless communications to one or more remote computers, such as a remote computer1048. The remote computer1048can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer1002, although, for purposes of brevity, only a memory/storage device1050is illustrated. The logical connections depicted include wire/wireless connectivity to a local area network (LAN)1052and/or larger networks, for example, a wide area network (WAN)1054. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, for example, the Internet.

When used in a LAN networking environment, the computer1002is connected to the LAN1052through a wire and/or wireless communication network interface or adaptor1056. The adaptor1056can facilitate wire and/or wireless communications to the LAN1052, which may also include a wireless access point disposed thereon for communicating with the wireless functionality of the adaptor1056.

When used in a WAN networking environment, the computer1002can include a modem1058, or is connected to a communications server on the WAN1054, or has other means for establishing communications over the WAN1054, such as by way of the Internet. The modem1058, which can be internal or external and a wire and/or wireless device, connects to the system bus1008via the input device interface1042. In a networked environment, program modules depicted relative to the computer1002, or portions thereof, can be stored in the remote memory/storage device1050. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.

FIG. 11illustrates a block diagram of an exemplary communications architecture1100suitable for implementing various embodiments as previously described. The communications architecture1100includes various common communications elements, such as a transmitter, receiver, transceiver, radio, network interface, baseband processor, antenna, amplifiers, filters, power supplies, and so forth. The embodiments, however, are not limited to implementation by the communications architecture1100.

As shown inFIG. 11, the communications architecture1100comprises includes one or more clients1102and servers1104. The clients1102may implement the client devices120. The servers1104may implement the server devices150,820. The clients1102and the servers1104are operatively connected to one or more respective client data stores1108and server data stores1110that can be employed to store information local to the respective clients1102and servers1104, such as cookies and/or associated contextual information.

The clients1102and the servers1104may communicate information between each other using a communication framework1106. The communications framework1106may implement any well-known communications techniques and protocols. The communications framework1106may be implemented as a packet-switched network (e.g., public networks such as the Internet, private networks such as an enterprise intranet, and so forth), a circuit-switched network (e.g., the public switched telephone network), or a combination of a packet-switched network and a circuit-switched network (with suitable gateways and translators).

A computer-implemented method may comprise receiving a first network connection initiation attempt from a client at a server, the first network connection initiation attempt based on a first network communication protocol; determining that the first network connection initiation attempt is malformed; extracting a cookie from the first network connection initiation attempt, the cookie comprising a client identifier; recording a malformed network connection initiation record in response to determining that the first network connection initiation attempt is malformed, the malformed network connection initiation record associated with the client based on the client identifier; rejecting the first network connection initiation attempt based on the first network connection initiation attempt being malformed; receiving a second network connection initiation attempt from the client at the server, the second network connection initiation attempt based on a second network communication protocol; extracting the cookie from the second network connection initiation attempt, the cookie comprising the client identifier; retrieving the malformed network connection initiation record based on the client identifier; and transmitting a malformed network connection message to the client based on the malformed network connection initiation record.

A computer-implemented method may further comprise the first network communication protocol comprising a full-duplex communication protocol comprising an emulation of a hypertext transport protocol handshake, the second network communication protocol comprising a hypertext transport protocol.

A computer-implemented method may further comprise receiving a previous network connection initiation attempt from the client at the server, the previous network connection initiation attempt based on the second network communication protocol; and setting the cookie on the client in response to the previous network connection initiation attempt.

A computer-implemented method may further comprise the previous network connection initiation attempt performed automatically by the client in response to the server rejecting a previous first network connection initiation attempt, the previous network connection initiation attempt based on the first network communication protocol.

A computer-implemented method may further comprise the second network connection initiation attempt performed automatically by the client in response to the server rejecting the first network connection initiation attempt.

A computer-implemented method may further comprise the first network connection initiation attempt malformed based on a header modification made by a proxy retransmitting the first network connection initiation attempt.

A computer-implemented method may further comprise identifying a proxy server type based on the first network connection initiation attempt; retrieving proxy server reconfiguration information based on the proxy server type, the malformed network connection message comprising the proxy server reconfiguration information.

A computer-implemented method may further comprise the first network connection initiation attempt comprising one or more network headers, further comprising: recording the one or more network headers in the malformed network connection initiation record; and transmitting the one or more network headers to the client as part of the malformed network connection message.

A computer-implemented method may further comprise the client comprising a web application executing within a web browser.

A computer-implemented method may further comprise the malformed network connection message instructing the web application to refrain from network connection attempts.

A computer-implemented method may further comprise clearing the cookie from the client based on transmitting the malformed network connection message to the client.

An apparatus may comprise a processor circuit on a server device; a network interface controller on the server device; a first network protocol component operative on the processor circuit to receive a first network connection initiation attempt from a client via the network interface controller at the server device, the first network connection initiation attempt based on a first network communication protocol; determine that the first network connection initiation attempt is malformed; extract a cookie from the first network connection initiation attempt, the cookie comprising a client identifier; and reject the first network connection initiation attempt based on the first network connection initiation attempt being malformed; a client record component operative on the processor circuit to record a malformed network connection initiation record in response to determining that the first network connection initiation attempt is malformed, the malformed network connection initiation record associated with the client based on the client identifier; and retrieve the malformed network connection initiation record based on the client identifier; and a second network protocol component operative on the processor circuit to receive a second network connection initiation attempt from the client at the server, the second network connection initiation attempt based on a second network communication protocol; extract the cookie from the second network connection initiation attempt, the cookie comprising the client identifier; and transmit a malformed network connection message to the client based on the malformed network connection initiation record. The apparatus may be operative to implement any of the computer-implemented methods described herein.

At least one computer-readable storage medium may comprise instructions that, when executed, cause a system to perform any of the computer-implemented methods described herein.