Search Header Logo
Untitled Lesson

Untitled Lesson

Assessment

Presentation

•

Mathematics

•

University

•

Practice Problem

•

Hard

Created by

Nguyễn Linh

FREE Resource

88 Slides • 0 Questions

1

media

The IP building blocks

Understanding the IP Protocol

husseinnasser

1.2.3.4

2

media

IP Address

●Layer 3 property

●Can be set automatically or statically

●Network and Host portion

●4 bytes in IPv4 - 32 bits

husseinnasser

3

media

Network vs Host

●a.b.c.d/x (a.b.c.d are integers) x is the network bits and remains are host

●Example 192.168.254.0/24

●The first 24 bits (3 bytes) are network the rest 8 are for host

●This means we can have 2^24 (16777216) networks and each network has
2^8 (255) hosts

●Also called a subnet

husseinnasser

4

media

Subnet Mask

●192.168.254.0/24 is also called a subnet

●The subnet has a mask 255.255.255.0

●Subnet mask is used to determine whether an IP is in the same subnet

husseinnasser

5

media

Default Gateway

●Most networks consists of hosts and a Default Gateway

●Host A can talk to B directly if both are in the same subnet

●Otherwise A sends it to someone who might know, the gateway

●The Gateway has an IP Address and each host should know its gateway

husseinnasser

6

media
media
media

E.g. Host 192.168.1.3 wants to talk to 192.168.1.2

192.168.1.0/24

192.168.2.0/24

192.168.1.3

192.168.1.2

192.168.1.1

192.168.2.3

192.168.2.2

192.168.2.1

●192.168.1.3 applies subnet
mask to itself and the
destination IP 192.168.1.2

●255.255.255.0 &
192.168.1.3 =
192.168.1.0

●255.255.255.0 &
192.168.1.2 =
192.168.1.0

●Same subnet ! no need to
route

7

media
media
media

E.g. Host 192.168.1.3 wants to talk to 192.168.2.2

192.168.1.0/24

192.168.2.0/24

192.168.1.3

192.168.1.2

192.168.1.1

192.168.2.3

192.168.2.2

192.168.2.1

●192.168.1.3 applies subnet
mask to itself and the
destination IP 192.168.2.2

●255.255.255.0 &
192.168.1.3 =
192.168.1.0

●255.255.255.0 &
192.168.2.2 =
192.168.2.0

●Not the subnet ! The packet
is sent to the Default
Gateway 192.168.1.100

192.168.2.100

192.168.1.100

8

media

Summary

●IP Address

●Network vs Host

●Subnet and subnet mask

●Default Gateway

husseinnasser

9

media

The IP Packet

Anatomy of the IP Packet

husseinnasser

10

media

IP Packet

●The IP Packet has headers and data sections

●IP Packet header is 20 bytes (can go up to 60 bytes if options are enabled)

●Data section can go up to 65536

husseinnasser

11

media

IP Packet to the Backend Engineer

husseinnasser

Source IP Address

Data

Destination IP Address

12

media

Actual IP Packet

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

https://datatracker.ietf.org/doc/html/rfc791
https://en.wikipedia.org/wiki/IPv4

13

media

Version - The Protocol version

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

14

media

Internet Header Length - Defines the Options length

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

15

media

Total Length - 16 bit Data + header

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

16

media

Fragmentation - Jumbo packets

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

17

media

Time To Live - How many hops can this packet survive?

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

18

media

Protocol - What protocol is inside the data section?

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

19

media

Source and Destination IP

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

20

media

Explicit Congestion Notification

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Version

IHL

DSCP

ECN

Total Length

4

32

Identification

Flags

Fragment Offset

8

64

Time To Live

Protocol

Header Checksum

12

96

Source IP Address

16

128

Destination IP Address

20

160

Options (if IHL > 5)

⋮

⋮

56

448

Data

21

media

Summary

●The IP Packet has headers and data sections

●IP Packet header is 20 bytes (can go up to 60 bytes if options are enabled)

●Data section can go up to 65536

●Packets need to get fragmented if it doesn’t fit in a frame

husseinnasser

22

media

ICMP

Internet Control Message Protocol

husseinnasser

23

media

ICMP

●Stands for Internet Control Message Protocol

●Designed for informational messages

