최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인응용서비스를 수행 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 formatkeep-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의 의미가 정해짐