컴퓨터 네트워크 02 애플리케이션 계층 | KOCW 한양대 이석복

protect-me·2021년 8월 23일
0

 📝 CS Study

목록 보기
3/37
post-thumbnail

KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복
KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복

위 강의를 수강하며 정리한 내용임을 밝힙니다.
네트워크 계층을 Top-Down 방식으로 위에서부터 한 겹씩 까보면서 디테일하게 알아보는 강의



TCP/IP 4 Layer
Application / Transport / Internet / Network Access
강의에서는 아래와 같이 나눔
Application / Transport / Network / Link

  • 앱 개발자가 프로그래밍할 때는 application 계층만 신경쓰기 때문에 transport이하 계층을 신경 쓸 필요가 없음
  • Client-Server architecture
    client는 필요할 때만 요청을 보내고, server는 24시간 같은 장소에서 작동(고정된 주소를 가짐)

Sockets

  • 프로세스는 socket을 통해 message를 주고 받음
  • 소켓이란 OS에서 제공해주는 API 중 하나
  • 인터넷상에 존재하는 컴퓨터는 고유한 주소를 갖고 있어야하는데 이를 IP주소라 함.
  • IP는 인터넷상에 존재하는 컴퓨터를 찾기 위한 것이고, 그 컴퓨터 안의 프로세를 찾기 위한 것이 port

What transport service does an app need?

  • application layer 는 transport layer에 종속적이며,
    transport layer에서 application layer에 다음과 같은 것들 보장받길 원하지만 보장해주지 않음.
  1. data integrity: 데이터 무결성(손실이 없음을 보장) => TCP는 이를 보장함
  2. timing: 제한 시간 내에 보냄
  3. throughput: 처리량
  4. security: 보안

TCP를 사용할 경우 1번은 보장함. 따라서 나머지 요소들을 Application에서 알아서 처리해야함

HTTP

  • hypertext transfer protocol: 하이퍼텍스트를 주고 받는데 사용하는 규약(약속)
  • WEB's application layer protocol
  • request/response로 주고받음
  • TCP를 기반
  • default 80번 port 사용
  • stateless : 클라이언트의 상태를 저장하지 않음(cookie 사용)
  • safari, explorer, chrome 은 모두 다른 application 이지만 모두 같은 HTTP (protocol) 을 사용하므로 브라우저와 무관하게 application 사용이 가능

HTTP 연결의 두가지 방식

1. non-persistent HTTP

  • 지속적이지 않은 HTTP
  • TCP 커넥션을 HTTP 사용후 close
  • 매 http 마다 TCP 커넥션을 새로 맺음(비효율)
  • 응답 시간이 persistent 방식보다 더 오래 걸림
  • RTT : round trip time(= 패킷 왕복 시간), 패킷을 목적지에 보내고 그 응답이 돌아오기까지의 시간

2. persistent HTTP

  • 지속되는 HTTP
  • 클라이언트/서버 간 하나의 TCP 커넥션으로 여러개의 HTTP 송수신을 수행(고효율)
  • 현재 사용하는 HTTP 1.1 버전은 persistent 가 default. (지속커넥션 사용)
  • 파이프라인 사용

Web caches(proxy server)

  • origin server에 HTTP 요청을 하는 대신 proxy 서버에 HTTP 요청
  • 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 함
  • 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장함
  • 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨
  • 전송 시간과 비용을 절약 + 불필요하게 외부와의 연결을 하지 않아도 되기 때문에 네트워크 병목 현상을 방지하는 효과

Conditional GET

  • Cache에 저장된 데이터가 최신이 아닐 수 있음.(일관성 문제)
  • 브라우저로 전달되는 객체들이 최신임을 확인하며 캐싱할 수 있도록 Conditional GET 사용
  • HTTP 요청에 If-Modified-Since 헤더 라인 포함.
  • 서버에 있는 객체의 마지막 수정된 날짜와 비교.
  • 수정된 객체라면 객체를 보내줌 (200 OK + data)
  • 최신 상태이면 object를 보내지 않음 (304 Not modified)

DNS

  • Domain Name System
  • hostname 를 ip 주소로 해석.
  • IP, Port 번호를 일일이 다 기억하기 힘드니, Domain Name으로 접속할 수 있도록 한 시스템
  • 전화번호부 역할
  • 한 곳에 몰아놓으면 문제가 생기기 때문에 계층화(hierarchial database)

centralize DNS 사용하지 않는 이유

  • 트래픽 집중
  • 먼 거리에 위치한 국가의 데이터베이스 접근 불리
  • 유지보수
  • 에러를 대비한 클러스터링 없음

TLD, Authoritative Servers

  • 보유하고 있는 host name에 대한 관리

DNS records

  • type A(Address), type NS(Name Server) => 두 가지 타입을 쌍으로 저장

DNS는 Host Name을 IP 주소로 해석하는 Protocol이며 HTTP 통신을 하기 위한 준비 과정임
DNS HTTP 모두 Application 계층의 Protocol임
DNS는 UDP 기반 / HTTP는 TCP 기반

Type Of Socket

  • 소켓은 TCP(SOCK_STREAM)와 UDP(SOCK_DGRAM) 두가지 타입이 있음

TCP(SOCK_STREAM)


이미지 출처: TCP socket function

  • Server: bind()를 통해 특정 포트번호와 연결
  • Server: accept()까지 진행 후 client의 요청이 올 때까지 대기
  • Client: 포트를 특정할 필요가 없기 때문에 bind()가 없음


📚 참고

KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복
KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복
[Network] 2. Application layer : HTTP, Cookie, Web Cache, Conditional GET, SMTP
[네트워크] 한양대 컴퓨터 네트워크 이석복 교수님 2015년 - 2. 컴퓨터 네트워크 기본2


Photo by Nastya Dulhiier on Unsplash

profile
protect me from what i want

0개의 댓글