비연결성(Connectionless)

 

TCP/IP는 연결을 유지한다.

요청 <-> 응답 형태

 

근데 서버에 연결된 클라이언트가 많아지면 서버의 부하가 많이 된다.

 

비연결성의 사용 이유!

연결을 유지하지 않는 모델은 서버가 유지해야 하는 자원이 줄어서 좋다.

 

HTTP는 기본적으로 연결을 유지하지 않는다.

Request, Response 형식으로 요청하고 응답이 오면 종료한다.

연결을 바로바로 끊게 되면 수천 명이 사용해도 동시에 들어오는 건 매우 적다.

 

비연결성의 단점

1.TCP/IP 연결에 필요한 3 way handshake 시간이 계속 추가된다.

2. 웹 브라이저로 사이트를 요청하면 HTML뿐만 아니라 자바스크립트, css, 추가 이미지 등 수많은 자원이 함께 다운로드된다.

 

처리방법

하나당 연결 후 끊는 게 아니라 다천리 될 때까지는 연결을 유지한다.

연결
자바스트립트
css
추가이미지
종료
형식으로 사용한다.

http 메시지

 

http는 모든 바이너리 데이터를 다 전송할 수 있다.(이미지, html, json 등등)

http를 사용하는 이유!

 

http 메시지 구성 형식

Start-line 시작라인
Header 헤더
Empty line 공백 라인(CRLF) <- 무조건 있어야한다.
Message body

공식 스펙도 이렇게 되어있다.

 

Request(요청)

요청 시 메시지 구성요소에 들어가는 것

시작 라인 request-line

1.Http 메서드

- GET, POST, PUT, DELETE 등이 있다.

 

2. 요청 대상

- 대부분 절대 경로 이후의 값이 들어간다.

- /search?q=hello&hl=ko

3.Http 버전

- HTTP/1.1

 

Request(응답)

응답 시 메시지 구성요소에 들어가는 것

시작 라인 status-line

1.Http 버전

 

2.HTTP상태 코드(요청 성공, 실패를 나타냄)

- 200 : 성공

- 400 : 클라이언트 요청 오류

- 500 : 서버 내부 오류

 

3. 이유 문구

- 사람이 읽을 수 있는 오류 문구


Http header  

Key:Value 형태로 구성된다.

Key는 대소문자 구분하지 않는다.

value는 당연히 대소문자를 구분한다.

 

Http header 용도

http 전송에 필요한 부가 정보가 모두 포함되어있다.

서버와 협의 시에 부가 정보도 추가할 수 있다. 

ex) 특정 헤더 값 추가

KEY-TEST : "바보"


HTTP 메시지 바디

실제로 전송할 데이터가 포함된다.

 

 

 

+ Recent posts