본 글은 '따라하면서 배우는 IT 채널'의 네트워크 기초 영상을 보고 정리한 내용입니다.
HTTP 프로토콜
- HyperText Transfer Protocol
- WWW에서 쓰이는 핵심 프로토콜로 문서의 전송을 위해 쓰임.
- 거의 모든 웹 애플리케이션에서 사용된다
- 음성,화상 등 여러 종류의 데이터도 MIME로 정의하여 전송 가능하다.
- Request/Respons(요청/응답) 동작에 기반하여 서비스 제공
HTTP 1.0
- 연결 수립,동작,해제 의 단순함의 특징.
- 하나의 URL은 하나의 TCP연결
- HTML 문서를 전송 받은 뒤 연결을 끊고 다시 연결하여 데이터 전송
- 문제점
- 단순 동작(연결,해제)이 반복 되어 통신 부하 문제 발생
- 통신 과정
- 클라이언트가 서버에 접속 (TCP 3way Handshake,7계층 프로토콜이므로 encapsulation 된다.)
- HTTP 요청 후 응답 받으면 연결 종료
- 다시 요청하기 위해서는 연결 요청을 다시 해야 한다.
HTTP 1.1
- HTTP 1.0 의 문제점을 보완한 버전.
- TCP 연결을 끊지 않고 모든 HTTP요청,응답 과정이 끝나고 종료한다.
HTTP 요청 프로토콜
- HTTP Method 설명 중 GET, POST만 사용해야 한다고 하지만 개발자 입장에서 RESTful API 개발시 PUT, DELETE도 사용하는게 원칙임
- 구조
- Method
- HTTP 명령어라고도 함. HTTP 패킷의 목적
- Method 종류 : GET , POST, PUT, DELETE, TRACE, CONNECT, HEAD
- Host
- 요청 하는 곳의 호스트와 포트 번호. 포트번호가 정의되지 않으면 서비스에 대한 기본 포트번호가 정의됨.
- GET과 POST의 차이
- GET
- 데이터를 URL에 포함시켜서 보냄.
- POST
- 데이터를 http body에 넣어서 보냄.
- 중요한 데이터는 post로 보냄. (이것도 패킷을 열어보면 보일 수 있다. -> HTTPs 사용)
- GET
URL, URI란?
- 인터넷 상에서 특정 자원(파일) 을 나타내는 유일한 주소
- URL: Uniform Resource Locater - 경로를 나타냄
- URI는 Uniform Resource Identifier - 요즘은 이렇게 부름.
URI
- 구조 -
Scheme(프로토콜) ://host[:port][/path][?query]
- ex)
- ftp ://IP주소 :포트 /파일이름
- http://IP주소 :포트(or도메인주소)/폴더이름/파일이름
- 내부적으로 컴퓨터는 도메인주소를 IP주소로 바꿈(DNS서버가)
- 포트를 기입하지 않으면 브라우저가 80(http)이나 434(https)번 포트를 자동으로 써줌.
HTTP 응답 프로토콜
구조
HTTP 헤더 포맷
- 종류: 일반 헤더, 요청 헤더, 항목 헤더
- 일반헤더
- Content-Length : body길이
- Content-Type : body에 들어있는 컨텐츠 종류 (HTML은 text/html)
- 요청헤더
- Cookie : 서버로 부터 받은 쿠키를 다시 서버에게 보내주는 역할
- HOST : 요청된 URL에 나타난 호스트명을 상세하게 표시 (HTTP1.1은 필수)
- USER-Agent : Client Program에 대한 식별 가능 정보 제공
- Request Header Fields
- 클라이언트가 요청에 대한 추가 정보를 전달request-header설명
Accept 허용 가능한 컨텐츠 유형 나열 Accept-Encoding 허용 가능한 인코딩 Accept-Language 허용 가능한 언어 Accept-Charset 허용 가능한 문자 집합 Content-Type 본문의 MIME 유형 (POST/PUT 요청시 사용) Referrer 이전 웹 사이트 주소 User-Agent 일반적으로 브라우저나 운영체제 정보 표시
http 문서 보기
- 클라이언트가 요청에 대한 추가 정보를 전달request-header설명
- 응답 헤더
- Server : 사용하고있는 웹서버 소프트웨어에 대한 정보
- Set-Cookie : 쿠키를 생성하고 브러우저에 보낼 때 사용. 쿠키값을 브라우저가 서버에 다시 보낼 떄 사용.