Chapter 3: TRANSPORT LAYER

Introduction and Transport layer services

  • Transport-layer is an end-to-end(point-to-point) layer used to deliver messages.
  • From an application process perspective, it views the communication as if the hosts running the processes are connected directly.
  • Transport-layer protocols are implemented on end-systems not on network routers.
  • On the sending side, transport-layer converts application-layer messages into transport-layer packets(a.k.a. transport-layer segments). This is done by breaking messages into smaller chunks and adding a transport-layer header. The segments will be passed to the network-layer to be encapsulated within a network-layer packet(datagram) and sent to destination.
  • On the receiving side, The network-layer extracts the segments from the datagram and passes it to the transport-layer. The transport layer then processes the received segments making it available to the application-layer.

Relationship between transport and network layer

  • Transport-layer is just above the network-layer in the protocol.
  • Transport-layer protocol provides logical communication between processes on different hosts.
  • Network-layer protocol provides logical communication between hosts.

Overview of the transport layer in the internet

  • IP service model is a best-effort delivery service. It tries its best but could not guarantee segment delivery.
  • Extending host-to-host delivery into process-to-process delivery is called transport-layer multiplexing and demultiplexing.
  • UDP only provides process-to-process delivering and error checking. Is unreliable.
  • TCP provides reliable data transfer and congestion control.
  • Congestion control is done by regulating the rate of the sending sides of TCP connections.

Multiplexing And Demultiplexing

  • Segments knows their source port number and destination source number.

[IMPORTANT]Python codes

Create socket e.g.
sock = socket(AF_INET,SOCK_DGRAM)

  • AF_INET means the ip assigned to the socket will be IPv4. For IPv6 use AF_INET6.
  • SOCK_DGRAM is for UDP connection. SOCK_STREAM is for TCP connection.

Bind a socket with a port(Server side OPs)
sock.bind(('',19156))

  • 19156 is the port binded.

Connect a socket to a server(Client side OPs)
sock.connect((servername,12000))

  • 12000 is the port to connect on server.

Accept a connection(Server side OPs)
sock,addr = sock.accept()

Connectionless transport: UDP

  • Best effort service.
    Means UDP segments can be lost or delivered out of order.
  • Connectionless
    No handshaking.
    Each UDP segment is handled independently.
  • UDP use:
    Loss tolerant, rate sensitive situation. e.g. Internet phone, video conferencing

UDP: segment header

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

UDP Checksum

  • Provides error detection.

Sender:

  • Treats all contents as sequence of 16-bit integers.
  • checksum is the sum of segment contents in one's complement(i.e. turn all 1s into 0s, turn all os into 1's).
  • Checksum is put into the UDP segement header.

Receiver:

  • Computes the checksum.
  • If the computed checksum is equal to the checksum in the segment header. There might be no errors.
  • if not, error exists.

[IMPORTANT]Principles of Reliable data transfer(rdt)

  • 懶得看英文可以看這個,30分鐘帶你搞懂兩個星期的課。

  • Terms:
    rdt_send() : Send side in RDT.
    rdt_rcv() : Receive side in RDT.
    deliver_data() : Deliver data to upper layer.
    make_pkt() : Creates a packet containing data.
    extract() : Extracts the packet.

Service model

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

RDT IS IMPORTANT AND WILL ALWAYS APPEAR ON TESTS!!!
96年 40%, 97年 40%, 100年 30%

rdt1.0

  • Regard transmission as ideal. No loss of packets, bit error, timeout will happen.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

rdt2.0

  • Takes bit errors into consideration.
  • Use checksum to detect errors

How to recover from errors?

  • Acknowledgements(ACKs): Reciever tells the sender the packet is correct.
  • Negative Acknowledgements(NAKs):
    Receiver tells the sender the packet is incorrect.

If a packet is corrupted. the receiver can use NAKs to request the sender to retransmit.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

If the ACK/NAK is corrupted, this will fail. How to fix this?

  • Choice 1 : Add checksum bits to recover from bit errors, this solves the problem but does not lose it.
  • Choice 2: When the receiver receives a corrupted ACK/NAK retransmit. This will introduce a new problem, duplicate packets.

Solution: Stop and wait:

Sender sends a packet then wait for respond.

  • Sender adds a sequence(seq) number to packet. (0 or 1)
    By doing this the sender can know whether the ACK or NAK is associated with the newest packet sent.

rtd2.1 sender:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

rtd2.1 receiver:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

rdt2.2

rdt2.2 functions like rdt2.1 but without NAK.

  • Receive side sends ACK with the last correct packet's sequence number.
  • If the sender received an ACK whose sequence number is not equal to the most recent sequence number, it is a NAK.
  • Sender

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Receiver

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

rdt3.0

Takes bit lose and lose packets into consideration.

