itgk-kurs-2021/main.md

24 KiB
Raw Permalink Blame History

ITGK Teori-kurs

Note: Introduksjon


OBS: Opptak

Note: PVV sin youtube-kanal

selv-introduksjon

Angående forelesningen

Planen min er å gå over de fleste temaene nevnt i pensum.

Skape "Aha!"-momenter

Kommer til å nevne en del biter som ikke nødvendigvis er viktig for pensum, men som er viktig for å forstå innholdet.


Hva er Informasjonsteknologi

  • Flytting og prossesering av data
  • Datamaskiner
  • Punchcards
  • Elektroniske datamaskiner
  • Nettverk

Et par viktige personer

Ada Lovelace Verdens første programmør
Herman Hollerith Punchcards og matematikk
Konrad Zuse Verdens første programmerbare datamaskin
John von Neumann Diverse, Neumann-arkitektur
Alan Turing Matematisk grunnlag for datamaskin
Douglas Engelbart Datamusen, mye interaksjondesign

Et par begreper:

  • PC
  • Operativsystem
  • Abstraksjon
  • Transistorer
  • IC
  • Hardware
  • Software
  • Programvarelag
  • Protokoll
  • WWW/Internet
  • High level/Low level
  • Assembly
  • Kompilering
  • bit

Note: Operativsystem -> Ressursallokering -> Kernel -> Grafisk brukergrensesnitt

Forklar hvordan en transistor funker


  • Abstraksjon
def goForAWalk():
  put_on_clothes()
  open_the_door()
  walk()

def open_the_door():
  put_hand_on_handle()
  shove_hand_down()
  push_door()

def put_hand_on_handle():
  lift_hand()
  move_hand_over_handle()
  lower_hand()

  • Transistorer

"Elekrisk bryter"

Note:

Vacuum-tube

Produseres med doping av halvledere


  • Integrated Chip

Elektronisk abstraksjonslag

Note:

Printes med fotolitografi


Et par begreper:

  • PC
  • Operativsystem
  • Abstraksjon
  • Transistorer
  • IC
  • Hardware
  • Software
  • Programvarelag
  • Protokoll
  • WWW/Internet
  • High level/Low level
  • Assembly
  • Kompilering
  • bit

  • WWW/Internett

www.website.com


Et par begreper:

  • PC
  • Operativsystem
  • Abstraksjon
  • Transistorer
  • IC
  • Hardware
  • Software
  • Programvarelag
  • Protokoll
  • WWW/Internet
  • High level/Low level
  • Assembly
  • Kompilering
  • bit

Enhet Størrelse
byte 8 bits
kilobyte \(10^3=1000\) bytes
megabyte \(10^6\) bytes
gigabyte \(10^9\) bytes
terabyte \(10^{12}\)
petabyte \(10^{15}\)
exabyte \(10^{18}\)
Enhet Størrelse
byte 8 bits
kibibyte \(2^{10} = 1024\) bytes
mebibyte \(2^{20}\) bytes
gibibyte \(2^{30}\) bytes
tebibyte \(2^{40}\)
pebibyte \(2^{50}\)
exbibyte \(2^{60}\)

Datatyper

  • Integer
  • Character
  • Float
  • Array
  • String

Note:

char -> ASCII 7b, Extended ASCII 8b, UTF-8

Finnes flere, men disse

Objekter


ASCII, UNICODE, UTF-8


Tallsystemer

10: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 19, 20, 21, ..., 99, 100, 101, ...
2: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, ...
16: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, ..., 1E, 1F, 20, ..., FE, FF, 100, ...
8: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, ..., 76, 77, 100, ...

Note:

Forventet å kunne octal, binær, heksadesimal

går tom for siffer

delbarhet

hexadesimal i 4 binær chunks om gangen octal i 3 binær chunks om gangen revers

lurt å trene på

brukt ca. 20 min


Eksempel: 1110010111011011


Negative tall

  • Signed magnitude
  • Two's compliment

TODO: add diagrams

Note: Signed magnitude

bruker første biten

0000 = 1000 kaster bort en plass

Løsning: Twos complement:

0001 = 1 0000 = 0 1111 = -1

1000 = MIN_INT

Algoritme:

  • finn ut hva minste negative tall er
  • ta resten av bitsene, og konverter til desimal
  • regn ut offsett


Flyttall - IEEE 754

>>> 0.1 + 0.2
0.30000000000000004

\[ (+,\ \ 4,\ \ 1949284) = +1.949284 \cdot 10^4 = 19492.84 \]

Note:

Matematisk tilnærming

Signed bit, exponent - 2^?, signifikant?

