컴퓨터네트워크 Chap2 Application Layer

Maru·2022년 10월 30일
0

컴퓨터 네트워크

목록 보기
2/2
post-thumbnail

✅ 5계층 Applications의 3가지 타입

1. loss-sensitive applications

  • e-mail
  • web document browsing
  • text messaging
  • Telnet
  • File transfer service
    ** 대부분 text based인 응용이다.

2. delay-sensitive and throughput-sensitive applications

  • real-time streaming
  • interactive games
  • Voice over IP

3. Loss-sensitive, delay-sensitive and throughput-sensitive applications

  • VoD streaming

Creating Network App

📢 Socket(소켓)이란?

Application lyaer(5계층)와 transport layer (4계층)을 연결하는 Interface
소켓이 있기 때문에 App 개발자는 Network를 몰라도 socket call만 잘 하면 개발을 할 수 있다.

network-core device sw는 신경 쓸 필요 x

  • net core device (라우터, 스위치 등)은 user application을 실행하지 않기 때문에, app개발자는 net core를 신경 쓸 필요가 없다. (소켓 콜만 잘하면 된다는 뜻)

Application architectures

Application의 구조 2가지

1. Client-Server (대부분 이 경우임)

  • HTTP, SMTP, DNS

server

  • 서버는 always-on host다.
  • permanent IP (Public) 를 가져야한다.
  • DNS 서버에 private ip는 저장이 안됨, 중복 될 수 있기 때문, IP가 변경되면 DNS 서버도 업데이트 해야해서 비효율적
  • 요청이 오기를 기다리고 있다.

client

  • 서버와 통신한다. (클라이언트끼리는 x, 그건 P2P임)
  • 서버와 intermittently하게 연결된다. (간헐적)
  • dynamic, pivate, public IP를 가진다.
  • 서버와의 통신은 항상 client가 initiate한다. (내 ip 주소 넣어서 서버에 알려줌)

2. Peer-to-Peer(P2P)

  • BitTorrent(file sharing), Skype, IPTV
  • 한 peer가 client가 되기도, server가 되기도 한다.

server

  • 항상 ON이 아니다.
  • 임의의 end system끼리 직접적으로 communicate
  • peer들은 service provider에 포함되는게 아니다.
  • peer들은 request&provide 둘 다 한다.
  • self scalability가 가능하다
    : 새로운 peer들이 new service capacity를 제공
  • peer들은 간헐적으로 연결되고, IP 주소도 바뀐다.
    [단점 3가지]
    1) Security 보장 안됨
    2) Reliability (신뢰성 문제)
    3) ISP의 P2P freiendly service 제공 여부를 따져야한다.
  • 불안정하고, 믿을만한 서버가 되지 못한다.
  • 관리도 복잡하다.

🥲 point to point : 2계층, 물리 계층에서 쓰는 어휘임.

Processes communicating

process란?

  • host에서 running되는 program

  • 같은 host에서 돌고있는 두개의 프로세스는 inter-process communication을 한다. (OS에 의해 관리)

  • 서로 다른 host에서 소통하고 있는 프로세스는 서로 message를 주고 받는다.

  • 메세지는 core network를 통해, socket으로 주고 받는다.

  • P2P에서의 Application은 같은 host에 c.p와 s.p가 있다.

Sockets

🥲 5~3계층 : OS에 포함 (SW)
🥲 2~1계층 : Network Interface Card에 포함 (SW~HW)

Addressing process

  1. IP 주소 : 32bit 주소
  2. Port 넘버 : process와 관련있음
  • HTTP 서버 : 80포트
  • HTTPs 서버 : 443 포트
  • SMTP 서버 : 25 포트
  • SMTP + 보안 : 465 포트

🥲 host != ip address
여러 ip를 하나의 NCI에 설정 가능 + virtual
혹은 여러개의 NIC를 사용하기도 한다.

Application-layer protocol 정의

  1. type of msg
  2. msg syntax
  3. msg semantics
  4. rules for when&how process msg

open protocol
: RFC에 정의 되어있어, 모든 사람이 사용 가능한 protocol (HTTP, SMTP)
사설 프로토콜 ex) Skype

Transport Service for App

  1. data integrity(loss)
  2. timing (delay)
  3. throughput : multimedia같은 서비스는 minimum amount of throughput이 필요
  4. Security : SSL -> TLS

Transport Protocol

1. TCP

  • reliable data transfer (rdt) : no-loss, in-order
  • connection-oriented : 셋업 딜레이가 있다.
  • flow control : 상대방의 버퍼가 넘치지 않게 조절
  • congestion control : network 라우터의 아웃풋 버퍼가 넘치지 않게 함
  • 최소 throughput 보장이 x
  • security x
  • timing x

2. UDP

  • unreliable data transfer
  • 신뢰성 x, 셋업 x, 플로우 컨트롤 x, congestion 컨트롤 x
  • PING에 사용
  • smart app에 사용

App에 따른 5,4계층 프로토콜

✅ DNS 서버는 보통 UDP를 사용

  • TCP를 사용하는 경우는 DNS 서버의 DB를 통채로 옮길 때이다.

Web and HTTP

Overall HTTP Operation

  • HTTP는 stateless하다.

HTTP Connection의 두 타입

1) non-persistent

  • 모든 object들이 서로 다른 소켓 사용
    1. w/o parrellel
    2. w/ parrellel
    • 4RTT만에 완료
      🥲 소켓을 여려개 열어서 사용하면 한 유저가 link 자원을 많이 쓰게 됨 (불공정)

2) persistent

  • 모든 object들이 같은 소켓으로
  • 3RTT만에 다 받을 수 있다.

Head Of Line Blocking 문제

HTTP request msg

  • 아스키 코드
  • accept-encoding : 인코딩 방식이 object마다 다르다?/
  • host 주소 또 알려주는 이유 : cache miss를 대비해

HTTP response msg

  • 서버가 유저에게 set-cookie:1678 할당
  • 이후 유저는 이 쿠키 값을 계속 request msg에 포함
  • third party cookie

Web Cache (proxy server)

  • client와 server 역할 둘 다 해

하는 이유

    1. reponse time 줄여
    1. access link의 traffic 줄여

단점

  • cache inconsistency : 오리지널 정보 퀄리티가 떨어질수있음

Conditional GET

  • object가 up-to-date면 안보내
  • transmission delay없고, access link utilzation 낮춤
  • request msg 보낼 때 if-modified-since를 보내서 이거 이후로 수정 됐냐고 물어봄
profile
함께 일하고 싶은 개발자

0개의 댓글