○Host unreachable, port unreachable, fragmentation needed

○Packet expired (infinite loop in routers)

●Uses IP directly

●PING and traceroute use it

●Doesn’t require listeners or ports to be opened

husseinnasser

24

media

ICMP header

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit

012345678910111213141516171819202122232425262728293031

0

0

Type

Code

Checksum

4

32

Rest of header

https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol
https://datatracker.ietf.org/doc/html/rfc792

25

media

ICMP

●Some firewalls block ICMP for security reasons

●That is why PING might not work in those cases

●Disabling ICMP also can cause real damage with connection establishment

○Fragmentation needed

●PING demo

husseinnasser

26

media
media
media

Ping

husseinnasser

192.168.1.3

192.168.10.3

192.168.1.3

TTL100 ICMP echo
request

192.168.10.3

192.168.10.100

192.168.5.100

192.168.3.100

192.168.1.100

192.168.1.3

TTL96 ICMP echo
request

192.168.10.3

192.168.10.3

TTL100 ICMP echo
reply

192.168.1.3

192.168.10.3

TTL96 ICMP echo
reply

192.168.1.3

27

media
media
media

Ping - unreachable

husseinnasser

192.168.1.3

192.168.10.3

192.168.1.3

TTL3 ICMP echo
request

192.168.10.3

192.168.10.100

192.168.5.100

192.168.3.100

192.168.1.100

192.168.1.3

TTL0 ICMP echo
request

192.168.10.3

192.168.5.100

TTL100 ICMP dest
unreachable

192.168.1.3

192.168.5.100

TTL96 ICMP echo
reply

192.168.1.3

28

media

TraceRoute

●Can you identify the entire path your IP Packet takes?

●Clever use of TTL

●Increment TTL slowly and you will get the router IP address for each hop

●Doesn’t always work as path changes and ICMP might be blocked

husseinnasser

29

media
media
media

Traceroute

husseinnasser

192.168.1.3

192.168.10.3

192.168.1.3

TTL1 ICMP echo
request

192.168.10.3

192.168.10.100

192.168.5.100

192.168.3.100

192.168.1.100

192.168.1.100

ICMP dest unreach.

192.168.1.3

192.168.1.3

TTL2 ICMP echo
request

192.168.10.3

192.168.3.100

ICMP dest unreach.

192.168.1.3

192.168.1.3

TTL3 ICMP echo
request

192.168.10.3

192.168.5.100

ICMP dest unreach.

192.168.1.3

192.168.1.3

TTL4 ICMP echo
request

192.168.10.3

192.168.10.100

ICMP dest unreach

192.168.1.3

192.168.1.3

TTL5 ICMP echo
request

192.168.10.3

192.168.10.3

ICMP Echo reply

192.168.1.3

30

media

Summary

●ICMP is an IP level protocol used for information messages

●Critical to know if the host is available or port is opened

●Used for PING and TraceRoute

●Can be blocked which can cause problems

husseinnasser

31

media

ARP

Address Resolution Protocol

husseinnasser

32

media

Why ARP?

●

We need the MAC address to send frames (layer 2)

●

Most of the time we know the IP address but not the MAC

●

ARP Table is cached IP->Mac mapping

33

media
media

Network Frame

aa:bc:32:7f:c0:07

GET /

bb:ab:dd:11:22:33

10.0.0.3

10.0.0.2

IP : 10.0.0.3
MAC: bb:ab:dd:11:22:33
Port: 8080

IP : 10.0.0.2
MAC: aa:bc:32:7f:c0:07

8080

2312

aa

GET /

3bb

2

34

media
media
media

IP : 2
GW : 1
MAC: aa

EXIP : 122.1.2.4
IP : 10.0.0.1 (1)
MAC: ff

IP : 3
GW : 1
MAC: bb

IP : 4
GW : 1
MAC: cc

IP : 5
GW : 1
MAC: dd

ip

mc

2

aa

ip

mc

3

bb

ip

mc

4

cc

ip

mc

5

dd

●IP 10.0.0.2 (2) wants to connect to IP 10.0.0.5 (5)

●Host 2 checks if host 5 is within its subnet, it is.

●Host 2 needs the MAC address of host 5

●Host 2 checks its ARP tables and its not there

