도당탕탕
Http Request VS Response 본문
Intro
- Http프로토콜에 대해서 알기
- HttpRequest의 구조를 알아보기
- HttpResponse의 구조를 알아보기
- 요청 흐름 구조 알아보기
HTTP 프로토콜이란?
- HTTP 프로토콜이란 인터넷 상에서 데이터를 주고 받기위한 상호간의 규칙을 정의하고 특정 기간내에 데이터를 송수신을 할 수 있는 규약이라고 보면 된다.
- 웹상에서는 서버와 클라이언트가 서로 데이터를 주고 받기위한 방식으로 Http프로토콜을 사용하고 있다.
- Http는 어떤 종류의 데이터 이든지 전송 할 수 있다.
- OSI 7계층중 응용계층 프로토콜이며 TCP/IP위에서 작동하도록 되어있다.
- 일반적으로 포트번호 80을 가진다.
Http Request 구조
POST /user/create HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 57
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
userId=test&password=1234&name=testName&email=test%40test.com
Request StartLine
- Request가 올 때 요청의 시작줄 이다.
- Method Path Version 형식으로 온다.
- Method 종류
- GET: 요청받은 URI의 정보를 검색하여 응답
- POST: 요청된 자원을 생성, 보통 Response에 Location 필드를 넣고 응답
- PUT: 요청된 자원을 수정, Location을 포함시키지 않고 주로 클라이언트가 요청한 URI 주소를 포함하여 응답 * DELETE: 요청된 자원을 삭제할 것을 요청
- HEAD: GET방식과 동일하지만, 응답에 BODY가 없고 응답코드와 HEAD만 응답
- OPTIONS: 메소드의 종류를 확인할 경우 사용
- TRACE: 원격지 서버에 루프백 메시지 호출하기 위해 테스트용으로 사용
- Path : HTTP 요청 주소이다.
- Version : HTTP Version이다.
- 보통 요청 Version을 통해 응답 Version을 맞춘다.)
- 버전은 0.9/1.0/1.1/2.0이 있다.
Request Header
- Request의 요청 정보를 담고있는 부분이다.
- Key-Value 형식으로 되어 있다.
- Connectionless, Stateless
- Http는 클라이언트가 요청을 보내면 연결을 끊어 버리는 특징을 가지고 있다.(Connectionless)
- 따라서 Header에 keep-alive라는 속성을 줘서 재활용 한다.
- stateless는 통신이 끝나면 상태를 유지하지 않는 특징이다.
- 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성을 가지고 있다.
- 이 두가지를 해결하기 위해서 쿠키와 세션을 사용한다.
- 참고 사이트 : https://blog.outsider.ne.kr/888
Request Body
- Request의 요청할 데이터를 담고 있는 부분이다.
- 전송하는 데이터가 없으면 Body부분은 비어있다.
Http Response
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 6097
<!DOCTYPE html...
Response Status
- Http Response의 응답 상태를 나타내주는 부분이다.
- Version StatusCode Status로 구성 되어 있다.
- 대표적인 상태 코드 및 텍스트
- 200 Ok : 요청이 성공적으로 수행
- 302 Found : 요청을 리다이렉션으로 수행 (Location을 사용)
- 403 Forbidden : 요청한 페이지가 접근 금지 및 차단
- 404 Not Found : 요청한 페이지가 없음
- 500 Internal Server Error : 내부 서버 오류
- 참고 사이트 : https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
Response Header
- Http Request 헤더와 동일
- Response 헤더가 따로 있음 (참고 사이트 확인)
Response Body
- Http Request Body와 동일
- 전송하는 데이터가 없으면 Body부분은 비어있음
- 용도에 따라 html코드나 Json등 데이터를 내보냄
요청 흐름 구조
- 클라이언트(브라우저)에서 요청을 보내면 서버에서 받아 데이터를 처리하고 클라이언트에게 응답을 보내주는 구조로 되어있다.
- 서버컴퓨터가 어디에 있는지 알려주는 URL 프로토콜을 사용한다.
- URI vs URL vs URN
- URI : 인터넷의 우편물 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정한다.
- URL : URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 서술하는 프로토콜, 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 분명히 알려준다.
- URN : URN은 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할, 이 위치 독립적인 URN은 리소스를 여기저기로 옮기더라도 문제없이 동작한다.
'Web' 카테고리의 다른 글
TCP와 UDP (0) | 2020.01.16 |
---|---|
WebServer vs Was (0) | 2020.01.15 |
Comments