Moon Blog

Web Background - HTTP/HTTPS 본문

Web Hacking

Web Background - HTTP/HTTPS

문블룸 2022. 3. 23. 23:17
  • 인코딩

컴퓨터의 모든 데이터는 0과 1로 구성되어 있음

우리가 원하는 결과를 컴퓨터에 출력하고 저장하기 위해서는 0과 1로 전환이 필요하고 이 과정을 인코딩이라 함

Ex) ASCII, Unicode

컴퓨터 개발 초기 각 문자권마다 다른 인코딩을 사용하여 국제 소프트웨어 개발에 어려움이 있었음

이런 인코딩 호환성 문제를 해결하고자 Unicode가 개발됨

 

  • 통신 프로토콜

우리가 네이버 같은 웹 사이트를 들어가는 과정에서 또는 전화를 하는 과정에서 통신 프로토콜을 경험할 수 있음

웹 서버에서 우리(클라이언트)가 어떤 자료(리소스)를 요청하면 서버는 이를 이해하고 요청에 맞는 응답을 함

즉, 클라이언트는 요청(Request)을 서버는 응답(Response)을 함으로써 우리가 원하는 자료를 얻을 수 있음

 

프로토콜(Protocol)은 규격화된 상호작용에 적용되는 약속을 의미함

이는 관습적인 것이 아닌 엄격한 규칙에 맞게 상호작용하는 것에 중점을 둠

컴퓨터는 융통성이 없기 때문에 애매한 정보는 통신 오류를 발생할 가능성이 높음으로 우리는 명확히 해석할 수 있도록 정해진 문법을 따라 하여 통신의 질을 높일 수 있어야 함

 

표준 통신 프로토콜 Ex) TCP/IP (네트워크), HTTP (웹 애플리케이션), FTP (파일) 등

 

  • HTTP

HTTP는 서버와 클라이언트의 데이터 교환을 요청 & 응답 형식으로 정의한 프로토콜

- 요청: 클라이언트 -> 서버          - 응답: 서버 -> 클라이언트

 

웹 서버는 HTTP 서버를 HTTP 서비스 포트에 대기시킴

클라이언트가 서비스 포트에 HTTP 요청을 전송하면, 이를 해석하여 응답을 반환함

 

포트(Port)란? 항구라는 의미에 맞게 클라이언트가 서버라는 항구(포트)에다가 짐(데이터)을 내려놓고, 서버가 요청에 맞는 짐을 다시 클라이언트에게 돌려보내는 기능으로 이해하면 될 거 같음

네트워크 포트 서비스 포트
네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소를 의미 네트워크 포트 중에서 특정 서비스가 점유하고 있는 포트를 의미

+) 기본 HTTP 포트 번호 : 80 | 기본 HTTPS 포트 번호 : 443

 

전송 계층(Transport Layer)의 프로토콜에 따라 포트로 데이터를 교환함

TCP로 데이터를 전송하려는 서비스에 UDP 클라이언트가 접근하면, 데이터는 교환되지 않음

즉, 전송 계층 프로토콜이 서로 맞지 않으면 서비스가 되지 않음으로 해당하는 서비스 포트를 표기해야 함 

 

  • HTTP 메시지

HTTP 메시지에는 클라이언트의 HTTP 요청 + 서버의 HTTP 응답이 있음

HTTP 메시지 = HTTP 헤드 + HTTP 바디 

 

HTTP 헤드는 줄마다 각각의 의미가 부여되어 있음으로 각 

가장 첫 줄은 시작 줄(Start-Line) 그리고 나머지는 헤더(Header)라고 불림

헤더 = 필드 + 값으로 구성되며 HTTP 메시지 또는 HTTP 바디의 속성을 나타냄

+) Start-Line은 HTTP 요청 또는 응답일 때 차이가 있음

 

HTTP 헤드와 바디는 하나의 빈 줄로 구분되며 HTTP 바디에는 클라이언트나 서버에게 전송하려는 데이터가 담겨있음

 

 - HTTP 요청

서버에게 특정 동작을 요구하는 메시지로 서버는 해당 동작의 실현 가능성, 요청 권한 등을 검토하고 이를 처리함

HTTP 요청의 Start-LIne

<메소드(Method)> <요청 URI(Request-URI)> <HTTP 버전>으로 구성되고 각각 띄어쓰기로 구분됨

Ex) Get /index.html HTTP/1.0

 

통합 자원 식별자(URI)란? 특정 리소스를 식별하는 기능으로 웹에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스

 

메소드는 URI가 가리키는 리소스를 대상으로 서버가 수행하길 바라는 동작을 나타냄

+) 요청 메소드 종류는 아래 링크에서 확인

 

 - HTTP 응답

HTTP요청에 대한 결과를 반환하는 메시지로 요청의 수행 결과와 상태 정보(Status), 그리고 리소스가 포함됨

HTTP 응답의 Strat-Line

<HTTP 버전> <상태 코드(Status Code)> <처리 사유(Reason Phrase)>으로 구성되고 마찬가지로 띄어쓰기로 구분

Ex) HTTP/1.0 200 OK 

 

상태 코드는 요청에 대한 처리 결과를 세 자릿수로 나타냄

+) 상태 코드 종류는 아래 링크에서 확인

 

  • HTTPS

우리가 흔히 사용하는 사이트들의 주소를 보면 대부분 https로 시작함

그렇다면 왜 여태까지 공부한 http를 사용하지 않고 https를 사용하는 걸까?

 

HTTP의 응답과 요청은 평문으로 우리가 특정 사이트를 로그인할 때 사용하는 아이디와 비밀번호가 post 요청 시에 해커들에게 노출이 될 수 있음

 

이런 문제를 보완하고자 HTTPS (HTTP over Secure socket layer)전송계층 프로토콜(TLS) 사용하여 이를 해결함

TLS는 서버와 클라이언트 사이에 오가는 모든 메시지를 암호화하여 중간에 공격당해도 이를 해석하는 것이 불가능하게 함으로써 데이터를 보호할 수 있음

즉, 평문을 암호화 해서 전송하는 프로토콜

 

https://moon-lab.tistory.com/6?category=1013904

 

2주차 개념 스터디

HTTP란 무엇인가? HTTP는 Hypertext Transfer Protocal의 약자로 웹 상에서 서버와 클라이언트 간의 데이터를 주고받을 수 있는 프로토콜을 의미한다. HTTP 1.1 / 2.0 HTTP 1.1 : 연결당 하나의 요청과 응답을 처..

moon-lab.tistory.com

(해당 링크를 들어가면 HTTP에 대해 더욱 자세히 알 수 있음)

 

 

Ref) https://dreamhack.io/ (dreamhack - Web Hacking)

 

'Web Hacking' 카테고리의 다른 글

Web Background - CSRF  (0) 2022.04.01
Web Background - XSS  (0) 2022.03.30
Web Background - SOP, CORS  (0) 2022.03.28
Web Background - Cookie & Session  (0) 2022.03.28
Web Background - WEB  (0) 2022.03.23