aa

GET /

5??

2

35

media
media
media

IP : 2
GW : 1
MAC: aa

EXIP : 122.1.2.4
IP : 10.0.0.1 (1)
MAC: ff

IP : 3
GW : 1
MAC: bb

IP : 4
GW : 1
MAC: cc

IP : 5
GW : 1
MAC: dd

ip

mc

2

aa

5

dd

ip

mc

3

bb

ip

mc

4

cc

ip

mc

5

dd

●Host 2 sends an ARP request broadcast to all machines in its network

●Who has IP address 10.0.0.5?

●Host 5 replies with dd

●Host 2 updates its ARP Table

aa

GET /

5dd

2

36

media
media
media
media

IP : 2
GW : 1
MAC: aa

EXIP : 122.1.2.4
IP : 10.0.0.1 (1)
MAC: ff

IP : 3
GW : 1
MAC: bb

IP : 4
GW : 1
MAC: cc

IP : 5
GW : 1
MAC: dd

ip

mc

2

aa

5

dd

ip

mc

3

bb

ip

mc

4

cc

ip

mc

5

dd

●IP 10.0.0.2 (2) wants to connect to IP 1.2.3.4 (x)

●Host 2 checks if 1.2.3.4 is within its subnet, it is NOT!

●Host 2 needs to talk to its gatway

●Host 2 needs the MAC address of the gateway

aa

GET /

x??

2

1.2.3.4 (x)

37

media
media
media
media

IP : 2
GW : 1
MAC: aa

EXIP : 122.1.2.4
IP : 10.0.0.1 (1)
MAC: ff

IP : 3
GW : 1
MAC: bb

IP : 4
GW : 1
MAC: cc

IP : 5
GW : 1
MAC: dd

ip

mc

2

aa

5

dd

1

ff

ip

mc

3

bb

ip

mc

4

cc

ip

mc

5

dd

●Host 2 checks its local ARP table, 10.0.0.1 is not it in

●Host 2 sends an ARP request to everybody in the network

●Who has 10.0.0.1? (A DANGEROUS QUESTION)

●Gateway reply with ff

●NAT than kicks in.

aa

GET /

x

ff

2

1.2.3.4

38

media

Summary

●ARP stands for Address resolution protocol

●We need MAC address to send frames between machines

●Almost always we have the IP address but not the MAC

●Need a lookup protocol that give us the MAC from IP address

●Attacks can be performed on ARP (ARP poisoning)

husseinnasser

39

media

Routing Example

How IP Packets are routed in Switches and Routers

husseinnasser

40

media
media
media
media
media
media

A

D

B

C

Switch (S)

Router (R)

Internet

10.0.0.2

10.0.0.3

10.0.0.5

10.0.0.4

10.0.0.100

8.8.8.8 (G)

1.2.3.4
192.168.1.2

X

192.168.1.1

A -> B
D -> X
B -> G

41

media

UDP

User Datagram Protocol

husseinnasser

42

media

UDP

●Stands for User Datagram Protocol

●Layer 4 protocol

●Ability to address processes in a host using ports

●Simple protocol to send and receive data

●Prior communication not required (double edge sword)

●Stateless no knowledge is stored on the host

●8 byte header Datagram

husseinnasser

43

media
media

UDP Use cases

●Video streaming

●VPN

●DNS

●WebRTC

husseinnasser

B

A

44

media
media

Multiplexing and demultiplexing

●IP target hosts only

●Hosts run many apps each with different requirements

●Ports now identify the “app” or “process”

●Sender multiplexes all its apps into UDP

●Receiver demultiplex UDP datagrams to each app

husseinnasser

10.0.0.1

10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 53
AppY-port 68
AppZ-port 6978

45

media
media

Source and Destination Port

●App1 on 10.0.0.1 sends data to AppX on 10.0.0.2

●Destination Port = 53

●AppX responds back to App1

●We need Source Port so we know how to send back data

●Source Port = 5555

husseinnasser

10.0.0.1

10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 53
AppY-port 68
AppZ-port 6978

10.0.0.1

53

10.0.0.2

5555

10.0.0.2

5555

10.0.0.1

53

46

media

Summary

●UDP is a simple layer 4 protocol

●Uses ports to address processes

●Stateless

