kjh00n의 기록저장소

HTTP, Proxy 본문

SW개발 보안 구축

HTTP, Proxy

kjh00n 2024. 11. 14. 14:33

HTTP 특징

1. Connectionless

● Server에 많은 Client가 연결되어있으면 자원을 계속 소비하여 다른 Client가 접속을 못할 수도 있다.

● 데이터를 주고받은 후 연결을 바로 끊는다.

● 더 많은 Client에게 서비스를 제공해주기 위한 기능

 

[해결]

파이프 라이닝 (Pipelining)

● Client가 Server에게 HTTP Request를 할 때 계속 연결을 유지하고 싶다고 Keep-alive를 넣는다.

● Client가 마지막 요청을 보낼 때는 Close를 넣어서 이후에는 연결을 끊겠다고 HTTP Request를 전송한다.

Pipelining

 

2. Stateless

● 동일한 Client의 이전 상태정보를 유지하지 못한다.

 

[해결]

Session ID (쿠키)

● Server가 HTTP Response를 보내면서 Session ID도 만들어서 Client에게 전송한다.

● 로그인하고 로그아웃하거나 유효시간이 지나면 Session ID는 없어진다.

● 그 후에 연결이 끊겨도 Client가 Session ID를 Server에게 보내줘서 인식한다.

Server는 Client가 첫 번째로 요청을 보낼 때, 세션을 생성하고 Session ID를 쿠키에 담아 Client에게 응답으로 보냅니다. Client는 이후의 요청에서 이 Session ID를 쿠키를 통해 Server에 자동으로 전송하고, Server는 이를 통해 Client를 식별하고 이전 상태를 복원할 수 있습니다. 이 방식으로 Server는 연결이 끊어져도 Client를 구별하고, 상태를 유지할 수 있습니다.

 

가상호스트

● 가상 호스트는 하나의 Server에서 여러 웹사이트를 운영할 수 있도록 해주는 기술로, 각기 다른 도메인 이름을 사용해 여러 웹사이트를 구분하여 서비스할 수 있게 해준다.

가상 호스트


HTTP Header

Request와 Response의 Header

● Start Line에서 Request일 때는 Request Line, Response일 때는 Status Line이라고 한다.

HTTP Request

● 메소드 : 요청의 종류를 알려주는 값

● 자원 주소(URI) : 어떤 자원 요청하는지 위치

● 버전 : 해당 요청의 HTTP 버전

● CRLF : 개행문자 [ \r = CR, \n = LF ]

메소드의 종류 ↓ (반드시 대문자로 지정할 것)

메소드 종류

HTTP Response

● 버전 : HTTP 버전 정보

● 코드 : 응답의 종류를 숫자로 표현한 코드

● 상태정보 : 해당 응답 코드의 정보

● CRLF : 개행문자 [ \r = CR, \n = LF ]

 

코드의 종류 ↓

Code의 종류

Request Message Header 종류 ↓

Cookie Server에 Client의 Cookie 정보를 전송할 때 사용
HTTP 표준에는 포함되어 있지 않음
Host Web Server의 URL
Referer 현재 Request를 발생한 URL

 

Response Message Header 종류 ↓

Location Redirection시킬 주소
Server Web Server의 정보
Set-Cookie Server에서 Client에게 전달해 줄 Cookie 정보

Proxy

● 중계 서버

※Client와 Server의 거리가 멀리 있을 때 사용

● Client는 Proxy에게 물어보고 Proxy는 Server에게 물어본다.

● Server는 Proxy에게 응답하고 Proxy는 Client에게 응답해준다.

 

종류

● Client Proxy

 클라이언트(사용자)가 서버와 통신할 때, 클라이언트의 요청을 대신하는 프록시 서버.

● Server Proxy

 서버가 다른 서버와 통신할 때, 서버의 요청을 대신하는 프록시 서버.

● Proxy Chain

= Client → Proxy → Proxy → Proxy → Server

Proxy Chain은 여러 개의 프록시 서버를 연결하여 요청을 처리하는 방식이다.

이를 통해 익명성을 높이거나 보안을 강화할 수 있지만, 여러 번의 서버를 거쳐야 하므로 속도 저하가 있을 수 있다.

 

 

 

 

 

'SW개발 보안 구축' 카테고리의 다른 글

SSL 서버 구축  (0) 2024.11.14
SSL  (0) 2024.11.14
HTTP, WAS 구축  (0) 2024.11.13
WEB 구성 요소  (0) 2024.11.13
WEB  (0) 2024.11.13