웹표준과 http vs https

joker·2020년 3월 18일
0

1. 웹 표준이란?

웹 표준이란 www(World Wide Web) 의 측면을 서술하고
정의하는 공식 표준이나 다른 기술 규격을 가리키는 일반적인 용어이다

보통 웹 개발과 디자인에 관계되어 표준이 되는 규칙등을 말한다.
이러한 규칙들은 W3C 에서 표준을 정의하고 발표(?)한다.

HTML : 접근성과 시멘틱 태그(main, section 태그 등)의 가이드라인
CSS : css의 W3C 권고
Javascript : 바닐라 js, ESMA스크립트로 불리는 ESMA 국제 표준
이러한 규칙을 지킴으로써 무엇을 얻을 수 있을까?

  1. CSS와 HTML이 분리되어 유지보수에 들어가는 시간이 단축되고, 불필요한 마크업이 최소화되어 페이지 로딩속도가 향상된다.
  2. 오래된 브라우저에서도 컨텐츠가 적절하게 표시되고 호환성과 운용성이 확보된다.
  3. 논리적이고 효율적으로 작성된 웹 문서는 코드의 양이 줄어 파일 크기가 줄고 서버의 부담을 감소시킬 수 있다.

2. HTTP 통신에 대해

http의 전반적인 부분에 관한 질문이였습니다.

  • HTTP 란,
    HTTP (HyperText Transfer Protocol)는 WWW 상에서 정보를 주고 받을 때, 사용하는 프로토콜이다. TCP 혹은 UDP 기반으로 작동하고 80번 포트를 이용하여 통신한다.

HTTP 기본적으로 요청과 응답으로 이루어져있는 데, 클라이언트에서 요청을 하면 스트림을 연결하고 서버에서 응답을 해준 뒤에 스트림을 종료하는 형식으로 데이터 전송이 진행된다. (http/1)

HTTP의 종류로는 현재는 HTTP/1.1, HTTP/2, HTTP/3가 존재하고 각 버전마다 작동 방식이 다르다. (HTTP/1.1, 2는 TCP, HTTP/3 UDP 기반으로 작동 - 자세한 내용은 추후 글에서...)

  • HTTP Header 와 Body
    HTTP는 요청와 응답을 할 때, 기본적으로 HTTP Header 와 Body로 구성하여 통신합니다. Header에는 바디 데이터의 형식, 요청 클라이언트의 정보, 쿠키 데이터 등을 포함하고 Body에는 서버에 전송하는 데이터를 가지고 있다.

공동 General
Request URL : 요청 주소
Request Method : 요청 메소드, 자원에 대한 요청 형식을 명시한다(GET, POST, PUT, DELETE 등)
Status Code : 응답 코드(200-ok, 400-bad request 등)

요청 Header 정보
Accept : 클라이언트가 허용할 수 있는 파일 형식(Mime type), / 는 모든 파일 형식을 허용한다는 의미
User-Agent: 클라이언트 소프트웨어 정보(브라우저 종류, OS 등)
Host : 요청 서버의 IP
Referer : 특정 페이지에서 링크를 클릭하여 요청하였을 경우 나타나는 필드로, 링크를 제공한 페이지에 대한 정보를 명시한다.
Origin : 요청이 어디서 시작되었는지를 명시합니다.
Accept-Language: 클라이언트가 인식할 수 있는 언어(ko, en 등)의 우선 순위를 지정할 수 있다.
Accept-Encoding : 클라이언트가 인식할 수 있는 인코딩 방식을 명시

응답 Header 정보
Server : 웹서버 정보 표현
Date : 현재 날짜
Cache-Control : 웹 캐싱 이용을 위한 정보 (캐시정책을 정의할 수 있다 - 응답 해더에서도 사용가능)
Content-Type : Body 데이터의 형식 (클라와 서버가 다를 수 있다 - text/html, application/json 등)
Content-Encoding: 어떤 것으로 압축을 하였는지 명시
Connection : 연결 상태를 의미한다. 요청시에는 keep-alive, 응답시에는 close로 된다.(Http/1에서만 사용)

3.http와 https의 차이점

HTTP 대 HTTPS : 뭐가 다른가?

웹 브라우저의 주소창을 자세히 보면 http://나 https://로 시작한다. 사실 http://는 하도 흔해서 생략하고 주소를 쳐도, 웹 브라우저가 알아서 http://를 넣어 준다. 어제 인터넷에서 GMail 옵션 중에 항상 https를 사용하도록 하는 옵션이 있다고 그걸 쓰라는 글을 보았다. 거기 달린 답글 중에 두 개가 뭐가 다른지 모르겠다고 하는 글이 있었다. 그럼 이 두 개의 차이는 뭘까? 이름도 비슷한데. html하고 http는 다른 건가?

