오늘 내가 배운 것
1. HTTP 이해
2. HTTP 특징
3. HTTP 동작 방식
4. Request Message, Response Massage
HTTP 이해
HTTP : HyperText Transfer Protocol
브라우저도 하나의 `클라이언트`이다.
- HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜(규칙)
- 규칙이 정해져 있기 때문에 모든 프로그램이 이 규칙에 맞춰 개발하면서 정보를 교환할 수 있다.
- HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계되어 있다.(동영상, 오디오, 텍스트 문서 등...)
- HTTP는 계속 발전하여 HTTP/2까지 버전이 있고, 현재 가장 많이 쓰는 버전 HTTP/1.1이다.
HTTP 특징
- HTTP는 연결 상태를 유지하지 않은 '비연결성' 이다
- 한번 연결을 해서 요청을 하고 응답을 받으면 연결이 끝난다는 뜻
- HTTP는 불특정 다수와 통신하는 하기 위한 것이므로 계속 연결을 유지하면 많은 리소스가 필요하기 때문에 비연결성 특징을 가지고 있다.
- TCP의 논리적 연결만 끊는다!
- 서버는 클라이언트를 기억하고 있지 않기 때문에, 동일한 클라이언트의 요청을 매번 연결하고, 끊는 과정을 반복해야 한다.
- 한번 연결을 해서 요청을 하고 응답을 받으면 연결이 끝난다는 뜻
- 요청이 있으면 무조건 응답을 준다.
HTTP 동작 방식
4 Way Handshake 가 일어나서 서버가 닫히면서 연결이 끊긴다는 것은 연결성이 끊기는 것이지 프로세스가 종료되는 것은 아니다.
Request Message, Response Massage
요청, 응답 메시지는 크게 Header와 Body 2가지 영역이 있다. (빈 줄 기준으로 위아래)
가장 중요한 것은 Header의 첫 번째 줄과 Body영역이다.
- request header + request body -> request message
- response header + response body -> response message
HTTP 요청 메시지
GET /user?name=baek HTTP/1.1
Host: 17.0.0.1:3000
User-agent:...
Content-type : application / x-www-form-...
name = baek
Request startline
HTTP 요청/응답 메시지에서 가장 중요한 것은 첫 번째 줄(startline)
`GET /user?name=baek HTTP/1.1`
[요청 메서드] [요청 URI] [HTTP 버전]
요청 메서드(Request Method)
- GET : 데이터 요청의 의미로 사용한다. (Read)
- POST : 데이터 입력의 의미로 사용한다. (Create)
- PUT : 데이터 수정의 의미 (Update)
- DELETE : 데이터를 삭제하기 위해서 사용 (Delete)
- 데이터를 직접 삭제하는 것이 아니고 데이터 삭제를 서버에 요청한다. - OPTION : 웹서버가 지원하는 메서드의 종류 요청
요청 URI
HOST(ip+port)를 제외한 나머지 URI를 적는다.
HTTP 버전
- HTTP버전이 2.0까지 있는데 1.1만 쓸 예정
Body
client가 server에게 요청할 데이터를 넣는 공간, body를 비운 상태로도 작동이 가능하다.
HTTP 응답 메시지
HTTP/1.1 200 OK
Date : ...
Content-Length : 3423
Content-Type : text/html
<html>
.....내용
</html>
Response startline
HTTP 요청/응답 메시지에서 가장 중요한 것은 첫 번째 줄(startline)
` HTTP/1.1 200 OK`
[HTTP 버전] [상태 코드] [상태 메시지]
상태 코드
1xx(정보) : 요청을 받았으며 프로세스를 계속 진행할 때
2xx(성공) : 요청을 성공적으로 받고, 처리했음 (정상 상태)
3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요할 때
4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없을 때
5xx(서버 오류) : 서버가 유효한 요청에 대한 수행을 못 했을 때.
'시작 > TIL(Today I Learned)' 카테고리의 다른 글
221213 - HTTP 통신 / Request, Response Message (0) | 2022.12.14 |
---|---|
221212 - HTTP 통신 방식, Node.js HTML파일 불러오기, path.join (0) | 2022.12.13 |
221208 - TCP/UDP, TCP서버 (0) | 2022.12.09 |
221207 - 네트워크 기초, OSI 7계층, TCP/IP 4계층, 네트워크 호스트와 스위치, 라우터 (0) | 2022.12.08 |
221206 - Node.js 내장 객체, 내장 모듈, 외장 모듈, Express (0) | 2022.12.07 |
댓글