HTTP ( Hyper Text Transfer Protocol ) 란?

W3 (World Wide Web)에서 데이터를 주고 받을 수 있는 애플리케이션 단의 통신 규약(프로토콜)이다.

보편적으로 HTML (Hyper Text Markup Language)[각주:1]문서를 주고 받으며, TCP를 이용해 통신한다. 

 

HTTP /3 부터는 UDP를 사용하며 80번 포트를 사용한다.

 

HTTP는 클라이언트와 서버 사이에서 Request와 Response를 주고 받는 형식으로 통신하고,

HTTP로 전달되는 자료는 http:// 로 프로토콜을 선언 한 뒤, 해당 url를 붙여서 조회할 수 있다.

 

HTTP는 상태값을 저장하지 않는다 (Stateless). 각 요청과 응답은 독립적인 형태이다.

HTTP통신에서 상태 값을 저장하기 위해 쿠키나 세션을 사용한다.

 

HTTP가 통신하는 과정

1. TCP 연결을 연다.

 : 응답을 주고 받는 것에 사용한다.

 

2. HTTP 메세지를 전송한다. 

  : HTTP /2 이후로는 메세지가 프레임[각주:2] 속으로 캡슐화되어서 개발자가 직접 읽을 수 없다

 

3. 서버가 주는 응답을 읽어들인다. 

 

4. 연결을 닫거나, 다른 요청을 위해 연결을 재사용한다.

 

HTTP 요청(Request) 메시지 구조

헤더 :        바디 :     

 

start-line :

HTTP 메서드[각주:3]

URL[각주:4]이나 프로토콜, 포트, 도메인의 절대경로 (포맷은 HTTP메소드에 따라 달라진다)

header :

User-Agent, Accept-Type,Accept-Language,Referer 등...

blank-line :   

body (document) :

일반적으로 데이터를 가져오는 요청에는 값을 넣지 않지만, POST나 PUT과 같은 메소드에서는 값이 들어간다

 

 

HTTP 응답(Response) 메시지 구조

헤더 :        바디 :     

 

status-line :

프로토콜 버전[각주:5], 상태 코드, 상태 텍스트

header :

User-Agent, Accept-Type,Accept-Language,Referer 등...

blank-line :   

body (document) :

서버에서 반환한 데이터

 

HTTP 응답의 상태 코드

보통 200 대는 정상적 반환, 300대 리다이렉션, 400대 클라이언트 에러, 500대 서버 에러로 나뉘어진다.

상태코드는 다양하며 여기서는 몇 가지만 정리해보려고 한다.

 

403 Forbidden : 권한으로인한 거절 (로그인 실패시와 같은...)

404 Not Found : 서버가 리소스를 찾을 수 없을 때. 보통 화면 매핑에 실수가 있을 때 자주 보인다

 

500 Internal Server Error : 서버에서 예외가 발생했을 때

(스프링에선 서버 에러 로그가 노출되므로 가급적 이 페이지가 안 떨어지게 예외 처리를 잘 해야한다)

505 HTTP Version Not Supported : 요청으로 들어온 HTTP 버전을 서버가 지원하지 않음

 

418 I'm a teapot 이라는 만우절 농담에서 유래한 상태 코드도 있다.😂

 

 

 

 

참고문헌

위키백과 'HTTP' https://ko.wikipedia.org/wiki/HTTP

 

HTTP - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

mdn web docs 'HTTP 개요' https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

HTTP 개요 - HTTP | MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org

mdn web docs 'HTTP 메시지' https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

 

HTTP 메시지 - HTTP | MDN

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지

developer.mozilla.org

 

  1. 웹 페이지에 주로 쓰이는 마크업 언어 [본문으로]
  2. 이진 구조로 되어있다. [본문으로]
  3. GET,POST,PUT,DELETE...등 [본문으로]
  4. uniform resource locator [본문으로]
  5. 일반적으로 HTTP/1.1이다 [본문으로]

1. 데이터 전송 방식의 변화

 

초기의 네트워크는 메인프레임을 시분할 시스템(회선 교환 방식)으로 나눠 사용하는 모습이었다.

 

시분할 시스템(Time Sharing System)이란?

: 메인 프레임의 처리 속도를 짧게 분할해 이용자들에게 순차적으로 할당하는 방식.

일정 시간내에 복수 처리가 가능하고,

각 이용자들은 TTS Terminal (시분할시스템 단말)을 통해 각각 1대의 컴퓨터를 점유한 것 처럼 사용할 수 있다.

 

후에 패킷 교환 방식이 적용된 ARPAnet(아르파넷 : 인터넷의 원형이라고 볼 수 있는 네트워크)이 개발되어 본격적으로 패킷 교환 방식의 네트워크가 주목받게 되었다.

 

2. 회선 교환 방식

 

: 일대일의 데이터 전송로를 만들어 교환을 마칠 때까지 해당 전송로를 계속 사용하는 방식이다.

그러므로 접속이 끊길 때까지 해당 전송로를 계속 사용하고, 접속한 동안에는 회선을 점유하기 때문에 다른 전화는 받을 수 없게 된다. 회선을 점유하므로 통신 품질은 우수하나, 회선 이용 효율은 떨어진다.

 

3. 패킷 교환 방식

 

: 데이터를 패킷(packet)으로 나눠서 송신하는 방식이다.

패킷으로 분할 된 데이터에 헤더(header)를 붙여 수신 컴퓨터에 대한 정보와 데이터등을 담아 패킷 교환기로 보낸다.

데이터 교환기로 이루어진 네트워크는 패킷의 헤더를 보고 수신 컴퓨터로 패킷을 전달하고, 수신 컴퓨터의 헤더를 보고 패킷을 원 데이터로 복원한다. 전송로는 회선 교환 방식과 달리 동시에 여러 패킷들이 이용하므로 회선 이용 효율성은 높고, 데이터 손상시에도 복구가 쉽다.(해당 패킷만 재전송하면 되므로)

 

 

 

 

참고문헌

정보통신용어사전 '시분할시스템' https://terms.naver.com/entry.naver?docId=796836&cid=42347&categoryId=42347 

 

시분할시스템

컴퓨터는 처리 속도가 매우 빠르기 때문에 그 이용시간을 짧게 분할하여 정해진 계획에 따라 각 이용자에게 순차적으로 할당함으로써 일정 시간내에 복수의 과업을 실행할 수 있도록 내부처리

terms.naver.com

미야타 히로시, 「그림으로 공부하는 TCP/IP구조」,제이펍,2021

'Infra > 네트워크' 카테고리의 다른 글

네트워크 기초 : 서브넷  (0) 2022.07.11
네트워크 기초 : LAN과 WAN 그리고 DMZ  (0) 2022.06.29
네트워크 기초 : HTTP  (0) 2022.06.21

+ Recent posts