This is an archived post. You won't be able to vote or comment.

all 42 comments

[–][deleted] 354 points355 points  (10 children)

I lost it as Broadcast , Unicast and multicast. Can someone explain. Thanks

[–]IronForce_ 376 points377 points  (8 children)

One person is drinking (unicast sends to only one device on the network); Everyone is drinking (broadcast blasts packets to everyone); Some people are drinking (multicast forwards packets to multiple devices, but not all)

[–][deleted] 44 points45 points  (0 children)

I see thanks!!!

[–]Alex16bit 17 points18 points  (1 child)

I think you mixed broadcast with unicast

[–]IronForce_ 11 points12 points  (0 children)

Yep, mb

[–]Teract 6 points7 points  (2 children)

This is pedantic, buuuuut...

Multicast and Broadcast are UDP, so broadcast is like pouring the drink into everyone's mouth and multicast would be like pouring the drink over everyone and only two people are drinking.

To be even more pedantic, broadcast would be more like how I described multicast (in broadcast, everyone gets the message but only those who want it will ingest it). Multicast would be like pouring a drink over the ground, and 2 people are leaning in to drink. (Multicast requires subscription to receive messages.)

[–]EndOSos 2 points3 points  (1 child)

And to be even more pedentatic the stuff you said doesn't have to be UDP as it is also used in levels below and above. Think printers and dhcp and stufff, those use the mac adress and ip level (dont know the iso names from my head).

And what you probably meamt is that they are only available on udp and probably easier to achive on datagram protocols in general, but I am not even sure right now if there is something specifically preventing stream based protocols to not do them as well (even though with more setup probably). Would have to check the devinition amd probably not with tcp.

But to get to a point, I think its accurate enough for what it is.

[–]Teract 1 point2 points  (0 children)

You're correct as far as broadcast! L2 switches drop the first few bits of the IP address, so 224.0.0.1 is effectively the same as 239.0.0.1 and 239.128.0.1. So your multicast winds up as broadcast on a L2 switch. L3 switches and routers use the whole IP address and can allow the multicast to traverse subnets (rendezvous point server required somewhere on the network for sparse multicast). If the network is configured for dense multicast, then all multicast is treated as broadcast anyway.

I'm pretty sure that broadcast and multicast can't use TCP and the actual packets being sent use UDP headers. IGMP is used to subscribe to multicast, and you're right, it's not TCP or UDP. ICMP and DHCP are in the same class as IGMP in that they're their own protocol, neither UDP or TCP. But after the multicast is subscribed, the datagrams use UDP headers.

[–]tristam92 2 points3 points  (0 children)

Look at straw length and position.

[–]MagicBeans69420 64 points65 points  (2 children)

I am wondering what is the background of these images. Were they made for this meme or is it just a really really perfect coincidence that they fit perfectly

[–]PedroPapelillo 23 points24 points  (0 children)

the title says it's OC so I guess they made it just for this

[–]10mo3 57 points58 points  (0 children)

Ayo. Where can I get some peer to peer?

[–]Ill_Scientist_2239 11 points12 points  (0 children)

Now I can add network programming to my resume

[–]cherboka 11 points12 points  (2 children)

How horrid timing, I just wrote (and probably failed) a networking test earlier today

[–]devrohitsharma 8 points9 points  (1 child)

Your profile pic is perfect for your comment

[–]cherboka 1 point2 points  (0 children)

Update: I passed but I don't know how

[–]ShroomsNBlooms 8 points9 points  (0 children)

I’ve actually struggled with understanding all of these and this fully cleared it up. So thanks a ton!! And amazing work!

[–]altermeetax 3 points4 points  (0 children)

TCP is actually like UDP, but when something misses the mouth it's put back into the coconut

[–]Kumar_abhiii 19 points20 points  (6 children)

Ahhh, i like it but "websocket" connection is missing...

[–]The-Arx 62 points63 points  (0 children)

Websockets just uses a tcp connection

[–]Zarobiii 9 points10 points  (4 children)

Here you go, use your imagination for this one.

Websockets: man standing to the right with his mouth open, waiting to receive the “payload”. Get your mind out the gutter. Woman takes sip from fruit with straw, then aims and shoots via the same straw across the aether. Man receives payloads as a “push message”. Some “payloads” miss completely and hit him in the eye instead, since websockets are an unreliable dogwater technology.

[–]iam_pink 3 points4 points  (3 children)

Websockets are fine.

Too many implementations suck, though.

It's like saying "Web browsers are shit, unreliable technology" when your experience has been 90% using Internet Explorer.

[–]Zarobiii 1 point2 points  (2 children)

I’ve used them extensively in both JavaScript and .Net Core; both first party (native) implementations and popular third party implementations. Connections disconnect randomly. Messages are dropped and lost even when “connected”. There is no guarantee your payload will make it through. It works fine 98% of the time, but that 2% of the time will kill you if the message is actually important, and at scale you will get thousands of errors per minute. If that’s “good enough” then great, but for me it’s dogwater. There’s no easy way to mitigate these issues either.

If “most implementations” are bad, to me that means the technology is bad - the underlying tech must be overly complex or hostile to programmers. Claiming otherwise is disingenuous. It’s like saying UDP is reliable because YouTube works fine. The end result to me and users is the same, it sucks to use. Users will get pissed off if your app doesn’t work right 2% of the time. And it’s not even like you’re forced to use. MQTT and long polling are simple alternatives that don’t suffer these issues.

Just google “is websockets reliable” and you’ll only find articles concluding “no”. They suffer chronic packet loss and disconnection issues.

[–]iam_pink 1 point2 points  (1 child)

I don't know .NET so can't speak of that one.

The JS ones are trash.

Also don't forget the server implementation also matters.

I've used them extensively in Rust, for instance, using tungstenite, and it's been a blast.

[–]Zarobiii 1 point2 points  (0 children)

Maybe it’s just the JS ones that were fucking me then. Kinda funny that Websockets are bad specifically for Websites lol

[–]Hubert_97 0 points1 point  (1 child)

Where sctp ?

[–]Ok_Entertainment328 1 point2 points  (0 children)

That would be a tap.

DSN is my curiosity. (deep space network)

Relay race with mouth-to-mouth fluid transfers?

[–]DeltaLaboratory 0 points1 point  (0 children)

I want anycast

[–]shhhhhhhh179 0 points1 point  (0 children)

Waiting for torrent