potatoo 2024. 2. 8. 01:38
728x90

HTTP

  • URL(Uniform Resource Locato or Uniform Resource Identifier)
    • URI가 URL보다 더 상위 개념이지만 현재 혼용해서 사용하고 있음. 같은 것으로 이해해도 무방함
  • <http://www.potato.com/webcontents/index.html> 스킴 호스트 경로명
  • 스킴(scheme)
    • 스킴은 리소스를 획득하기 위한 방법을 나타냅니다. 웹 애플리케이션에서는 대부분의 경우 HTTP 프로토콜을 사용합니다. HTTP 이외에 다음과 같은 프로토콜들이 있습니다.
    • https: 암호화된 http 통신을 나타내는 스킴
    • mailto: 이메일의 수취인을 나타내는 스킴
    • ftp: FTP 프로토콜을 통한 파일 획득을 나타내는 스킴
    • file: 파일 시스템 속의 파일이나 디렉토리를 참조하기 위한 스킴
  • 호스트명
    • 리소스가 존재하는 호스트(컴퓨터)의 이름을 나타냅니다. 인터넷을 비롯한 컴퓨터 네트워크의 세계에서 네트워크에 접속되어 다른 컴퓨터로부터 요구를 받고 처리한 결과를 되돌려주는 컴퓨터를 일반적으로 호스트 컴퓨터라고 합니다. 호스트명은 호스트 컴퓨터의 이름을 가리킵니다.
  • 경로명
    • 호스트명에서 지정된 컴퓨터상의 리소스의 위치를 나타냅니다.
    www.potato.com/webcontents/index.html

위 경로에서는 webcontents 하위에 있는 index.html이라는 파일을 나타냅니다. 이처럼 URL을 이용하여 도메인 -> 컴퓨터 -> 디렉토리 -> 파일명과 같이 계층적으로 리소스의 위치를 지정할 수 있어 인터넷상에서 리소스의 위치를 나타낼 수 있습니다.

  • HTTP Request Line
  • 메서드
    • 요청의 종류를 나타냅니다. 여기서는 GET, 즉 ‘URI’에서 지정한 정보를 보내 주세요’라는 의미가 됩니다. 메서드에는 그 밖에도 몇 가지가 정의돼 있는데, 웹 브라우저에서 웹 서버로 송신되는 요청의 대부분은 GET 메서드에 따른 요청입니다.
  • URI(Uniform Resource Identifier)
    • GET메서드는 단순히 ‘정보를 주세요’라는 의미에 불과하며, URI는 '무엇을 원하는가’를 나타냅니다. 일단은 URL과 URI는 거의 같은 것이라고 생각해도 무방합니다.
  • HTTP 버전
    • 버전에 따라 이용할 수 있는 메서드의 종류와 요청 헤더의 종류가 달라지므로 어떤 버전에 따른 요청인지 저장한 것입니다. 두번 째 줄 이후의 나머지 부분은 메세지 헤더라고 하며, 요청의 부가적인 정보를 나타냅니다
  • Accept
    • 웹 클라이언트가 받을 수 있는 데이터의 종류를 표시한 것입니다. 데이터의 종류는 Content-Type이라는 형식으로 표시되며, 클라이언트에서 받을 수 있는 Content-Type을 콤마로 구분해서 지정합니다. 이렇게 정보를 표현함으로써 Aceept 필드를 참조하면 웹 서버는 불필요한 정보를 송신하지 않아도 될 가능성이 있는 것입니다.
  • Accept-Language
    • 웹 클라이언트가 받을 수 있는 자연 언어의 종류를 나타냅니다. 자연 언어는 사람이 사용하는 언어를 가리킵니다. 여기서는 ‘en-us’로 되어 있으므로 영어를 나타냅니다.
  • User-Agent
    • 이용중인 웹 브라우저의 종류와 버전을 나타냅니다
  • Host
    • 요청을 보낸 곳의 호스트명과 포트번호를 지정한다
  • HTTP response

a)상태라인

HTTP요청과 마찬가지로 HTTP 응답에서도 첫번째 줄이 가장 중요하며, 이것을 상태라인이라고 합니다. HTTP상태라인도 구성은 간단합니다. HTTP버전과 상태 코드, 응답 구문으로 세 부분으로 나뉩니다

!https://user-images.githubusercontent.com/50367798/60555129-19704280-9d76-11e9-9c79-8e8b7e384037.png

HTTP 버전은 요청에서와 마찬가지로 사용하는 프로토콜의 버전을 나타냅니다. 중요한 것은 상태코드로 이 부분을 보면 요청이 성공했는지 실패했는지 쉽게 알 수 있습니다. 200은 요청이 성공해 정상적인 응답이 돌아왔음을 나타내는 상태코드입니다.

대표적인 HTTP status code

  • 200 - OK
  • 201 - Created
  • 302 - Found(HTTP 1.0)
  • 304 - Not Modified
  • 401 - Unauthorized
  • 404 - Not Found
  • 500 - Internal Server Error
  • 503 - Service Unavailable
  • status code 단위별 의미는?
    • 2XX : 성공. 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리
    • 3XX : 라다이렉션 완료. 클라이언트는 요청을 마치기 위해 추가 동작이 필요함.
    • 4XX : 요청 오류. 클라이언트에 오류가 있음
    • 5XX : 서버 오류. 서버가 유효한 요청을 명백하게 수행하지 못했음

b)메세지 헤더

상태라인에 이어서 나오는 것이 메세지 헤더로 두 번째 줄부터 빈줄까지 계속됩니다. 메세지 헤더는 HTTP 요청의 메세지 헤더와 같은 형식으로, 응답에 관한 부가적인 정보가 들어있습니다.

c)메세지 본문

웹 브라우저는 메시지 본문에 있는 HTML을 해석해 화면에 표시합니다. HTML은 텍스트 형식이므로 우리가 읽을 수 있는 형식으로 메세지 본문에 저장돼 있습니다. 그러나 GIF나 JPEG 형식의 이미지 파일을 요청했을 경우에도 마찬가지로 그 데이터가 메세지 본문에 들어갑니다.

  • HTTP method

주로 많이 사용하는 메소드는 GET과 POST입니다.

GET은 Select적인 성향을 가지고 있습니다. GET은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태등을 바꾸지 않습니다. 게시판의 리스트라던지 글보기 기능 같은 것이 이에 해당합니다.

POST는 서버의 값이나 상태를 바꾸기 위해서 사용합니다. 글쓰기를 하면 글의 내용이 디비에 저장이 되고 수정을 하면 디비값이 수정이 됩니다. 이럴 경우에 POST를 사용합니다.

728x90