45

When the world was younger, and computers weren't all glorified PCs, word sizes varied (a DEC 2020 we had around here had 36 bit words), format of binary data was a contentious issue (big endian vs little endian, and even weirder orders of bits were reasonably common). There was little consensus on character size/encoding (ASCII, EBCDIC were the main ...


45

Many protocols, including TCP which is most widely used protocol on the Internet, use something called flow control. Flow control simply means that TCP will ensure that a sender is not overwhelming a receiver by sending packets faster than it can empty its buffer. The idea is that a node receiving data will send some kind of feedback to the node sending the ...


32

I disagree with other answers that the communication channel needs to be modelled differently. Malice is irrelevant, simple lost messages with any non-zero probability are sufficient to create the two generals problem. e-mail and IM, for example, have a low but not zero chance of dropping messages. Phone calls can suffer interference, so as with the two ...


24

One advantage that might be overlooked is the ability to experiment. If you're shoving bits down the tube, you're going to need to write some utility that translates EHLO into 0x18 or the like. Instead of doing that, you can simply telnet into a mail server, send EHLO and be on your way. Nothing is preventing you in this day and age from writing code in ...


18

Central (pun intended) to the Two Generals problem is a malicious enemy in between. Although this models an unreliable channel, it models it in a way that we normally don't encounter. In the problem, the messages may pass through enemy hands and there's no time constraints, verification, encryption or anything else I haven't thought of. When we communicate ...


16

The "unsolvability" of the "Two Generals" problem (or called "Coordinated Attack" problem) is restricted to its context, i.e., in a totally asynchronous distributed system with unreliable, untrusted communication channels. In our daily life, people can "tolerate" such bad situations. In the book Reasoning about Knowledge; Section 6.1, the authors comment ...


14

The following diagram, from a blog post I wrote, is a visual proof that it's impossible: Notice how the packet arrival times on each side stay the same, even as the one-way latencies change (and even become negative!). The first packet always reaches the server at 1.5s on the server's clock, the second always reaches the client at 2s on the client's clock, ...


12

