I would like to do it with the Reliability of a TCP Unicast.
I have used UPnP based Multicast (M-Search) but many devices filter out Multicast messages so I end up losing them.
Also, how does Bonjour compare to UPnP?
For the second question
: In aspect of the functionality and reliability, uPnP and Bonjour are very similiar. The main difference of them is how prescriptive is. uPnP is more prescriptive.
Related
As I understand it TCP is required for congestion control and error recovery or reliable delivery of information from one node to another and its not the fastest of protocols for delivering information.
Some routing protocols such as EIGRP and OSPF ride directly on top of IP. Even ICMP rides directly over IP.
Why is UDP even required at all? Is it only required so that developers/programmers can identify what application the inbound packet should be sent to based on the destination port number contained within the packet?
If that is the case then how is information gathered from protocols that ride directly on top of IP sent to the appropriate process when there is no port number information present?
Why are voice and video sent over UDP? Why not directly over IP?
(Note that I do understand thoroughly the use case for TCP. I am not asking why use UDP over TCP or vice versa. I am asking why use UDP at all and how can some protocols use directly the IP layer. Whats the added advantage or purpose of UDP over IP?)
Your question makes more sense in terms of why is UDP useful (than why is UDP required).
UDP is a recognized protocol by the Internet Assigned Numbers Authority. UDP can be useful if you want to write a network protocol that's datagram based and you want to play more nicely with Internet devices.
Routers can have rules to do things like drop any packet that doesn't make sense. So if you try and send packets using say an unassigned IP protocol number between hosts separated by one or more routers, the packets may well never get delivered as you've intended. The same could happen with packets from an unrecognized UDP protocol but that's at least one less door to worry about whether your packet can make it through.
Internet endpoints (like hosts) may do similar filtering too. If you want to write your own datagram based protocol and use a typical host operating system, you're more likely to need to write your software as a privileged process if not as a kernel extension if you're trying to ride it as its own IP protocol (than if you'll be using UDP).
Hope this answer is useful!
First of all, IP and UDP are protocols on the different layers, IP by definition is Internet layer when UDP is transport layer. Layers were introduced to simplify network protocols architecture and to separate concerns. Application layer protocols are supposed to be based on transport layer (with some exceptions).
Most popular transport protocols (in IP network) are UDP and TCP. While TCP is feature rich but with many tradeoffs UDP is very simple but gives a lot of freedom and so typically is a base for other protocols.
The main feature of UDP is multiplexing: ports that allow multiple protocol instances (aka sockets) to coexist on the same node. This means that implementing your own protocol over IP instead of UDP either you won't be able to have multiple instances of your protocol on the same machine or you'll have to implement multiplexing yourself.
There're other features like segmentation and checksum. These features are not mandatory.
And as was mentioned in another answer there're lots of middleware like routers, NATs and firewalls that can ruin the idea of a custom "right over IP" protocol, but it's more like a collateral damage than a feature of UDP.
I was reading that in order to capture traffic for more than just my machine I need to put the nic into promiscuous mode. By default the nic seems to filter out the packets which are not meant for it.
My Question is : How come my nic even receive traffic that is not intended for it? Isn't my router supposed to route packets only to the computer for which it is meant?
Sorry - newbie here and this may be an absolute down votable question that I am asking.
I have heard that in case of wireless networks, the traffic takes multiple paths and the NIC combines these signals to form the original signal. So when a NIC sends something to the gateway it will send multiple signals and some if not all may even be captured by your packet sniffer.
Monitor mode also works like this
The short answer: It depends. :)
Wireshark Wiki: Ethernet capture setup should be of help to get you started.
I know, how to write a C# application that works through a local network.
I mean I know, how to make my client-side application access my server-side application in a single local network.
But I wonder: How do such apps, as Skype, TeamViewer, and many other connect via global network?
I apologise, if this question is simple or obvious, but I couldn't find any information about this stuff.
Please, help me, I'll be very grateful. Any information is accepted - articles, plain info, books,and so on...
Question is very wide and I try to do short overview.
Following major difference between LAN (Local Area Network) and WAN (Wide Area Network):
Network quality:
LAN is more or less stable, WAN can be with network issues like:
Packet loss (you need use loss-tolerant transport like TCP or UDP with retransmits or packet loss concealment)
Packet jitter (interpacket intervals may differ a lot from sending part). Most common thing is packets bursts.
Packet reordering
Packet duplication
Network connectivity
WAN is less stable than LAN. So you need properly handle all things like:
Connection stale
Connection loss
Errors in the middle of the connection (if you use UDP for example)
Addresses:
In WAN you deal with different network equipment between client and server (or peers in case of peer-to-peer communication). You need to take in account:
NATs - most of the clients are behind NAT and you need to pass them through. According technics are called "NAT traversal"
Firewalls - may ISP has own rules what client can do or can't. So if you do something specific like custom transport protocol you may bump into ISP firewalls.
Routing - especially multicast and broadcast communication. In common case multicast is not possible to route. Broadcasts are never routed. So you need to avail this type of communication if you want to use WAN.
May be I forgot something. But these points are major. You can read many articles about any of them.
I am learning about MPLS VPN networks. From my understanding an IGP runs on all core routers (P and PE), while BGP runs on all PE routers. Once the IGP has conveyed reachability information to all routers, and all routers have converged, the exact labels to be used to transfer packets are assigned using LDP.
My doubt is, how are BGP control packets transmitted between PEs.
There are two options.
1. To use the Label switched paths between PEs.
2. To use normal IP forwarding through the P routers.
Which of these two methods is actually used?
If both can be used how does the PE router make a decision on which one to use?
Do we have to manually configure it in the router?
Do these answers vary for different routers like Juniper, Cisco etc. ?
My doubt is, how are BGP control packets transmitted between PEs.
There are two options:
To use the Label switched paths between PEs.
To use normal IP forwarding through the P routers.
If both can be used how does the PE router make a decision on which one to use?
LSPs are preferred over per-hop IP forwarding, if an LSP is available.
Do we have to manually configure it in the router?
By 'it', do you mean configure use of the LSP for BGP control-plane information? It happens automatically on a Cisco IOS box
Do these answers vary for different routers like Juniper, Cisco etc. ?
Cisco will send BGP information through an LDP LSP, as long as the BGP endpoint prefix has an label binding.
I can't remember Juniper's behavior off-hand, they offer somewhat more granular control over LSP behavior.
BGP uses TCP te setup its connection and to send their packets to his neighbors.
This means that your neighbors need to see each other on layer 3 (ip) level.
I hope this is the info that you needed.
see: http://en.wikipedia.org/wiki/Border_Gateway_Protocol
section "operation" for more details on this matter.
I am designing a system which has multiple small embedded systems hosts communicating in a LAN. UDP multicast fits nicely for my purpose.
But I am worried about multicast support in commonplace routers. I need to deploy the system to normal households equipped with a Wifi router, so I could encounter any kind of routers. I will use UDP broadcast if multicast will be more trouble than benefit.
To decide, I am thankful for any data or experience on multicast support in today's commonplace routers:
Do all consumer routers sold today support multicast reasonably? Limitation to LAN is not an issue for me, I do not need multicast across the Internet.
How about older routers?
Are there any big issues in commonplace multicast implementations I need to be aware of (e.g. packet drops, configuration issues, etc.)?
Are you talking switches or routers? In a consumer setting I suspect switches. My experience is that they all support multicast, though not at wire speed. Also the cheap ones tend to broadcast any multicast traffic to all ports (no IGMP snooping). Packet loss is definitely something you need to deal with, it can and will happen even on 'professional' networking gear.
Edit: as long as you are in switched network, you typically don't need to configure anything.
In many scenarios the equipment either does not support IGMP spoofing, or it is off by default. There are two problems:
Any wireless interface can be saturated by the traffic.
Poorly configured units may inadvertently route traffic out the default gateway stalling legitimate traffic.
In either case, you will have your equipment discarded as the cost of investigation will almost certainly outweigh the benefit received.
If your traffic has a limited rate and you are not concerned about the WiFi impact, you could use the local broadcast address to ensure delivery to recipients, without impacting on the routed communications.
You could install a discovery mechanism into your nodes it may be worthwhile to implement a unicast overlay to ensure that traffic does not have inadvertent impact.
A single larger group of customers with some non-compliant devices requesting support will swamp any costs associated with development or additional traffic caused by not implementing true multicasting.
In worst case scenarios, when the routers don't allow multicast traffic, I would encapsulate the multicast packets into a unicast IP address. This way the routers would handle them as normal unicast data. You might want to check mrouted .
Good luck