컴퓨터 네트워크 - 2(Application layer)

박승현·2023년 9월 9일

컴퓨터 네트워크

목록 보기
2/6

Client-Server

  • server
    • 항상 켜져있음
    • 영구적인 IP 주소
    • 데이터 센터
  • client
    • 서버와 통신
    • 간헐적 연결
    • 비영구적인 IP 주소
    • 클라이언트간 통신 x

P2P

  • 서버 없음
  • 엔드시스템 간의 통신
  • IP의 변동과 간헐적 접속으로 관리가 어려움

process

  • 같은 호스트의 2개의 프로세스 : OS가 제공하는 통신 밥법으로 통신
  • 다른 호스트 : 메시지를 주고 받아야 함

Socket

  • 소켓을 통해 통신
  • 소켓통신을 위해 프로세스의 고유한 번호를 식별해야함
    • IP주소는 호스트만을 식별 가능
    • 추가로 포트번호로 프로세스까지 구분 함

Protocol

  • type of message
    • request? response?
  • message syntax
    • 형식을 정의
  • message semantics
    • 의미 정의
  • reles

need

  • data integrity
    • 데이터가 변조 되는지? 오디오는 100퍼까진 필요 없을 수 있음(tolerate)
  • timing
    • low delay? (game)
  • throughput
    • 미니멈을 요구 할 수 있음(미디어 앱)


TCP

  • reliable tranport : 데이터 손실이 없음
  • flow control : 전송속도 조절(받는 사람과 속도 맞추기 가능)
  • congestion control : 네트워크 느릴떄 속도 조절로 혼잡 제어
  • not provide
    • timing : 이건 다 불가능함
    • security
  • connection-oriented : 미리 서버와 클라이언트 연결 해야함

UDP

  • unreliable data transfer : 데이터 손실이 있을 수 있음
  • not provide : timing, security, flow control, reliability
  • connection setup이 필요 없기 떄문에 빠르게 보내고 싶을때 사용

SSL

  • TCP의 보안적 문제점을 보안하기 위해 어플리케이션 레이어에 라이브러리로 구현되어있음

HTTP : Hypertext transfer protocol

  • TCP 사용
    • 클라이언트 소켓 생성
    • 서버 응답
    • HTTP 전송
  • HTTP : stateless : 상태를 저장하지 않는다

