hyperskill - HTTP messages 영어 원문

HTTP 프로토콜은 메세징의 기초에 빌트되어 있는 "client-server" 아키텍쳐에 의존합니다.

HTTP 메세지는 웹에 있는 클라이언트와 서버 간의 데이터를 교환하는 방식입니다.

두 가지 유형의 메세지가 있습니다 : Request*(요청) 그리고 Response(응답)


request 는 클라이언트가 서버에서 수행하기를 원하는 운영을 의미하며,

response 는 들어온 request 에 대한 서버로부터의 응답입니다.

주로, 프로그래머들은 HTTP 메세지들을 생성하는 것에 대해서 어려워 할 필요가 없는데,

메세지는 브라우저, 어플리케이션, 웹 서버에 의해 생산되기 때문입니다.


The format of messages - 메세지의 형식


HTTP 프로토콜에서, 모든 메세지들은 텍스트 문자열들로 구성되어 있습니다.

requestresponse 둘 다 대충 같은 표준화 된 형식을 가지고 있습니다 :

Start line - 시작 부분

시작 부분은 다를 수 있습니다 :

request 에서, 요청의 유형(method) 를 가르키며, 어디로 이를 보내야 하는지 (target) 을 가르킵니다.

response 에서, 이는 상태 코드(status code) 를 담고 있으며, 연산에 대한 성공 여부를 결정합니다.

Headers - 헤더 부분

Header 는 메세지를 설명하며, 다양한 파라미터들을 전달합니다.

Body - 바디 부분

Body 는 메세지의 데이터가 위치한 곳 입니다.


start line (시작 부분) 과 header (헤더) 는 속성(attributes) 을 필요로 하므로,

다른 부분은 비어 있을 겁니다.


전체 형식은 초보자에게는 꽤 복잡할 수 있습니다만,

따라서 우리는 일반적인 원칙을 이해하고 위해서 오로지 가장 중요한 부분만 고려 할 겁니다.


The simplified HTTP interaction - HTTP 상호작용 단순화


여기 브라우저 클라이언트와 서버 간의 단순화 된 HTTP 상호작용이 있습니다.

클라이언트와 서버는 우리가 공부했던 형식으로 requestresponse 를 통해 상호작용합니다.


클라이언트 프로그램으로 브라우저 말고도 가능성이 있는 다른 유형의 프로그램이 있다는 것을 참고하세요.

심지어 당신의 HTTP 클라이언트를 작성하고, 서버들과 상호작용 할 수 있습니다.

필요한 것은 언제나 메세지 유형을 따르는 이러한 프로그램입니다.


Methods - 메서드


HTTP 프로토콜은 요청(request) 메서드들의 집합을 정의했느데,

이 메서드들은 주어진 리소스에 대해 원하는 행동이 무엇인지 지정해 놓은 것입니다.

이러한 메서드들이 명사가 될 수 있음에도 불구하고,

이러한 쿼리 메서드들은 가끔 HTTP 동사로서 취급되기도 합니다.


가장 흔하게 사용되는 쿼리 메서드들을 살펴 봅시다 :

  • GET 메서드는 오로지 서버로부터 데이터를 검색 할 때 사용됩니다.
  • POST 메서드는 서버로 데이터를 전송 할 때 사용되곤 합니다.
  • HEAD 메서드는 GET 메서드와 동일한 방식으로 서버로부터 데이터를 요청하지만, response body 가 없습니다.

당신이 매번 링크를 클릭 할 때 마다,

당신은 기본적으로 이 페이지를 GET 하고 싶다고 브라우저와 소통하는 것 입니다.

당신이 선호하는 사이트에 로그인 하고 싶을 때,

당신은 이에 대한 접근 권한을 받기 위해서 login 과 password 를 POST 합니다.


Status codes - 상태 코드


HTTP를 통한 작업을 하는 컴퓨터 프로그램과 웹 페이지의 정상적인 작동을 위해,

게다가 페이지의 컨텐츠까지, 서버는 세 자리의 숫자 코드를 반환합니다.

이 숫자 코드는 요청에 대한 응답을 지정합니다.

이러한 숫자 코드의 도움 덕분에, 클라이언트는 또 다른 사이트로 리다이렉트 할 수 있으며,

페이지의 변화를 지정 할 수 있으며, 게다가 데이터 프로세싱에서의 에러도 감지 할 수 있습니다.


현재, 이러한 숫자 코드의 표준은 status code(상태 코드) 에 다섯 가지의 분류를 정의했습니다 :

Status Code Description
1xx : Informational "1" 로 시작하는 코드는 정보 코드라고 부릅니다.
이 코드는 클라이언트의 요청이 어떻게 처리되었는지 보고합니다.
2xx : Success 이 클래스의 메세지들은 클라이언트에 의해 요청된 액션이,
프로세싱을 위해 성공적으로 받아들여졌음을 알립니다.
3xx : Redirection 이는 요청을 오나료하기 위해 추가적인 액션을 취해야 함을 의미합니다.
4xx : Client Error 이는 클라이언트 측에서 에러를 보고합니다.
5xx : Server Error 이 코드는 서버의 잘못으로 인해 연산이 실패했음을 가르킵니다.

예시로, 만약 당신이 웹사이트를 성공적으로 로드했으며, 당신이 받은 응답의 코드는 200 입니다.

당신은 브라우저의 개발 도구를 열고 네트워크 탭을 클릭해서 이를 확인 할 수 있습니다.

그리고 나서 웹 페이지를 새로고침 해 보면, 상태 코드들을 볼 수 있습니다.

개발자 도구를 여는 단축키 조합은 브라우저마다 다를 수 있습니다.

당신에게 예시를 주자면,

  • Window or Linux : Ctrl + Shift + I or F12
  • macOS : Cmd + Opt + I or Cmd + Opt + J

당신이 존재하지 않는 페이지 주소를 입력했을 때,

브라우저에서 "404 Not Found" 메세지를 표시하는 상황을 경험 해 봤을 겁니다.


브라우저들은 에러 메세지들을 표시하여 유저들이 무언가 잘못 되었다는 것을 이해할 수 있도록 합니다.

유저들이 콘텐츠가 다운로드 될 때 까지 빈 페이지를 계속해서 보게 하는 것 대신에 이러한 페이지를 표시합니다.


Conclusion - 결론

우리가 여기서 방금논의한 주요한 지점들에 대해서 빛을 비춰 봅시다 :

  • HTTP 메세지들은 두 가지 유형이 될 수 있습니다 : request 그리고 response
  • 이러한 두 가지 메세지는 시작 부분, 헤더, 그리고 body 로 구성되어 있습니다.
    request의 시작 부분은 메서드와 타겟을 포함하고 있으며, 반면에 response 는 상태 코드를 포함하고 있습니다.
  • request 메세지에서 흔하게 사용되는 메서드는 GET, POST 그리고 HEAD 입니다.
  • Status Code(상태 코드) 는 서버로부터의 응답을 가르키며, 세 개의 숫자로 이루어져 있습니다.
    상태 코드는 5 개의 클래스가 될 수 있습니다 :
    Informational(정보 제공), Success(성공), Redirection(리디렉션), Client Error, Server Error.


words to remember


relies : 의지하다

roughly : 대충, 거칠게

vary : 달라지다, 다르다, 바꾸다, 변주하다

desired : 원하는, 생각하다, 소망하다