uWSGI uses the uwsgi protocol (which is somehow related to the WSGI interface, but I'm not sure how), while FastCGI & fgcid use the FastCGI protocol.
Traditional "CGI" didn't have much of a protocol at all – the server would just spawn (fork+exec) the CGI script with HTTP request headers in environment variables (e.g. $HTTP_REFERER), and the script would print a raw HTTP reply to stdout.