Skip to content

d-levin/simple-tcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

================================================
 README file for Project 3 - Simple TCP
 Name(s): Dennis Levin, Harish Bajaj, Matt Jordan
================================================

Files: transport.c, README

Run server with ./server
Server can be quite by signaling CTRL+C

Run client with [-q] [-f <filename>] server:port

OVERVIEW:
This project implements a "Simple" Transport Control Protocol (STCP) that mimics
actual TCP by providing the services listed below. Since this is a simplified version,
so not all functionalities of pure TCP are supported.

IMPLEMENTED:
1. Sliding Window(s)
  - Fixed size: 3072 bytes
  - A receive window
  - A sender window = min(receive window, congestion window)
2. TCP segment send/receive
3. Connection Setup/Teardown

NOT IMPLEMENTED:
1. Congestion Control
2. Since a reliable network layers is assumed, timeouts, packet loss, and
reordering of packets are not supported.

IMPLEMENTATION DESIGN DECISION:
1. Connection state enumerations were defined and used on an "as needed" basis.
2. Based on need, our context_t manages these resources:
  - connection state
  - sequence number
  - received sequence number
  - receiver window size
  - receiver buffer
  - sender buffer
3. Three-way handshaking mimics that of traditional TCP
4. After a connection is established, on three events are handled:
  - Application data
  - Network data
  - Application close request

LIMITATIONS:
1. Project can not call any function in mysock.h/c
2. Only plain text can be retrieved from the server. Other files types may result in unexpected results.

About

Implementation of a simple TCP protocol (sTCP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published