Posts [Network] HTTP 리퀘스트 메시지
Post
Cancel

[Network] HTTP 리퀘스트 메시지

HTTP 리퀘스트 메시지를 작성한다

본 설명은 책 “성공과 실패를 결정하는 1%의 네트워크 원리”를 읽으며 제 나름대로 해석하고 정리해 보았습니다.

1. 탐험 여행은 URL 입력 부터 시작한다.

브라우저는 웹 서버에 액세스 하는 클라이언트 뿐 아니라 파일을 다운로드하고 업로드하는 FTP의 클라이언트 기능이나 메일의 클라이언트 기능도 가지고 있다.

FTP(File Transfer Protocol 파일을 업로드하거나 다운로드 할 때 사용하는 프로토콜, FTP 프로토콜을 이용하여 파일 전송을 하는 프로그램도 ‘FTP’ 라 부른다.

따라서 기본적으로 우리가 알고있는 HTTP와 다르게 FTP에 엑세스하는 경우에는 모양이 조금 다르다고 볼 수 있다.

2. 브라우저는 먼저 URL을 해독한다.

브라우저가 처음에 하는 일은 당연히 웹 서버에 보내는 리퀘스트의 메시지를 작성하기 위해 URL 을 해석하는 것이다.

http: + // + 웹 서버명 + / + 디렉토리명 + / + ….. + 파일명

위의 URL을 차례차례 어떤 의미 인지 해석하자면,

  1. URL의 맨 앞에는 데이터 출처에 엑세스 하는 방법이다.
  2. // 뒤에 이어지는 문자열이 서버의 이름을 나타낸다.
  3. 웹 서버의 이름
  4. (이후부터는 생략 가능) 데이터 출처(파일)의 경로명을 나타낸다.

3. 파일명을 생략한 경우

위의 경우와 다르게 파일명이 없이

https://www.naver.com/dir/ 과 같은 경우가 있다. 끝이 / 로 끝난 것은 dir 다음에 써야하는 파일 명을 쓰지 않고 생략한다는 것이다. 생략할 수는 있지만, 파일명을 쓰지 않으면 어떤 파일에 엑세스 할지 모르기때문에 서버는 이의 경우 default 파일들을 설정해준다. (예를들면 index,html 이나 default.html )

또 비슷하게 https://www.naver.com/https://www.naver.com의 경우도 마찬가지다.

그런데 https://www.naver.com/something 의 경우는 조금 아리송할 수 있다. 끝에 / 가 없으므로 something 이라는 파일 명으로 보내야할까 라고 생각할 수 있지만 파일 명이 아닌 / 가 생략되어 something 디렉토리명으로 보는 것이 옳바른 해석이다.

4. HTTP의 기본 개념

사실 HTTP의 기본 개념은 단순하다. HTTP 프로토콜은 클라이언트와 서버가 주고받는 메시지 내용혹은 순서를 정한 것이다.

먼저 클라이언트에서 서버에게 리퀘스트 메세지를 보내는데 이 리퀘스트 메세지는 무엇 그리고 어떻게 의 두가지 내용이 들어있다. 즉, URI메소드 가 들어 있는 것이다. 해당 개념은 기초 개념이니 생략하겠다.

5. HTTP 리퀘스트 메시지를 만든다

HTTP가 리퀘스트 메세지를 어떻게 만드느냐를 이제 살펴보자. 먼저 리퀘스트 메시지의 첫번째 줄에는 리퀘스트 라인 을 쓴다. 이 행에는 메소드 즉, 어떻게 의 내용이 들어가 있는 것이다. 그리고 한칸을 띄운 후 /<디렉토리명>/..../<파일명> 의 uri 를 쓰고 첫 번째 줄에 끝에 메시지가 어떤 버전의 HTTP를 사용한 것인지 까지 쓰면 첫번째 행이 완료된다.

그리고 두번째 행부터 메세지 헤더 행이 이어진다. 아래의 그림과는 브라우저의 종류, 버전, 설정 등에 따라 다른 정보가 들어갈 수 있다.

메세지 헤더 가 끝나면 공백행을 넣고 그 다음줄에 송신할 데이터를 쓰는데, 아래의 사진과 같이 메소드가 GET 일 경우에는 아무 데이터도 없게 된다. (POST는 그래서 당연히 있을것이다.)

ㅍ1

6. 리퀘스트 메시지를 보내면 응답이 되돌아온다

응답 메시지의 포맷도 리퀘스트와 비슷하다. 차이점은 첫번째 행인데, 응답의 경우는 당연히 정상 종료 했는지 혹은 오류가 있는지의 실행 결과가 있어야된다. ( 오류 있을 경우 응답 페이지에 우리는 404에러를 보기도 하고 500 에러를 보기도 한다.)

응답 메시지의 경우 리퀘스트 메시지를 이해했으면 쉽게 알 수 있으므로 생략하겠다. 하지만 하나 알아야 할 것은 하나의 리퀘스트 메시지와 하나의 응답메시지가 대응한다는 것이다. 즉, 복수의 파일을 읽을 때 웹서버에 하나의 리퀘스트 메시지가 아닌 각 파일 마다의 리퀘스트 메시지를 보내고, 각각의 응답 메시지를 받는 것이다.

ㅍ

This post is licensed under CC BY 4.0 by the author.

[OS] 프로세스의 이해 (공룡책)

[Network] 어떻게 DNS 서버가 IP 주소를 조회할까

Loading comments from Disqus ...