what would happen? The bytes that cannot be written to the HDD in time would be buffered temporarily somewhere; very likely some of them would be buffered in the application that "converts" the network traffic into HDD traffic (i.e., your browser), and in cases of longer congestion, the lower level parts of the stack (i.e., the networking subsystem of your ...


11

A TCP implementation might send a standalone FIN in the first closing segment. However, it can also send a FIN ACK, instead. The latter is strictly better: the implementation can bundle a "free" ACK with the FIN segment without making it longer. This is because, if you don't ACK, there is still room in the segment for the ACK number, which will be ignored, ...


9

It's not that many internet protocols are text based. In fact, if I were to guess I'd say that text based protocols are in the minority. For almost every text based protocol you see on the internet there are at least two binary protocols that people have invented to send the same or similar data. But it's true that the majority of internet traffic use text ...


7

This is a very wide topic indeed. Basically, there are two ways to measure and control the speed of a connection: physical speed and logical speed. Physical speed is determined by the technology, protocol and sometimes the physical conditions of the line. For example, a Fast Ethernet has a physical speed of about 100 Mbps, meaning that it could in theory ...


6

The e-mail system has no way of manipulating already sent e-mails, no. The only services I've seen which allow you to "unsend" an e-mail simply delay the e-mail being sent for a user-determined amount of time and then allow you to cancel the send before it happens. Alternatively, I've seen some services allow you to "unsend" e-mails if the recipient is ...


5

This number is reached first by assuming that messages will be produced and sent according to a Poisson process. $$P[(N(t + \tau) - N(t)) = x] = \frac{{e^{ - \lambda\tau } (\lambda\tau) ^x }}{{x!}}$$ This means, that the probability of $x$ messages arriving for the given interval $[t, t+\tau]$ where $\lambda$ messages are expected to arrive, is equal to ...


5

The main benefit is in the size of routing tables. Instead of having to store an entry for every machine on the network, you only need to store an entry for the particular subnet. For example ISP might have X.Y.Z.W/16 and anyone sending a packet from the outside to any machine in this subnet only needs to know the route to their border. Their border router ...


5

A few reasons : CAN was developed by BOSCH, which have a lot of influence in automotive equipment (engine control, braking, body, gearbox control...). BOSCH ensured that CAN killed competitors like the VAN protocol. (CAN was patented, and BOSCH sells CAN controller IPs) CAN is much cheaper than Ethernet. There were no suitable industrial bus at the time, ...


5

"new flow arrivals" means "arrivals of new flows". A flow is a TCP connection (roughly); each individual TCP connection is a separate "flow". So, this is talking about new TCP connections, and the rate/time at which the server receives new TCP connections. Contrarily to the statement you quoted, web requests won't necessarily be Poisson. There are many ...


5

You don't. Adding IP addresses makes no sense. It's like asking "How would I add an apple to a kiwi?" (Sounds like a setup for some bad joke, I know.) Not all things can be added. There's no reason why you'd ever need to add two arbitrary IP adresses. Based on the edited question, it appears that you want to design a scheme to assign IP addresses, and ...


5

1-2-3 is correctly sent and acknowledged so the sender's window is now over 4-5-6. 4 is received correctly and so it is acknowledged. This makes the window (currently over 4-5-6) slide to 5-6-7. However, since 5 was lost, 5 will not be acknowledged. Therefore, despite 6 being well received, 6 will not be acknowledged as well. Meanwhile the sender sends 7 ...


5

The Window Size field in the TCP packet header is the number of bytes the sender will buffer for the response. Basically, during the handshake each side will say how large its receive window is. That is, the Window Size field in a packet sent by the client, tells the server how much data the client can receive and thus how much the server can send before the ...


5

If the computer starts in the middle of the stream, it has no way to know—it will be completely confused. Fortunately, that's not how the protocol works. The computer and terminal have to sync up before they can communicate. There are a few different ways of doing that, but once they're in sync (which includes agreeing on how long each 1 or 0 should last), ...


5

So, how does the computer find out the MAC address of the server? It doesn't. The MAC address only has validity inside a local area network (LAN), which, as the name says, is local. Unless the destination IP address resides in the same network as your machine, what it does is create a packet destined to the target IP address and forward it to its default ...


5

My guess is that what you are seeing is a Level 2 Ethernet frame and therefore the preamble is missing. Also the Ethernet checksum seems to be missing. In this case everything seems to line up (the packet type inside the Ethernet frame, the IPv4 version, the IPv4 packet length, the packet type, i.e. TCP, inside the IP packet, ...). Then you'd read your ...


5

TCP is said to be reliable because when an application receives data, it knows that this is exactly the data that the sender sent. No part of the data was lost, reordered, etc. Error control is the part of TCP that deals with ensuring the reliability of connections. For example, if the sender sends two packets A and B and the receiver received only B, the ...


4

One very close overlap is of course Computer Architecture. Another close overlap (which incidentally happens to be my speciality) is EDA (CAD for VLSI designers). EDA requires development of fairly sophisticated parallel algorithms for things such as routing, RC extraction, optical proximity correction, etc., as well as understanding of the underlying VLSI ...


4

Unlike in the regular ALOHA protocol, where other nodes can send messages that interfere with ours at any time, in the Slotted ALOHA protocol, the only other time a message can be sent to interfere with ours is if it's sent at the exact time ours is sent (since in Slotted ALOHA messages can only be sent at specific intervals, like every 5 seconds for example)...


4

Historical reasons, for the most part. Automotive systems started using CAN because nothing else was good, and now they've all standardised on it. Having said that, CAN has one particular feature which makes it ideal for this class of applications. CAN dates from around the same time as Ethernet (Ethernet was commercialised in 1980, CAN in 1983 IIRC), and ...


4

this is a fairly basic problem in control theory and there are "design patterns" in this area to handle this type of system, and think there is probably an example right out of a control theory book very close to your question. basically the theory involves a concept somewhat like the way a thermostat regulates temperature in a house. if the house is too hot,...


4

When you say "layer", you are probably thinking of the OSI model, also known as the seven-layer model. However, real TCP/IP implementations don't actually fit the OSI model very well. The OSI model was designed by a standards committee 30 or 40 years ago, based on how the committee members thought network stacks ought to be designed -- but that was before ...


4

Sliding windows are used to: Keep track which packets were sent and received, hence the data transmission is reliable Keep track of the memory available to the receiver. The receiver may fill its buffers and tell to the sender to slow down (because more packets will simply be dropped, causing the sender to re-send them with a probably bigger delay) When ...


4

$2f$ and $2f + 1$ are just numbers. A set of $2f + 1$ nodes has a majority of non-faulty nodes, as you say; a set of $2f$ nodes can be deadlocked between the non-faulty and faulty nodes. A total of $3f + 1$ nodes are needed in the system to be able to construct a set of $2f + 1$ nodes when up to $f$ nodes are not responding (as outlined in section 3).


Only top voted, non community-wiki answers of a minimum length are eligible