How does a request reach the correct server? - networking

When I enter 66.211.160.88 into the web browser, how does my computer manage to find the correct server behind that IP? The request is sent to the ISP, but now what? How does it know exactly which way to take?

a video that illustrate your question can be viewed at
http://www.youtube.com/watch?v=XP61HtbGPbA,
for a bit more complete simple explanaition you can refer to:
http://computer.howstuffworks.com/internet/basics/internet-infrastructure.htm
for a simple and yet good overview of the way things go.

Related

Can we monitor windows network information in realtime using minifilters?

I am trying to write a minifilter that more or less captures everything that happens in the kernel and was wondering if I could also capture "URLs"/network information; I stumbled upon windivert which seems to be using a .sys driver and also another thread which says we cannot get URLs in driver mode which leaves me a bit confused. If it is true then how does windivert do it?
I understand there is something called network redirect under minifilters on learn.microsoft.com which uses a dll and .sys file (same as windivert), but I could not find any resources that can help make me one.
Is there a better way to capture all visited URLs in real time?
Thanks in advance for any help or directions.
You're looking for Windows Filtering Platform and Filtering Platform Callout Drivers, which WinDivert is utilizing. This gives you the data that goes out over the wire, so for plain old HTTP over port 80 you can parse the requests to obtain the URL. This won't work for HTTPS since you're getting encrypted data over the wire; you'd have to implement some kind of MITM interception technique to handle that.

Suggestions needed to build my proxy like application

So I'm thinking of building an application that acts like a VPN of sorts. So, the idea is my application should collect all traffic going from the device it is running on and handles them on it's own instead of forwarding them into the internet. My application will forward all this traffic/packets to an external server that performs whatever the original request was intended on. The same should apply in reverse also.
This thread Routing all packets through my program? gave me a few places to start with...
So far my idea is to use a packet capturing library and capture all packets and pass them on to another section of my program where another header is added on top of the existing packets, then sent to my external server. To server parses the header and determines the destination address and action and gets a response. This response is then wrapped with another header and is sent to my application. With help of netfilter PREROUTING hook I can forward the packets to the required application...
So this is as far as I thought of this. But you see I'm relatively new to network concepts and very much interested to move forward. So any suggestions on how-to's, or this might not work instead try this, is welcome. Even if my entire idea is faulty, please convey it. I'm not expecting you to explain things entirely, just point me some stuff that could be useful
And lastly note that the result I'm intending to get out of this is to demonstrate how I can unblock content within an organizational network. So most administrators block based on domains and stuff. So most one won't block connections to servers. But worry not I'm seriously not going to use this. This is just to improve my knowledge and out of my own interest...
So any help is appreciated. Thanks in advance...

How would I go about making my own Application protocol similar to http/https?

I don't know where to start especially with what programming language and in what kind of environment. I know I would need 2 different types, a server which receives requests and sends the requested material back and a client which sends requests and views requested material but not sure where and how to start.
Thank you
What is the motivation for this? HTTP/HTTPS are very tried, true and secure protocols that every (almost every) web application communicates via.
I cannot fathom a possible reason to create your own, especially if it seems like you are not quite experienced enough to do so given the very generic question.
My answer would be, don't do this, use HTTP/HTTPs or WebSockets, whatever suits your applications requirements.

How to see what data a windows application send through my network?

I want to see what a application send to network and if is possible to edit or stop them. thanks ;)
I would definitely recommend WireShark. But be careful, if this is a corporate network you will need permission. Sniffing traffic can sometimes be cause for instant termination, so get it in writing!
Changing and editing traffic are much more complex tasks. That answer really depends on what you want to do.

Connecting to VPN through a custom client

OK, here goes:
I have a CentOS server set up to accept PPTP connections and tunnel the users traffic through my server.
I am sharing this with my friends and family, and everytime they want to connect they have to go into control panel, and connect to the network manually. To set up the network, they go through a wizzard that Windows has to set up a new VPN connection for them, and they put in the IP address, username and password.
I wanted to make a really simple client for them to use. When it's first installed and they click "Connect", the program must make the new network (like they were going through the wizard), and every time after that just swap over to use the VPN network. If they click "Disconnect", it will go back to using their regular LAN network.
I would ideally like to code this in .NET, as that is where I have a lot of experience, but I have no idea where to start.
Could anyone point me in the right direction? Maybe some code samples?
Help would be greatly appreciated, thanks. =]
Ah, much easier to understand - thanks for the clarification!
At the risk of sounding like I'm an OpenVPN fanatic, look at openvpn, particularly the Access Server here. I think you'll find it does exactly what you need.
OpenVPN is open source, so it's 100% code samples and as customizable as you like. (Be careful what you ask for! :-) )
Good luck!

Resources