본문 바로가기

SearchDeveloper/Web

HTTP 개요

<용어정리>

리소스

클라가 아닌 웹 서버에 존재하는 어떤 종류의 컨텐츠이다. 정적 리소스인 html 이 될 수도있고 동적 컨텐츠도 포함된다.
 

MIME (Multipurpose Internet Mail Extensions)

http를 통해 전송되는 객체 데이터는 텍스트가 될 수도있고 이미지가 될 수도 있고 영상이 될수도 있다. 데이터가 어떤 종류인지 MIME 타입을 통해 명시한다.  MIME 에 메일이 붙은 이유는 초기에 MIME 은 다양한 전자메일 시스템 간에 메시지 통신할 때 사용하는 타입이었는데 HTTP 에서도 잘 동작하여 MIME 타입을 채택하였다.
웹서버가 메시지에 MIME type 을 붙여 클라한테 반환하면 클라는 MIME 을 먼저 까보고 다룰 수 있는 메시지인지 판단한다. MIME 에 맞게 데이터를 파싱해 우리에게 보여준다.
ex. text/html, image/gif, application/vnd.ms-powerpoint(MS 파워포인트)
 
MIME type

URI (Unified Resource Identifier)

리소스의 경로를 식별한다. URI = URL + URN 이다. 
- URL(Unified Resource Locator) 은 http든 ftp 든 서버의 리소스를 어떤 프로토콜로 접근해야하는지 명시한다. (http://www.dfdfd.com/index.html, ftp://...)
- URN(Unified Resource Name) 은 리소스위치가 변경해도 영향을 받지 않는 이름이다. (urn:itef:rfc:2141) 
URN은 아직 널리 사용되지 않기 때문에 대부분 URI = URL 동일의미로 쓰인다. ⇒ 그래도 URL 용어를 사용하자 정확하게 하기 위해!
URL 구조
 
 

<HTTP 메소드>

"클라이언트 입장"
- GET : 서버야 내가 요청한 리소스 보내줘
- POST: 서버야 나의 데이터를 보낼게
- PUT: 서버야 이 리소스가 없으면 생성, 있으면 수정해줘
- PATCH: 서버야 이 리소스를 수정해줘 https://tecoble.techcourse.co.kr/post/2020-08-17-put-vs-patch/
- DELETE: 서버야 이 리소스 삭제해줘
- HEAD: 서버야 리소스 말고 헤더만 보내줘
 
 
 

<요청/응답 메시지 구성>

※ HTTP 트랜잭션 → 요청 + 응답 메시지
 
메시지는 바이너리가 아니라 일반 텍스트(body 제외-영상같은건 이진파일) 로 되어있어 우리가 읽기 쉽다.
 
➡ 요청 메시지: (명령) 서버야 HTTP 1.0 버전으로 이 리소스에 대한 데이터를 줘. (헤더) 나의 정보를 보낼게. 그리고 내가 지정한 형식으로 보내줘
⬅ 응답 메시지: (상태) 클라야 너의 요청에 대한 응답 상태야.  (헤더) 몇몇 정보와 응답 메타 데이터를 보낼게. 데이터 타입은 content-type 에 있단다. (본문) 클라야 너가 원하는 데이터야
HTTP 요청/응답 메시지 구조
 
 
 

<메시지가 시스템 사이를 어떻게 이동하는가?: 네트워크 방식>

HTTP 는 5계층인 애플리케이션 계층이다. OSI 7 계층은 각 계층의 역할을 정해놓고 계층끼리 상호 작동하는 구조라 한 계층에서는 정해진 업무만 해야한다. 
즉, HTTP 메시지를 주고받는 네트워크 통신은 HTTP가 직접 하는게 아니라 하위 계층이 TCP/IP 프로토콜을 이용해 대신 해준다. 
그렇기 때문에 HTTP 통신은 TCP/IP 의 장점을 그대로 따라간다: 신뢰성이 높은 프로토콜. 오류가 없고 보낸 순서대로 도착한다.
 
① URL 에 명시된 서버 ip 와 port 로 클라 ↔ 서버 간 TCP 커넥션은 맺는다.
② 클라가 서버에게 요청을 하고, 서버는 응답을 해준다.
③ TCP 커넥션을 끊는다.
OSI 7 계층 구조
 
HTTP TCP 커넥션 과정

 

레퍼런스

HTTP 완벽 가이드 책 정리

 

HTTP 개요

 

글 읽어주셔서 언제나 감사합니다. 좋은 피드백, 개선 피드백 너무나도 환영합니다.