http 프로토콜

오현섭 2022. 3. 10. 23:11
반응형

HTTP : HTML같은 문서를 인출하기위한 프로토콜이다. 이것은 웹상의 모든 데이터 교환의 기초이며 클라이언트-서버 프로토콜이다. 즉, 요청은 수신자, 일반적으로 웹 브라우저에 의해 시작된다. 전체 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등과 같이 가져온 여러 하위 문서로 재구성 된다.

 

TCP/IP 통신에 대한 이해

-인터넷을 이용하기 위해 TCP/IP기반의 통신을 하며 대부분 네트워크 통신은 근간으로 한다.

 통신을 하기 위한 중요한 정보가 있는데 IP와 port가 있다.

 IP를 통해 물리적 호스트 대상을 찾으며 Port를 통해 논리적 대상을 찾는다.

 

HTTP 특징 - 비연결성(Connectionless)

 -비연결성은 연결을 유지하지 않는다는 의미로, HTTP의 기본 모델  클라이언트와 서버가 한 번 연결을 맺은 후, 클라   이언트 요청에 대해 서버가 응답을 마치면 맺었던연결을 끊음  비연결성 특징은 서버 자원을 효율적으로 사용하여 더    많은 연결을 할 수 있다는 장점이 있지만,  요청을 할 때마다 새로운 3-Way-Handshake를 맺어야 해서 오버헤드가 발  생할 수 있다는 단점 존재 현재는 대부분 Pertsistent Connection(지속 연결)을 사용

HTTP 특징 - 무상태성(Stateless)

무상태성은 상태가 없다는 의미  A 클라이언트와 B 클라이언트의 요청을 구분하지 못함  매번 새로운 인증을 해야 하는 번거로움이 발생하여, 쿠키를 사용하여 문제 해결 (Stateful) Gmail 메일 전송 1) A 사용자 Gmail 로그인 2) (A 사용자 로그인 상태 유지) 메일 쓰기 페이지 접근 3) (A 사용자 로그인 상태 유지) 메일 내용 작성 후 보내기 (Stateless) Gmail 메일 전송 1) B 사용자 Gmail 로그인 2) (누구세요?) 메일 쓰기 페이지 접근 -> 로그인이 필요합니다. 3) (누구세요?) 메일 내용 작성 후 보내기 -> 로그인이 필요합니다. (Stateless + Cookie) Gmail 메일 전송 1) C 사용자 Gmail 로그인 -> Cookie에 C 사용자 정보 저장 2) (Cookie) 메일 쓰기 페이지 접근 3) (Cookie) 메일 내용 작성 후 보내기

 

HTTP 메시지 :서버와 클라이언트 간에 데이터가 교환되는 방식

                  웹 통신에서 다룬 것과 같이 HTTP Request Message, HTTP Response Message가 존재

 

개행 문자(\r\n)  개행 : 한자로 고칠 개(改)와 갈 행(行)을 사용하며 줄바꿈이라고 함  \r : Carriage Return(CR) - 커서 위치를 앞으로 이동 \n : Line Feed(LF) - 현재 위치에서 바로 아래로 이동

HTTP 헤더(요청헤더)

-Host : 서버 도메인 네임을 나타내고 포트를 포함 ,HTTP 기본 80번 포트, HTTPS 기본 443번 포트

-User-Agent  :사용자 브라우저, 운영체제 등을 식별할 수 있는 정보 ,접속자 통계를 낼 때 사용

-Cookie : HTTP 쿠키가 포함 ,

     "서버로부터 Set-Cookie 헤더로 설정된 정보" 또는 "document.cookie를 사용하여 설정된 정보"

-Referer :요청하는 페이지의 주소가 포함됨 ,

            서버에서 사용자가 어떤 페이지에서 접속하는지 식별 가능

-Connection  :현재 요청이 완료된 후, 서버와 클라이언트의 접속 상태를 제어

                   keep-alive : TCP 접속 유지

                   close : TCP 접속 끊기

- Accept : 클라이언트가 원하는 미디어 타입을 명시

              콤마(,)로 여러 타입 명시 가능, 와일드카드(*)로 모든 타입 명시 가능

- Accept-Charset  :클라이언트가 원하는 인코딩(문자집합) 명시

-Accept-Encoding  클라이언트가 원하는 문자 인코딩(압축방식) 명시

-Accept-Language  클라이언트가 원하는 언어 명시

 

HTTP 헤더(응답헤더)

- Server : 웹 서버 정보 출력

- Allow  : 서버 측에서 지원 가능한 HTTP 메서드 리스트 출력

