웹은 크게 4가지요소가있음
1. 웹페이지를 만드는 컴퓨터언어 html
2. 원하는 웹 페이지의 방문할 수 있도록 도와주는 주소책인 url
3. 페이지를 주고 받는 소프트웨어 인 웹브라우저 웹서버
4. 웹브라우저와 웹 서버가 통신을 할때 사용하는 규칙인 http
예전의 http는 단순한 html을 전달하고 그랬는데
요즘에는 훨씬 발전하여 이미지 오디오 동영상과 같은 다양한 멀티미디어 파일을 전송하는 매우 매우 중요한
프로토콜로 군림하고 있습니다.
이번시간은 Hyper Text Transfer Protocol 에 대해 배워보겠음
비유를 들자면 고객이 판매원한테 물건(html)주세요 하는게 Request이고
점원이 여기요 하고 주는게 response
즉 서버와 클라이언트(고객)이 컨텐츠를 주고받기 위해서는 서버와 클라이언트 서로가 알아들을 수 있는 공통의
약속인 메세지가 필요한데
그게바로 HTTP라고한다.
http는 크게
request , response로 구분되어있다
웹 브라우저는 사용자가 요청한 것들을 서버에게 대신 물어봐주는 역할을 한다.
그래서 서버로 부터 받은 것을 사용가 볼수있도록 웹 브라우저에 그려준다.
Request
실제 request상태창
host는 반드시 필요함
빨간색 네모칸은 웹 주소를 적는 것이다.
파란색 네모칸은 포트라고 한다
웹서버는 한대의 컴퓨터에 여러 대의 서버가 설치되어 있을 수 있다. 그래서
8080이라고 하면 8080이라고 하는 그 포트넘버에 등록되어있는 웹서버를 의미
호스트가 있으면 하나의 웹 서버가 여러 개의 도메인을 서비스할 수 있다.
예를 들면 a라는 웹서버가 a닷컴 b닷컴 c닷컴 이라는 도메인을 호스팅하고있고 주소별로 다른 웹사이트라고 한다면
웹서버는 빨간색칸에 적혀있는 주소에따라서 다른 정보를 보내줄 수 있다
이걸 가상호스트라고 부른다
host는 인터넷에 접속해있는 컴퓨터 한대한대를 식별할수는 있게 도와주는 이름
user-agent는 웹브라우저의 다른 표현
즉 요쳥하는 이 웹브라우저가 어던 웹브라우저 인지를 보여준다.
첫 번째 줄보면 운영체제가 메킨토시이고 intel cpu를 사용하고 mac os 버젼이 어떻다 라고하는 정보제공해줌
두 번째 줄보면 크롬을 사용하고 있고
그래서 나중에 이런정보를 받아서 통계를 만들 수 도 있다.
그리고 누가요청하는지에따라 차단을 할 수도있다.
우리가 html파일을 웹 서버에게 요청했는데 다시요청을 할 수 있잖아요? (f5)눌르는 것 처럼
그럼 요청할 때마다 그걸 다운 받는게 효율적이지 않겠죠?
그래서 저렇게 한번요청햇을때 시간을 적어놓는다
그래서 웹 서버는 읍답할때 자지가 갖고있는 파일이랑 비교하여 뭐가 더 최신인지 판별되면
최신버전을 웹 브라우저를 통해 클라이언트에게 보낸다
만약 이미 최신버전을 가지고있으면 가만히 있어도 되어서 서로 윈윈이다.
Response
첫 번째 줄부터 보겠다.
version : http의 버젼을 이야기함
status code : 이게지금 정상작동했는지 실패했는지 알려준다(응답결과)
phrase : 이것은 응답결과를 사람이 이해가기 쉽도록 말로 풀어줌
1... 같은거보면 응답결과 적혀져 있음
http 1.1 이라고하는 포맷을 쓰고있다는 뜻
200 은 stauts code 이다. (2xx succecc)
4xx 는 클라이언트쪽에 문제가 있는 경우
404 요청을했는데 서버에 없을때 403 요청을 했는데 접속권한이 없을때
5xx 는 서버쪽에 문제가 있을 경우
last-modifide 이정보는 마지막으로 언제 수정되었음을 알려주는 용도
자 이제 정리해서 순서를 보자면
1.클라이언트가 어떤 홈페이지에 접속을 해
2.그럼 브라우저가 이것을 감지하고 해당 홈페이지 자료가있는 서버에 요청을 할려고 request를 서버에보냄
3.서버는 그것을 받아서 response와 함께 html과 기타등등(css,js)동봉해서 웹 브라우저한테 보냄
4.웹 브라우저는 그것을 받아서 사용자가 볼 수 있도록 웹브라우저에 그려줌
마치며
http와 https
http:// 이거는 http 이고
https 로 시작한다면 https 또는 ssl를 이용하는 것이다.
https의 s는 secure의 약자로 안전하다는 뜻이다
http는 처음나왔을때 위험하지는 않았지만
지금은 군사 금융 사생활을 다루기때문에 https를 사용해야함 http는 다 보임
https는 누가 가로챈다해도 그 안에 무슨내용이 있는지는 알 수 없다. 암호화 되어있기 때문이다.
그다음 관심 가져볼만 한 것
캐시
캐시는 이미 다운 받은내용을 또 다운 받을 필요가 없기 때문에
이미 다운 받은 저장된 파일을 읽어서 성능을 향상시키는 기법이 캐시이다.
캐시는 풀기 어려운 문제가 있다. 바로 내용이 갱신 되었을 때도 웹브라우저는 그 사실을 알아차리지
못한다는 것이죠
이런경우에 컨트롤 f5눌르면 강제로 캐시가 갱신이 됌
하지만 일반사용자들은 캐시가 갱신되었다는 것을 알 수없음
그래서 그런 것을 해결하기위해
아래 기능들이 있음
cache-control
pragma
이것들은 캐쉬를 제어하는 테크닉
개인화(쿠키)
우리가 로그인을 하고 그 다음에 접속할때는 로그인 상태가 유지되고 있음
그것은 우리가 웹사이트를 방문할때 이전에 처리했던 로그인했다 라든지 이런한 기록을
웹 사이트와 웹 브라우저가 기억하고 있기 때문이다. 이것을 가능하게 해주는 기능이 쿠키이다.
쿠키값을 웹 브라우저에 설정을 해주면 접속할때마다 그 설정된 쿠키값을 서버에 전송하는 걸 통해서
사용자의 상태를 유지할 수 있고 사용자를 식별할 수 있다.
최근에는 쿠키보다도 훨씬 더 많은 정보를 정장 하면서도 보안 쪽으로 보다 우수한 웹 스토리지라는 기술이
등장 했습니다.
프록시(proxy)
웹 브라우저와 웹 서버 사이에 프록시라는 중계서버를 둘수 있다.
중간에 있는 서버가 캐시를 대신 해주거나 보안과 관련된 공격을 받아주거나
적당히 사용자 요청을 여러 대 서비스로 분산 해주는 것과 같은 역할을 프록시 서버가 대신할 수 있다.
그 외에도 엄청나게 많은 일을 할 수 있따.
여러분의 서비스가 복잡해지고 중요해 지고 있다면 프록시 서버라고 불리는 기술을 알아보십쇼
네트워크 모니터링 기능
네크워크를 모니터링하는 도구들에게도 관심을 가져볼 만 합니다.
가장 간편한 도구는 역시 웹브라우저의 개발자 도구의 포함되어 있는데
매우 사용하기 쉽기 때문에 우선적으로 사용해볼만한 도구이다.
또 오픈 소스이고 무료이면서 가장 강력한 기능을 가진 도구로
와이어샤크 라고 하는 기능이있다.
이 도구는 http 뿐만 아니라 컴퓨터에서 일어나는 모든 네트워크 트래픽을 감시할 수 있는 도구이다
그 강력함에 대가는 좀 배우기 어렵고 복잡하는 것이 흠이지만 익숙해지면 여러분에게 강력한
힘을 보유하게 됌
출처: 생활 코딩
보충