HTTP = Hypertext Transfer Protocol
www(world wide web), 즉 인터넷 상에서 데이터를 주고 받을 수 있는 프로토콜이다.
주로 HTML 문서를 주고 받는데 사용된다.
서버와 클라이언트 사이에 이루어지는 요청/응답 프로토콜이다.
클라이언트가 Request(요청)를 보내면, 서버는 이 요청에 Response(응답)한다.
예를 들어, 클라이언트인 웹 브라우저가 HTTP를 통해 웹페이지(HTML)을 요청하면, 서버는 해당 웹 페이지에 대한 데이터를 사용자에게 전달하여 응답한다.
Connections
HTTP는 TCP/IP를 사용해서 데이터를 주고 받는다.
TCP/IP를 사용하기 때문에 신뢰성이 보장된다.
클라이언트와 서버의 연결 과정은 다음과 같다.
1. 클라이언트의 웹 브라우저에 url 주로를 입력한다.
2. url에서 host name을 가져온다.
3. DNS를 통해 ip address를 파악한다.
4. url에서 port number를 가져와서 ip address와 합치고 해당 주소에 연결을 요청한다.
5. 클라이언트에서 서버로 HTTP message(request)를 전송한다.
6. 클라이언트에서 서버가 전송한 HTTP response를 읽는다.
7. 연결을 해제한다.
HTTP는 연결을 설정한 후 클라이언트에서 요청을 보내고, 서버가 응답을 보낸 이후에 연결을 해제한다.
Resources
HTTP 프로토콜을 통해 주고 받는 데이터들은 접속 시점에 따른 데이터 존재 여부를 기준으로 구분된다.
Static content : 클라이언트가 서버에 접속하기 이전에 이미 데이터가 존재한다(File system, word file, image, video clip).
Dynamic content : 클라이언트가 접속한 시점에 클라이언트의 데이터를 바탕으로 만들어진다(live image, trade stocks).
HTTP Messages
HTTP 프로토콜에서 주고받는 메시지는 Request, Response 메시지 둘 뿐이다.
다른 형태의 메시지는 존재하지 않는다.
HTTP 메시지들은 연속적인 문자들로 구성되어 있기 때문에, 사람이 읽고 쓰기 쉽다.
HTTP Methods
클라이언트는 서버에게 요청할 때 요청의 종류를 서버에게 알려줘야 한다.
주로 GET(조회), PUT(수정), POST(추가), DELETE(삭제) 와 같은 메서드를 사용한다.
GET : 데이터를 요청한다(SELECT, 조회)
PUT : 데이터를 수정한다(UPDATE, 수정)
POST : 데이터를 추가한다(INSERT, 추가)
DELETE : 데이터를 삭제한다(DELETE, 삭제)
그 외에 추가적인 메서드들은 다음과 같다.
HEAD : 서버가 오직 헤더만 전송하도록 요청한다.
TRACE : 클라이언트의 요청을 그대로 반환한다.
OPTIONS : 서버가 지원하는 옵션에는 무엇이 있는지 알려달라고 요청한다.
HEAD로 요청하면 서버에서 응답을 보내기 전에, 파일을 제외하고 헤더만 전송한다.
클라이언트는 resource를 얻지 않고도, 헤더를 들여다 볼 수 있다.
HEAD는 보통 GET을 하기 전에 해당 파일이 존재하는지 확인하거나, 파일의 정보를 확인하고자 하는 경우 사용한다.
TRACE는 클라이언트와 서버의 중간에 Proxy 서버가 존재하는지 확인하는데 사용할 수 있다.
Proxy 서버는 http 서버와 클라이언트 사이에 존재하여, 클라이언트와 서버 사이에 주고받는 트래픽을 보고 데이터를 보내도 될지 판단하는 역할을 한다.
Proxy 서버를 통해 바이러스와 불순한 사이트를 막을 수 있고, 디도스와 같은 공격을 사전에 예방할 수 있다.
보안의 목적 이외에도 Proxy 서버는 성능 최적화나 어플리케이션 통합 등의 목적으로 사용될 수 있다.
보통 OPTIONS은 보안상의 이유로 대부분의 사이트가 지원하지 않는다.
Status Codes
서버가 요청을 할 때, 상태 코드를 함께 전송한다.
대표적인 상태 코드는 다음과 같다.
200 : 성공. 클라이언트의 요청을 성공적으로 처리했다.
302 : 이곳에는 리소스가 없으므로, 다른 곳으로 이동해서 리소스를 가져가라.
404 : Not Found. 이 리소스를 찾을 수 없다.
'Server > ASP.NET Core Web Server' 카테고리의 다른 글
[ASP.NET Core Web API Server] ASP.NET Core Overview (1) | 2023.06.16 |
---|