HTTP

0

네트워크

목록 보기
4/8

Hyper Text Transfer protocol.

OSI의 응용 계층(7계층)에 위치하는 Protocol이다.
기본적으로 "요청"을 하면 그에 대한 "응답"이 주어지는 구조로 구성된다.
또, 비 연결성이 특징이다. TCP와는 달리 비연결성인게 독특하다. 이러한 특징 때문에, Cookie/Session을 사용하여 Client의 상태를 관리한다.

Keep Alive : TCP는 우리가 살펴본 것처럼, 3 - way, 4 - way등의 과정을 거친다. 하지만 매 요청마다 이렇게 하는건 비효율적이니까, "정해진 시간"만큼 TCP 연결을 유지하는 것이다.

  • TCP/IP위에서 작동하는 HTTP와 달리, HTTPS는 SSL과 함께 한다.

  • URI = URL(Resource Locator) + URN (Resource Name) 이긴 한데, URI랑 URL을 동등하게 봐도 된다.

  • Port : IP주소 만으로는 어떤 Application에서 요구하는지, 목적지가 어딘지 알 수가 없다. 그래서 쓴다. PC 1개에 1가지 동작만 하는게 아니니까.


  • HTTP Session이란? Cookie[방문자 정보를 방문자 PC에 저장한다]와 함께 사용되는데, Cookie와는 달리 방문자의 요청에 따른 정보를 서버에 저장하는 것이다.

Server는 접근한 Client를 식별하기 위해 Session을 사용한다.
Client에게 Set-Cookie 값으로 Session-ID(Client 식별자)를 발행
Server가 지급한 Session-ID는 Server와 Client에 저장됨.

그럼 이렇게 지급된 Session이 동작하는 원리를 살펴보자.
Client가 Server에 접근.
Server는 Client의 Cookie를 확인해 Session-ID가 있는지 확인한다.
있으면, 접근 허용하는 거고, 없으면, 새로 Session-ID 생성 후 Set-Cookie 값으로 Session-ID를 발행한다.

그니까, Session은 Cookie에 저장되서 사용되는 것이다. 다만 Cookie는 Client에, Session은 Server에 저장된다.

  • HTTP Cookie란?
    Client에 저장되는 [이름, 만료 날짜, 경로 정보] 등이 저장되는 File이다.

Client가 Server에 접속하면, 요청한 정보들과 함께 Cookie를 저장하고 추후에 재방문시에 요청과 함께 Cookie를 전송해서 매번 새로운 Log-in을 대신한다.


HTTP 구조
HTTP = HTTP Header + HTTP Body
HTTP Header = General Header + Request/Response Header + Entity Header

  1. General Header : 요청/응답의 날짜/시간 정보, Via(중계)서버 이름 등의 기본적인 Metadata 포함.
    1.1 Date : 현재 시간
    1.2 Pragma
    1.3 Cache-Control : 캐시 제어
    1.4 Upgrade : 프로토콜 변경 시 사용
    1.5 Via : Proxy name, Version, Host
    1.6 Connection :
    1.7 Transfer-Encoding
  1. Request/Response Header : 요청 URL, Method, User Agent 등의 정보들이 포함.
    요청 헤더
    2.1 Method
    2.2 Host
    2.3 User-Agent
    2.4 Accept-Language
    2.5 Accept-Encoding
    2.6 Accept-Charset
    2.7 Keep-Alive
    2.8 Connection
    2.8 Referer
    2.9 Authorizaton
    2.10 Cookie
    2.11 If-Modified-Since
    2.11 Origin

    응답 헤더
    2.1 HTTP/1.x Code Status
    2.2 Server
    2.3 Content-Encoding
    2.4 Content-Type
    2.5 Content-Length
    2.6 Expires
    2.7 Pragma
    2.8 Date
    2.9 Connection
    2.10 Allow

  2. Entity Header : HTTP 본문에 대한 정보들이 포함된다. Content[length, Encoding, Language, Location], 만료 날짜 등등.

    3.1 Content-Encoding
    3.2 Content-Language
    3.3 Content-Location
    3.4 Content-Length
    3.5 Content-Range
    3.6 Content-Type.
    3.7 Expire time
    3.8 Last modified time

