본문 바로가기

모든 개발자를 위한 HTTP 웹 기본 지식(김영한)

(7)
HTTP 메시지 기본 start-line 시작라인 header 헤더 empty line 공백라인 (CRLF) message body HTTP 요청 메시지 GET /search?q=hello&hl=ko HTTP/1.1 시작라인 HOST : www.google.com 헤더 공백 시작라인 : request-line request-line = HTTP 메서드 (GET: 조회) + 요청대상 (/search?q=hello&hl=ko) + HTTP Version HTTP 응답 메시지 HTTP/1.1 200 OK 시작라인 Content-Type: text/html;charset=UTF-8 헤더 Content-Length: 3423 공백 message body ... 시작라인 : status-line status-line = HTTP ..
비 연결성(connectionless) HTTP는 기본이 연결을 유지하지 않는 모델 => 서버의 자원을 아낀다. 일반적으로 초 단위의 이하의 빠른 속도로 응답 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음 => 웹 브라우저에서 계속 검색 버튼을 누르지 않는다. 서버 자원을 매우 효율적으로 사용할 수 있다. 연결을 유지한다는건 계속해서 요청을 주고 받아 확인한다는 것 => 자원 소모 심함 한계 TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가 웹 브라우저로 사이트를 재요청하면 HTML 뿐만 아니라 자바스크립트, CSS, 추가 이미지등 다시 다운로드 지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결 HTTP/2, HTTP/3에서 더..
무상태 프로토콜(Stateless) 서버가 클라이언트의 상태를 보존 X 장점 : 서버 확장성 높음 (스케일 아웃) 단점 : 클라이언트가 추가 데이터 전송 무슨 말? 상태를 보존 X => 이전에 요청했던 것을 기억(저장)하지 X 항상 새로운 상태에서 요청하는 것, 그래서 무상태 프로토콜 전에 어떤 작업을 했는지를 저장하지 X => 그래서 클라이언트가 추가 데이터 전송 / 필요한개 3개이면 마지막 요청에서 3개를 포함해서 요청 그렇기 때무에 무상태에서는 중간에 답변해주는 서버가 바뀌어도 괜찮다! 이전의 응답을 포함해서 요청하기 때문에 무상태는 응답서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설 가능 서버를 중간에 늘려도 각 서버가 클라이언트 요청 정보를 저장해놓지 않기 때문에 필요할 때마다 증설하기 편하다! BUT, 로그인의 경우 로그인 ..
클라이언트 서버 구조 Request Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 클라이언트와 서버가 분리되어 있다는게 포인트 클라이언트는 보여주는 것에만 집중! 서버는 데이터를 전달해주는 것에만 집중! 양쪽이 독립적으로 자기 할 일만 하면 됨
[ HTTP ] 클라이언트 서버 구조 Stateful, Stateless 비 연결성(connectionless) HTTP 메시지 HTTP는 HyperText Transfer Protocol! HTTP 메시지에 모든 것을 담을 수 있다. / 음성, 영상, 파일등 / JSON, XML (API) 포함 실무에서 TCP나 UDP만을 통해서 전송하는 경우 적다 기반 프로토콜 TCP : HTTP/1.1, HTTP/2(성능개선) 기반 UDP : HTTP/3(성능 확 개선) 기반 현재 HTTP/1.1 주로 사용 HTTP/2, HTTP/3도 점점 증가 HTTP 특징 클라이언트 서버 구조 무상태 프로토콜(스테이스리스), 비연결성 HTTP 메시지 단순함, 확장 가능
웹 브라우저 요청 흐름 HTTP 메시지 전송 과정 애플리케이션 웹 브라우저 1. 웹 브라우저가 HTTP 메시지 생성 2. SOCKET 라이브러리를 통해 전달 - A : TCP/IP 연결(IP, PORT) - B : 데이터 전달 SOCKET 라이브러리 OS TCP/IP 3. TCP/IP 패킷 생성, HTTP 메시지 포함 네트워크 인터페이스 LAN 드라이브 LAN 장비 4. 인터넷 통해 서버로 전달 전송 데이터 => HTTP 메시지(클라이언트가 보낸) GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com HTTP 응답 메시지 HTTP/1.1 200 OK Content-Type : text/html;charset=UTF-8 Content-Length: 3423 ... 구글에서 위와 같은..
인터넷 네트워크 (IP, TCP, PORT, DNS) 인터넷 통신 클라이언트와 서버 사이에는 인터넷이 있다 그 인터넷은 수많은 노드들의 연결로 이루어져있다. 그 수많은 노들들 사이에서 많은 정보들이 왔다 갔다 한다. 그런데 과연 정보들이 어떠한 규칙으로 왔다갔다 할까? 아래의 영어 문자들이 바로 그 규칙들이다. IP(인터넷 프로토콜) 모든 클라이언트와 서버는 IP주소를 가지고 있다. IP주소는 말 그대로 주소다. 역할 : 지정한 IP주소에 데이터 전달 O ++ 패킷이라는 통산 단위로 데이터 전달 IP 패킷이란? 데이터의 포장지다!(택배 박스) / 출발지IP, 목적지IP, 기타.. IP 패킷을 보면서 노드들이 서로 데이터를 던진다 그러다보면 도착 패킷은 패키지와 버킷의 합성어 BUT, IP 프로토콜의 한계 비연결성 : 받을 수 없는 상황인데도 던진다(통신 불..