husseinnasser

47

media

UDP Datagram

The anatomy of the UDP datagram

husseinnasser

48

media

UDP Datagram

●UDP Header is 8 bytes only (IPv4)

●Datagram slides into an IP packet as “data”

●Port are 16 bit (0 to 65535)

husseinnasser

49

media

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit


0


1


2


3


4


5


6


7


8


9

10111213141516171819202122232425262728293031

0

0

Source port

Destination port

4

32

Length

Checksum

UDP Datagram header

https://www.ietf.org/rfc/rfc768.txt
https://en.wikipedia.org/wiki/User_Datagram_Protocol

Data

50

media

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit


0


1


2


3


4


5


6


7


8


9

10111213141516171819202122232425262728293031

0

0

Source port

Destination port

4

32

Length

Checksum

Source Port and Destination Port

Data

51

media

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit


0


1


2


3


4


5


6


7


8


9

10111213141516171819202122232425262728293031

0

0

Source port

Destination port

4

32

Length

Checksum

Length & Checksum

Data

52

media

UDP Pros and Cons

The power and drawbacks of UDP

husseinnasser

53

media

UDP Pros

●Simple protocol

●Header size is small so datagrams are small

●Uses less bandwidth

●Stateless

●Consumes less memory (no state stored in the server/client)

●Low latency - no handshake , order, retransmission or guaranteed delivery

husseinnasser

54

media

UDP Cons

●No acknowledgement

●No guarantee delivery

●Connection-less - anyone can send data without prior knowledge

●No flow control

●No congestion control

●No ordered packets

●Security - can be easily spoofed

husseinnasser

55

media

TCP

Transmission Control Protocol

husseinnasser

56

media

TCP

●Stands for Transmission Control Protocol

●Layer 4 protocol

●Ability to address processes in a host using ports

●“Controls” the transmission unlike UDP which is a firehose

●Connection

●Requires handshake

●20 bytes headers Segment (can go to 60)

●Stateful

husseinnasser

57

media
media

TCP Use cases

●Reliable communication

●Remote shell

●Database connections

●Web communications

●Any bidirectional communication

husseinnasser

B

A

58

media

TCP Connection

●Connection is a Layer 5 (session)

●Connection is an agreement between client and server

●Must create a connection to send data

●Connection is identified by 4 properties

○SourceIP-SourcePort

○DestinationIP-DestinationPort

husseinnasser

59

media

TCP Connection

●Can’t send data outside of a connection

●Sometimes called socket or file descriptor

●Requires a 3-way TCP handshake

●Segments are sequenced and ordered

●Segments are acknowledged

●Lost segments are retransmitted

husseinnasser

60

media
media

Multiplexing and demultiplexing

●IP target hosts only

●Hosts run many apps each with different requirements

●Ports now identify the “app” or “process”

●Sender multiplexes all its apps into TCP connections

●Receiver demultiplex TCP segments to each app based on connection pairs

husseinnasser

10.0.0.1

10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 53
AppY-port 68
AppZ-port 6978

61

media
media

Connection Establishment

●App1 on 10.0.0.1 want to send data to AppX on 10.0.0.2

●App1 sends SYN to AppX to synchronous sequence numbers

●AppX sends SYN/ACK to synchronous its sequence number

●App1 ACKs AppX SYN.

●Three way handshake

husseinnasser

10.0.0.1

10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 22
AppY-port 443
AppZ-port 80

10.0.0.1

5555

10.0.0.2

22

SYN

10.0.0.2

22

10.0.0.1

5555

SYN/ACK

10.0.0.1

5555

10.0.0.2

22

ACK

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1:5555:
10.0.0.2:22

File descriptor

62

media
media

Sending data

●App1 sends data to AppX

●App1 encapsulate the data in a segment and send it

●AppX acknowledges the segment

●Hint: Can App1 send new segment before ack of old segment arrives?

husseinnasser

10.0.0.1

10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 22
AppY-port 443
AppZ-port 80

10.0.0.1

5555

10.0.0.2

22

ls

10.0.0.2

22

10.0.0.1

5555

ACK

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1:5555:
10.0.0.2:22

File descriptor

63

media
media

Acknowledgment

●App1 sends segment 1,2 and 3 to AppX

