응용계층
HTTP : 웹에서 HTML, JSON 등의 정보를 주고 받는 프로토콜
HTTPS : HTTP에서 보안이 강화된 프로토콜
FTP : 파일 전송 프로토콜
SMTP : 메일을 전송하기 위한 프로토콜
SSH : CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
RDP : Windows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
WebSocket : 실시간 통신, Push 등을 지원하는 프로토콜
전송계층
TCP : HTTP, FTP 통신 등의 근간이 되는 인터넷 프로토콜
UDP : 단방향으로 작동하는 훨씬 단순하고 빠르지만, 신뢰성이 낮은 인터넷 프로토콜
IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)
포트 번호는 0~ 65535까지 사용할 수 있다.
잘 알려진 포트 번호
22 : SSH
80 : HTTP
443: HTTPS
IP 주소가 지번 또는 도로명 주소라면, 도메인 이름은 해당 주소에 위치한 상호라고 생각하면 된다.
도메인 이름을 이용하면, 한눈에 파악하기 힘든 IP 주소를 보다 간단하게 나타낼 수 있다.
브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는 해당 도메인 이름과 매칭된 IP 주소를 확인하는 작업이 반드시 필요하다. 네트워크에는 이것을 위한 서버가 별도로 있는데 이를 DNS라고 한다.
호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.
클라이언트와 서버 사이에서 데이터가 교환되는 방식
요청(Requests)
응답(Responses)
start line : start line에는 요청이나 응답의 상태를 나타낸다. 항상 첫 번째 줄에 위치한다. 응답에서는 status line이라고 한다.
HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합.
empty line : 헤더와 본문을 구분하는 빈 줄이 있다.
body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함한다. 요청과 응답의 유형에 따라 선택적으로 사용한다.
상태를 가지지 않는다는 뜻
HTTP로 클라이언트와 서버가 통신을 주고받는 과정에서, HTTP가 클라이언트나 서버의 상태를 확인하지 않는다.
HTTP는 통신 규약일 뿐이므로, 상태를 저장하지 않는다. 따라서 필요에 따라 다른 방법(쿠키-세션, API 등)을 통해 상태를 확인할 수 있다.
Stateless(무상태성)가 HTTP의 큰 특징이라는 것을 기억하자!