Remix.run Logo
vbezhenar 6 hours ago

ICMP is just different protocol from UDP. There's field "Protocol" in IP packet. 0x01 = ICMP, 0x06 = TCP, 0x11 = UDP.

I think that this article gets terminology wrong. It's not UDP socket that gets created here, but Datagram socket. Seems to be bad API naming in Rust library.

stavros 6 hours ago | parent [-]

> It's not UDP socket that gets created here, but Datagram socket

A datagram socket is a UDP socket, though. That's what the D stands for.

jmgao 5 hours ago | parent | next [-]

Wrong way around: UDP sockets are datagram sockets, there are datagram sockets that are not UDP.

Quarrel 3 hours ago | parent | prev | next [-]

To give a more nuanced reply versus the "you're wrong" ones already here, the difference is that UDP adds send and receive ports, enabling most modern users (& uses) of UDP. Hence, it is the "User" datagram protocol.

(it also adds a checksum, which used to be more important than it is nowadays, but still well worth it imho.)

meindnoch an hour ago | parent | prev | next [-]

Not every cola is Coca-Cola, even though "Cola" stands for cola.

jdndbdbd 4 hours ago | parent | prev [-]

No? Why would you think a datagram socket is UDP?

stavros 4 hours ago | parent [-]

What a reasonable question to be asked today.

cstrahan an hour ago | parent | next [-]

Let me rephrase GP into (I hope) a more useful analogy. — actually, here’s the whole analogous exchange:

“A rectangle is an equal-sided rectangle (i.e. “square”) though. That’s what the R stands for.”

“No? Why would you think a rectangle is a square?”

Just as not all rectangles are squares (squares are a specific subset of rectangles), not all datagram protocols are UDP (UDP is just one particular datagram protocol).

messe 4 hours ago | parent | prev [-]

What networks are you using without ICMP?

Presumably you're also using systems that don't support Unix Domain Sockets which can be configured as SOCK_STREAM, SOCK_DGRAM, and even gasp SOCK_SEQPACKET (equivalent to SOCK_DGRAM in this case admittedly).