본문 바로가기

네트워크9

HTTPS HTTP 통신은 암호화 되지 않은 평문으로 실시된다. 또한 HTTP 에는 통신 상대의 서버나 클라이언트를 인증하는 수단이 없다. 때문에 실제로는 의도한 통신 상대와 통신하지 않고 있을 가능성이 있고, 수신한 메시지가 도중에 변조되어 있을 가능성도 있다. 이러한 문제를 해결하기 위해 암호화와 인증과 완전성 보호 같은 구조를 HTTP 에 추가한 것을 HTTPS(HTTP Secure) 라고 한다. HTTPS 는 새로운 응용계층 프로토콜은 아니다. 보통 HTTP 는 직접 TCP와 통신하지만, SSL을 사용한 경우에는 HTTP 는 SSL 과 통신하고 SSL 이 TCP 와 통신하게 된다. 클라이언트 → 서버로 랜덤 데이터와 사용 가능한 암호화 방식을 보낸다. 서버 → 클라이언트로 랜덤 데이터, 사용할 암호화 방식과.. 2023. 4. 22.
HTTP 헤더 HTTP 프로토콜의 리퀘스트와 리스폰스에는 반드시 메시지 헤더가 포함되어 있는데 메시지 헤더에는 클라이언트나 서버가 리퀘스트나 리스폰스를 처리하기 위한 정보가 들어있다. 다만 이러한 정보의 대부분은 클라이언트를 이용하는 사용자가 직접 볼 필요는 없다. 리퀘스트의 HTTP 메시지는 메소드, URI, HTTP 버전, HTTP 헤더 필드 등으로 구성되어 있으며 리스폰스의 HTTP 메시지는 HTTP 버전, 상태 코드, 헤더 필드 등으로 구성되어 있다. HTTP 헤더 필드는 그 용도에 따라 다음과 같이 분류된다. 1) 일반적 헤더 필드 (General Header Fields) 리퀘스트 메시지와 리스폰스 메시지 둘 다 사용하는 헤더이다. 헤더 필드 명 설명 Cache-Control 캐싱 동작 지정 Connecti.. 2023. 4. 14.
HTTP와 연계하는 웹 서버 가상 호스트 (Virtual Host) HTTP/1.1 에서는 하나의 HTTP 서버에 여러 개의 웹사이트를 실행할 수 있다. 예를 들면 웹 호스팅을 제공하고 있는 사업자는 1대의 서버에 여러 고객의 웹사이트를 넣을 수 있다. 고객마다 다른 도메인을 가지고 다른 웹사이트를 실행할 수 있는데 이를 위해 가상 호스트 (Virtual Host) 라는 기능을 사용하고 있다. 가상 호스트를 사용하면 물리적으로는 서버가 1대지만 가상으로 여러 대가 있는 것처럼 설정할 수 있다. 인터넷에서 도메인명은 DNS 에 의해서 IP 주소로 변환되고 나서 엑세스 하게 된다. 결국 리퀘스트가 서버에 도착한 시점에는 IP 주소를 기준으로 엑세스 하게 된다. 이 때 1대의 서버 안에 가상 호스트를 이용한 여러개의 도메인이 실행되고 있.. 2023. 4. 12.
HTTP 상태코드 클라이언트가 서버를 향해 리퀘스트를 보낼 때, 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할이다. 서버가 리퀘스트를 정상적으로 처리했는지, 그렇지 않으면 리퀘스트 결과가 에러였는지를 알 수 있다. 상태 코드 클래스 클래스 설명 1XX Informational 리퀘스트 받아서 처리중 2XX Success 리퀘스트를 정상적으로 처리했음 3XX Redirection 리퀘스트를 완료하기 위해 추가 작업 필요 4XX Client Error 서버는 리퀘스트 이해 불가능 5XX Server Error 서버는 리퀘스트 처리 실패 2XX 성공(Success) 1) 200 OK 클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음을 나타낸다. 리스폰스에서 상태 코드와 함께 되돌아 오는 정보는 메소드에 .. 2023. 4. 11.
Persistent connection / Stateless Persistent connection HTTP 초기 버전에서는 HTTP 통신을 한 번 할 때마다 TCP 에 의해 연결을 종료할 필요가 있었다. 초기 통신은 작은 사이즈의 텍스트를 보내는 정도였기 때문에 이렇게 기능을 구현해도 문제가 없었으나, HTTP 가 널리 보급되어 감에 따라 다량의 이미지를 포함한 문서 등이 늘어나게 되었다. 하나의 HTML 에 여러 이미지가 포함되어 있는 경우 브라우저를 사용해서 리퀘스트를 하면 HTML 문서에 포함되어 있는 이미지를 획득하기 위해서 여러 리퀘스트를 송신하게 된다. 이때 리퀘스트를 보낼 때마다 매번 TCP 연결과 종료를 하게 되어 쓸모없는 통신량이 늘어났다. 이러한 문제를 해결하기 위해 HTML 1.1 버전에서는 지속연결(Persistent connection) .. 2023. 4. 6.
HTTP 메소드 HTTP 에서 사용 가능한 다양한 메소드에 대해서 알아보자. GET : 리소스 획득 GET 메소드는 리퀘스트 URI 로 식별된 리소스를 가져올 수 있도록 요구한다. 가져올 리소스 내용은 지정된 리소스를 서버가 해석한 결과이다. POST : 엔티티 전송 POST 메소드는 엔티티를 전송하기 위해서 사용된다. GET 으로도 엔티티를 전송할 수 있지만, 자주 사용하지 않고 일반적으로 POST 를 사용한다. PUT : 파일 전송 PUT 메소드는 파일을 전송하기 위해서 사용된다. FTP 에 의한 파일 업로드와 같이, 리퀘스트 중에 포함된 엔티티를 리퀘스트 URI 로 지정한 곳에 보존하도록 요구한다. 다만 HTTP/1.1 PUT 에는 인증 기능이 없어 누구든지 파일 업로드가 가능하다는 보안 문제가 있어서 일반적인 웹.. 2023. 4. 5.