네트워크 Overview : Web and Http

김준석·2023년 4월 7일
0

네트워크

목록 보기
3/6

Web and HTTP

  • 웹 페이지는 objects들의 집합이다.
    Objects들은 HTML file, JPEG image, Java applet, audio file등을 포함한다.

HTTP overview

HTTP : hypertext transfer protocol
Client/Server 모델이다
client : request를 보내고 응답을 받는다, 그리고 display한다
server : request에 대한 response를 보낸다.

  • Http uses TCP:
    port 80번으로 TCP connection 요청을 한다.
    서버가 요청을 받고 accpets한다. 그 후 HTTP message를 주고 받은 후, TCP connection을 closed한다

  • HTTP is Stateless
    서버는 이전의 client reqeust에 대한 정보를 기억하지 않는다.

Http connections: two types

  • Non-persistent Http
    TCP Connection open -> 하나의 Object를 보내고 Connection을 닫는다 (반복)

  • Persistent Http
    커넥션을 열고 multiple한 object를 보내고 받는다.

Non-persistent Http

  1. Open TCP connection client
  2. 포트 80번으로 온 TCP Connection을 accepts server
  3. Http Request message를 Tcp Connection socket을 통해 보낸다. client
  4. Requst메세지를 받고 response 메세지를 소켓에 담아 보낸다 server
  5. 서버는 Tcp connection을 닫는다.server
  6. client는 response메세지를 받아 html에 display한다. client
  7. 반복한다

Response time

RTT : 클라이언트로 갔다가 돌아오는데 걸리는 시간

  • ResponseTime은 RTT가 두번 반복되고, file transmission time이 더해진 값이다.

Persistent HTTP (1.1)

  • Response를 하고나서도 connection을 남겨둔다.
    같은 클라이언트/서버간의 연결을 열어두기 떄문에 그만큼 RTT가 줄어든다

HTTP Request Method

  • Post method : 일반적으로 input의 형태, entity body에 담아서 보낸다.
  • HEAD method : 헤더만 담아서 보낼 때 사용
  • PUT method : uploads new file to server
  • GET method : http data 자원을 보여줄 때
    사용

Response status code

  • 200 OK
  • 301 Moved Permanently
  • 400 Bad Request
  • 404 Not Found
  • 500 Interner Server Error

Cookies

HTTP는 stateless하다. 즉 상태정보를 관리하지 않는다.
근데 관리가 필요한 경우가 있다. 그럴 때 사용하는 것이 cookie이다
four components
1. cookie header
2. 다음 요청에 cookie header가 있어야한다.
3. cookie가 user의 host browser에 저장되어야한다
4. back-end database에도 있어야한다.

쿠키는 어떤 곳에 사용될까?

  • authorization
  • shopping carts
  • recommendations
  • user session state

Challenge: How to keep state?
상태를 어떻게 관리할 것인가?

  • at protocol endpoints (sender/receiver의 multiple transactions)
  • in message

Web Caches

클라이언트 - origin server 까지 request를 보내고 response를 보내는데, 중간에 Web cache가 origin server까지 도달하지 않아도 request에 대한 응답을 보낼 수 있게 도와줌
빠르게 응답을 도와줄 수 있다!

웹 캐시는 proxy sever라고도 한다.
Cache-Control 이라는 헤더에 캐시를 할 지 말 지 정해서 response를 받는다.

캐시를 왜 사용하나?

  • 클라이언트 request에 응답 시간을 감소시키기 위해서
  • 트래픽을 줄이기 위해서
  • 즉 캐시가 잘 동작하면 웹 서버 성능이 유연해진다!

Caching : Conditional Get

Http request 헤어디 if-modified-since를 붙이면 해당 request 이후로 바뀐 것이 있으면 서버에 알려주고 없으면 캐시를 그대로 사용한다.

HTTP/2

Goals : decresed delay in multi-object HTTP request

  • 중간에 용량이 큰 object가 있으면 그것에 시간이 오래 할당되는 http1.1의 단점이 있다.

    이를 해결하기 위해 HTTP/2에서는 기존의 Reqeust Object 보내는 순서를 임의로 설정하거나, 서버가 알아서 판단해주는 방법을 사용한다. 혹은 frame들을 divide한다.

profile
기록하면서 성장하기!

0개의 댓글