total_activ
데통 공부 v.04 (DNS, P2P) 본문
DNS
- = URL
- IP주소를 통해 접근 가능 BUT 외우지 는 않고 DNS를 통해 접근
- 특징
- 분산적 database
- application-layer에서만 작동 (= client-sever로 동작 )
- end host= edge에서 작동
- DNS 서비스 → 분산적, 계층적 구조
- IP주소를 호스트이름으로 변경
- 호스트에 별명 가능
- 메일서버에 대해 다른 별명 가능
- 같은 이름으로 서로 다른 IP 제공가능 → 로드 분산
- DNS서버 분산적으로 사용하는 이유 :
- 하나가 망가지면 인터넷이 정상적으로 동작 X , 한번에 몰릴경우, 멀리 있는 경우, 피싱IP로 이동하는 것을 최소한으로막기(유지보수)
- 분산적이고 계층적 구조 (root= contack-last-resort=13개 → 복제품 가짐)
- Root(.com) → Top Level Domain (amazon) → Authoritative(직접적으로 IP를 가지고 할당해줄수 있음)
- Root = contack-last-resort=13개 → 복제품 가짐
- → DNSSEC를 통해 보안 제공, ICANN에 의해 관리(→위임해놓음)
- → .kr가 해외에 위치해있는경우는 해외에서의 접근을 빠르게해주기위해
- DNS servers
- Authoritative DNS servers:
- 기관이 직접 설치
- Local DNS name servers
- caches처럼 root에게 물어보기전 대답옴
- Authoritative DNS servers:
- DNS name query
- iterated query (실제)→ host → local DNS / local DNS → host = recursive
- host → local DNS → root DNS → local DNS → TLD DNS → local DNS → authoritative DNS → local DNS → host
- recursive query (재귀)
- host → local DNS → root DNS → TLD DNS → authoritative DNS → TLD DNS → root DNS → local DNS → host
- DNS caches / update
- 유효시간 : TTL
- TLD한테 분산되서 날라가기때문에 ROOT 접근이 힘들다 혹은 LOCAL이 해결
- out-of-data : 주소를 바꾸고 싶을경우 TTL이 끝날때 까지 기다리고 다시 요청해서 값을 받도록 함
- DNS가 데이터 베이스 다루는법
- resource records로 다룸
- type=Avalue = IP
- name = hostname
- type=NSvalue = authoritative name server의 hostname
- name = domain (dfa.com)
- type=CNAMEvalue = canonical name (adad.ada.ada.com)
- name=별명 (www)
- type=MX
- value = mailserver
- RR format(name, value, type, ttl)
- resource records로 다룸
- DNS 프로토컬 메세지 구조
- query, reply 모두 동일 한 format
- DNS 보안
- DDOS 공격
- root는 한번도 성공한 적 없음
- 로컬 서버가 응답하거나 우회함
- TLD 국가 서버는 위험함
- root는 한번도 성공한 적 없음
- Redirect 공격
- dsn queries를 감지후 먼저 응답함 → TTL이 끝나기 전까지 저장된 걸로 응답
- DNS자체에다가 응답을 넣음 (POISONING)
- Exploit DNS for DDOS
- 목적 주소 변경
- 그래서 해쉬값 사용 = DNSSEC
- DDOS 공격
P2P
- client-server 와는 다르게 여러대의 컴퓨터가 동시에 업로드 하는 시간이 추가되어 다운로드 시간이 측정되는데 이때 그 값은 부모 분자 모두 같이 유저 수에 대해 선형적 증가이므로 완만한 곡선
- client-server은 n개의 카피만큼의 업로드 시간이 선형적으로 크게 증가하므로 직선형 함수다.
- BitTorrent
- chunks단위로 파일 나눔
- tracker : 참여자들의 정보를 담음
- tracker에게 원하는 파일 요청 후 다운 → tracker에 데이터 쌓임 → 다운로드와 동시에 업로드
- 여러명에게 분산적을 요청한다
video streaming and content distribution networks
- 하나의 기업이 여러명의 사용자를 커버하기위해서는 분산적이고 application level에 대한 인프라도 필요
- Multimedia
- 비디오 압축(인코딩) 1
- 연속된 이미지의 겹쳐진 이미지 활용
- 처음에 전체 이미지 정보를 주는것이아니라 움직이는 것에 대한 백터 정보만 전달 후 이전 이미지에 덮어씌움
- spatial coding : 반복되는 색깔
- 비디오 종류
- CBR : 비율로 압축된 비디오 → MPEG 1,2
- VBR : 네트워크 상황에 따라 가변적으로 변함 → MPEG4
- 도전
- 처리량이 시간에 따라 변한다 →일정한 서비스 제공
- 혼잡, delay
- 이상적인 비디오 : 딜레이가 일정하다면 차례때로 보여줌
- 실제 비디오 : 네트워크 delay가 매우 가변적(jitter) → client에서 buffer을 둠 (정지, 빨리감기...)
- 실제 다운보다 조금 늦게 재생 → 네트워크 딜레이가 커져도 해당 버퍼만큼 잡아먹어서 재생 끊어지지 않게함 (클라이언트 하드웨어 사용) 2
- 비디오 전송하는 프로토콜 : DASH (HTTP위에서) 3
- server : chunck로 나누고 인코딩된 서로 다른 비율을 가짐 → 즉, 미리 화질에 따라 나눠둔거임, manifest file을 제공함으로써 서로 다른 url 제공
- client : manifest file을 받아서 어떤 url로 접속할지 알려줌 → 자신에게 맞는 bandwidth로 맞춰서 청크를 불러온다 (자동 화질)
- 클라이언트에게 intelligence를 가지고 있음
- 그래서 streaming video = encoding + DASH + playout buffering
- 비디오 압축(인코딩) 1
- CDNs
- 동시에 제공하는 서비스 해결방법
- 지리적으로 멀리 둔 site를 사용
- client → 원하는 동영상 → 서버는 manifest file 제공 (가까운 서버 알려줌) → 가까운 서버에서 다운
- 각각의 데이터가 host-host comunication으로 제공되고 있다
- B → 비디오 요청 → url 제공 → local에게 물어봄 → authorattive dns로 주소 얻음 → 해당 곳으로 가서 주소 얻음 → ip주소 알게됨 → 비디오 다운받음
- B → 브라우저에서 접속 → 클라우드에서 manifest file 제공 → 가까운 cdn으로 가서 다운
- 아직도 고민중인 과제
- 컨텐츠의 노드를 어떻게 찾는가
- congestion 발생시 어떻게 할건가
- gd 어디다가?
- 동시에 제공하는 서비스 해결방법
- application architectures
- client-server
- server: 항상 켜져있음 + 영구적 ip 주소 (data center모습)
- client: 간열적으로 연결, 동적 IP, 클라이언트끼리 소통 x, (HTTP, IMAP, FTP)
- p2p
- 토렌트가 대표적
- 파일 다운로드를 하지 않아도 참여하는 데이터로드를 사용하여 높은 속도 보장 가능
- 서버 제공 필요 x end systems들이 모여서 통신한다.
- 서비스를 요청하기도 제공하기도 한다. (독점적 인프라가 없어도 self scalability)
- IP가 변하고 간열적 연결을 해서 관리 힘듦
- 여기서는 client process와 server process 이기도 하다!
- client-server
- application service requirements:
- reliability, bandwidth, delay
- Internet transport service model
- connection-oriented, reliable: TCP
- reliable transport : 확인에 대한 응답으로 해결
- flow control : 압도하지 않기
- congestion control : 전송속도 낮추기
- does not provid : timing, minimum, throughput guarantee, security
- connection-oriented : 서로간의 확인 필요
- 많은 오버헤드 필요
- TLS
- 보안을 강화한 TCP
- provides encrypted TCP connections data integrity end-point authentication
- 필요 단계 : TLS 라이브러리 읽기
- unreliable, datagrams: UDP
- unreliable data transfer : 서로 확인 없음
- does not provid : reliability, flow control, congestion control, timing, throughput guarantee, security, or connection setup.
- 속도 빠르고 적은 오버헤드 필요
- connection-oriented, reliable: TCP
- specific protocols:
- HTTP
- SMTP, IMAP
- SMTP: 전송과 저장
- IMAP : 메일을 불러올때
- DNS
- P2P: BitTorrent
- client-server 와는 다르게 여러대의 컴퓨터가 동시에 업로드 하는 시간이 추가되어 다운로드 시간이 측정되는데 이때 그 값은 부모 분자 모두 같이 유저 수에 대해 선형적 증가이므로 완만한 곡선
- client-server은 n개의 카피만큼의 업로드 시간이 선형적으로 크게 증가하므로 직선형 함수다.
- BitTorrent
- chunks단위로 파일 나눔
- tracker : 참여자들의 정보를 담음
- tracker에게 원하는 파일 요청 후 다운 → tracker에 데이터 쌓임 → 다운로드와 동시에 업로드
- 여러명에게 분산적을 요청한다
- client-server 와는 다르게 여러대의 컴퓨터가 동시에 업로드 하는 시간이 추가되어 다운로드 시간이 측정되는데 이때 그 값은 부모 분자 모두 같이 유저 수에 대해 선형적 증가이므로 완만한 곡선
- video streaming, CDNs
- 동시에 제공하는 서비스 해결방법
- 지리적으로 멀리 둔 site를 사용
- client → 원하는 동영상 → 서버는 manifest file 제공 (가까운 서버 알려줌) → 가까운 서버에서 다운
- 각각의 데이터가 host-host comunication으로 제공되고 있다
- B → 비디오 요청 → url 제공 → local에게 물어봄 → authorattive dns로 주소 얻음 → 해당 곳으로 가서 주소 얻음 → ip주소 알게됨 → 비디오 다운받음
- B → 브라우저에서 접속 → 클라우드에서 manifest file 제공 → 가까운 cdn으로 가서 다운
- 아직도 고민중인 과제
- 컨텐츠의 노드를 어떻게 찾는가
- congestion 발생시 어떻게 할건가
- gd 어디다가?
- 동시에 제공하는 서비스 해결방법
Most importantly: learned about protocols!
- typical request/reply message exchange:
- server responds with data, status code
- request : ASCII (어떤요청을 하는지, URL, HTTP버전)
- POST : 글자를 써서 전송
- GET : URL을 쳐서 파일을 받아올때 (?사용)
- HAED : 헤더만 달라
- PUT : 업테이트 replaces
- 명령어
- response : 버전, 코드, 데이트, 최신 버전
- 200 ok
- 301 : 주소가 변경되서 REDIRECTION
- 400 : 잘못된 요청다
- 404 : 지원못하는 버전이다
- 505 : 지원할수 없다
- 코드
- request : ASCII (어떤요청을 하는지, URL, HTTP버전)
- server responds with data, status code
- message formats:
- headers: fields giving info about data
- data: info(payload) being communicated
- important themes:
- centralized vs. decentralized
- stateless vs. stateful
- stateless : 과거의 동작을 기억하지 않는다.
- stateful : 유지하기 위해서는 history를 유지하고 연결 중단시 복구에 대한 고려도 필요
- COOKIES
- state가 필요할경우에 cookies 사용!!
- 다 잊어버려서 multi-step이 없다
- stateful protocol과 유사하게 진행
- 4가지 요소
- HTTP 응답에 쿠기 헤더 붙임
- HTTP요청에 쿠키 헤더 추가
- 사용자의 호스트에 보관된 쿠키 파일, 사용자의 브라우저에 의해 관리됨
- 웹 사이트의 백엔드 데이터베이스
- 쿠키 단점
- 스니핑을 통해 사생활 침해
- 영구적인 쿠키를 통해 다중 웹 사이트 추적 가능
- conditional GET
- 업데이트가 되었으면 전송하고 너가 최신버전이면 304 CODE로 응답
- Web caches (ISP에의해 주로 사용)
- proxy servers가 접속한 사이트를 caches에 저장해서 다음번에도 이용 (여러 클라이언트 접속)
- 사용하는 이유 : 소모되는 response 시간(RTT)를 줄일수 있다, traffic 줄일수 있다.
- COOKIES
- scalability
- reliable vs. unreliable message transfer
- TCP
- UDP
- “complexity at network edge”
- 어플리케이션 layer에서 실행되기때문에 network end host 인 edge에서 동작한다
출처 : Hoorin Park Assistant Professor, Department of Information Security, Seoul Women’s University
'공부' 카테고리의 다른 글
네트워크보안 v.02 _ TCP/IP Networks 공부 (UDP/TCP) (0) | 2022.10.07 |
---|---|
네트워크보안 v.01 _ TCP/IP Networks 공부(ARP) (1) | 2022.10.06 |
데통 공부 v.03 (Application layer, Transport layer, HTTP, Queue) (1) | 2022.09.20 |
데통 공부 v.02 (Loss, Delay, Throughput, layering, Security 공격, History) (1) | 2022.09.20 |
데통 공부 v.01 (Internet overview, network edge, access network, network core) (0) | 2022.09.20 |