상세 컨텐츠

본문 제목

웹 프로토콜 동작 원리

IT/프로그래밍

by James Lee. 2015. 12. 6. 19:46

본문

웹 프로토콜 동작 원리

URL과 HostName의 차이


- URL : 주소창에 입력되는 전체 문자열
- HostName : URL 구조중 일부 (protocol://hostname[:port]/*.html

DNS

- HostName을 IP로 바꿔줌

페이지 동작원리

- Google.co.kr을 예로 들어 설명
- Google.co.kr을 주소창에 입력
- DNS에서 해당 HostName을 IP(google.co.kr -> 173.194.127.56)로 변환
- TCP Connect에 IP와 PortNumber(8080)을 파라미터로 넘겨줌
- TCP Socket으로 요청 (request)
- 해당 서버에서 response를 받아옴
- HTTP Close로 연결 종료



Request Header 요청 보기

개발자 도구 (단축키 : ctrl + shift + i ) -> Network -> Preserve Log 클릭

페이지별로 어떤 요청과 응답이 주고갔는지 확인이 가능하다.


Request Header

최상단에 요청메소드 (Get인지, Post인지). 요청 URL(위치), HTTP/1.1

나머지는 헤더의 이름/ : (구분자)/ Value




Response Header

상단부분 HTTP1.1/200/OK (무슨 구조인지는 모르겠다.)

나머지는 Request Header와 동일하다.(헤더의 이름/ : (구분자)/ Value)


HTTP Request


Request-line

Request Headers 를 확인했을때 맨 상단에 나오는 라인이다.

Request-line은 Method/URL/Protocol로 구성된다.

예시로 지난번에 Request Header 요청을 확인했을때 Response Header에서 GET/TestProject/FirstTest/HTTP/1.1 이라는 메세지가 왔었다.

이를 해석하면 GET Method가 실행되었으며 URL은 TestProject/FirstTest/이고 HTTP1.1 프로토콜이 사용되었다는 의미이다.

요청Method의 종류

OPTIONS : 요청 URI에서 사용할 수 있는 Method를 물어본다.(스펙 참고)

GET : 요청 URI의 정보를 가져온다.(스펙 참고)

HEAD : GET 요청에서 body는 제외하고 헤더만 가져온다.(스펙 참고)

POST : 요청 URI의 리소스의 새로운 정보를 보낸다.(스펙 참고)

PUT : 요청 URI에 저장될 정보를 보낸다. (스펙 참고)

DELETE : 요청 URI의 리소스를 삭제한다.(스펙 참고)

TRACE : 보낸 메시지를 다시 돌려보낸다. (스펙 참고)

CONNECT : 프록시에 사용하기 위해 예약된 메서드이다.(스펙 참고)

이중 써본 메소드는 get과 post정도이다. 

설명으로 보면

GET은 요청 URL의 정보를 가져온다고 되어있다.

우리가 어딘가 URL을 찾아가는 것은 기본적으로  정보를 가져오기 위함인데 GET이 기본으로 설정되어 있는것은 이와 관련이 있는 것 같다.

POST는 요청 자원의 새로운 정보를 보낸다고 되어있는데, 이는 <form>에다가 정보를 입력해서 보내는것과 관련이 있는것 같다.

HTTP Response

Response - Line

Response Headers 를 확인했을때 맨 상단에 나오는 라인이다.

Response-line은 Protocol/StatusCode/StatusMessage로 구성된다

예시로 지난번에 Response Headers 요청을 확인했을때 Response Headers에서 HTTP1.1/200/OK 이라는 메세지가 왔었다.

이를 해석하면 HTTP1.1 프로토콜을 사용하고, 상태 코드 및 상태 메세지가 200 OK이므로 클라이언트의 요청이 성공하였고 서버는 요청한 데이터를 포함하여 응답한다는 의미이다.

Protocol

사용하는 프로토콜이 HTTP1.1 인지 HTTP1.0인지 나타낸다.

HTTP Status Code

 

Status Code란 뜻 그대로 작업 상태를 코드로 표기하는 것 같다.

3자리 숫자로 되어있고, 1번째 자리는 어떤 응답의 종류인지 (정보, 성공, 방향, 에러(클라이언트), 에러(서버))를 표기

2, 3자리 숫자로 자세한 내역을 표기하는 것 같다. 

(아래의 링크를 참조)

 

상태코드는 서버가 요구 메시지를 수신하여 처리한 결과를 알려주는 세 자리의 정수로 된 처리 결과 번호
첫 번째 자리 숫자는 응답의 종류에 대한 분류 기호이며, 나머지 두 자리 숫자는 일련번호입니다. 현재 첫 번째 자리 숫자에 대해 다섯 가지로 분류하여 쓰고 있다.

 

Informatinal 1xx
Success 2xx
Redirection 3xx
Client Error 4xx
Server Error 5xx

 

HTTP Status Message

 

상태 코드(숫자 형태)를 간략하게 부연 설명해주는 역할인듯 하다. ex ) 요청성공 -> OK

 

이 링크는 각 종류별 상태와 상태 메세지를 나열해놓은 것이다. 전부 다 외울수는 없으니 필요할 때 찾아보면 좋을 것 같다.

 

http://www.coolcheck.co.kr/upload/http_scode.asp 

 

아래 블로그에는 정보가 간략히 정리되어 있으니 앞으로도 참고해야겠다.

 

http://blog.outsider.ne.kr/888 (HTTP 요청/응답 스펙 간략히 이해하기)


 

관련글 더보기

댓글 영역