본 게시물은 드림핵에서 Web Hacking Introduction강의를 토대로 작성한 정리글입니다.
프로토콜(Protocol) 은 규격화된 상호작용에 적용되는 약속
대부분 컴퓨터 통신 프로토콜은 주고받는 데이터를 해석할 수 있게 문법(syntax)을 포함한다. 이렇게 엄격한 프로토콜을 통해 통신 오류 발생 가능성을 줄인다.
[현재 제정된 표준 통신 프로토콜]
1. TCP/IP : 네트워크 통신의 기초
2. HTTP : 웹 애플리케이션이 사용함
3. FTP : 파일을 주고받을 때 사용함
...ETC
서버와 클라이언트의 데이터 교환을 Request(요청)과 응답(Response) 형식으로 정의한 프로토콜
포트는 기본적으로 TCP/80 또는 TCP/8080
클라이언트가 서버(서비스 포트)에 (HTTP)요청 -> 서버가 응답
HTTP요청과 HTTP응답은 공통적으로 헤드와 바디로 구성되어 있음.
ⓐ HTTP 헤드 : 각 줄은 CRLF로 구분된다. 첫 줄은 시작줄(Start-line) 그 외 나머지는 헤더(Header)라고 부름. 헤더는 필드와 값으로 구성됨. HTTP 메시지 또는 바디의 속성을 나타낸다.
ⓑ HTTP 바디 : 헤드의 마지막 뒤의 모든 줄. 클라이언트나 서버에게 전송하려는 데이터가 담겨져있음.
서버에게 특정 동작을 요구하는 메시지.
서버는 해당 동작의 실현 가능, 권한 등을 검토하여 처리한다.
ⓐ 시작줄 : 메소드(Method), 요청 URI(Request-URI), HTTP 버전 (각각 띄어쓰기로 구분)
📌 메소드(Method) : URI가 가리키는 리소스를 대상으로, 서버가 수행하길 원하는 동작을 나타냄 (주로 GET, POST가 사용됨)
📌 요청 URI : 메소드의 대상
📌 HTTP 버전 : 클라이언트가 사용하는 HTTP 프로토콜 버전
ⓑ 헤더, 바디 : HTTP 메시지 설명과 동일
👉 GET : 리소스를 가져오라는 메소드 (ex. 웹 페이지 주소를 클릭할 경우)
👉 POST : 리소스로 데이터를 보내라는 메소드 (ex. 로그인을 할 경우)
HTTP 요청에 대한 결과를 반환하는 메시지
ⓐ 시작 줄 : HTTP 버전, 상태코드(Status Code), 처리사유 (Reason Phrase) (각각 띄어쓰로 구분)
👉 HTTP 버전 : 서버가 사용하는 HTTP 프로토콜의 버전을 나타냄
👉 상태 코드 : 요청에 대한 처리 결과 (세 자릿수) (ex. 200 : 성공, 400 : 요청이 문법에 맞지 않음, 404 : 리소스가 없음)
👉 처리 사유 : 상태 코드가 발생한 이유
TLS(Transport Layer Security) 프로토콜을 도입하여 HTTP를 중간에 가로채 이용자의 정보를 탈취하는 문제점을 보완한다.
TLS : 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화한다.
👉 웹 서버의 URL이 http:// 로 시작되면 HTTP, https:// 로 시작되는 HTTPS 프로토콜을 사용한다.