Networking Intro
https://www.youtube.com/watch?v=hfUtHodJdWs
cat /etc/services
TCP and UDP
- TCP is reliable, resends the message if it fails
- UDP is unreliable
Ports and Permissions
- Systems can only listen to ports below 1024 as root (i.e. they require
sudo
)
Servers
- Often time servers are described as systems that listen to incoming connections
- Any computer can be a server
netcat
- netcat
nc
allows you to setup tcp and udp connections and servers - with netcat you can speak tcp directly
- the communication is bi-directional (the messages flow both ways)
# sudo apt install netcat
nc -l 5000 # listen on port 5000
nc -lp 5000 # listen on port 5000
from another session, you can now send messages to port 5000
nc localhost 5000
You can now type messages in each session and see them from the other session
http
- plain-text protocol
- all that you need is a program that speaks tcp
http verbs
HTTP requests begin with a VERB. Some things each VERB is used for:
- GET - fetch a document
- POST - submit a form
- HEAD - fetch metadata about a document
- PUT upload a file
There are more (DELETE, OPTIONS etc.)
http headers
Headers have a key followed by a colon :
followed by a value. (Like JS objects, minus the comma at the end)
key: value
$ nc google.com 80
GET / HTTP/1.0
Host: google.com
Make sure to hit return
twice after Host: google.com
.
You’ll get an http response back (header and HTML payload)