- Content-Disposition : 응답 본문을 브라우저가 어떻게 표시해야 할지 알려주는 것으로, 파일 다운로드를 처리하는 HTTP 헤더 inline : 웹 페이지 화면에 표시  attachment : 다운로드 파일 • filename : 파일명 지정 - 81 - www.boanproject.comHTTP HTTP 헤더  응답 헤더  Location  클라이언트 요청을 웹 서버가 다른 페이지로 리다이렉트할 때 사용하는 헤더  3xx 상태 코드나 201 Created 상태 코드에 사용됨  Set-Cookie  웹 서버가 클라이언트에게 쿠키 정보를 전달하는데 사용되는 헤더 - 82 - www.boanproject.comHTTP HTTP 상태 코드 (응답 상태 코드)

 

 HTTP 응답 코드 5개 분류 첫 번째 숫자는 응답의 클래스를 정의

 1xx : 조건부 응답, 단순 정보 제공

 2xx : 성공

 3xx : 리다이렉션 완료(다른 URI로 리다이렉트)

 4xx : 요청 오류(클라이언트 에러)

 5xx : 서버 오류 

 

HTTP 상태 코드 (응답 상태 코드)

 1xx (요청을 받았으며 작업을 계속함)

100 Continue (계속) : 1xx의 마스터 코드

                             요청자는 요청을 계속해야 함.

                             서버는 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타냄

 2xx (성공) 200 OK (성공) : 2xx의 마스터 코드

                                    서버가 요청을 제대로 처리함

                                   서버가 요청한 페이지를 정상적으로 제공했다는 뜻

                                  201 Create (작성됨) : PUT 요청이 성공적으로 서버가 새 리소스를 작성함 - 

 3xx (리다이렉션 완료) 300 Multiple Choices (여러 선택항목)

3xx의 마스터 코드 : 클라이언트의 요청에 대해 다른 URI로 리다이렉트 함

                          클라이언트가 선택할 수 있는 선택지를 하나 이상 부여

                         301 Moved Permanently (영구 이동) :요청한 페이지를 새 위치로 영구적으로 이동  특정한 곳으로 브라우저가 요청하면 서버가 설정해 둔 URI로 이동

304 Not Modified (수정되지 않음) : 클라이언트가 마지막 요청 이후 요청한 페이지는 수정되지 않음 따라서, 클라이언트 내 저장된 캐시를 사용하여 보여주겠다! 라는 뜻 

4xx (요청 오류) :400 Bad Request (잘못된 요청)

4xx의 마스터 코드 : 클라이언트가 서버에게 잘못된 요청을 보냄 (서버가 요청을 이해 못함)

 401 Unauthorized (권한 없음)  클라이언트에게 인증 확인을 요구하는 것을 의미  “권한 없음”이란 의미는 인증이 안되었다는 의미  인증 실패

 403 Forbidden (금지됨)  클라이언트 요청을 거부, 접근 거부  인가 실패 HTTP 상태 코드 (응답 상태 코드)  4xx (요청 오류)

404 Not Found (찾을 수 없음)  서버가 요청한 페이지(리소스)를 찾을 수 없음  4xx 코드 중 제일 많이 접하게 됨  405 Method Not Allowed (허용되지 않는 메서드) : 클라이언트가 요청한 메서드가 해당 서버에서 허용하지 않음  POST 방식으로 요청 받는 웹 서버에 GET 요청을 보내는 경우 읽기 전용 리소스에 PUT 요청을 보내는 경우 등등 - 

 5xx (서버 오류)

500 Internal Server Error (내부 서버 오류) :서버에 오류가 발생하여 요청을 수행할 수 없음

                                                     추가적인 에러 상세 내용은 응답 메시지 바디에 출력

503 Service Unavailable (서비스를 사용할 수 없음) :서버를 사용할 수 없는 상태인 경우, 서버가 물리적으로 살아 있으나, 서버에서 구동 중인 애플리케이션에 문제가 발생한 경우 

 

HTTP 요청 메서드

 GET : 정보 검색을 위해 서버에게 요청하는 형태 ,링크 클릭 등

 POST : 서버에 데이터를 전달하는 형태 ,게시글 작성, 로그인, 검색 등 ,

           POST는 전달하는 데이터를 기반으로 처리하는 웹 스크립트

 PUT : POST 방식과 같이 서버에 데이터를 전달하는 형태로 유사한 구조를 가짐

           PUT은 서버에 지정한 내용(파일)을 업로드할 때 사용

           PUT은 POST와 다르게 파일의 경로나 이름 지칭  홈페이지 변조에 많이 악용됨

 DELETE  : DELETE는 웹 서버에 있는 파일을 삭제할 때 사용하는 메서드 

 OPTIONS :서버에서 지원되는 HTTP 메서드 종류 확인

 HEAD : GET 방식과 동일, 다른 점은 응답 값에 바디(내용)가 없고 헤더만 존재

 TRACE : 요청 리소스가 수신되는 경로를 확인  웹 클라이언트가 요청한 데이터가 응답에 포함됨

 PATCH :리소스 부분만 수정하는 데 사용

 CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정

'' 카테고리의 다른 글

쿠키와 세션  (0) 2022.03.21
쿠키  (0) 2022.03.11
웹의 기초  (0) 2022.03.10