You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+105Lines changed: 105 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -370,8 +370,44 @@ If you want to stop the program, you can press the Trash can icon on the program
370
370
371
371
### Send and Serve HTTP Requests
372
372
373
+
_Web browsing_ consists on sending HTTP GET requests from your browser to multiple HTTP servers across the _world-wide-web_.
374
+
These HTTP servers respond to these requests with the requested resource and a 200 OK response code, or with the error encountered.
375
+
376
+
Being an application-level protocol, HTTP messages are sent through transport-level protocols.
377
+
While newer versions use QUIC and UDP, GEduNet follows older versions, which use TCP.
378
+
This includes all of TCP's features: retransmission of lost segments, round-trip time estimation, and flow and congestion control.
379
+
380
+
In our simulator, these messages can be generated by starting an HTTP server on one device and an HTTP client on another.
381
+
This results in a two-way flow of packets containing data from both TCP and HTTP protocols, simulating the request and response workflow.
382
+
383
+
#### Tutorial
384
+
385
+
To start a server:
386
+
387
+
1. Select the "Serve HTTP requests" program from the dropdown menu.
388
+
2. Press the "Start Program" button to start the server.
389
+
390
+
To send a request to a server:
391
+
392
+
1. Select the "Send HTTP request" program from the dropdown menu.
393
+
2. Select the destination Host to send the request to.
394
+
3. Choose the size of the requested resource. The bigger the resource, the more packets will be sent. The options are 1 KB, 256 KB, and 1 MB.
395
+
4. Press the "Start Program" button to start the client.
396
+
397
+
The packets will travel through the network following the current routing scheme and TCP protocol.
398
+
The first few packets will be considered plain TCP packets, and consist of the initial three-way handshake.
399
+
400
+
After a connection is established, the client will send the HTTP request.
401
+
Once the server receives the HTTP request, it will start streaming the requested resource to the client.
402
+
403
+
If you want to stop the program, you can press the Trash can icon on the program table of the host.
404
+
405
+
<!-- TODO: add GIF -->
406
+
373
407
### ARP Request
374
408
409
+
<!-- TODO: add section -->
410
+
375
411
## Packets
376
412
377
413
Packets are the data units that travel through the network. They are used to send and receive data between devices. In the simulator, packets are represented as colored circles that travel through the edges of the network.
@@ -407,8 +443,77 @@ The information shown in the right bar when selecting a packet is as follows:
407
443
408
444
### HTTP Packet
409
445
446
+
HTTP packets contain messages from the HyperText Transfer Protocol.
447
+
They are primarily used for sending and requesting data resources.
448
+
449
+
In the simulator, HTTP packets show different information depending on the current layer.
450
+
451
+
#### Visibility
452
+
453
+
HTTP packets are visible on all layers.
454
+
455
+
On the App Layer, they show the contents of the HTTP message.
456
+
457
+
<!-- TODO: add GIF -->
458
+
459
+
On the Transport Layer, they will show information of the TCP segment that wraps the application content:
460
+
461
+
-**Seq Number**: sequence number of the TCP segment. These start at 0 and grow with each byte sent through the connection.
462
+
-**Ack Number**: acknowledgment number of the TCP segment. These start at 0 and grow with each byte received through the connection.
463
+
-**Window Size**: the size of the receive window for the sender of the segment. These are fixed at 65535.
464
+
-**TCP Flags**: TCP control flags. The purpose of each of these can be found by hovering them.
465
+
-**Payload**: This is the data that is being sent in the segment, represented as a list of bytes.
466
+
467
+
On the Network Layer, they show information of the IPv4 packet:
468
+
469
+
-**IP Version**: The version of the IP protocol used. For now, only IPv4 is supported.
470
+
-**Internet Header Length**: The length of the IP header in 32-bit words.
471
+
-**Type of Service**: The type of service field in the IP header. This field is used to specify the quality of service for the packet.
472
+
-**Total Length**: The total length of the packet in bytes. This includes the IP header and the data.
473
+
-**Identification**: A unique identifier for the packet. This is used to identify the packet in case it is fragmented.
474
+
-**Fragmentation Offset**: The offset of the packet in case it is fragmented. This is used to reassemble the packet at the destination.
475
+
-**Time to Live**: The time to live field in the IP header. This field is used to specify the maximum number of hops that the packet can take before it is discarded.
476
+
-**Protocol**: The protocol used in the packet. For ICMP-8 packets, this is always 1.
477
+
-**Header Checksum**: The checksum of the IP header. This is used to verify the integrity of the packet.
478
+
479
+
On the Link Layer, they only show the EtherType field. This field is used to specify the protocol used in the packet. For IPv4 packets, this is 2048 (0x0800) in general.
480
+
410
481
### TCP Packet
411
482
483
+
TCP packets contain control information for the Transmission Control Protocol.
484
+
They are used for starting connections via a three-way handshake, terminating it, or for acknowledging the receipt of information.
485
+
When including an application-level payload, they are shown as packets of the given application-level protocol instead.
486
+
487
+
In the simulator, TCP packets show different information depending on the current layer.
488
+
489
+
#### Visibility
490
+
491
+
TCP packets are not visible on the App Layer.
492
+
493
+
On the Transport Layer, they will show information of the TCP segment that wraps the application content:
494
+
495
+
-**Seq Number**: sequence number of the TCP segment. These start at 0 and grow with each byte sent through the connection.
496
+
-**Ack Number**: acknowledgment number of the TCP segment. These start at 0 and grow with each byte received through the connection.
497
+
-**Window Size**: the size of the receive window for the sender of the segment. These are fixed at 65535.
498
+
-**TCP Flags**: TCP control flags. The purpose of each of these can be found by hovering them.
499
+
-**Payload**: This is the data that is being sent in the segment, represented as a list of bytes.
500
+
501
+
<!-- TODO: add GIF -->
502
+
503
+
On the Network Layer, they show information of the IPv4 packet:
504
+
505
+
-**IP Version**: The version of the IP protocol used. For now, only IPv4 is supported.
506
+
-**Internet Header Length**: The length of the IP header in 32-bit words.
507
+
-**Type of Service**: The type of service field in the IP header. This field is used to specify the quality of service for the packet.
508
+
-**Total Length**: The total length of the packet in bytes. This includes the IP header and the data.
509
+
-**Identification**: A unique identifier for the packet. This is used to identify the packet in case it is fragmented.
510
+
-**Fragmentation Offset**: The offset of the packet in case it is fragmented. This is used to reassemble the packet at the destination.
511
+
-**Time to Live**: The time to live field in the IP header. This field is used to specify the maximum number of hops that the packet can take before it is discarded.
512
+
-**Protocol**: The protocol used in the packet. For ICMP-8 packets, this is always 1.
513
+
-**Header Checksum**: The checksum of the IP header. This is used to verify the integrity of the packet.
514
+
515
+
On the Link Layer, they only show the EtherType field. This field is used to specify the protocol used in the packet. For IPv4 packets, this is 2048 (0x0800) in general.
516
+
412
517
### ICMP-8 Packet
413
518
414
519
ICMP-8 packets, also known as ICMP Echo Request packets, are a type of message used by the Internet Control Message Protocol (ICMP). They are primarily used for diagnostic and network testing purposes, most notably by the ping command.
0 commit comments