How do devices make themselves available for the outside world? - networking

this might be a stupid question, but I couldn't find anything on the web.
I am wondering, how certain IoT devices sometimes make themselves available to the outside world, without me having to open any ports etc. on my Router.
For example: I connect my Phillips Hue Bridge to my Router and somehow if I activate it in the app, I can control it from anywhere.
How does this work? I am trying to build something similar, so thats why I'm asking.
If you dont understand what I mean let me know, maybe I can describe it a little bit better then.
Thanks in advance!

Related

How to test/reproduce bad network behavior?

On Windows, I've used NEWT in the past, but it's difficult to use, not current (but I can find old copies on non-MS sites), and difficult though possible to degrade just the app's view of the network without messing up everything else on the machine like the VPN connection and NAS volumes.
On Mac, the Network Link Conditioner that is available with Xcode is far too limited and in particular doesn't model bursts, which is my current immediate interest.
I'm also interested in Windows programs running in a VMware VM, and that's already going through an emulated network connector. I wonder if that can be made to do the traffic shaping?
In summary, can someone suggest a tool that I ought to be using for this?
I guess http://henrydu.com/blog/how-to/simulate-a-slow-link-by-linux-bridge-123.html should work on your mac. It uses traffic control with ifconfig, something you might want to google for.

Testing a software bridge application using virtualization

Good evening,
I am stuck at a certain point of development.. As a part of a Routing/Switching course, we have to program a two port software switch/bridge.. But the main problem for me is testing it.. I dont have multiple network cards in my laptop, and i have only one computer. i need to simulate a topology like this:
However, i dont know how to do it.. i have a Windows XP installed as two Virtualbox machines.. But i dont know how to set it up to make it work.. Neither network option was sufficient(NAT, bridge, host only...)
Can you please help me?
I thank you in advance for all your advice.
Robert
Why don't you split your single network port to multiple subinterfaces like eth0:1 eth0:2 etc. You can run your switching program on these subinterfaces. You can work on the subinterfaces the same way you work with regular interfaces, though these subinterfaces are bydefault attached to the parent interface.

How can I get Cimplicity Plant Edition to start up a project faster?

Using Cimplicity Plant Edition we noticed that some projects seem to take an eternity loading. In particular the process seems to hang during the "ROUTING" phase.
Finally found a setting that really helped speed this up. If you have multiple network interfaces, it appears that Cimplicity takes longer to get through the ROUTING phase. To help it favor the network interface to your devices, go into the Advanced TCP/IP settings for each one and change the "Interface metric" numbers.
This link describes what the Interface Metric settings are for: http://www.windowsreference.com/windows-2000/change-the-interface-metric-on-a-network-adapter/
but simply setting these differently on each interface sped things up a lot for us. Hope that helps anyone else out there who is frustrated.

3d engine with telnet access

Does anyone know of a open source 3d engine which can be operated via telnet?
What I'm looking for is scripting via a socket connection. To allow for world creation and/or camera movement.
Does anybody know of any that has this built in or very, very easy to add as a plugin or script?
The platform is not crucial.
Doesn't look like it. I'll just do it myself.
You can script Blender using Python; probably this allows to open a listening socket connection, too. It also has a 'game engine' mode just for rapid prototyping.
It shouldn't take you more than 10 minutes to add this to an engine, so it really doesn't matter which one you go for.

Hardware/Software inventory open source projects

I would like to develop a Network Inventory application that works on any operating system.
Reports on every possible resource attacehd to a network.
Reports all pertinent details of hardware and software.
Thats (and i hate to use the phrase) my "End Game".
However I am running before i can crawl here.
I have no experience of this type of development, e.g. discovering a computers hardware and software settings.
I've spent almost two weeks googling and come up short! :-(.
So I am turning to you to ask these questions:-
My first step is to find an existing open source project i can incorporate into my own code that extracts the fine grained details i am after, e.g. EVERYTHING there is to know about the hardaware and software on a single machine.
Does this project exist? or do i have to develop that first?
Have i got to write all this in C?
I am guessing getting this information about a computer is going to be easier than for printers, scanners, routers etc... e.g. everything else you would find attached to a network.
Once i have access to a single computers details i then need to investigate how i can traverse an entire newtork of printers, scanners, routers, load balancers, switches, firewalls, workstations, servers, storeage devices, laptops, monitors, the list goes on and on
One problem i have is i dont have a 1000 machine newtork to play on!
Is there any such resource available on theinternet? (is that a silly question?)
Anywho, if you dont ask you wont find out!
One aspect iam really looking forward to finding out how to travers the entire network,
should i be using TCP/IP for this?
Whats a good site, blog, usergorup, book for TCP/IP development?
How do i go about getting through firewalls?
How many questions can i ask in one go? :-)
My previous question on this topic ended up with PYTHON being championed as the language/script to go with to develop this application in.
Having looked at a few PYTHON examples they all seemed to be related to WINDOWS networks
and interrogating Windows Management Instrumentation (WMI). I had the feeling you cant rely on whats in WMI, and even if you can that s no good for UNIX netwrks.
Surely there exist common code for extracting hardware and software details from a computer? Why cant i find it on the internet?
Pease help?
Theres no prizes though :-(
Thanks in advance
I would like to appologise if i have broken forum rules or not tried hard enough on my own before asking for assistance.
I just would like to start moving forward with this as its one of the best projects i have been involved with.
I am inspired by the many differnt number of challenges involved and that if i manage to produce a useful application at the end of it it would hopefully be extremely helpful to many people.
That sit
Thanks in advance
DD
as a software vendor of a discovery solution, I can just say: Respect, that you want to start a new one :-). Just in case you are interested in what it could look like: http://www.jdisc.com
Now to some of our experience:
Programming Language:
I wouldn't write it in C. Use Java or .NET. Those languages have great advantages when it comes to tracking down errors or problems. For instance, in Java (and I guess also in .NET), you can see the stack trace when something is failing. For some pieces of code (e.g. WMI access), you might need to use C++ or C (e.g. access to native APIs from Microsoft). Use a native interface or a COM bridge from Java. In .NET, it should even be easier to access the Windows APIs).
Devices:
well, network printers, router, and switches are actually easier to discover. They usually expose their information via SNMP. SNMP is pretty easy to use and pretty robust. Getting information from Windows (or even Unix) systems is a bit trickier. Protocols can be blocked, misconfigured, messed up... We had cases, where WMI was simply hanging when requesting data from a remote device.
Test Devices:
Since we are also a smaller company, we also do not have 1000 different devices to test with. But, there are some things that might help:
a) For SNMP devices use a SNMP simulator. We use MIMIC 9.0 from Gambit Solutions and we are pretty happy with it. You can import SNMP walks from network devices and simulate the device as if it would be in your network.
b) Secondly, use virtualization whenever possible. With VMware, you can install Windows, Linux, or even Solaris. We also use a project called GNS3 to emulate Cisco Routers, Firewalls or Juniper routers.
c)You can test the rest of the devices only, if you have a customer that helps you with testing and implementing new devices.
This are just some ideas to start with. But I have to tell you, that it is not trivial and it takes a lot of time....
Hope that you got some ideas to start with...
I don't know that it's open source, but we use Spiceworks (http://www.spiceworks.com) here as an IT management platform. You may get some use out of exploring that.

Resources