Skip to content
On this page
Transport
1

Transport Layer

19.04.2023
Transport
2

Transport Encapsulation

19.04.2023
Transport
3

Transport Encapsulation

  • Frame, Packet, Segment
  • Ethernet Payload typ. max. 1500 Byte
  • IP Header Typ. 20 Byte, total max size 65'535 byte (with Fragmentation).
  • Transport Packet muss ins IP Packet reinpassen.
  • Typische Transport MTU (Maximum Transmission Unit) für Transport
  • = 1500 - 20 (IP Header) - 20 (TCP Header) = 1460 Byte
  • ... um Fragmentation zu vermeiden
19.04.2023
Transport
4

UDP Frame

19.04.2023
Transport
5

UDP

  • Keine Verbindung
  • Non-Acknowledged
  • Keine Flow Control
  • Kein Retransmit bei Timeout
  • Checksum vorhanden
19.04.2023
Transport
6

UDP Sockets

  • Port 0 - 65536
  • Mapping zwischen Applikation und OS
  • OS: Sockets Interface
python
import socket


def main():
    sock = socket.socket(type=socket.SOCK_DGRAM)
    sock.bind(("0.0.0.0", 1337))
    print("listening on port 1337")
    (data, sender) = sock.recvfrom(1024)
    print("received: {} from {}".format(data, sender))


if __name__ == "__main__":
    main()
    
19.04.2023
Transport
7

UDP mit netcat

bash
# senden
echo "HALLO" | netcat -u 1337 10.0.0.1

# empfangen
nc -l 1337 0.0.0.0

# random output generieren
dd if=/dev/urandom bs=1 count=1M | base64
19.04.2023
Transport
8

TCP

  • Transmission Control Protocol
  • Verbindungsorientiert
  • Timeouts
  • Retransmits
  • Error detection
  • Flow Control
  • Segmentierung
  • Acknowleged
19.04.2023
Transport
9

TCP Header

19.04.2023
Transport
10

3 Way Handshake

19.04.2023
Transport
11
  • 16 Bit Window
  • wieviel Bits können noch gesendet werden (Flow Control)
  • window = 0 => Pause
19.04.2023
Transport
12

Ports

  • 0 - 1023 Well Known Ports
20	FTP -- Data
21	FTP -- Control
22	SSH Remote Login Protocol
23	Telnet
25	Simple Mail Transfer Protocol (SMTP)
42	Host Name Server (Nameserv)
53	Domain Name System (DNS)
69	Trivial File Transfer Protocol (TFTP)
80	HTTP
110	POP3
161	SNMP
179	Border Gateway Protocol (BGP)
194	Internet Relay Chat (IRC)
443	HTTPS
444	Simple Network Paging Protocol (SNPP)
19.04.2023
Transport
13
python
import socket


def main():
    sock = socket.socket()
    sock.bind(("0.0.0.0", 1337))
    sock.listen(10)

    print("listening on port 1337")
    conn, addr = sock.accept()

    while True:
        data = conn.recv(1024)
        print("received: {} from {}".format(data, addr))


if __name__ == "__main__":
    main()

19.04.2023
Transport
14
  • Kompatibel zu Hostsystem / Targetsystem
    • Vorausgesetzt: Host hat Python installiert
  • Socket reuse
  • man socket
bash
python tcp.py

# aus anderem terminal
echo "hello" | netcat localhost 1337

# CTRL+C python Programm
# python programm starten
python tcp.py
OSError: [Errno 98] Address already in use
19.04.2023
Transport
15
python
import socket


def main():
    sock = socket.socket()

    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    sock.bind(("0.0.0.0", 1337))
    sock.listen(10)

    print("listening on port 1337")
    conn, addr = sock.accept()

    while True:
        data = conn.recv(1024)
        print("received: {} from {}".format(data, addr))


if __name__ == "__main__":
    main()
19.04.2023
Transport
16

IP Fragmentation

  • Versuch
    • Grosses UDP Packet senden
    • ... was passiert mit IP?
19.04.2023