består av 3 biter, kan gi rare utregninger iblant

Opphøyd i 10, men i virkeligheten opphøyd i 2

Ikke veldig viktig, men kan være oppklarende.


Hardware

  • Hovedkort
  • CPU
  • Minne

Note:

Består av mange forskjellige biter. datamaskin er bare et begrep vi bruker. Kan gå galt på veldig mange lag i prosessen. Moores law, antall transistorer i en IC dobles hver 2. år.


Hovedkort (Motherboard)

Note:

Limet som fester alle de andre bitene sammen. Inneholder litt logikk for konfigurasjon av alle bitene, men lite ellers.


CPU

Note:

Viktigste biten. Gjør alle beregningene. Består av 3 biter, kontrollenhet, minneenhet, ALU Kjører raskt, gHz Har et visst sett med ting den kan gjøre, kalt et instruksjonssett. Setter du disse på rad, så har du et program.


Arithmetic Logic Unit (ALU)

& Control Unit (CU)


Fetch-Decode-Execute Cycle

FETCH
  • Henter neste instruksjon
DECODE
  • Dekoder instruksjonen
EXECUTE
  • Henter verdier fra minnet
  • Utfører instruksjonen
  • Skriver svaret tilbake i minnet
>>> x += y

Pipelining

FE DE EX FE DE EX FE DE EX FE DE EX FE DE EX FE DE EX

Note: 5 steg hver gang den skal kjøre en instruksjon

PC - program counter Branching - hopp til andre steder/loop Kjører en instruksjon for hver klokkesykel, men gjør flere steg samtidig. Verdt å merke seg.


Minne

Primary

  • Volatile
  • Random Access
  • RAM

Secondary

  • Nonvolatile
  • Sequential Access?
  • HDD
  • SSD

Note:

Primær - RAM tilfeldig access - kan nå hvor som helst øyeblikkelig volatilt - uten strøm så forsvinner dataen.

Sekundær - Harddisk Tregt - cd som spinner Sekvensiell aksess - Må lete for å lese på riktig sted. ikke volatilt - holder på data uten strøm SSD - Nesten random access, ligner på ram, men er ikke volatil CD, DVD, Ekstern harddisk, USB, osv.



Datamaskin

  • Hovedkort
  • CPU
  • Minne (Primær og Sekundær)
  • Strømforsyning
  • Kabinett
  • Kjøler
  • Ekstra prosessorer?
  • Ekstra IO?

Digital Representasjon


Analog/Digital

  • ADC - inn på computeren

  • DAC - ut fra computeren

Note:

Analog kan du måle bortimot så nøyaktig du vil Digital har et visst sett med 0 og 1


Piksler

Note:

Piksler er en måte å representere bilder En piksel er en liten bit av bildet, med en farge. Ofte tilsvarer 1 piksel 1 LED på skjermen Den fargen er representert som en sammensetning av 3 farger Pleier ofte å være RGB


RGB

Hver verdi er mellom 0 og 255

Kan derfor representeres som et hexadecimal med 6 tegn

Farge Rød Grønn Blå
#283681 28\(_{16}\) 36\(_{16}\) 81\(_{16}\)
#FF0000 FF\(_{16}\) 00\(_{16}\) 00\(_{16}\)
#C0FFEE C0\(_{16}\) FF\(_{16}\) EE\(_{16}\)
#FFFFFF FF\(_{16}\) FF\(_{16}\) FF\(_{16}\)
#000000 00\(_{16}\) 00\(_{16}\) 00\(_{16}\)
Farge Rød Grønn Blå
#283681 \(40_{10}\) \(54_{10}\) \(129_{10}\)
#FF0000 \(255_{10}\) \(0_{10}\) \(0_{10}\)
#C0FFEE \(192_{10}\) \(255_{10}\) \(238_{10}\)
#FFFFFF \(255_{10}\) \(255_{10}\) \(255_{10}\)
#000000 \(0_{10}\) \(0_{10}\) \(0_{10}\)

Note:

Regn ut 1920x1080 x 24 bits


Lyd

  • Bør være dobbelt så ofte som høyeste frekvensen

  • Bitdybde (16 bit er standard)

\[ 16\ bits \cdot 44100\ Hz \cdot (3 \cdot 60)s \cdot 2\ kanaler \]

Note:

Tegn en bølge på tavlen, og vis frekvensen

Samples


Encoding og Komprimering

  • Encoding: "Hvordan tolke dataen"
  • "Codec"
  • Lossless & lossy

Note:

Alt er 1 og 0, men det kan tolkes på forskjellige måter.

