danbibibi
article thumbnail

Application Layer ( 응용 계층 )

  • 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행 ex ) web, email 등
  • 전송 단위 : 메세지 (message)

 

HTTP (Hypertext Transfer Protocol)

: 웹 상에서 클라이언트는 HTTP프로토콜을 이용하여

  웹에 있는 object들을 볼 수 있고 필요한 동작들을 요청할 수 있음

  • Application layer protocol, TCP 이용 (port# 80)
  • "HTTP is stateless" : request가 오면 response하고 끝! (서버는 클라이언트의 예전 정보 기억 X)
💡 HTTP 통신
1) 클라이언트는 서버에 대한 TCP connection(port 80)을 열어 놓음
2) 서버는 클라이언트로부터 TCP커넥션을 받음
3) 웹(서버)과 브라우저(클라이언트)는 HTTP메세지를 교환함
4) TCP커넥션을 닫음
💡 HTTP 특성
비연결성 (Connectionless)
: 클라이언트와 서버가 한 번 연결을 맺은 후, 
  클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질

무상태 (Stateless)
: Connectionless로 인해 서버가 클라이언트를 식별할 수 없는 것

💡그렇다면, HTTP 프로토콜은 왜 한 번 맺은 연결을 끊어 버릴까?
⇒ HTTP는 인터넷 상에서 불특정 다수의 통신 환경을 기반으로 설계 됨
⇒ 서버에서 다수의 클라이언트와 연결을 계속 유지하는 경우, 많은 리소스 발생
연결을 유지하기 위한 리소스를 줄이면 더 많은 연결 가능
💡 HTTP connections

1) Non-persistent HTTP
: 하나의 object 당 한 번의 TCP connection 수립
  → response time : 2RTT + file transmission time

2) Persistent HTTP
: 한 번의 TCP connection을 통해 여러개의 object를 얻어옴
  (서버는 response를 보낸 이후에도 connection을 열어 놓음) `keep-alive`

 

HTTP request message

HTTP request message: general format
keep-alive (persistent HTTP)

 

HTTP response message

💡 HTTP response status codes
200 OK : 클라이언트 요청이 정상 수행된 경우 (응답에 대한 메시지가 포함)
301 Moved Permanently : 요청된 리소스가 영구적으로 이동 페이지로 이동됨
400 Bad Request : 클라이언트 요청이 부적절한 경우 (부적절한 이유를 응답 Body에 넣어야 함)
404 Not Found : 클라이언트가 요청한 리소스가 존재하지 않는 경우
505 HTTP Version Not Supported

 

Cookies

  • 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 작은 텍스트 파일
  • 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장
  • 웹사이트는 쿠키를 통해 접속자의 장치 인식
  • 사용자의 정보를 기억할 수 있는 수단 → HTTP의 단점(stateless)을 해결
  • ex) 자동 로그인, 최근 검색 리스트

💡 쿠키 생성 과정
1. 클라이언트가 서버에 정보 요청
2. 서버는 쿠키 생성
3. 생성한 쿠키를 요청한 정보(HTTP 헤더)와 함께 돌려 보냄
4. 클라이언트는 로컬에 쿠키 저장
5. 서버에 재접속 시 이미 쿠키가 있는 경우, 서버에 쿠키 전달
6. 업데이트할 정보가 있다면, 서버는 해당 쿠키를 요청한 정보와 함께 돌려 보냄
💡 쿠키를 사용하는 이유
HTTP
  → 리소스를 아끼기 위해 클라이언트와 서버가 연결되지 않음 (비연결성, Connectionless)
  → 비용을줄이기 위해 클라이언트의 상태를 가지고 있지 않고,
       클라이언트가 요청 시 모든 정보를 담아 보냄 (무상태, Stateless )

⇒ 사용자의 정보를 저장할 수 없기 때문에,
    웹사이트는 사용자를 구별할 수 없고, 사용자는 매번 번거로운 인증을 진행해야 했음
쿠키는 사용자의 정보를 기억할 수 있는 수단 = HTTP의 단점 해결
💡 쿠키의 장단점
장점 : 번거로운 작업(ex 로그인)의 편리화, 사용자 맞춤 설정(ex 다크모드) 가능
단점 : 개인 정보를 침해 당할 소지가 있음 (사용자의 동의 필요)
💡 쿠키에는 일반적으로 만료일 존재
세션 쿠키 : 세션 동안만 저장 (브라우저를 닫는 경우 자동으로 삭제)
지속적 쿠키 : 수동으로 삭제되기 전까지 남아있는 등 더 오랜 기간 컴퓨터에 저장

 

Web caches (proxy server)

  • 클라이언트와 서버 사이에 위치
  • 클라이언트가 서버에 직접 web object를 요청하는게 아니라 web cache를 통해 요청 
    • 요청하는 object가 cache 내에 있는 경우, cache에서 처리
    • 요청하는 object가 cache 내에 없는 경우, server에 request
  • 클라이언트 입장에서는 응답속도가 빨라짐
  • 서버 입장에서는 과부하가 줄어듦
  • 네트워크 소유자, 관리자 입장에서는 트래픽이 줄어 회선 사용료 감소
  • 큰 비용 없이 성능 개선 가능

💡 proxy server가 필요한 이유
   1. 보안 : 서버의 IP를 숨기는 것 가능 (프록시 서버 IP만 알면 됨)
   2. 캐시 : 이전에 했던 요청을 proxy server에 저장해두기 때문에 속도 향상
   3. 우회 : 어느 곳에서 접속한지 숨길 수 있음 (역기능이기도 함)
💡 conditional GET
 : web cache가 자신이 가지고 있는 copy본이 최신 버전인지 확인할 때 유용하게 사용 가능

 

SMTP

  • E-mail 전송을 위한 프로토콜
  • 신뢰성 있는 메시지 전송을 위해 TCP를 사용 (port# 25)
  • 아스키코드 형태로 메세지 전송

💡 HTTP vs SMTP
- (클라이언트 입장) HTTP가 pull이라면, SMTP는 push 
- HTTP는 각각의 object들이 캡슐화되어 그차체의 메시지로 보내지는 반면,
  SMTP는 여러개의 object들이 여러개의 메시지 형태로 보내짐

 

DNS (Domain Name System)

  • 웹사이트에 접속 할 때 외우기 어려운 IP 주소 대신 도메인 이름을 사용
  • 도메인 ↔ IP 주소 과정 필요
  • 분산된 계층형 데이터베이스

분산화-계층화 / 분산화-계층화 이유

💡 Root DNS Server : TLD 서버에 대한 정보만 가지고 있음
💡 Top-Level Domain (TLD) servers : 루트 노드와 인접해 있는 최상위 도메인
💡 authoritative DNS servers : 최종적인 hostname과 IP 주소를 보유
💡 Local DNS name servers
 - cache 역할
 - 오늘 날 거의 모든 네트워크에서 사용

💡 DNS records
    - 총 4가지 필드 (name, value, type, ttl)
       * ttl : entry 유효 시간
    - type에 따라 name과 value의 의미가 정해짐

 

DNS 흐름

'CS > 네트워크' 카테고리의 다른 글

Transport Layer (전송 계층)  (0) 2023.02.27
OSI 7 Layer  (0) 2023.02.08
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로