웹 페이지
- 웹 페이지는 파일들 여러 웹 객체들로 이루어져있다.
- 각각의 객체들은 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 : 존재하지 않는 자원을 요청
캡슐화 과정
- http 헤더와 http 바디가 합쳐져 http 메세지가 되고 이게 내려가서 tcp/udp 페이로드가 된다.
이 아래부터는 이전과 동일
디캡슐화 과정
위에는 이전과 동일
4. 응용이 http 메세지를 받고 처리한다.
쿠키
- http 프로토콜 자체는 무상태이다.
- 쿠키를 이용하면 웹사이트가 클라이언트 자신을 기억하고 있는 것 처럼 느끼게 할 수 있다. 즉 상태가 있는 거 처럼 느끼게 한다.
- 프로토콜은 하는 것이 없고 종단의 서버와 클라이언트가 쿠키를 저장하여 상태를 유지한다. http는 단지 쿠키를 담아서 보내줄 뿐이다.
- 쿠키 파일은 호스트와 백엔드 데이타베이스에 있다.
진행과정

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