HTTP
- Hyper Text Transfer Protocol의 약자.
- 클라이언트와 서버의 데이터 교환을 요청(Request) 응답(Response)으로 정의한 프로토콜.
- HTTP는 일반적으로 TCP/80 또는 TCP/8080 포트에서 통신.
네트워크 포트와 서비스 포트
네트워크 포트(Network Port)
- 네트워크에서 클라이언트와 서버가 데이터를 교환하는 장소 또는 길을 추상화한 개념.
- 네트워크 생략하고 “포트”라고 부르기도 함.
서비스 포트(Service Port)
- 네트워크에서 특정 서비스가 점유하고 있는 포트를 의미. 예를 들어 HTTP의 서비스 포트는 80번 포트.
- 보통 전송 계층(Transport Layer)의 프로토콜을 따르며 TCP와 UDP 두 가지 방식이 존재.
- 서비스 포트 표기 시 포트 번호와 사용하는 전송 계층 프로토콜을 같이 명시.
ex) HTTP 서비스 포트: TCP/80
잘 알려진 포트(Well-known port)
- 특권 포트(Privileged port)라고도 불리며 0번-1023번 대역에 있는 포트들을 의미한다. 해당 포트에는 이름 그대로 잘 알려진 서비스들이 등록되어 있다.
- ex) SSH(22번), HTTP(80번), HTTPS(443번) 등
- 특권 포트에 서비스를 실행하려면 관리자 권한이 필요하다. 따라서 이 대역에서 실행중인 서비스들은 관리자의 것이라고 신뢰할 수 있다.
HTTP 메세지
HTTP 헤드
- 헤드에서 첫 줄을 시작 줄(start-line), 나머지 줄을 헤더(header)라고 부른다.
- 헤더는 필드와 값으로 구성되며 HTTP 메세지 또는 바디의 속성을 나타낸다.
- 하나의 HTTP 메세지 안에는 0개 이상의 헤더가 있을 수 있다.
HTTP 바디
- 헤드 뒤의 모든 내용으로 클라이언트나 서버에게 전달하려는 내용을 담고 있다.
HTTP 요청
- 서버에게 특정 동작을 요구하는 메세지이다.
- 서버는 해당 동작이 실현 가능한지, 클라이언트가 그러한 동작을 요청할 권한이 있는지 검토 후 요청을 처리한다.
시작 줄
- HTTP 요청의 시작 줄은 메소드(Method), 요청 URI(Request-URI), HTTP 버전으로 구성되고, 각각은 띄어쓰기로 구분한다.
- 메소드는 URI가 가리크는 리소스를 대상으로 서버가 수행하길 바라는 동작을 의미한다. 자주 사용되는 메소드에는 GET, POST가 있다.
GET 메소드
- 서버에서 리소스를 가져오게 하는 메소드
POST 메소드
- 서버로 데이터를 보내게 하는 메소드.
- 전송할 데이터는 보통 HTTP 바디에 포함되어 보내진다.
HTTP 응담
- HTTP 요청에 대한 결과를 반환하는 메세지이다.
- 요청에 의한 수행 결과로 상태 정보(Status)와 리소스를 반환한다.
시작 줄
- HTTP 응답의 시작 줄은 HTTP 버전, 상태 코드(Status Code), 처리 사유(Reason Phrase)로 구성되고, 각각은 띄어쓰기로 구분한다.
- 상태 코드는 요청에 대한 처리 결과를 세 자릿수로 나타낸다.
- RFC 2616에 40여개의 상태 코드가 정의되어 있고, 각각은 첫 번째 자릿수에 따라 5개의 클래스로 분류된다.
상태 코드 | 설명 | 대표 예시 |
1xx | 요청을 제대로 받았고, 처리가 진행 중임. | |
2xx | 요청이 제대로 처리됨. | - 200: 성공 |
3xx | 요청을 처리하려면, 클라이언트가 추가 동작을 취해야 함. | - 302: 다른 URL로 갈 것 |
4xx | 클라이언트가 잘못된 요청을 보내어 처리에 실패. | - 400: 요청이 문법에 맞지 않음 - 403: 클라이언트가 리소스에 요청할 권한이 없음 - 404: 리소스가 없음 |
5xx | 클라이언트의 요청은 유효하지만, 서버에 에러가 발생하여 처리에 실패. | - 500: 요청을 처리하다가 에러가 발생함. - 503: 서버가 과부하로 인해 요청을 처리할 수 없음. |
HTTPS
- HTTP over Secure soket layer의 약자로 TLS(Transport Layer Security) 프로토콜을 도입하여 클라이언트와 서버간에 오가는 메세지를 암호화한다.
- HTTP 메세지는 평문으로 전달되지만, HTTPS는 이를 암호화하여 도청과 변조로부터 보호된다.
HTTP
HTTPS
더보기
TLS 표준
TLS를 잘 이해하려면 TLS의 기반이 되는 공개 키 암호 시스템(Public Key Crypto Standard, PKCS) 및 대칭 키 암호(Symmetric Key Cryptography)을 알아야 한다.
https://dreamhack.io/lecture/courses/199
'Study > Web Hacking' 카테고리의 다른 글
[dreamhack] web browser (0) | 2022.01.25 |
---|---|
[dreamhack] web (0) | 2022.01.25 |
[Webhacking.kr] old-40 (0) | 2021.11.11 |
[Webhacking.kr] old-29 (0) | 2021.11.11 |
[Webhacking.kr] old-55 (0) | 2021.11.05 |