Grunnen til at de ofte diskuteres sammen


Eksempel på komprimering

\[ AAAAAAABBBBAAAAABB \]

\[ A6B4A5B2 \]

Note:

Rart for tekst, men gir mening for bilder -> Runlength encoding


Eksempel på lossy komprimering

Dette er en eksempelsetning.

Dte e en eksmplstnig

Note: ikke vanlig for tekst, men akseptabelt for video/lyd/bilde Gjøres ofte på tjenester som messenger.




Algoritmer

Pseudokode
function gcd(a, b)
    while a ≠ b 
        if a > b
            a := a  b
        else
            b := b  a
    return a

Note: Beskriver stegvis og nøyaktig hvordan man løser et problem Uten tolkning Pseudokode


Kompleksitet

\[ \mathcal{O}(1) \]

def f(lst):
  print('Hi!')

\[ \mathcal{O}(n) \]

def f(lst):
  for item in lst:
    print(item)

\[ \mathcal{O}(n^2) \]

def f(lst):
  for item in lst:
    for itemOnceMore in lst:
      print(item, itemOnceMore)

Note: brukes mer om dere skal programmere mye


Sorteringsalgoritmer:

  • Bubble sort: \(\mathcal{O}(n^2)\)
  • Merge sort : \(\mathcal{O}(n\ log\ n)\)


Internett


Historie

  • ARPAnet

Note: Sponset av Dep. of defense, USA Kjellermaskiner, matte Ble ikke brukt aktivt hele tiden Overføre instruksjoner Maksimal utnyttelse Flere universiteter koblet seg på Ikke veldig planlagt


5 lags modellen

Pakke

Note: pakker pakket inn i hverandre Skal se litt på hva punktumene faktisk er



Note: Medium for kommunikasjon mellom 2 eller flere endrepunkter



Note: Etablert: Kommunikasjonsmedium

Stabil overføring, og kontakt med andre ender



Note: Etablert: Flere computere er koblet sammen

Kommunikasjon gjennom flere computere.

Oppfører seg litt som postkontorer

Hop count



Note: Etablert: Link over mange computere.

Stabil og sikker kommunikasjon til tross for forsvunnede pakker,

TODO: move hop count from Transport layer to network layer



Note: Etablert: Stabil og sikker kommunikasjon.

Applikasjonsspesifikk data.


MAC-Addresse

B6-4B-8F-B4-05-E5


Error codes


IP

IPv4

  • 32-bit

  • 183.255.10.193

  • ddd.ddd.ddd.ddd

  • ddd = bbbbbbbb

IPv6

  • 128-bit xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

Note:

Navn på pcene


Subnet-maske

255.255.255.128

(11111111.11111111.11111111.10000000)

192.168.0.128/25

Note:

Den siste er ikke veldig nyttig, men om man skal sette opp ruter


Port

1-65535 (\(2^{16}-1\))

Note:

Standard porter -> HTTPS, HTTP

Port scanning


NAT

Note:

Ikke egentlig nødvendig med IPv6

Sikkerhets

Brannmur


DNS

NTNU: 129.241.160.102

Note: DNS-server hos ISP

Vanlig feil å få


TCP

  • Three way handshake
  • Kvitteringer
  • Kryptering
  • Flow control
  • Congestion control

Note: De siste er ikke viktig å vite hvordan funker


UDP

Note: Bryr seg ikke om mottaker har fått pakken Bryr seg ikke nettverksfart


LAN og WAN

Note: Nå kommer mye forskjellig. Ikke i rekkefølge.


VPN

Note: Proxy-server

Arbeids-VPN, NTNU-VPN

Forandret IP -> Netflix


Circuit switching


Packet switching


Topologier


Network Performance

  • Delay
  • Jitter
  • Quality of Service

Sikkerhet


Hashing

  • Enveis prosess
  • Produserer tilfeldiglignende tekst
  • Mange forskjellige algoritmer

F.eks:

\[ \text{"Test"} \xrightarrow{\text{SHA1}} \text{640ab2bae07bedc4c163f679a746f7ab7fb5d1fa} \]

Note: Nyttig for filer Nyttig for passord-lagring Mulighet for lik hash, men sjelden

Referer tilbake til error codes CRC, Checksum -> Irreversibel, men dårlig hash



Kryptering

  • Symmetric key encryption
  • Private/Public key encryption
  • Digital signatur

Note: Referer tilbake til TCP


Forskjellige typer angrep

  • Replay
  • Buffer overflow
  • Wiretapping
  • DDNS

Trender


Programvareutvikling


Lykke til!

Note: Løs tidligere eksamener

Crash course