Project Paper On Datagrams

1957 Words8 Pages
First of all, in the project, I cannot use any transport protocol libraries, such as TCP. Therefore, I construct the packets and acknowledgements, and interpret the incoming packets by myself. A datagram is a basic transfer unit associated with a packet-switched network. Datagrams are typically structured in header and payload sections. Datagrams provide a connectionless communication service across a packet-switched network. The delivery, arrival time, and order of arrival of datagrams need not be guaranteed by the network. \subsection{Design the packet format} Like in Project 1 I need to design fields for packet type, ACK number, window size, data etc. Each byte of data sent as in a TCP connection has an associated sequence number.…show more content…
if send is called twice with data sizes 1000 and 2000 then two packets will be sent of sizes 1000 and 2000 (assuming the MTU size for the network is large enough). If send is called with a data size larger than the MTU value, the packet will be fragmented. When the remote host calls receive twice with sizes 100 and 150, the first call will return the first 100 bytes of the 1000 byte packet and throw away the last 900 bytes. The second call will return the first 150 bytes of the 2000 byte packet and throw away the last 1850 bytes. The client on either side of a TCP session maintains a 32-bit sequence number it uses to keep track of how much data it has sent. This sequence number is included on each transmitted packet, and acknowledged by the opposite host as an acknowledgement number to inform the sending host that the transmitted data was received successfully. When a host initiates a TCP session, its initial sequence number is effectively random; it may be any value between 0 and 4,294,967,295, inclusive. However, protocol analyzers like Wireshark will typically display relative sequence and acknowledgement numbers in place of the actual values. These numbers are relative to the initial sequence number of that stream. This is handy, as it is much easier to keep track of relatively small, predictable numbers rather than the actual numbers sent on the wire. \section{ different configurations of netem} Network emulation
Get Access