4.1 The Internet
IP Address
What is an IP Address: A numeric label assigned to every device that uses the internet to communicate. IP stands for Internet Protocol. IP addresses are the identifiers that allow data to be sent over the internet.
- contain location information
- allows devices to communicate over internet
- differentiates between computers, routers, and websites
A set of 4 8-bit numbers seperated by periods. Each number is in the range 0-255. Exceptions are 0.0.0.0 and 255.255.255.255
- 4.20.0.255
- 16.23.234.1
IP Addresses allow us to send information in three main ways.
- Unicast - a specific device. Internet wide access. TCP is used
- Multicast - a group of devices. It is specific range of IP addresses. Internet-wide access. UDP is used
- Broadcast - all devices. LAN-wide. Data stops at the router. UDP is used
Popcorn Hack - Finding your IP
- https://www.whatsmyip.org/ works for both mac and windows
- Alternatively, you can open up a command prompt (cmd into search bar), and type ipconfig
The OSI Model and TCP/IP Model
TCP/IP Protocols
A TCP/IP Protocol is a set of rules that governs something within computer communication. The IETF, or Internet Engineering Task Force, manages these rules and facilitates the open development of them.
Example: ASCII Protocol
- ASCII (American Standard Code for Information Interchange) is a internet protocol that you may be familiar with, is a type of character encoding
- ASCII is a protocol governing how text is represented as binary
- 128 characters, 95 printable
There are many more protocols, each governing a specific area of how computer communicate. Ex. ARP, DNS, FTP, UDP, PPP, SAP
We obviously can’t cover every protocol, but we’ll be talking about a few important ones today.
OSI Model
The OSI model, also known as the Open Systems Interconnection Model, helps represent communications between two computers.
- The OSI model helps coordinate and classify standards
- Each of the many protocols can be classified into one of the seven layers
- Each layer has a function and the protocols in that layer all help with that function
Layer | Name | Function | Example |
---|---|---|---|
1 | Physical | Transport of data between tangible, physical things | DSL |
2 | Data Link | Device identification and forwarding on a LOCAL network (i.e. home, school) | PPP |
3 | Network | Manages identification and path that a device should take, very few of these protocols | STP |
4 | Transport | Manages transport of data between computers (delivery method, i.e. fast vs slow) | UDP |
5 | Session | Manages connectivity between devices | SAP |
6 | Presentation | Translates from data sent between computers (binary) to something humans can understand | TLS |
7 | Application | User Interaction, like resource sharing | HTTP |
Popcorn Hack
- We just gave an example of a protocol, ASCII, above. What OSI Layer does ASCII fall into?
Layer 6: Presentation because it translates from binary to human text.
- Give another example of a protocol from that layer
SSL
TCP/IP Model
- Another method of classifying protocols
- Simplifies OSI model into four layers
- Application, Presentation, Session layers are summarised into one Application layer
- Data Link and Physical layers and summarised into one Link or Physical layer
- This layer, also known as Network Access, is focused on the transport of bits (1s and 0s) between networks
Protocols
DNS - Domain Name Service
- DNS, or Domain Name Service, is a naming system for websites on the internet.
- DNS assigns and has records that relate domain names to ip addresses
What is a Domain Name?
- Domain Names are strings used to identify addresses
- They map hard to remember IP addresses into simple string of text
- Would you rather remember 162.159.128.233 or discord.com?
- Each website has its own IP address that you are sent to when you visit the website
- https://www.nslookup.io/website-to-ip-lookup/
- nslookup (website) in command prompt
Popcorn Hack
- Open up a command prompt and type “nslookup google.com”
- You should get 142.250.68.78, we mainly care about the bottom address for now
- Try visiting that website in your search bar!
Subdomains
- Subdomains are a prefix added to a domain to separate parts of the website
- There can many subdomains, up to 127, and each can be up to 64 characters long
- We saw an example of this in our passion projects
- (SUBDOMAIN).stu.nighthawkcodingsociety.com
Domain Name Service Providers
- DNS Providers manage and sell domain names
Popcorn Hack
- List 4 more websites you use often and their IPs
google.com : 142.251.40.206
youtube.com : 142.250.81.238
wikipedia.org : 208.80.154.224
amazon.com : 205.251.242.103
- What’s a subdomain of your passion project backend from last time?
adityasamavedam
- What’s the domain of your current binary CPT project?
frontendbinarytri2
HTTP vs HTTPS - HyperText Transfer Protocol
HTTP (Hypertext Transfer Protocol) and HTTPS (Hypertext Transfer Protocol Secure) are both protocols used for transferring data over the web. The key difference lies in the security aspect.
HTTP is the standard protocol for transmitting data over the internet. However, it does not provide any encryption, making it susceptible to eavesdropping and unauthorized access. This means that any information exchanged between the user’s browser and the website, such as login credentials or personal data, is sent in plain text.
HTTPS
On the other hand, HTTPS adds a layer of security by incorporating SSL/TLS (Secure Sockets Layer/Transport Layer Security) encryption. This encryption ensures that the data exchanged between the user and the website is encrypted, making it much more challenging for malicious actors to intercept or tamper with the information.
We SSL based encryption last trimester with certbot. Certbot generated SSL certificates for us to ensure HTTPS connection between the client and your website.
TCP and UDP - Transmission Control Protocol and User Datagram Protocol
TCP and UDP are both Transport protocols (layer 4 of OSI and layer 3 of TCP/IP). This means they are a set of rules that specify how data is exchanged between devices over the Internet.
TCP Packets
What’s in a TCP packet? Packets are a unit of information that are sent over the network. They contain user data, among other identification information.
TCP Handshake
The TCP handshake process - this is how a TCP session is initiated.
Step 1: Client A requests a client-to-server communication session with Server B (SYN)
Step 2: Server B acknowledges client-to-server communication session, requests server-to-client communication session (SYN-ACK)
Step 3: Client A acknowledges server-to-client communication session (ACK)
After these steps are executed in order, the communication pathway is established between Client A and Server B.
How does TCP actually send the data?
- Client A wants to send some file to Server B. TCP will first split the data into 6 segments
- TCP forwards the first 3 segments to the Server B
- Server B must acknowledge that it has received the segments by sending back an ACK. If Client A doesn’t receive the ACK, it resends the segments
- Client A sends the remaining 3 segments
- Again, Server B must send back an ACK to confirm it has received the other 3 segments
TCP Session Termination
- Client A sends segment to server B with the FIN flag to terminate the client-to-server session
- Server B sends ACK to client A
- Server B sends FIN to client A to terminate the server-to-client session
- Client A sends ACK to server B
- The session closes
UDP
Enough about TCP… what about UDP?
UDP Pros:
- Little cost
- Faster
UDP Cons:
- Little data checking
- Generally unreliable, as no ACK messages are sent
- Packets may arrive out of order or have duplicates/missing packets
UDP sends out all packets at once without any form of handshake or acknowledgement.
Popcorn Hack
- When do we use UDP? While it seems terrible, try to think of some use cases!
Real time websites such as twitch.tv
- When might we use TCP?
Web browsing such as google.com and bing.com
Homework Questions
Please answer all of these questions on your personal blog and explain. Don’t just give an answer. Homework is due Sunday night at 6 pm
IP Addresses
- Which of the following IP Addresses are possible? Explain (yes/no) for each answer choice.
- 1.1.1.1.1
- 23.23.23.23
- 134.492.100.0
- 255.256.55.255
- 2.93.255.19
1.1.1.1.1: No because all IPv4 addresses have four numbers ranging from from 0 to 255. This one has 5 numbers.
23.23.23.23: Yes because all IPv4 addresses have four numbers ranging from 0 to 255. 23 is between 0 and 255, and there are four 23s.
134.492.100.0: No because all IPv4 addresses have four numbers ranging from from 0 to 255. 492 is not between 0 and 255.
255.256.55.255: No because all IPv4 addresses have four numbers ranging from 0 to 255. 256 is not between 0 and 255.
2.93.255.19
Yes because all IPv4 addresses have four numbers ranging from 0 to 255. 2, 93, 255 and 19 are all between 0 and 255, and there are four 23s.
- If Dian Du is at home on his home network and sends a message to every computer on the network, what is this an example of? Explain.
- Multicast
- Unicast
- Broadcast
Dian Du is sending a message from himself to every computer, which means that it cannot be a unicast, as unicast means that you are only sending to one computer. It is not a multicast, because there is only one network, and multicast means that you are sending to several computers on various networks. Hence, this should be a broadcast, as all the computers are on the same network.
Models
- Three of the four following protocols are on the same layer. Identify which ones and what layer they are on, and why they are on each layer:
- ASCII (see above for information)
- FTP (facilitates transfer of files over the internet)
- TLS (see HTTPS section)
- USB (permits data exchange between electronics)
ASCII: It is on the presentation layer. The presentation layer is responsible for translation of computer data to human-readable data. ASCII is a form of character encoding, hence it should be on the presentation layer.
FTP: It is on the transport layer. The transport layer is responsible for transportation of data. FTP facilitates transfer of files over the internet, which allows the users to share files with each other, hence it should be on the transport layer.
TLS: It is on the transport layer. The transport layer is responsible for transportation of data. Transport Layer Security is a form of encryption that ensures that the data exchanged between the user and website is encrypted, hence it should be on the transport layer.
USB: It is on the transport layer. The transport layer is responsible for transportation of data. The Universal Serial Bus is used to transport data physically and it is tangible, so it’s also on the transport layer.
- Telnet is a internet protocol which allows remote access to other computers over a local network or the internet. What layer of the OSI model would this protocol be located on? What is the function of this layer?
The Telnet protocol would be located on Layer 7 : The Application Layer. The function of this layer is to help users interact with the network, download information and send data.
DNS
- Bob wants to use the domain bob.is.the.best.com. What domain should he buy from a DNS provider (assume it is available)? What would be the subdomains?
He should purchase the domain “best.com”. The subdomains would be “bob”, “is”, and “the”.
HTTP and HTTPS
- What is a difference between HTTP and HTTPS?
- What protocol does HTTPS use that HTTP doesn’t?
- What protocol does HTTPS use that HTTP doesn’t?
HTTP does not provide any encryption which can lead to hacking, but HTTPS adds a layer of security by incorporating a special type of encryption.
HTTPS uses SSL/TLS (Secure Sockets Layer/Transport Layer Security), which HTTP doesn’t.
- Last trimester we sent HTTP requests for our passion projects
- Did we use HTTP or HTTPS?
HTTP was used for the localhost link, but in the end, since it was published through GitHub Pages, we used HTTPS. - What are the benefits and disadvantages of this?
Benefits of HTTP Requests: Simplicity, Wide Browser Support, Caching, Ease Of Debugging
Disadvantages of HTTP Requests: Security Risks, Limited Authentication, Performance Overhead, Cookie Overhead
TCP and UDP
- Did we use HTTP or HTTPS?
- Bob is setting up a video streaming service, and he needs the stream to be real time.
- What protocol should he use, TCP or UDP? Why?
- What are some cons of this protocol? Give an example of a potential issue.
Bob should use UDP because it offers much lower latency than TCP and there is also no need to establish a connection before transmitting data. It’s also more simple and efficient.
Cons of UDP: UDP doesn’t offer as much security as TCP. UDP also won’t guarantee the delivery of packets and there is no way to recover lost packets, which would lead to glitches in video streaming. It has less error-detection capabilities than TCP.
- TCP has error checking, which ensures that all packets arrive properly. Why is this important?
- Give an example of how TCP ensures that there are no errors.
Error checking is important because it ensures the integrity of data and also complete data transfer without any glitches. It also enables sequencing of data and good flow control.
Each packet sent by TCP is sent in an order to ensure that all packets reach. The receiver also sends a message back to the sender to confirm that all packets reached, which is also called “Acknowledgement.”
- Give an example of how TCP ensures that there are no errors.
- Server A computer is communicating with Server B. They have already initiated communication and Server A is now attempting to send data to Server B.
- How does Server B ensure that they have received any sent packets before Server A continues sending packets in TCP? In UDP?
- What is another use of this?
TCP: Acknowledgements are sent from the Server B to Server A in less than 200 milliseconds to confirm that all packets have reached. It also uses a sliding window mechanism UDP: Server B needs to find a different way to tell Server A that all the packets have reached, because there is no quick acknowledgement. Another use of Acknowledgements is Rate Limiting. By adjusting the rate at which acknowledgments are sent, a server can indirectly control the rate at which the sender transmits data.