●AppX acknowledge all of them with a single ACK 3

husseinnasser

10.0.0.1
10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 22
AppY-port 443
AppZ-port 80

10.0.0.1

5555

10.0.0.2

22

seq1

10.0.0.2

22

10.0.0.1

5555

ACK3

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1

5555

10.0.0.2

22

seq2

10.0.0.1

5555

10.0.0.2

22

seq3

64

media
media

Lost data

●App1 sends segment 1,2 and 3 to AppX

●Seg 3 is lost, AppX acknowledge 3

●App1 resend Seq 3

husseinnasser

10.0.0.1
10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 22
AppY-port 443
AppZ-port 80

10.0.0.1

5555

10.0.0.2

22

seq1

10.0.0.2

22

10.0.0.1

5555

ACK2

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1

5555

10.0.0.2

22

seq2

10.0.0.1

5555

10.0.0.2

22

seq3

10.0.0.1

5555

10.0.0.2

22

seq3

10.0.0.2

22

10.0.0.1

5555

ACK3

65

media
media

Closing Connection

●App1 wants to close the connection

●App1 sends FIN, AppX ACK

●AppX sends FIN, App1 ACK

●Four way handshake

husseinnasser

10.0.0.1

10.0.0.2

App1-port 5555
App2-port 7712
App3-port 2222

AppX-port 22
AppY-port 443
AppZ-port 80

10.0.0.1

5555

10.0.0.2

22

FIN

10.0.0.2

22

10.0.0.1

5555

ACK

10.0.0.1

5555

10.0.0.2

22

ACK

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.1:5555:
10.0.0.2:22

File descriptor

10.0.0.2

22

10.0.0.1

5555

FIN

66

media

Summary

●Stands for Transmission Control Protocol

●Layer 4 protocol

●“Controls” the transmission unlike UDP which is a firehose

●Introduces Connection concept

●Retransmission, acknowledgement, guaranteed delivery

●Stateful, connection has a state

husseinnasser

67

media

TCP Segment

The anatomy of the TCP Segment

husseinnasser

68

media

TCP Segment

●TCP segment Header is 20 bytes and can go up to 60 bytes

●TCP segments slides into an IP packet as “data”

●Port are 16 bit (0 to 65535)

●Sequences, Acknowledgment, flow control and more

husseinnasser

69

media

TCP Segment

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit 7 6 5 4 3 2 1 0 7 65432107654321076543210

0

0

Source port

Destination port

4

32

Sequence number

8

64

Acknowledgment number (if ACK set)

12

96

Data offset

Reserved

0 0 0

N
S

C
W
R

E
C
E

U
R
G

A
C
K

P
S
H

R
S
T

S
Y
N

FI
N

Window Size

16

128

Checksum

Urgent pointer (if URG set)

20

160

Options (if data offset > 5. Padded at the end with "0" bits if necessary.)

⋮

⋮

60

480

https://en.wikipedia.org/wiki/Transmission_Control_Protocol
https://datatracker.ietf.org/doc/html/rfc793

70

media

Ports

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit 7 6 5 4 3 2 1 0 7 65432107654321076543210

0

0

Source port

Destination port

4

32

Sequence number

8

64

Acknowledgment number (if ACK set)

12

96

Data offset

Reserved

0 0 0

N
S

C
W
R

E
C
E

U
R
G

A
C
K

P
S
H

R
S
T

S
Y
N

FI
N

Window Size

16

128

Checksum

Urgent pointer (if URG set)

20

160

Options (if data offset > 5. Padded at the end with "0" bits if necessary.)

⋮

⋮

60

480

71

media

Sequences and ACKs

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit 7 6 5 4 3 2 1 0 7 65432107654321076543210

0

0

Source port

Destination port

4

32

Sequence number

8

64

Acknowledgment number (if ACK set)

12

96

Data offset

Reserved

0 0 0

N
S

C
W
R

E
C
E

U
R
G

A
C
K

P
S
H

R
S
T

S
Y
N

FI
N

Window Size

16

128

Checksum

Urgent pointer (if URG set)

20

160

Options (if data offset > 5. Padded at the end with "0" bits if necessary.)

⋮

⋮

60

480

72

media

Flow Control Window Size

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit 7 6 5 4 3 2 1 0 7 65432107654321076543210

