HTTP

ksh98·2024년 4월 21일

네트워크

목록 보기
5/25

웹 페이지

  • 웹 페이지는 파일들 여러 웹 객체들로 이루어져있다.
  • 각각의 객체들은 url에 대응이되어 있다.

HTTP

  • http 메세지에는 오직 요청과 응답 메세지 두개만 있다.
    • http를 사용하면 브라우저같은 클라이언트가 http로 웹 객체를 요청하고
    • 서버가 이에 대한 응답을 한다.
  • tcp를 사용한다.
    • http 메세지를 보내기 전에 먼저 tcp 연결을 한다.
    • 메세지를 주고 받으면 tcp 연결이 끊어진다.
  • 무상태이다. 즉 서로의 정보를 아무것도 기억하고 있지 않다는 것이다.

non-persistence http

http 요청 응답 1번 할 때마다 tcp 연결을 하고 http 메세지를 주고 받은 후 tcp 연결을 끊는다.

  • 따라서 최대 한 객체가 한 tcp 연결을 통해 보내질 수 있다.
  • 만약 6개의 객체를 받아야 한다면 6개의 tcp 연결이 필요하다.
  • 객체를 병렬적으로 다운받을 수 있다.

하나의 객체를 받고 끝나니 tcp 유지 기간이 짧다. tcp는 연결이 지속되면서 점점 속도가 올라간다. 따라서 느린 tcp를 사용한다는 단점이 있다.

한 객체를 받는데 걸리는 시간은
tcp 연결을 위해 왔다 갔다 하는데 걸리는 rtt +
http 메세지 주고 받는데 걸리는 rtt +
서버에서 데이터를 링크로 밀어 넣는데 걸리는 전송 시간 이다

persistence http

tcp 연결이 되고 이 연결을 통해 여러번 http 메세지를 주고 받을 수 있다.

  • 연결을 처음 한번만 하므로 시간을 줄일 수 있다.
  • 연결이 유지되니 빠른 tcp를 이용할 수 있다.

요청 메세지

  • 첫째줄은 요청 라인 이곳에 메소드가 있다.
  • 그 밑은 헤더부
  • 그 밑은 메세지 바디
  • 아스키를 사용해 메세지를 열면 사람이 읽을 수 있다. 다만 메모리를 더 사용하긴 한다.

데이터 업로드 방법

post 메소드 사용

  • 어떤 것을 서버로 보낼 때 사용하는 명령

url 방식

  • 서버에게 무엇을 보낼 때 get을 사용
  • 보낼 정보는 url에 파라미터로 보낸다.
  • 링크를 공유하기 편해 검색 결과를 공유하기 편하다.

응답 메세지

  • 첫째줄은 상태라인, 프로토콜, 버전, 상태 코드가 있다.
  • 둘째줄은 헤더부
  • 세째줄 부터는 메세지 바디

상태 코드

  • 200 : 요청이 성공적으로 처리되었음
  • 301 : 요청한 자원의 위치가 변경되었음
  • 400 : 서버가 이해할 수 없는 요청
  • 404 : 존재하지 않는 자원을 요청

캡슐화 과정

  1. http 헤더와 http 바디가 합쳐져 http 메세지가 되고 이게 내려가서 tcp/udp 페이로드가 된다.

이 아래부터는 이전과 동일

디캡슐화 과정

위에는 이전과 동일
4. 응용이 http 메세지를 받고 처리한다.

쿠키

  • http 프로토콜 자체는 무상태이다.
  • 쿠키를 이용하면 웹사이트가 클라이언트 자신을 기억하고 있는 것 처럼 느끼게 할 수 있다. 즉 상태가 있는 거 처럼 느끼게 한다.
  • 프로토콜은 하는 것이 없고 종단의 서버와 클라이언트가 쿠키를 저장하여 상태를 유지한다. http는 단지 쿠키를 담아서 보내줄 뿐이다.
  • 쿠키 파일은 호스트와 백엔드 데이타베이스에 있다.

진행과정

  1. 처음에는 클라이언트에 아마존에 대한 쿠키가 없다.
  2. 아마존에 처음 요청을 하면 요청 메세지에는 쿠키가 들어있지 않다.
  3. 처음 요청이 오면 아마존 서버는 id를 만들어 데이터베이스에 저장한다.
  4. 서버는 응답에 이 id를 쿠키로 넣어서 보낸다.
  5. 이후 아마존 서버에 요청을 하면 요청 메세지에 쿠키를 담아서 보낸다.
  6. 서버는 쿠키를 보고 상대방이 누군지 알 수 있다.
profile

0개의 댓글