NetworkSecurity-Internet
인터넷보안에서 다룬 인터넷 관련 필요한 내용만 정리
네트워크의 3요소
- 출발지 단말장치
- 목적지 단말장치
- 통신 매체
Intro
- hosts = end systems
- routers = forwarding packets
communication links = physical media
- Internet: network of networks
Store-and-Forward: 라우팅 과정에서 패킷을 모두 받아서 저장한 후에 다음 노드로 전송
인터넷의 속도는 빛의 속도보다 빠를 수는 없음. 그럼 결국 얼마나 많은 데이터를 전송할 수 있느냐인데
frequency: 신호의 진동수
bandwidth: 신호가 전달할 수 있는 주파수 대역폭
이 두 개가 클수록 더 많은 데이터를 전송할 수 있음. 정확히는 Shannon-Hartley theorem 참고
ISP (Internet Service Provider)
Tier1: national/international coverage
Tier1끼리 서로 연결되어 있음.
POP: Point of Presence
큰 서비스는 ISP와 직접 연결되는 것이 빠르므로 ISP의 POP에 서버를 둠
Tier2는 Tier1에서 인터넷을 구매해서 지역적으로 서비스함. 근데 Tier1에만 통신하면 느리고 비쌀수도 있으니 다른 Tier2와 peering을 맺기도 함.
Internet eXchange는 peering 전문이라고 생각하면 됨.
Layering
- pyhsical: 물리적 비트
- link: 네트워크 요소간의 데이터 전송 (PPP, Ethernet)
- network: 소스에서 목적지까지의 전송 (IP, Routing)
- transport: 종단간 전송 (TCP, UDP)
- application: 응용프로그램 (HTTP, FTP)
Routing
IPv4: 32비트 주소
라우터는 목적지 IP를 보고 라우팅 테이블을 기반으로 패킷을 전달한다.
- Address Prefix
- Address Block
BGP (Border Gateway Protocol)
- AS: Autonomous System
예를들어 ASN200번 라우터가 자기랑 연결된 라우터한테 10.10.220.0/22를 advertise한다.
앞으로
10.10.220.0/22이 들어오면 나한테 보내라
그러면 AS20, AS30도 자기랑 연결된 라우터한테 advertise한다.
Example: Youtube
파키스탄에서 youtube 접속을 막고 싶음. 근데 설정을 잘못해서 youtube prefix를 자기 AS로 advertise해버림. 그래서 모든 youtube 트래픽이 파키스탄 텔레콤으로 들어옴.
BGP는 Integrity, Authentication이 없음을 일꺠우는 사례
Client-Server Model
- Server: 서비스를 제공하는 쪽
- 고정 ip
- 항상 켜져있음
- scalable
- Client: 서비스를 요청하는 쪽
- 동적 ip
- 필요할 때만 켜짐
- 서로 소통 불가능
Socket
TCPIP과정을 추상화해서 Socket을 열고 send, receive로 통신할 수 있게 해줌. An API.
port: 프로세스를 구분하는 논리적 번호
| TCP | UDP |
|---|---|
| 연결지향형(Connection-Oriented) | x |
| 신뢰성 있음(Reliable) | x |
| 흐름제어 있음(Flow Control) | x |
| 혼잡제어 있음(Congestion Control) | x |
| timing, throughput 제공 x | x |
| security | x |
| 속도 및 handshake 필수 | 빠름, 간단 |
| delay, bandwith는 보장이 어려움 | |
Multiplexing at send host: 여러 response가 IP레이어에서 합쳐짐 Demultiplexing at receive host: IP레이어에서 도착한 패킷을 포트번호로 구분해서 해당 프로세스에 전달
Connection oriented demux
tcp는 4-tuple (src-ip, src-port, dest-ip, dest-port)로 구분된다.
recver는 이 4-tuple을 보고 어떤 소켓으로 전달할지 결정한다. tcp/udp를 구분하기 위해 5tuple로도 표현함.
TCP
- point-to-point
- reliable
- pipelined
- send-recv buffer
- full-duplex: A→B, B→A 동시에 전송 가능
- connection-oriented
- flow control
3-way handshake
SYN → SYN-ACK → ACK
SYN: synchronize sequence numbers
- seq=x, 몇번째부터 보내겠다(바이트 단위), 다음 패킷에선 x+1부터 시작 ACK: Acknowledgement
- ack=y, y-1까지 받았으니 다음에 y부터 보내라 SYN-ACK: SYN+ACK
- seq=y, ack=x+1 이런식으로 계속 왔다갔다함
SYN flood attack
SYN을 대량으로 보냄 → 서버는 SYN-ACK을 보내고 SYN을 cache에 저장 → 자원 고갈
