본 포스팅은 인프런 김영한 강사님의 HTTP 통신 강의 내용을 정리 및 요약 내용입니다.
웹 브라우저 요청 흐름
1. HTTP 요청 메세지 생성2. DNS 조회3. SOCKET 라이브러리를 통해 전달(TCP/IP 연결; 데이터 전달)4. TCP/IP 패킷 생성, HTTP 메세지 포함5. 네트워크 인터페이스를 통해 서버에 메세지 전달
- 패킷은 HTTP 메세지를 TCP/IP 패킷으로 감싸는 형태
HTTP(HyperText Transfer Protocol)
- HTML, TEXT, 이미지, 음성, 영상, 파일 등을 전송할 수 있음.
- JSON, XML 포맷으로 주고받을 수 있음
- 서버간의 데이터 통신도 대부분 HTTP를 사용
- HTTP/2까지는 TCP 프로토콜을 사용하였으나, 3부터는 UDP도 사용되기 시작함.
HTTP 특징
- 클라이언트-서버 구조
- 무상태 프로토콜(stateless), 비연결성
- HTTP 메세지로 데이터를 요청/전달하며, 단순하고 확장이 가능함.
클라이언트-서버 구조
- Request, Response 구조
- 클라이언트는 서버에게 요청을 보내고 응답을 대기
- 서버는 클라이언트가 요청한 결과를 만들어서 응답
Stateless
- 서버가 클라이언트의 상태를 보존하지 않음
- 서버의 확장성(scale out)이 높음
- 다만 클라이언트가 통신때마다 추가 데이터를 전송하여야 함
비연결성
- HTTP는 기본이 연결을 유지하지 않는 모델임
- 일반적으로 초 단위의 이하의 빠른 속도로 응답
- 1시간동안 수천명이 서비스를 사용하여도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
- 서버 자원을 매우 효율적으로 사용할 수 있음
- 다만 TCP/IP 연결을 통신때마다 새로 맺어야 함(3 way handshake)
- 지금은 HTTP 지속 연결로 문제를 해결할 수 있음
HTTP 메세지
- HTML, TEXT, 이미지, 음성, 영상, 파일 등 거의 모든 형태의 데이터를 전송할 수 있음.
- 일반적으로 JSON이나 XML 포맷으로 전송이 가능.
- 서버간에 데이터를 주고받을 때도 대부분 HTTP 통신을 사용
시작라인: GET /search?q=hello&hl=ko HTTP/1.1
- HTTP 메서드(GET), 요청대상(/search?q=hello&hl=ko), HTTP 버전
HTTP 헤더
- HTTP 전송에 필요한 모든 부가정보
- 메세지 바디 내용, 크기, 압축, 인증, 요청 클라이언트의 정보, 서버 애플리케이션 정보, 캐시 관리 정보
- 필요시 임의의 헤드를 추가할 수 있음
HTTP 바디
- 실제 전송할 데이터
- HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터를 전송할 수 있음.
'컴퓨터 네트워크 > 모든 개발자를 위한 HTTP 웹 기본지식 정리' 카테고리의 다른 글
HTTP 상태 코드 (0) | 2022.02.09 |
---|---|
HTTP 메서드 및 URI 설계 (0) | 2022.02.09 |
TCP/IP 프로토콜 (0) | 2022.01.24 |