운영체제 위에서 실행되는 프로세스들이 다른 머신에 있는 프로세스와 메시지를 주고 받는 것
클라이언트: 필요할 때만 요청을 보냄
서버: 24시간 작동되며 요청을 받음, 고정된 주소 가짐
운영체제에서 제공하는 API 중 하나
프로세스들 사이의 communication에서 socket을 통해서 addressing
socket은 IP 주소와 port 번호의 결합
하이퍼텍스트를 주고 받는데 사용하는 규약
web의 application layer protocol, TCP 기반, 80번 포트 사용
request와 response로 이루어짐
stateless: 클라이언트의 상태를 저장하기 않음
TCP 커넥션을 HTTP 사용 후 close
매 http마다 TCP 커넥션을 새로 맺음 - 비효율적
응답 시간이 오래 걸림
RTT: Round Trip Time, 패킷을 목적지에 보내고 그 응답이 돌아오기까지 걸리는 시간
클라이언트/서버 간 하나의 TCP 커넥션으로 여러 개의 HTTP 송수신 수행 - 효율적
한 번 연결이 되면 계속 사용 가능
클라이언트가 HTTP request를 소켓으로 보내면 request message 생성
첫 번째 줄에 어떤 정보를 요청하는지, 나머지는 부가 정보
서버에서 클라이언트가 요청한 파일을 보낼 때 response message 생성
헤더에 부가적인 정보 함께 담겨 있음
HTTP의 stateless 성질 보완
사용자가 서버에 처음으로 request → 쿠키 생성
이후부터 접속할 때마다 이전에 생성된 쿠키 이용하여 사용자 인식
original server에 요청을 하는 대신 proxy server에 HTTP 요청
proxy server: 서버와 클라이언트 사이에서 대리로 통신을 수행하는 서버
캐시의 일관성 문제 해결하기 위해 사용
브라우저로 전달되는 객체들이 최신임을 확인
HTTP request에 If-Modified-Since 헤더 라인 함께 전송
Domain Name System
IP 주소와 Port 번호를 도메인 네임으로 매핑해서 접속
DNS 서버를 한 대만 사용하는 경우 트래픽이 집중되는 문제가 발생하므로 분산과 계층화 시켜야 함
Top-Level Domain Server: .com, .org, .net과 같은 도메인 보유
Authoritative DNS Servers: 네트워크를 운영하는 기관에서 보유하는 도메인 매핑
type A(Address), type NS(Name Server)
두 가지 타입을 쌍으로 저장
NS를 통해 서버 이름 얻음, A를 통해 서버의 IP 얻음
DNS는 UDP 기반(크기가 작아서 유실될 확률이 낮기 때문에 빠른 UDP 사용) / HTTP는 TCP 기반
사용자가 메일 전송 → User agent →(SMTP)→ Mail server →(SMTP)→ Mail Server →(Mail Access Protocol)→ user agent → 받는 사람