티스토리 뷰

HTTP/1.1의 이해

HTTP는 클라이언트-서버 아키텍처. 클라이언트가 request하면 서버가 response하는 단순한 구조로 이루어져 있다.

ResourcesAny kind of content source

Static Content : File system의 정적 파일을 말함. - word, image, video clip, Youtube에 올린 영상, Streaming 영상 (서버가 클라이언트로부터 요청을 받기 전에 이미 그 파일이 서버에 있다. 이미 존재하는 파일을 주는 것)

Dynamic Content : Generated by SW program, Live image, Trade stock (요청 받으면 그 시점에 새롭게 컨텐츠 만듦)

URI : Uniform Resource Identifier

  • 특정 리소스를 식별하는 통합 자원 식별자. 웹기술에서 사용하는 논리적, 물리적 리소스를 식별하는 고유한 문자열 시퀀스
  • Server resource name : Addresses of the internet, Uniquely identifying, Locating information resource
  • URL과 URN이 있다.

Response

크게 두가지 형태를 가져온다.

하나는 스태틱(요청 받기 전에 이미 그 파일 있다. 그 파일을 주는 것),

하나는 다이나믹(요청 받으면 그 시점에 새롭게 컨텐츠 만듦. 요청한 사람의 추가적인 정보 포함 가능 ex) 계좌정보,,, )

HTTP는 단순하다. 요청한 파일을 달라는 것.

Response는 어떻게 생겼나?

- Content-type, Content-length 

- URI 등으로 이루어짐

Transaction

Request와 Response로 구성된다.

클라이언트가 서버에 무언가를 달라고 한다. 디렉토리와 파일이름(명령)의 체계를 가지고 URI의 형식 하에 요청.

HTTP Methods

파일을 올린다면 PUT, 서버의 파일 지우고싶다면 DELETE

HTTP Status Codes

HTTP response는 Status Code를 포함한다.

ex)

404 : 클라이언트가 요청한 파일이 서버에 없다.

302 : 리다이렉트

Message

명령, URL, 프로토콜의 버전을 써서 보냄. 그거에 대한 응답엔 컨텐츠가 있다.

Accept의 text/*는 텍스트의 모든 것을 다 받을 수 있다.

받을 수 있는 파일을 보냄. 이거에 맞춰서 서버는 응답을 한다.

Connections

TCP/IP

  • Reliable Data Transfer / In Order Transfer / Connection-oriented / Bidirectional Byte Stream / Flow Control / Congestion Control

HTTP를 쓰려면 TCP를 써야 함. HTTP/1.1은 신뢰성이 존재한다는 가정하에 간단하게 Response/Request 체제를 만든 것. HTTP/1.1이 TCP를 반드시 써야 한다고 정했기때문에.

통신에서의 시큐리티는 대단한 일 하고 있지 않다. 패스워드, 키값, 암호화 된 계층을 사용하여 중간에 있는 자가 정보 못 보도록 막는 것. TCP와 HTTP 사이에 TLS 레이어를 쓰거나 SSL(시큐어한 소켓)을 쓰거나 하는 등 암호화가 필요한 곳에 중간중간 저러한 계층을 집어넣으면 HTTPS가 된다.

기본적으로 HTTP는 웹브라우저에 동작시킨다면 도메인 네임 치고 엔터키를 치면

hostname을 가져다가 DNS서버에서 IP address 로 바뀜. → TCP 레이어가 소켓 열어 연결하고 그 위에서 http GET이 날라가고 response를 받고 뭔가를 하다가 아무것도 안하면 TCP 연결이 끊어짐

HTTP는 연결설정 및 해제가 없다. TCP를 믿고 가는 프로토콜임.

Actual Components of the web

HTTP/1.1이 TCP를 이용하며 생긴 문제점 : TCP를 너무 일찍끊어버리면 요청 들어오면 다시 연결해야. → 서버부하 / 헤더 정보가 크다. /  HTTP/1.1은 클라가 서버에 요청한 순서대로 서버가 다시 돌려줘야함. ⇒ 하나가 버벅거리면 뒤에도 지연 발생

Proxy : 누가 한명 접속하면 프록시가 컨텐츠를 가지고 있다. 클라가 접속하면 굳이 서버까지 안가고 프록시가 주는 것. 응답시간 빨라지고 인터넷 부하 줄임.

  • Web security : 음란 사이트 등에 접속금지

프록시는 클라이언트와 서버의 기능을 동시에 가지며 사실상 서버.

프록시 서버는 http2, 3에서 굉장히 중요해진다.

Method

GET : 파일 리소스 가져오는 것.

HEAD : 빈번히 그 파일 가져온다면 그 파일이 바뀌었는지 안바뀌었는지 알고 싶다면 GET 대신 HEAD 사용함. 본문은 지워버리고 HEAD 정보만

PUT : 파일을 서버에 주는 것. 많은 서버는 PUT을 하기 전 password를 필요로 한다.

POST : 박스에 값을 쓰고(input data) 엔터를 치면 서버로. 입력 파라미터를 전달하는 것

→ HTML 뿐 아니라 정보를 주고받기 위해서도 HTTP를 사용한다.

TRACE : 프록시는 본인의 정보를 작성한다. 나를 경유했다고. (Via) → 클라이언트는 프록시가 있다/없다를 판단할 수 있다.

OPTIONS : 이 웹서버가 제공하는 기능들이 무엇인지 알려달라고 하는 것.

Status Code

클라이언트에게 요청이 성공했는지 추가 조치가 필요한지 알려주는 세 자리 숫자.

리다이렉트는 클라가 요청했을 때 본인이 없는 것을 다른 곳으로 가라고 location을 주면 클라는 새로운 장소로 간다. 주로 서버가 역할이 나뉘어 있을 때.

If-Modified-Since : 특정 시간 후로 바뀌었을 때

 

 

 

초안 작성 : 2022.6.22

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함