https://velog.io/@leeyoungwoozz/CS-HTTP-HTTPS
1. http
- http는 hpytertext transfer protocol의 약자로 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜이다.
프로토콜은 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다.
즉 http는 웹에서 브라우저와 서버 간에 데이터를 주고 받기 위한 방식
http의 특징?
-클라이언트가 http request를 보내면 서버에서 http response를 보냄
-웹관점에서 클라이언트는 브라우저를 의미하며, 아스키 코드 메시지로 소통이 이루어짐
-웹상에서 클라이언트와 서버간 통신을 위한 프로토콜, osi7계층에서는 제일 위인 appllication layer에 속함
http 기본 구조 4가지
- start line
기본적으로 http버전에 대한 정보. rsponse인지 request인지에 따라 약간 형태가 다름
- header
header-field : field-value로 구성됨
http 전송에 필요한 모든 부가정보를 가짐
- empty line(crlf)
- message body
메시지의 본문, 통신을 통해 보내고자 하는 data가 들어감
http request 구조
1. start line
- http method
요청시 보내는 http 메소드 형태 (GET, POST, PUT, PATCH, DELETE, 기타)
- requeset target
어디로 보내는지에 대한 url
- http version
http 버전으로 현재까진 대부분 http/1.1이고 http/2, http/3까지도 있음
2. header
- host
호스트 url
- user-agent
클라이언트 정보
- accept
서버에서 해당 타입에 데이터를 보내달라고 요청하는 헤더
- authorization
jwt 같은 인증 토큰을 서버로 보낼 때 사용하는 헤더
http response 구조
1. start line
- http version
response 메세지의 http 버전 정보
- status code
응답 코드이다. ex) 200, 404(not found)
- status text
응답 상태
2. header
- date
응답온 일시
- content-type
응답 데이터의 타입
- cache-control
캐시용 헤더
3. body
- content-type에 맞는 응답 메시지에 ㅇ실어서 보낸 data
http의 메소드 종류
- http 메시지 중 request에 존재하는 메소드를 살펴보자
request 메소드에 따라 서버에서 처리되는 과정, 반환되는 메시지의 형태가 달라짐
http/1.1에 정의한 메소드에는 총 9가지가 존재하며, 서비스에 따라 커스텀한 확장 메소드를 만날 수 도 있다.
특징
- 모든 서버가 모든 메소드를 구현하지 않음
- 모든 메소드를 구현하지 않았다하더라도 대부분 제한적으로 사용됨
- 일반적으로 서버 설정에 의해 메소드의 제한이 정해져 있으며 사이트마다 서버마다 다를수 있음
GET
- url이 가진 정보를 검색하기 위해 서버측에 요청하는 상태
POST
- 내용 전송(파일전송가능) 클라이언트에서 서버로 어떤 정보를 제출함
HEAD
- 메시지 헤더(문서정보) 취득, GET과 비슷하나 문서를 요청하는 것이 아닌 문서 정보를 요청함
- 이에 따라 응답에서는 body 없이 http 헤더 정보만을 보냄
PUT
- 내용 갱신 위주(파일 전송 가능), POST처럼 정보를 서버로 제출하는 것으로 형식은 동일하나 갱신 위주
- 이에 의해 갱신된 리소스에 대한 주소 정보를 POST와 달리 서버측 응답메시지의 HTTP 헤더 항목 중 location에 대한 내용은 보내지 않아도 됨
PATCH
- patch는 일부를 교체
- PUT과의 차이점 : PUT의 경우 데이터 전체를 수정하는 것이며, PATCH의 경우 데이터의 일부를 수정하는 것을 의미
- patch의 경우 멱등성을 보장할 수 없음
DELETE
- 파일 삭제, 웹 리소스 제거
OPTIONS
- OPTIONS 메소드는 목적 리소스의 통신을 설정하는데 쓰임
TRACE
- 요청 리소스가 수신되는 경로를 보여줌
CONNECT
- CONNECT 메소드는 목적 리소스로 식별되는 서버로의 터널을 맺음
HTTP status code
1. 100번대
조건부 응답
요청을 받았으며 작업을 계속함
이 상태의 상태 코드는 상태-라인과 선택적 헤더(컴퓨터에서 출력될 때 각 페이지 맨 윗부분에 자동으로 붙는 부분)만을 포함하는 임시의 응답을 나타내고 빈 라인에 의해 종결됨
http/1.0이래로 어떤 1xx 상태코드들도 정의되지 않음
100 : 계속, 요청자는 요청을 계속해야 됨, 서버는 요청의 첫번째 부분을 받았으며 나머지를 계속 기다리는 중임
101 : 프로토콜 전환, 요청자가 서버에 프로토콜 전환을 요청함, 서버는 이를 승인하는 중임
102 : 처리, RFC 2518??
2. 200번대
성공
클라이언트가 요청한 동작을 수신하여 이해, 승낙했고 성공적으로 처리했음
200 : 성공, 서버가 요청을 제대로 처리함, 주로 서버가 요청한 페이지를 제공했다는 의미
201 : 작성됨, 성공적으로 요청되었으며 서버가 새 리소스를 작성함
202 : 허용됨, 서버가 요청을 접수했지만 아직 처리하지 않았다.
203 : 신뢰할 수 없는 정보 : 요청은 성공적으로 처리됐지만 다른 소스에서 수신된 정보를 제공하고 있다.
204 : 콘텐츠 없음, 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음
205 : 콘텐츠 재설정, 서버가 요청을 성공적으로 처리했지만, 콘텐츠를 표시하지 않음, 204와 다름
206 : 일부콘텐츠, 서버가 get 요청의 일부만 성공적으로 처리함
207 : 다중상태 rfc 4918
208 : 이미 보고됨, rfc 5842
3. 300번대
리다이렉션 완료
클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함
4. 400번대
요청 오류
클라이언트에 오류가 있음을 나타냄
400 : 잘못된 요청, 서버가 요청의 구문을 인식하지 못함
401 : 권한 없음, 인증이 필요하다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공함, 권한없음(unauthorized)이지만 인증안됨(unauthenticated)에 가까움
402 : 결제가 필요함
403 : 금지됨, 서버가 요청을 거부하는 중임. 사용자가 리소스에 대한 필요 권한을 갖고 있지 않음, 인가실패
404 : not found, 서버가 요청한 페이지를(resorce) 찾을 수가 없음, 서버에 존재하지 않는 페이지에 대한 요청 시 제공
405 : 허용되지 않는 방법, 요청에 지정된 방법을 사용 불가능, post 방식인데 get요청을 보내는 경우
406 : 허용되지 않음, 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음
407 : 프록시 인증 필요, 이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용해 인증해야 한다. 서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 함
408 : 요청 시간초과, 서버의 요청 대기가 시간을 초과함
409 : 충돌, 서버가 요청을 수행하는 중에 충돌이 발생, 서버는 응답시 충돌에 대한 정보를 포함해야 함
410 사라짐
5. 500번대
서버 오류
서버가 유효한 요청을 명백하게 수행하지 못함
500 : 내부서버오류, 서버에 오류가 있어 요청 수행 불가능
501 : 구현되지 않음, 서버에 요청을 수행할 수 있는 기능이 없음, 서버가 요청 메소드를 인식하지 못할 경우
502 : bad gateway, 서버가 게이트웨이, 프록시 역할을 하고 잉ㅆ거나 업스트림 서버에서 잘못된 응답을 받음
503 : 서비스를 사용할 수 없음, 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없다.
504 : 게이트웨이 시간초과, 서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 제때 요청을 받지 못함
505 : http 버전이 지원되지 않음, 서버가 요청에 사용된 http 프로토콜 버전을 지원하지 않음
http vs https
http의 장점
-http 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것.
- https 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.
SSL인증서는 사용자가 사이트에 제공하는 정보를 암호화하는데, 쉽게 말해서 데이터를 암호로 바꿈
이렇게 전송된 데이터는 중간에서 누가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없다.
SEO
- https로 전환하게 되면 검색엔진 최적화(seo)에 있어서도 큰 혜택을 볼 수 있음
- 사용자들이 가장 안전하다고 생각하는 사이트를 더 많이 방문하고, 구글에서도 https 웹사이트에 가산점을 준다.
- 가속화된 모바일 페이지(AMP : accelerated mobile pages)를 만들 때 유용
'Lecture Note > CS' 카테고리의 다른 글
[Java] 우선순위 큐 개념정리 - 프로그래머스 이중우선순위큐 문제풀이 (0) | 2023.11.30 |
---|---|
객체 지향(OOP) - SOLID 5원칙 (0) | 2022.07.12 |
CS 면접 준비하기(마지막 업데이트 : 04.28) (0) | 2022.04.28 |