HTTP connection

  • non persistent HTTP
    • 한번에 하나의 오브젝트만 주고받기 가능(이미지 10개면 10번 연결 해야함
    • 반응 시간 : 2RTT + file transmissin time
      RTT : 한번 왕복하는 시간
  • persistent HTTP
    • 커넥션을 유지 : 1RTT만 필요

HTTP request message

Method types

  • HTTP/1.0
    • GET, POST, HEAD
  • HTTP/1.1
    • GET, POST, HEAD, PUT, DELETE

HTTP response message

첫줄 : status code

  • 200 : OK
  • 301 : Moved Parmanently : 파일이 이동함, 추가로 이동된 위치를 제공
  • 400 : Bad Request : 잘못된 형식
  • 404 : Not Found
  • 505 : Version Not Serviced

cookies

  • 클라이언트에 쿠키정보를 저장
  • 후에 해당 사이트의 쿠키정보를 접속시 보냄
  • 쿠키정보가 포함된 요청이면 서버에서 다른 정보를 보낼 수 있음

web caches (proxy server)

오리진 서버 보다 가까운 프록시 서버에 정보가 있으면 거기서 제공해줌(정보가 없으면 프록시 서버가 오리진에 요청 후 일정 기간동안 저장해둠)

Conditional GET

  • 서버에 저장 되있는 데이터가 지금 가지고 있는 것과 동일 한지
  • 동일하면 304 NOT Modified
  • 동일 하지 않으면 200 OK로 바뀐 정보 보냄

delay


E-mail

  • mail server가 존재
  • 보내거나 받을떄 먼저 메일 서버에 저장
  • 서버간의 통신을 위한 protocol : SMTP
  • mailbox : 받는 메일 저장
  • message queue : 보내는 메일 큐에 넣고 보냄
  • 메일서버가 클라이언트, 서버 역할로 SMTP로 통신

SMTP

  • TCP 사용(포트 = 25)
  • direct transfer : 경유 x
  • handshaking(SMTP 통신을 위한 메시지)


pop3 and IMAP

  • pop3
    • 클라이언트가 서버에서 이메일을 가져오면 서버에서 삭제
    • 오프라인상태에서 클라이언트가 이메일 관리
    • 일반적으로 한 기기에서만 관리
  • IMAP
    • 서버, 클라이언트가 연결된 상태에서 이메일 관리
    • 실시간으로 이메일을 동기화

-> pop3는 이메일을 다운로드 후 관리 IMAP은 실시간 동기화


DNS

  • Application layer
  • hostname to IP address
  • 같은 호스트를 여러개의 이름으로 부를 수 잇음
  • 여러개의 IP를 하나의 이름으로 정의해 부하를 줄임(구글)
  • 분산된 네임서버가 계층적으로 저장되어있는 데이터베이스 구조

중앙집중적이지 않은 이유

  • 하나의 서버가 동작을 못하면 전체에 문제가 생김
  • 트래픽이 몰릴 수 있음
  • 거리가 멀면 딜레이가 생김(propagation delay)
  • 도메인 네임과 IP간의 매핍정보 유지가 힘듬

계층적으로 요청


DNS 계층 구조

  • Root name server

    • 전세계 13개의 루트 네임 서버(내용이 똑같고 서로 복제)
    • 최상위 계층
  • TLD server(top-level-domain)

    • .KR .com . org등을 담당
  • authoritative server

    • 한 조직을 관리하는 서버
    • 이 서버의 내용이 True이면서 복제해서 사용하려면 이 서버의 내용을 따라야함
  • 로컬 DNS 네임 서버

    • 계층에 속하지는 않는다
    • 프록시 서버 역할(캐시) 찾는 데이터가 없을 경우 계층적으로 DNS서버에 요청
    • 호스트가 DNS 쿼리를 그들의 로컬 DNS서버에 전송

    2가지 쿼리

  • iterated query(반복)

로컬 DNS서버가 루트, TLD, authoritative서버에 각각 물어본 뒤 종합해서 제공

  • recursive

재귀방식 : 디도스나 성능의 문제로 잘 사용하지 않음


caching

  • 보통 일정시간(TTL)만큼 캐시를 저장함
  • out of data : 서버 정보가 바뀌어도 캐시는 TTL만큼은 유지가됨 -> 그 후에 캐시가 사라지면 다시 요청하는데 그 전까지는 어쩔 수 없이 다른 정보가 있을 수 있다

records

  • RR: 하나의 레코드로 저장
  • 타입의 종류에 따라 name과 value의 형식이 바뀜
  • TTL시간 후 삭제

protocol, message

protocol

  • message타입 : query, reply 2가지
  • 형식은 똑같음

inserting record into DNS

.com을 담당하는 TLD서버에 IP와 이름을 저장 해야함

  • authoritative server 서버를 정의(NS타입)
  • 위 서버릐 ip주소(A타입)

2개의 RR를 TLD서버에 저장


Attacking DNS

DDOS

  • 루트 서버 공격
    • 트래픽 필터링과 캐시가 있기 떄문에 성공한 적 없음
    • TLD서버 공격 : 사기업이 운영하기 때문에 취약할 수 있음
  • 리디렉션 공격
    • man in middle : 쿼리 가로채기
    • DNS 해킹 : 잘못된 정보를 보내 캐싱 시킬수 있음
    • DNS를 DDOS로 활용 : 소스 ip를 공격 대상으로 활용 : 많은 쿼리가 요청 될 수 있음

P2P application

client-server VS P2P

  • c-s :
    서버에서 클라이언트 요청만큼 업로드(
  • p2p :
    p2p는 서버에서 최소 한번 업로드 후 각 클라이언트가 또 업로드 가능 : 결국 요청 수 만큼만 업로드 하면 되는데 업로드 하는 기기가 늘어남


BitTorrent

  • 파일을 여러 조각(256kb 단위)으로 쪼갠 후, 토렌토 안의 피어들끼리 공유.
  • 트랙커(tracker) : 토렌트에 참여하고 있는 피어들의 정보를 가지고 있는 서버
    토렌트(torrent) : 파일들을 교환하는 피어 그룹
  • 파일이 없는 피어는 추적기로부터 피어 목록을 가져와서, 다른 피어로부터 파일의 조각들을 받아 누적함.
  • 다운로드하는 동안 피어가 다른 피어에 파일 조각들을 업로드함.
  • 파일을 교환하는 피어 변경 가능.
  • 피어가 전체 파일을 가지고 있으면, 토렌토를 떠날 수도 남아있을 수도 있음.

requesting and sending

  • requesting
    • 피어마다 가지고 있는 파일 조각의 하위 집합이 다름.
    • 주기적으로, 각각의 피어들에게 그들이 가지고 있는 파일 목록 리스트를 요청
    • rarest first : 청크중 가장 적은 피어만이 가지고 있는 청크를 먼저 요청
  • sending
    • 가장 많은 chunk를 제공하는 peer top4에게 chunk 전송.
    • 10초마다 top4를 재평가
    • 30마다 랜덤으로 peer를 선택하고 chunk를 보냄. (top4가 고정되는 것을 방지하기 위해)

Video Streaming and CDN

  • Video : 이미지의 연속
    -> 모든 이미지를 전솔하면 트래픽이 너무 커짐
  • redundancy를 활용한 코딩으로 트래픽을 줄임
    • spatial : 이미지 속 배경의 중복. 동일한 배경의 경우 모든 색상 값을 내보내지 않고 반복되는 값만 내보냄.(어디부터 어디까지는 무슨 색이다)
    • temporal : 이전 이미지와 다음 이미지에서 달라진 부분만 내보냄.
  • CBR and VBR
    • CBR : 고정된 비트 레이트 : 파일크기 일정하게 유지, 특정 대역폭 요구시 유리 낭비발생 가능성 있음
    • VBR : 가변적 비트 레이트 : 복잡도에 따라 가변적으로 비트레이트 조절 오래걸릴 수 있음

Streaming multimedia : DASH

DASH (Dynamic, Adaptive Streaming over HTTP)

  • Server
    • 하나의 비디오를 여러개의 청크로 저장
    • 각각의 청크는 다른 rate로 저장(같은 시간대의 청크가 여러 종류인거임)
    • manifest file : 각각의 청크를 여러 서버에 저장하고 그 정보를 기록해둔 파일
  • client
    • bandwidth를 파악
    • menifest파일 요청, bandwith에 맞는 청크를 요청
    • 시간에 따라 다른 rate의 청크를 요청할 수 있음

CDN

CDN (Content Distribution Network)

  • 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩 시간을 최소화하는 콘텐츠 전송 기술. 각 지역에 캐시서버를 분산 배치해서, 근접한 사용자의 요청에 원본 서버가 아닌 캐시 서버가 콘텐츠를 전달하도록 함.
  • menifest 파일을 통해서 가까운 CDN에 영상을 요청하는 방식

-> Over The Top(OTT) : 인터넷으로 데이터를 주고 받는 것


Socket Programing

  • 소켓은 16비트이다
profile
KMU SW

0개의 댓글