HTTP : HypeText Transfer Protocol
HTTPS : HypeText Transfer Protocol Secure Socket Layer
http, https는 웹(www)에서 이루어지는 통신을 정의한 프로토콜이다.
기본 포트로 80(HTTP), 443(HTTPS) 포트를 사용한다.
HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜이다.
HTTP는 클라이언트와 서버 사이에서 평문 메시지로 이루어져있다. HTTPS는 이를 보완하기 위해 등장하였다. HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.
HTTP는 사용자가 서버에 요청을 하는 Request와 사용자의 요청에 대한 서버의 응답인 Response로 이루어진다.
HTTP Request
서버에 대한 요청
첫 줄에는 Method, Path, Version으로 구성
두 번째 줄에서 부터는 Header 부분
마지막은 Body 부분
Method
: 서버에 요청 시 수행하고자 하는 동작
- GET : URI(URL) 형식으로 웹 서버측 리소스를 요청
- POST : 특정 리소스 생성 및 데이터 추가를 위해 값을 제출할 때 사용
- HEAD : GET 메소드와 동일하지만, Header부분만 받음
- PUT : 특정 리소스의 내용을 보낸 값으로 설정
- PATCH : 특정 리소스의 내용 중 보낸 값의 key만 변경
- DELETE : 특정 리소스를 삭제
- TRACE : 요청받은 값을 Response의 Body로 다시 클라이언트에게 되돌려줌
- OPTIONS :요청하는 리소스가 허용하는 메소드 목록을 반환
Path
: 사용자가 서버에 요청하는 웹 리소스의 경로
Version
: HTTP의 버전
Header
: 서버에 추가 정보를 전달하는 데이터 부분
'이름 : 값'의 형태로 이루어짐
- Host : 서버의 도메인 네임
- Cookie : 웹 서버가 클라이언트에 쿠키를 저장해 놓았다면 해당 쿠키의 정보를 웹 서버에 전송
- User-Agent : 현재 사용자가 어떤 클라이언트를 통해 요청을 보냈는지 알 수 있음
- Accept : 클라이언트가 허용할 수 있는 파일형식
- Origin
- If-Modified-Since
- Authorization
- Connection
- Content-Length : 본문 크기를 바이트 단위로 표시
- Content-Type : 서버의 응답 데이터를 웹 브라우저에서 처리할 방식과 형식
- Content-Language : 사용자의 언어
- Content-Encoding
Body
: 사용자가 입력한 데이터가 서버에 전달 시 데이터를 담는 부분
HTTP Response
사용자의 요청에 대한 서버의 응답
첫 줄에는 Version, Status Code(Status Text)로 구성
두 번째 줄에서 부터는 Header 부분
마지막은 Body 부분
Version
: HTTP의 버전
- HTTP/1.1 : 연결 당 하나의 요청과 응답을 처리 -> 동시 전송 불가능, 요청과 응답이 순차적, 속도와 성능 이슈
- HTTP/2 : 한 커넥션에 여러개의 메세지를 동시에 주고 받을 수 있음(Multiplexed Streams), 리소스간 의존관계를 설정(Stream Prioritization), HTML문서에 포함된 리소스를 클라이언트가 요청하지 않아도 보내줄 수 있음(Server Push), Header 정보를 압축(Header Compression)
Status code
: 사용자의 요청에 대한 서버의 처리 결과
- 1xx : 조건부 응답
- 2xx : 성공
- 3xx : 리다이렉션 완료
- 4xx : 요청 오류
- 5xx : 서버 오류
- 100 Continue
- 200 OK : 성공적으로 처리
- 201 Created : 새로운 리소스가 생성
- 301 Moved Permanently : 영구적으로 컨텐츠가 이동
- 302 Found : 일시적으로 컨텐츠가 이동
- 304 Not Modified
- 400 Bad Request : 요청 자체가 잘못됨
- 401 Unauthorized : 인증 없이 접근한 경우 발생
- 403 Forbidden : 접근 권한이 금지됨
- 404 Not Found : 찾는 리소스가 없음
- 408 Request Timeout : 요청 중 시간이 초과됨
- 500 Internal Server Error : 서버 오류
- 502 Bad Gateway : 게이트 웨이가 연결된 서버로부터 잘못된 응답을 받았을 때 사용
- 503 Service Temporarily Unavailable : 일시적으로 서비스를 이용할 수 없을 때 사용
- 504 Gateway Timeout : 게이트웨이가 연결된 서버로부터 응답을 받을 수 없었을 때 사용
Header
- Date : 메시지가 만들어진 시각
- Server : 웹 서버의 정보
- Access-Control-Allow-Origin : 프론트 주소를 적어주면 요청 호스트와 응답 호스트가 달라도 에러가 발생하지 않음
- Allow : 허용되는 Method 목록을 사용자에게 알려줌
- Content-Disposition : 응답 메시지 본문을 어떻게 표시해야 할지 알려줌
- Location : 300번 영역의 응답 코드 사용 시 변경된 웹 리소스의 주소
- Content-Security-Policy : 다른 외부 파일들을 불러오는 경우, 차단할 소스와 불러올 소스를 여기에 명시할 수 있음
Body
사진 출처 : https://documentation.help/DogeTool-HTTP-Requests-vt/http_request.htm
HTTP version : ijbgo.tistory.com/26
HTTP header : https://goddaehee.tistory.com/169
'Study > Web' 카테고리의 다른 글
[DVWA] Stored XSS (0) | 2021.06.13 |
---|---|
[DVWA] Reflected XSS (0) | 2021.06.13 |
XSS(Cross Site Scripting) (0) | 2021.06.13 |
[Web]robots.txt (0) | 2021.01.03 |
[Web][beebox]HTML Injection - Reflected (GET) (0) | 2020.12.21 |