01.Basic
HTTP Basic
인터넷 네트워크
message를 서버를 통해 어떻게 전달될까?
IP(Internet Protocol)
IP(Internet Protocol)
지정한 IP Address에 데이터 전달
Packet이라는 통신 단위로 데이터 전달
IP Packet 정보 : 출발지 IP, 목적지 IP, 기타.. 전송 데이터
인터넷 노드들끼리 목적지 IP를 향해 Packet을 전달
Internet Protocol의 한계
비연결성 (대상이 없거나 서비스 불능 상태일 경우)
비신뢰성 (패킷이 사라지거나, 순서가 지켜지지 않을 경우)
프로그램 구분
TCP, UDP
TCP, UDP
참고
> 프로토콜 계층 순서애플리케이션 계층 (브라우저, 채팅, 게임 등)
HTTP, FTP
OS
전송 계층 : TCP, UDP
인터넷 계층 : IP
네트워크 인터페이스
LAN 드라이버/장비
TCP (Transmission Control Protocol)
특징연결지향 (3 Way Handshake)
데이터 전달 보증
순서 보장 등..
IP의 한계를 해결. 대부분이 사용
UDP (User Datagram Protocol)
기능이 거의 없지만, 추가 설정 가능
단순하고 빠름
IP와 동일하지만 PORT, 체크섬 정도 추가
PORT
PORT
TCP/IP 패킷
IP로 목적지 서버 찾기
PORT로 같은 서버 안에서 프로세스 구분
클라이언트 IP : 100.100.1:1010
서버 IP : 200.200.200:80
0 ~ 65535 까지 할당 가능
0 ~ 1023 은 잘 알려진 포트이므로, 사용하지 않는 것을 추천
FTP : 20, 21
TELNET : 23
HTTP : 80
HTTPS : 443
DNS
DNS
Domain Name System
도메인명
(이름)과IP
(전화번호)가 저장된 전화번호부
📑
URI과 웹 브라우저 요청 흐름
URI
(Uniform Resource Identifier)
URI
(Uniform Resource Identifier)자원을 식별하는 방법
URI는
UResourceLocator : 리소스가 있는 위치를 지정
foo://example.com:8042/over/there?name=ferret#nose
UResourceName : 리소스에 이름을 부여
urn:example:animal:ferret:nose
또는 둘 다 추가로 분류될 수 있음.
URL 문법
https://www.google.com:433/search?q=hello&hl=ko
https
: 프로토콜 (http, https, ftp 등)www.google.com
: 호스트명433
: 포트 번호 (http는 80, https는 443)/search
: Path (리소스 경로)q=hello&hl=ko
: query parameter or query string 으로 불림
웹 브라우저 요청 흐름
https://www.google.com:433/search?q=hello&hl=ko
www.google.com : DNS 조회 -> 200.200.200.2
443 : HTTPS PORT 생략
웹 브라우저가 HTTP 요청 메시지 생성
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
socket 라이브러리를 통해 TCP/IP에 전달
TCP/IP 패킷 생성, HTTP 메시지 포함
..
응답 메시지
HTTP 기본
HTTP
HTTP
HyperText Transfer Protocol
HTTP에 거의 모든 형태의 데이터를 전송할 수 있음
HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML ...
특징
클라이언트 서버 구조
Stateless, connectionless
HTTP 메시지로 통신
단순, 확장성
클라이언트 서버 구조
Request-Response 구조
클라이언트는 서버에 request 후 response 대기
서버가 request에 대한 결과를 만들어서 응답
Stateful, Stateless
Stateful, Stateless
Stateful
Stateful
서버가 클라이언트의
이전 상태를 보존
ex) 점원이 바뀌면 고객의 상태를 알 수 없음 (로그인)
항상 같은 서버와 연결
일반적으로 브라우저 쿠키와 서버 세션들을 사용해 상태 유지
상태 유지는 최소한만 사용
Stateless
Stateless
서버가 클라이언트의
이전 상태를 보존 X
ex) 점원이 바뀌어도 고객의 상태를 알 수 있음 (소개 페이지)
스케일 아웃(수평 확장)에 유리
장: 서버 확장성이 높음, 응답 서버를 쉽게 바꿀 수 있음
단: 클라이언트가 필요한 데이터를 지속적으로 전송
비 연결성(connectionless)
Connectionless
서버 연결을 유지하는 모델
서버 자원 소모
서버 연결을 유지하지 않는 모델
최소한의 자원 유지
HTTP는 기본이 연결을 유지하지 않는 모델
서버의 자원을 효율적으로 사용
HTTP 지속 연결(Persistent Connections)로 TCP/IP의 3 way handshake 시간 소요 해결
HTTP/2, HTTP/3 에서 최적화
HTTP 메시지
HTTP 메시지 구조
시작 라인 (start-line)
헤더 (header)
공백 라인 (empty line, CRLF)
message body
Start-Line
request-line (
GET
/search?q=hello&hl=ko
HTTP/1.1
)HTTP 메서드 -GET, POST, PUT, DELETE
요청 대상 (absolute-path[?query])
HTTP Version
status-line
HTTP 버전
HTTP 상태 코드
200, 400, 500
이유 문구
HTTP Header
HTTP 전송에 필요한 모든 부가정보
message body를 제외하고 필요한 모든 메타 정보
Message Body
실제 전송할 데이터
HTML 문서, 이미지, 영상, JSON 등등 (Byte 표현 가능한 모든 데이터)
Last updated