Difference with rdt2.2:

  • Sender waits reasonable amount of time for ACK.
  • Sender retransmits if no ACK received in time.(countdown timer)

Sender:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Receiver:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Because packet sequence numbers alternate between 0 and 1. rtd3.0 is also known as alternating-bit protocol.

Downside of rdt3.0

  • slow

Pipelined protocols

Pipelining:
Sender starts to send subsequent packets before ACK/NAK comes back.
Two generic forms: Go-back-N, selective repeat.

Go-back-N(GBN)

Sender
  • Sender can have up to N packets in pipeline.
  • k-bit sequence number.
  • Sender has timer for oldest unACKed packet. Retransmit all unACKed packets if time expires.

receiver
  • receiver send cumulative ACK.(i.e. doesn't ACK if there's a gap)
  • ACKs the highest in-order sequence number only.
  • Discard out-of-order packet

Selective receive(SR)

Sender
  • Sender can have up to N packets in pipeline.
  • Sender has timer for each unACKed packet.If timeout happens ,resend the packet.
receiver
  • receiver sends individual ACKs for each packets.
  • if Received in-order packet, deliver it.
  • if Received out-of-order packet,put it into buffer.

connection-oriented transport: TCP

Overview:

  • point-to-point
  • reliable ,in-order byte stream
  • Full duplex(bidirectional)
  • Connection-oriented. Needs handshaking to init sender and receiver.
  • Flow controlled. Sender will not overwhelm receiver.

TCP header:


sequence number:

  • Byte stream number of the first byte in segment.

acknowledgement number:

  • Is the sequence number of the next segment.

Round-Trip Time estimation and timeout

How to set TCP time out value?

  • Longer than round trip time (RTT). But RTT isn't stable.
  • too short: Premature timeout.
  • too long: slow reaction to segment loss

How to estimate RTT?

  • SampleRTT: measure time until ACK received.
  • Because RTT isn't stable, use average of recent transmissions(EstimatedRTT).

ExacEstimatedRTT=(1α)×EstimatedRTT+α×SampleRTT

  • α is typically 0.125

Reliable data transfer

TCP sender

TCP fast transmit

  • If sender receives 3 ACKs for same data, resend unACKed segment with smallest sequence number. (A segment is likely lost)

Flow control

  • Receiver tells the sender how much free buffer space it has. The limits amount of unACked data according to free space left.

Connection management

starting a connection

Handshake:

  • Agree to connection
  • Agree on connection parameters.

2-way handshake sometimes doesn't
work. Three way handshake is preferred.

Three way handshake:

Closing a connection

  • Send FIN bit = 1.
  • Respond to FIN with ACK.

Principles of congestion control

Congestion:

  • Too many sources sending too much data too fast for the network to handle.
  • Manifestations: Lost packets, long delays.

Ideal scenario

known loss: packets can be lost on route. Ideally, sender only resends if packet is known to be lost

Realistic scenario

duplicates: Sender times out prematurely , two copies of packet is delivered.

cost of congestion:

  • More things(copies of packets) has to be sent.
  • multiple copies of packets are sent across the network, leading to more congestion.

TCP congestion control

Principles:

  • Lost segment implies that congestion is happening, TCP sender's rate should reduce.
  • An ACKed segment means network is delivering data well, sender's rate can be increased.
  • Bandwidth probing. Transmission rate should be as fast as possible near to congestion.

AIMD(Additive Increase, Multiplicative Decrease)

  • Saw tooth behavior
  • approach: sender increases transmission rate (window size), probing for usable bandwidth, until loss occurs
  1. additive increase: increase cwnd by 1 MSS(Maximum segment size) every RTT until loss detected
  2. multiplicative decrease: cut cwnd in half after loss

TCP Slow Start

  • Initial rate is low but ramps up exponentially fast.
    • initially cwnd = 1 MSS
    • double cwnd every RTT
    • done by incrementing cwnd for every ACK received
  • loss is indicated by timeout. if occurs, reduce to initial rate then grows exponentially to threshold, the grows linearly.
    • Threshold is half the rate of timeout.
  • Loss is indicated by 3 ACKs: TCP Reno.
    • cwnd is cut in half window then grows linearly
  • TCP Tahoe always sets cwnd to 1 (timeout or 3 duplicate acks)

Fairness

  • With the strategy mentioned in TCP Slow Start, multiple competing sessions will have equal bandwidth share.
Fairness and UDP
  • Multimedia apps often do not use TCP. Do not want rate throttled by congestion control
  • Use UDP to send audio/video at constant rate, tolerate packet loss.

Explicit congestion Notification

network-assisted congestion control
  • Two bits in IP Header marked by network router to indicate congestion.
  • Congestion indication is carried to receiving host.
  • Receiver notifies the sender that congestion is occurring.

END

tags: Computer Network CSnote