[컴퓨터네트워크]어플리케이션 계층

SU-DAA·2023년 7월 24일
0

CS기초

목록 보기
2/3

http://www.kocw.net/home/cview.do?cid=6b984f376cfb8f70
이석복 교수님의 컴퓨터네트워크 수업을 정리한 내용입니다

계층화 된 네트워크 계층 중, 가장 상위계층인 어플리케이션 계층에 대해서 먼저 다룬다.

서버-클라이언트

서버

  • IP주소 고정
  • 항상 열려있다

클라이언트

  • 서버와 상호작용
  • 동적인 IP주소를 가지고 있다

전송 프로토콜 서비스

TCP

(전송 제어 프로토콜) 연결 지향 프로토콜

UDP

(사용자 데이터그램 프로토콜) 연결 없는 프로토콜

소켓 Socket

  • 프로세스는 소켓을 이용하여 메세지를 송수신 한다
  • 소켓은 일종의 통신 엔드포인트로서, 특정 IP 주소와 포트 번호를 바인딩하여 네트워크 상에서 식별된다

HTTP

HTTP: hypertext transfer protocol

  • 하이퍼텍스트를 전송하는 프로토콜
    ( 프로토콜이란? 컴퓨터 네트워크나 통신에서 사용되는 규칙과 규약의 모음 )
  • 웹은 HTTP의 별칭
  • HTTP는 TCP를 사용한다
  • 클라이언트에 대한 정보를 저장해 놓지 않는다 -> Stateless하다
  • 80번 port 사용

HTTP 연결 두가지 방식

  1. non-persistent HTTP(지속적이지 않은 HTTP)
    매번 TCP연결을 새로 맺는다
    응답시간이 persistent방식 보다 오래 걸린다
  2. persistent HTTP(지속적인 HTTP)
    TCP Connection을 재사용 한다 -> 하나의 TCP Connection으로 여러개의 HTTP 송수신을 수행한다

쿠키 Cookies

  • HTTP의 stateless를 보완하기 위해
    웹 서버가 클라이언트에게 정보를 저장하고 추적하는데 사용
  • 사용자 식별 가능

웹 캐시 Web Caches(Proxy server)

  • origin server에 HTTP 요청을 하는 대신 proxy 서버에 HTTP 요청
  • 사용자에 의해 빈번하게 요청되는 데이터를 사용자와 가까운 웹개시 서버에 보관하여 빠른 서비스를 제공한다
  • 장점
    - 응답 시간을 줄일 수 있다
    - 웹 트래픽을 줄일 수 있다

Conditional GET

  • 조건이 맞을때만 GET을 하겠다
  • Proxy server에서 생기는 일관성 문제를 해결하기 위해 사용
    (일관성 문제: Cache에 저장된 데이터가 최신이 아닐 수 있음)

DNS(Domain Name System)

  • 전화번호부 라고 생각
  • hostname 를 IP 주소로 해석.
    (www.naver.com -> 125.209.222.141)
  • IP, Port 번호를 일일이 다 기억하기 힘드니, 도메인 이름으로 접속할 수 있도록 한 시스템
  • 분산화, 계층화 시켜놨다

DNS 구조

  • 최상위 DNS 서버: 루트 네임 서버
  • 아래 DNS 서버: TLD(Top Level Domain) 네임 서버
  • 그 아래 실제 IP주소를 가지고 있는 DNS서버: Authoritative name 서버

-> 특정 DNS 서버의 하위 DNS 서버는 해당하는 상위 DNS서버가 모두 관리

DNS 동작 과정

  1. Iterative query

    1) 사용자가 특정 호스트 이름의 IP 주소를 요청하는 쿼리를 날리면, Local DNS 서버가 먼저 받는다.
    2) Local DNS 서버는 루트 네임 서버에게 쿼리를 날리고, 루트 네임 서버는 .edu에 해당하는 TLD를 알려준다.
    3) Local DNS 서버는 edu에 해당하는 TLD에게 쿼리를 날리고, TLD는 umass.edu에 해당하는 DNS 서버를 알려준다.
    4) Local DNS 서버는 umass.edu에 해당하는 DNS 서버에게 쿼리를 날리고, 해당 DNS 서버는 gaia.cs.umass.edu에 해당하는 IP 주소를 알려준다. 즉, umass.edu를 책임지는 DNS 서버가 authoritative name 서버인 것이다.
    5) 마지막으로 Local DNS 서버가 사용자에게 IP 주소를 전달한다.

=> 최종 IP 주소를 받을 때까지 요청 &응답을 계속해서 local name server가 반복

  1. Recursive query

    1) 사용자가 특정 호스트 이름의 IP 주소를 요청하는 쿼리를 날리면, Local DNS 서버가 먼저 받는다.
    2) Local DNS 서버는 루트 네임 서버에게 쿼리를 날리고, 루트 네임 서버는 .edu에 해당하는 TLD 서버에게 쿼리를 날린다.
    3) edu에 해당하는 TLD 서버는 umass.edu에 해당하는 DNS 서버에게 쿼리를 날린다.
    4) umass.edu에 해당하는 DNS 서버는 gaia.cs.umass.edu에 해당하는 IP 주소를 TLD 서버에게 알려준다. 즉, umass.edu를 책임지는 DNS 서버가 authoritative name 서버인 것이다.
    5) TLD 서버는 루트 네임 서버에게 IP 주소를 알려준다.
    6) 루트 네임 서버는 Local DNS 서버에게 IP 주소를 알려준다.
    7) 마지막으로 Local DNS 서버가 사용자에게 IP 주소를 전달한다.

=> recursive하게 실제 domain name을 가지고 있는 server까지 query가 이동하여 IP 주소를 얻는 방법

TTL-> 캐시 문제 때문에 시간 정해놓고 레코드 없에기

profile
아직은 감자

2개의 댓글

comment-user-thumbnail
2023년 7월 24일

많은 도움이 되었습니다, 감사합니다.

1개의 답글

관련 채용 정보