WEB

HTTP(Hyper Text Transfer Protocol)

momo0503 2021. 3. 19. 19:16

전송 계층에서 TCP를 이용하여 브라우저와 웹 서버간에 통신하는 프로토콜 

 

특징

- 무연결(connectionless) : 브라우저와 서버가 통신하려면 연결을 유지해야 한다. 하지만, HTTP는 브라우저의 요청이 들어오고, 서버가 응답하면 연결을 끊는 특징. 새로운 요청이 들어올때마다 독립적으로 연결해야하여 처리해야 하는 단점이 있다.

 

- 무상태(stateless) : HTTP의 무연결 특징으로 이전 연결에서 작업했던 내용을 다음 요청에서 그대로 사용할 수 없다. 무연결 특징 때문에 상태정보가 유지되지 않는 특성을 무상태라고한다. 그래서 쿠키나, 세션같은 상태유지기술이 필요하다.

 

- Request, Response : HTTP의 대표적 통신 방식. 브라우저(클라이언트)가 요청 하면 서버는 요청 정보를 받고 가공, 수정 등 알맞은 작업을하여 브라우저에 다시 응답하는 방식이다.

 

 

HTTP의 요청정보 

 

HTTP의 요청정보는 크게 헤더와 바디로 이루어져있다. 

갖아 첫번째줄(헤더의 첫번째, 요청줄이라고도함)에 3가지 정보가 들어가있다. 요청방식 , URI , HTTP의 버전 

 

첫번째 줄 이후에 공백 행이 삽입되고, 그 다음 줄 부터는 헤더 정보가 name : content 형식으로 요청할때의 정보가 들어간다.

 

바디 부분에는 브라우저가 웹 서버에 보내는 데이터가 들어가는 메시지 몸체로 구성된다. 

 

 

 

HTTP의 요청방식에는 대표적으로 GET , POST 방식이있다. 기본적으로 배웠던 내용이다.

 

웹 서버에 GET방식으로 요청할때 URL에 직접입력하거나 링크,버튼 등을 포함된 개체를 클릭할 경우다.

헤더 요청줄(첫번째 줄) URI 뒤에 ?와 함께 데이터&값 형식으로 요청을 보낸다. 문자열 정보들에 URL상에 노출되고, 문자열 크기에 제한이 있는 단점이 있다. 

POST 방식과 비교하여 보안성이 떨어진다는 말이 있고, 단점도 존재하지만 GET은 단순하여 서버에 빠른 요청을 할 때 사용한다.

 

POST 방식은 요청정보가 바디에 포함되 전달된다. 데이터 크기에 제한이 없고, 브라우저 주소창에 노출되지 않는다. 다만 GET 방식보다 상대적으로 처리속도가 느리다. POST방식은 서버측의 정보를 새로 생성하는 작업에 사용된다.

 

이외에도 DELETE, PUT 등의 요청방식이 있다. 

 

 

URI , URL, URN에 대하여. 

비슷한 개념이지만, URI 가 URL의 상위개념

URI(Uniform Resource Identifier) : 자원의 식별자 , 인터넷에 있는 자원을 나타내는 유일한 주소이다.

URL(Uniform Resource Locator) : 자원을 access 할 수 있는 위치 , 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약이다. 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속해야 한다.

URN(Uniform Resource Name) : 자원의 이름. urn:scheme을 사용하는URI를 위한 역사적인 이름이다. URN은 영속적이고, 위치에 독립적인 자원을 위한 지시자로 사용하기 위해 1997년도RFC 2141문서에서 정의되었다.

 

간략하게 정리하면,

URI 는 고유한 식별자, 하나만 가지고 있는 주소 쯤으로 생각되고, 

URL은 말그대로 자원이 어디있는지 알 수 있는 위치? 쯤으로 생각되고 

URN은 이름정도로 생각된다.  

 

 

 

URL은 

프로토콜 서버의주소 포트번호 서버자원정보(요청URI)  형식을 갖는다. 

프로토콜은 통신 규약, 서버 주소는 네트워크를 통해 서버가 동작하는 컴퓨터의 주소, 포트번호는 동작하는 서버 컴퓨터에 접속하기 위한 정보로 0~ 65535번까지 사용가능, 0~1023사이번호는 이미 잘알려진 포트번호. 나중에 다루겠음.

 

URI는 서버에서 서비스하는 서버의 자원 정보다. 포트번호 다음부터가 URI다. 

 

http://www.momonote2.com:65535/manage/manage.html

이라는 URL은 com 까지의 도메인 주소로 컴퓨터 찾아오고 포트번호 65535로 접속하고 그뒤 URI(서비스 자원정보)로 브라우저의 요청을 알맞게 처리하여 응답하는것이다. 

 

이렇게 보면 URI는 고유한 식별자이자. 하나의 주소, 브라우저가 요청한 정보의 그자체 라는 느낌을 받았다.

URL도 주소라는 느낌이 들지만, 브라우저가 요청하는 곳에 데이터를 처리할 위치라는 느낌을 더 받았다. 

 

서적과 인터넷에 돌아다니는 정보를 공부하여 정리해봤지만, 완벽한 이해는 되지않지만, 느낌 정도는 알 수 있었다. 나중에 추가 보완하여 개념을 정립할 필요를 느꼈다. 

 

HTTP의 응답정보

http 응답정보의 헤더의 맨윗줄(상태 줄)은 http 버전, 상태 코드(Status-code) , 상태 코드 설명 으로 구성된다.

상태 코드는 브라우저의 요청을 처리 후 결과를 숫자 세자리로 나타낸다. 브라우저가 상태코드를 보고 응답정보 메시지를 처리한다. 유명한 404에러(not found) 같은..

 

상태 코드에 대하여 몇가지 좀더 자세히 알아보자. 

 

200 OK  : 브라우저의 요청을 성공적으로 처리, 서버는 요청한 데이터를 포함하여 응답. 응답 메시지는 요청방식에 따라 다다름. 

 

400 Bad Request : 클라이언트가 잘못된 요청하여 서버가 요청을 해석할 수 없는 경우. 수정 후 다시요청

 

401 Unauthorized : 인증 오류로서 클라이언트가 잘못된 인증 정보를 헤더에 넣은 경우

 

404 Not FOund :  자주 볼수 있음. 요청한 문서가 존재하지 않음. 요청 URI를 찾지 못한거임. 

 

500 Internal Server Error : 서버 프로그램을 실행할때 오류가 발생하여 서버 프로그램이 실행을 멈추거나, 헤더정보가 잘못된 경우. 프로그램 상 오류를 찾아야한다.