HTML이란

우리가 보는 웹 페이지의 대부분은 확장자가 html이다. htm인 것도 있는데, 그것은 예전 도스 기준으로 확장자가 3자밖에 되지 않기 때문에 어쩔 수 없이 끝을 자른 것으로 요즘은 잘 없다. 기타 php, aspx, jsp 등도 있다. 이들은 각각 웹 서버의 처리 엔진에 따른 결과물인데, 사실 확장자는 중요한 게 아니다.

어차피 확장자가 php,aspx,jsp인 것도 다들 html이다. 웹 브라우저는 확장자를 보고 이게 html인 줄 아는 게 아니라, 헤더에 있는 타입을 보고 아는 것이다.

우리가 보기에 확장자가 php라도, 헤더에는 txt/html로 타입이 규정되어 있고, 웹 브라우저는 그래서 이게 html인 줄 안다.

웹 페이지는 메모장으로 소스 보기를 하면 보이듯이 이런 태그로 둘러싸인 텍스트 문서이다. 그림 파일이나 다른 요소는 따로 표시되어 있지 페이지 속에 들어가지 않는다.

HTTP란

Http는 이런 HTML 같은 문서를 웹 브라우저가 웹 서버에 요청하는 프로토콜이다.

프로토콜이라는 것은 일종의 대화 규칙이다. 우리가 폰뱅킹할 때를 보면 지정된 코드를 누르면 정해진 응답이 온다. 그런 것이다. 이게 없다면 웹 서버는 웹 브라우저가 무슨 페이지를 달라고 하는 건지도 모를 것이고 웹 브라우저도 웹 서버가 무슨 페이지를 보내는 건지 알 수가 없다.

Http도 그냥 텍스트 교환일 뿐이다. 복잡한 바이너리 데이터가 아니라 그냥 텍스트 메시지를 주고 받는다. 물론 그 텍스트 메시지 안에 HTML 페이지도 들어 있다. 텍스트이기 때문에 만약 내가 있는 네트워크 안에서 누가 그 신호를 가로채어 본다면 내용이 그대로 보이게 된다. 만약 내가 메일을 읽고 있는데 누가 그 신호를 가로챈다면 메일 내용을 읽을 수 있을 것이다.

HTTPS란

Https는 http하고 거의 같지만 모든 통신 내용을 암호화하는 것이 다르다. 사실 s가 secure socket, 즉 안전한 통신망을 뜻한다. 우리는 파일에 암호를 많이 걸어 봤다. 어떤 키를 설정해서 걸면 나중에 풀 때에도 그걸 입력해 푸는 것이다. 키라는 것은 암호화를 푸는 암호 즉 패스워드같은 것이다. 웹 서버가 키 하나를 정해서 페이지를 암호화해서 사용자의 웹 브라우저로 보내고 웹 브라우저는 그 키를 이용해서 페이지를 복원한다... 이러면 좋겠지만 이렇게 간단하지 않다. 웹 서버는 하나이지만 사용자는 불특정 다수이다.

그런데 키를 사용자들에게 줘 버리면 아무나 암호화를 풀 수 있게 된다. 영희에게 갈 페이지를 철수도 풀어서 볼 수 있게 되는데, 이러면 암호화의 효과가 없다.

결론

그러면 https가 안전한데 다 https를 쓰지 http를 뭐하러 쓰느냐고 할 것이다. https 암호화를 하려면 웹 서버에 부하가 생기고, 위에서 말한 B가 그 서버의 인증서가 되는데, 이것은 Verisign 같은 업체에서 비싼 돈을 주고 사야하므로, 특히 우리 나라 웹 사이트들은 잘 쓰지 않는다. 하지만 외국 금융 사이트에서는 https는 필수이다. 또 http는 비연결형으로 웹 페이지를 보는 중 인터넷 연결이 끊겼다가 다시 연결되어도 페이지를 계속 볼 수 있지만 https의 경우에는 소켓 (데이터를 주고 받는 경로) 자체에서 인증을 하기 때문에 인터넷 연결이 끊기면 소켓도 끊어져서 다시 https 인증을 해야 한다. 그래서 시간이 또 걸린다.

그래서 아무나 봐도 상관 없는 페이지는 http로, 남에게 보이면 안 되는 금융 정보나 메일 등 중요한 것은 https로 하는 것이다. GMail은 https를 지원한다. 다른 메일을 사용하는 사람은 보안 문제를 좀 더 생각해 보자

출처: https://kmj1107.tistory.com/entry/Http-vs-Https-Http와-Https의-차이점 [토순이네집]

profile
개발자입니다.

0개의 댓글