0

0

Source port

Destination port

4

32

Sequence number

8

64

Acknowledgment number (if ACK set)

12

96

Data offset

Reserved

0 0 0

N
S

C
W
R

E
C
E

U
R
G

A
C
K

P
S
H

R
S
T

S
Y
N

FI
N

Window Size

16

128

Checksum

Urgent pointer (if URG set)

20

160

Options (if data offset > 5. Padded at the end with "0" bits if necessary.)

⋮

⋮

60

480

73

media

9 bit flags

husseinnasser

Offsets

Octet

0

1

2

3

Octet

Bit 7 6 5 4 3 2 1 0 7 65432107654321076543210

0

0

Source port

Destination port

4

32

Sequence number

8

64

Acknowledgment number (if ACK set)

12

96

Data offset

Reserved

0 0 0

N
S

C
W
R

E
C
E

U
R
G

A
C
K

P
S
H

R
S
T

S
Y
N

F
I
N

Window Size

16

128

Checksum

Urgent pointer (if URG set)

20

160

Options (if data offset > 5. Padded at the end with "0" bits if necessary.)

⋮

⋮

60

480

74

media

Maximum Segment Size

●Segment Size depends the MTU of the network

●Usually 512 bytes can go up to 1460

●Default MTU in the Internet is 1500 (results in MSS 1460)

●Jumbo frames MTU goes to 9000 or more

●MSS can be larger in jumbo frames cases

husseinnasser

75

media

TCP Pros and Cons

The power and drawbacks of TCP

husseinnasser

76

media

TCP Pros

●Guarantee delivery

●No one can send data without prior knowledge

●Flow Control and Congestion Control

●Ordered Packets no corruption or app level work

●Secure and can’t be easily spoofed

husseinnasser

77

media

TCP Cons

●Large header overhead compared to UDP

●More bandwidth

●Stateful - consumes memory on server and client

●Considered high latency for certain workloads (Slow start/ congestion/ acks)

●Does too much at a low level (hence QUIC)

○Single connection to send multiple streams of data (HTTP requests)

○Stream 1 has nothing to do with Stream 2

○Both Stream 1 and Stream 2 packets must arrive

●TCP Meltdown

○Not a good candidate for VPN

husseinnasser

78

media

Overview of Popular Networking Protocols

79

media

TLS

Transport Layer Security

husseinnasser

80

media

TLS

● Vanilla HTTP

● HTTPS

● TLS 1.2 Handshake

● Diffie Hellman

● TLS 1.3 Improvements

81

media
media
media

HTTP

GET /

Headers+
index.html

<html>...

open

close
….

80

82

media
media
media
media
media

HTTPS open

close

Handshake

….

Headers+
index.html

<html>...

443

GET /

83

media

Why TLS

● We encrypt with symmetric key algorithms

● We need to exchange the symmetric key

● Key exchange uses asymmetric key (PKI)

● Authenticate the server

● Extensions (SNI, preshared, 0RTT)

84

media
media
media
media
media
media
media

TLS1.2

open

close
….

Client hello

Server hello (cert)

Change cipher, fin

GET /

Headers+
index.html

<html>...

Change cipher, fin

RSA Public key

RSA Private key

85

media
media
media
media
media

Diffie Hellman

+

+
=

Private x

Public g,n

Private y

Symmetric key

86

media
media
media
media

Diffie Hellman

+

Public/
Unbreakable
/can be shared
g^x % n

+

Public/
Unbreakable
/can be shared
g^y % n

(g^x % n)^y = g^xy % n
(g^y % n)^x = g^xy % n

87

media
media
media
media
media
media
media
media

TLS1.3

open

close

….

GET /

Headers+
index.html

<html>...

server hello/ change cipher/ fin

client hello / key /fin

(g^x % n)^y = g^xy % n
(g^y % n)^x = g^xy % n

88

media

TLS Summary

● Vanilla HTTP

● HTTPS

● TLS 1.2 Handshake (two round trips)

● Diffie Hellman

● TLS 1.3 Improvements (one round trip can be zero)

pattern-tertiary
media

The IP building blocks

Understanding the IP Protocol

husseinnasser

1.2.3.4

Show answer

Auto Play

Slide 1 / 88

SLIDE