주요 HTTP Method

GET, POST, HEAD, PUT, DELETE, TRACE, PATCH, OPTIONS, CONNECT 등등.

GET : Resource를 GET하겠다는 뜻. URL이 가진 정보를 검색하기 위해 요청하는 것이다.
POST : Server로 Data를 전송할 때 사용한다.
HEAD : GET과 유사한 방식이다. 다만 이름 그대로 HEADER만을 보낸다.
PUT : Data를 덮어쓴다. (있으면) 없다면 새로 생성한다.
DELET : PUT과 반대 개념. Server의 파일을 삭제할 때 사용.
CONNECT : Server에 Proxy를 요청할 때 사용한다.

실제 HTTP 헤더를 통해서 살펴보자.


Request Format

Get /basic.htm HTTP/1.1\r\n : 해당하는 파일을 GET 하는 요청 전송
Host:192.168.1.1\r\n : Host의 주소가 192.168.1.1 "수신 측 주소"이다.
User-Agent: Mozilla/5.0 ~, Gecko ~, Ubuntu, Firefox : Firefox(Gecko는 Firefox의 Engine명, Chrome은 Webkit)
Accept: text/html, application~ : Media type/우선순위. 즉 text => application ~
Accept-Language: en-us : 영어만 수용합니다. 라는 뜻
Accept-Encoding: gzip,deflate : gzip, deflate라는 Encoding 방식만 주세요
Accept-Charset: ISO-8859~ : ISO-8859 표준을 사용한 문자집합을 원해요
Keep Alive: 300\r\n : Handshake과정을 생략하는 HTTP 1.1부터 지원하는 기능. 300초 지속
Connection: keep-alive : Keep-alive
Referer: http://192.168.1.1~ : 직전에 머물렀던 Web 주소.
Authorization: Basic YWRtaW46YWRtaW4= : 인증 방법, base64로 인코딩되어있는데, admin:admin를 암호화함.


Response Format

HTTP 1.0 200 ok\r\n : HTTP Version은 1.0이고, 200이라는 응답 코드(성공) 반환
Server : Intoto Http Server라는 Server 사용
Content-type : 요청받은 파일의 타입. text/html 이라는 Content
Pragma : HTTP 1.1에서는 Cache-Control이 대체한다. Cache 유효성 검사를 목적으로 한다.
Connection : 연결 상태 : 닫힘.
Time since request : 요청 후 지난 시간.
Request in frame : ?
Request URI : ?
File Data : File data 크기

응답 HTTP 1.1

HTTP 1.1 200 ok : HTTP Version,
Date : HTTP 생성 날짜.
Server: Server 정보
X-C : ? 이건 뭐지 찾아도 안나온다.
Expires : HTTP 만료 시간.
Last-Modified : 마지막 수정 시간
Cache-Control : Cache Control 정보. (No-cache : 모든 캐시 사용 전 서버에 허가 요청)
age : 캐시 응답 (max-age time 내에
Pragma : HTTP 1.0과 동일하다.
Etag : HTTP 오류 검사. Cache된 정보를 사용할 수 있을지 없을지에 대한 정보이다.
Vary : Cache된 응답을 추 후 요청들에 사용할 수 있는지 여부를 의미한다.
P3P : P3P는 개인정보보호 기술이다. 해당 사이트의 개인정보 보호단계등의 정보를 의미한다.
xserver : 여러 Server의 1개 이름이다. * https://webtechsurvey.com/response-header/x-server
Content-Length : Content 길이
Keep-Alive : Keep-Alive 설정 정보. (timeout 15)
Connection : 연결 => Keep-Alive
Content-Type: Image 중 gif


https://www.techopedia.com/definition/27178/http-header

0개의 댓글