380 likes | 551 Views
TCP/IP netværk. Henrik Størner SSLUG. TCP og IP og. ”TCP/IP” er en kombinations-protokol Lagdelt protokol – TCP og IP Andre: ICMP, UDP, GRE, ESP m.fl. Relaterede: ARP, PPP. Lag i netværket – OSI model. Fysisk lag: 10/100BaseT, telefon, fiber ... Datalink: Ethernet, PPP, ATM ...
E N D
TCP/IP netværk Henrik Størner SSLUG
TCP og IP og ... • ”TCP/IP” er en kombinations-protokol • Lagdelt protokol – TCP og IP • Andre: ICMP, UDP, GRE, ESP m.fl. • Relaterede: ARP, PPP
Lag i netværket – OSI model • Fysisk lag: 10/100BaseT, telefon, fiber ... • Datalink: Ethernet, PPP, ATM ... • Netværks-lag: IPv4 eller IPv6 • Transport/Sessionslag: TCP, UDP
IP er grundlaget • IP = ”Internet Protocol” • Bære-protokol for de øvrige protokoller på Internet – man sender ikke ”rå IP” • Nuværende versioner: 4 og 6 • Tidligere versioner fandtes, men er ikke længere i brug
Adressering • IP-adresse – 32 bit tal (4 bytes) • Skal være unik på et netværk ! • Som regel er een IP-adresse knyttet til eet system (computer) • Skrives ofte i ”dotted-quad”:130.228.2.150 • Alternativt: 2195980950
Nogle adresser er specielle • 127.*.*.* : Lokale system, localhost • 255.255.255.255 : Broadcast • 224.*.*.*: Multicast adresse • ”Interne” IP adresser- 192.168.*.*- 172.16-31.*.*- 10.*.*.*
IP netværk • En IP adresse hører til et IP netværk • Netmasken afgør størrelsen af nettet • Netmasken måles i bits: Det er det antal bit i IP adressen, som er fælles for alle systemer på netværket. • Typisk 24, 16 eller 8 bit – men kan være alt fra 1-32
Netværks- og broadcast adresse • Netværks-adressen er den ”mindste” adresse på IP-netværket • Broadcast-adressen er den ”største” • Beregnes ud fra en IP-adresse og netmasken
Eksempel: 130.228.2.150/24 • IP-adressen 130.228.2.150, 24 bit netmaske • Netværks-adressen er da10000010 11100100 00000010 10010110 AND11111111 11111111 11111111 0000000010000010 11100100 00000010 00000000 (130.228.2.0) • Broadcast-adressen er da10000010 11100100 00000010 00000000 OR00000000 00000000 00000000 1111111110000010 11100100 00000010 11111111 (130.228.2.255)
Netmasken kan være ”skæv” • Eksempel: Det reserverede netværk med 12-bit netmaske • 172.17.10.1/12 • Netværks-adresse er 172.16.12.0 • Broadcast bliver 172.31.255.255 !
IP-adresser i Linux • Tildeles med ”ifconfig” eller ”ip” programmet • Netværks-IP og broadcast kan udregnes med ”ipcalc” • Et netkort kan have flere adresser - aliaser
Routing • Foregår på IP-laget • Betyder blot at en maskine videresender pakker, som ikke er adresseret til den selv • Afhænger kun af destinations-IP • Routere kan være dedikerede systemer eller almindelige Linux/Unix systemer, med mere end een IP adresse.
Simpel routing • Maskinen har een IP adresse, og eet netkort • Al ikke-lokal trafik routes til ”default gateway” • Hvad er lokalt? Afhænger af IP-netværket! • Lokal trafik sendes direkte til modtageren via Ethernet (ARP) • Alt andet sendes til default gateway
Routing med 2+ netværk • Router fungerer ligesom det simple tilfælde • Blot checkes flere IP-netværk • Hvis pakken er adresseret til et af de lokale IP-netværk sendes den direkte • Ellers sendes den videre til routerens default gateway • Der kan være defineret lokale gateways for ikke-lokale netværk
Hvad sker der ved routing? • Indholdet af pakken røres ikke ... • Undtagen lige time-to-live feltet • Ikke noget spor af, hvordan pakken er kommet frem • Ingress filtering: Check af ankomne pakker • Egress filtering: Check af udgående pakker
Routing i Linux • Route-kommandoen definerer ”default gateway” og andre ruter • Hvis 2 netkort bliver der ikke automatisk sendt trafik mellem dem • Styres af ip_forward sysctl flaget, /proc/sys/net/ipv4/ip_forward • Foregår automatisk når flaget er sat
IP protokollen • Datagram baseret • Ingen garanti for at pakker når frem • Ingen garanti for rækkefølgen • Pakker kan blive dubleret undervejs • Ingen kontrol af integriteten • Med andre ord: En helt upålidelig protokol
IP pakken • Header (40 bytes) og data (op til 64 KB) • Version (4 eller 6) • Header længde (kun ”Options” feltet) • Type of Service • Total længde af pakken • Datagram nummer • DF / MF flag (Dont fragment / More fragments) • Fragment offset (0-8191) • Time-to-live • Protokol (TCP, UDP ...) • Source og Destination IP
Hvad indeholder felterne • Protokol: Tal som angiver typen af data • Type-of-Service: Påvirker routing • Total længde: Op til 64 KB, større end noget fysisk lag kan håndtere • Time-to-Live: Antal systemer pakken må passere igennem. • Source/Destination: Kun IP-adressen!
Hvad bruges IP til ? • I sig selv: Ingenting • Blot et ”transport-medie” for andre protokoller, som gemmer sig nede i ”data” området • Kan flytte noget data fra een IP-adresse til en anden
TCP protokollen • Overbygning til IP • Anvendes til kommunikation, når pålidelig data-overførsel er ønskelig • F.eks: Web, Mail, ftp, news, Windows filesharing • Relativt stort ”overhead” når kommunikationen starter
TCP er anderledes end IP • Kommunikation mellem services, ikke systemer • Bruger port-numre til at identificere brugere/services, oveni IP-adressen • Garanterer at data kommer frem i rigtig rækkefølge og er komplet
TCP pakken • Sendes som data i en IP-pakke • IP pakken har Protokol = 6 • Har sin egen header, som kommer efter IP-headeren
TCP headeren • Source- og Destination portnummer • Eget sekvensnummer samt ”acknowledge” sekvensnummer • Header-længde • Flag • Vinduesstørrelse • Checksum • ”Urgent” data pointer • Options
TCP portnumre • Standard services bruger vel-definerede portnumre på server-siden (SMTP=25, HTTP=80, FTP=21 osv) • Klienten bruger også et portnummer i sin ende – tildeles dynamisk • Source-IP og port samt destination-IP og port identificerer een forbindelse
Sekvensnumre • Holder rede på rækkefølgen af pakker, og at pakker ikke går tabt • 32-bit tal som tælles een op for hver pakke, der sendes
TCP siger ”Pænt goddag” • Sekvens-numrene skal initialiseres når forbindelsen etableres • Sker med et ”three-way handshake”A: SYN=1, ACK=0, SEQ=12345, ACKSEQ=0B: SYN=1, ACK=1, SEQ=67890, ACKSEQ=12346A: SYN=0, ACK=1, SEQ=12346, ACKSEQ=67891
Sekvensnumre (2) • SYN-flaget bruges til at SYNkronisere sekvens-numrene • Start-nummeret skal vælges tilfældigt • Ellers kan man lave ”spoofede” forbindelser • SYN flood
TCP siger ”Pænt farvel” • Lige som ved etablering af forbindelsen er der et 3-vejs handshake når den lukkes • Bruger FIN-flaget i stedet for SYN • FIN indikerer ”jeg har ikke mere at sende” • Begge ender skal være enige om at lukke ned, ellers fortsætter data med at komme
Flag i TCP headeren • SYN, FIN, ACK – styrer sekvensnumre • RST – lukker en forbindelse uden afsluttende handshake • PSH – ”Push” bruges til at ”skubbe” en pakke igennem nettet uden buffering • URG – ”Urgent”, data som haster. F.eks. En ”ctrl-c” i en terminal-session
Nye flag ! • I mange år har der kun været 6 flag – og 2 ubrugte bits • Nu er de defineret i RFC 3168 (standard) • ECN og CWR bruges til flow-control og adaptiv routing • Volder problemer for en del firewalls!
UDP pakken • UDP er datagram trafik ligesom IP • Simplere end TCP – men bruger portnumre • Bruger en IP-pakke med protokol=17 • Intet overhead til at etablere en forbindelse • Header: Blot source- og destination-port, længde og checksum
ICMP • Bruges til ”kontrol”, ikke til data • Kan f.eks. Bruges til at signalere at et system er off-line, eller en service er lukket • Indeholdt i en IP-pakke med protokol=1 • Header: Type, Kode, Checksum og evt. Data
ICMP pakke-typer • Echo/Echo reply (0 / 8) • Destination unreachable (3) • Redirect (5) • Time exceeded (11) • Timestamp, info, address mask request/reply (13-18)
ICMP pakke-typer (2) • Nogle ICMP-pakketyper har ekstra information i ”kode” feltet • Destination unreachable : Kode angiver net/system/port – 16 forskellige • Redirect – kan redirecte et helt netværk eller en enkelt host • Time exceeded – TTL eller reassembly
ICMP bruges ofte! • Ping, traceroute • Kan I huske ”DF/MF” flagene i IP ? • Nyttigt at kunne finde ud af hvor store pakker man kan sende til en modtager, uden at de skal fragmenteres • ”Path MTU discovery” bruger ICMP type 3, kode 4 (fragmentation needed, DF set) svar
IP pakker i Linux • Firewall-systemerne logger indholdet af pakker • Ipchains: Oct 9 07:18:18 www kernel: Packet log: input - eth0 PROTO=6 61.113.5.106:3014 130.228.2.150:111 L=60 S=0x00 I=19082 F=0x4000 T=39 SYN (#47)
IP pakker i Linux (2) • Iptables:Oct 8 16:11:51 fenris kernel: IN=eth1 OUT= • +MAC=00:00:b4:c7:28:62:00:20:6f:0b:45:cb:08:00 SRC=217.230.143.200 • +DST=192.168.1.2 LEN=52 TOS=0x00 PREC=0x00 TTL=119 ID=35562 DF PROTO=TCP • +SPT=3259 DPT=21 WINDOW=32767 RES=0x00 SYN URGP=0