article thumbnail image
Published 2022. 1. 25. 01:22

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/roadmaps/3

 

 

 

https://dreamhack.io/lecture/courses/199

 

Background: HTTP/HTTPS

이 코스에서는 웹 통신에 쓰이는 프로토콜인 HTTP와 HTTPS에 대해 설명합니다.

dreamhack.io

 

'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
복사했습니다!