HTTP란?
HTTP란 클라이언트와 서버 간에 주고 받는 메세지의 형식을 정해 놓은 약속과 같은 것이다. TCP/IP계층의 애플리케이션계층에 해당하며 웹브라우저와 서버 간에 통신하는 프로토콜로 사용된다.
동작 방식
- Client -> Server
요청정보 전송 - 무엇을(URI) / 어떻게(Method) 해줘 - Server
요청정보 분석 후 그에 해당하는 행동 실행 - Server -> Client
응답정보 전송 ->행동 결과에 대한 상태코드 전달 (Status Code) 행동에 대한 결과 데이터 전달
- Client
응답 결과에 대한 행동 ex)응답으로 받은 데이터 표시.
클라이언트가 서버로 요청을 보내는 방법
- 도메인창에 URL입력
- 웹페이지 안에 포함된 하이퍼링크 클릭
- 데이터 기입 후 특정 버튼('송신'버튼) 클릭
- 등등,,
요청 정보 형식
<Method(요청 방식)> <공백> <URI> <공백> <HTTP 버전>
<필드명> : <필드값>
ex) name : content
<공백> - 이 공백 행까지 Header
---------------------------------------------------
클라이언트에서 서버에 송신하는 데이터(POST 요청 시 사용)
- Method (요청 방식)
- GET : 이 정보 줘!
- 가장 단순한 요청 방식이다.
- 웹 서버로부터 데이터를 읽어올 때 사용한다.
- URI 뒤에 '?' 기호를 기준으로 문자열을 추가하여 전달이 가능하다.
- 이 때 보내는 문자열 정보는 웹 브라우저에 노출된다.
- 헤더에 포함되는 정보로 문자열 크기에 제한이 있다.
- POST : 이 정보 저장하고싶어!
- HTTP요청 정보에 Body가 포함되어 전달된다.
- 요청 시 보내는 데이터가 노출되지 않는다.
- 전송 데이터 크기에 제한이 없다.
- 클라이언트는 정보를 인코딩하고 서버는 그 정보를 디코딩 해야하므로 GET보다는 처리 속도가 느리다.
- PUT : 너가 가지고 있는 이 정보 수정하고 싶어!
- 서버의 정보(리소스)를 수정 할 때 사용된다.
- DELETE : 너가 가지고 있는 이 정보 삭제하고싶어!
- 서버의 정보(리소스)를 삭제 할 때 사용된다.
- GET과 같이 URI로 대상 정보를 전송한다.
- OPTIONS
- 요청 URI에 대하여 허용되는 통신 옵션을 알고자 할 때 사용
- HEAD
- GET 방식과 거의 동일하다.
- Body 없이 Header만 요청한다.
- 해당 자원의 존재 여부 혹은 서버의 문제 여부를 확인하기 위해 사용된다.
- TRACE
- 웹클라이언트의 요청을 그대로 반환하는 방식이다.
- 요청 정보가 웹 서버에 도달하기까지의 경로를 기록한다.
- 서버 상태를 확인하기 위한 목적으로 사용된다.
- CONNECT
암호화 된 메세지를 프록시로 전송할 때 이용하는 메소드
- GET : 이 정보 줘!
- 요청 URI
http://user:password@www.cyber.co.kr:80/dir/file.html
프로토콜://사용자명:비밀번호@서버주소/파일경로명
- 프로토콜
서버와 통신하기 위한 약속으로 서버마다 사용하는 프로토콜이 정해져있다. - 서버 주소
서버가 동작하고 있는 컴퓨터를 찾아가기 위한 IP주소 혹은 도메인 이름을 작성한다. - 포트 번호
- 서버주소로 컴퓨터를 찾아갔으니 서버로 접속하기 위한 정보
- 0~65,535번까지 사용 가능
- 0~1,023까지 well-known port로 이미 정의되어 있음
ex) 80 - 웹서버 / 22 - ssh
- URI (Uniform Resource Identifier)
서버에서 서비스하는 자원 정보 - Header
응답 정보 형식
<HTTP 버전> <공백> <Status Code> <공백> <응답 문구(응답 코드의 내용을 의미하는 짧은 문구)>
<필드명> : <필드값>
ex) name : content
<공백> - 이 공백 행까지 Header
---------------------------------------------------
서버에서 클라이언트로 송신하는 데이터
바이너리 데이터로 취급된다.
- Status Code(상태코드)
- 1xx : 조건부 응답 - 처리 경과, 상황 등을 통지
- 2xx : 정상 종료
- 200 OK
- 3xx : 리다이레션 완료 - 클라이언트 측에서 다른 조치가 더 필요하다.
- 302 Redirection
- 4xx : 요청 오류 - 클라이언트 측의 오류
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 405 Method Not Allowed
- 5xx : 서버 오류 - 서버측의 오류
- 500 Internal Server Error
- Header
'공부 > 네트워크' 카테고리의 다른 글
[NETWORK] WebSocket에 대해 알아보자. (0) | 2022.07.13 |
---|