브라우저에서 어떤 주소(url)에 대해 엔터를 치고 실행을 하면, 해당 주소로 연결된 페이지가 뜨거나, 만약 페이지가 없다면 에러를 띄우게 된다. 브라우저가 이러한 일을 하기 위해 어떤 일을 거치는건지 확인해보자.
Step1.도메인 이름탐색
1) DNS 서버 접속 후, 주소의 IP가 무엇인지 요청
2) DNS 서버는 요청에 대한 응답으로 IP주소를 리턴(216.58.197.196 과 같은 형태)
3) 만약 도메인을 찾지 못하면, ERR_NAME_NOT_RESOLVED
, 즉 사이트를 연결할 수 없음를 출력한다
Step2.웹 서버(HTTP) 요청
1) 웹 서버의 라우팅(routing:주소탐색규칙)에 따라 요청을 처리한다.
웹서버루트/하위폴더/하위폴더/index.html
웹서버루트/search?q='찾는 것'
웹서버루트/preferences
404 Not Found
를 출력한다.(우리가 흔히 만나볼 수 있는 에러)HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 계층 프로토콜이다. 클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을때 까지 대기하는 전통적인 클라이언트-서버 모델을 따른다.
HTTP는 클라이언트-서버간의 프로토콜로, 요청(requests)
은 클라이언트에서, 응답(responses)
은 서버에서 이뤄진다.(Request - Response Cycle) 요청과 응답 사이에는 다양한 작업을 수행하는 게이트웨이 혹은 캐시역할을 하는 프록시 등이 존재한다.
위의 규칙을 통해 '리소스 존재 유무'를 클라이언트가 확인할 수 있어야 함을 알 수 있다. 그리고 클라이언트가 무언가 요청했을 때 '무시'가 된다면 반드시 '오류'를 통해 확실하게 클라이언트에게 보여줘야한다.
HTTP 바이블 : rfc2616
HTTP메세지는 요청(Request)와 응답(Response)의 패턴을 지니고 있고 보통 동기적으로 작동한다. 연결이 열리면 응답이 전달될 때까지 기다리거나(pending) timeout을 전달한다. HTTP/1.1 요청과 응답은 Start/Status line, Header, Body(Payload)로 이뤄져있다.
Publish-Subscribe
Push technology(Server push)
HTTP 요청(Request)와 응답(Response)는 그 구조과 닮아있다.
HTTP 요청
HTTP 응답
대표적인 HTTP의 메소드는 CRUD의 관점으로 보면 쉽다. Create는 POST, Read는 GET, Update는 PUT/PATCH, Delete는 DELETE 에 해당하며, 자세한 내용은 아래와 같다.
참조사이트
HTTP개요
[HTTP]HTTP 요청/응답 메시지 구조
get과 post의 차이
HTTP메소드
HTTP Request Methods
[인터넷:원리] 애플리케이션 계층이란?: Application Layer: 네트워크 프로토콜
URL/URI
URI(Uniform Resource Identifier)
URL(Uniform Resource Locator)
특정 HTTP 요청이 성공적으로 완료되었는지 알려주는 코드로, 5개의 그룹으로 나누어진다. 그 중 우리가 흔히 볼 수 있는 것은 에러코드들을 많이 접할 수 있는데, 대표적으로 404 Not Found 를 들 수 있다.
1.Informational responses (100–199),
2.Successful responses (200–299),
3.Redirects (300–399),
4.Client errors (400–499),
5.Server errors (500–599)
많이 볼 수 있는 코드들은 아래와 같고, 더 자세한 부분을 확인하고 한다면 HTTP 상태코드 - MDN 에서 확인해볼 수 있다.
Status Code | Message | Meaning |
---|---|---|
200 | ok | 요청성공 |
201 | Created | 요청성공-새로운리소스 생성 |
304 | Not Modified | 캐시 목적 활용, 요청에 대한 응답이 수정되지 않음 |
403 | Forbidden | 컨텐츠에 대한 접근 권한이 없음 |
404 | Not Found | 요청받은 리소스를 사용할 수 없음 |
500 | Internal Server Error | 서버가 처리할 수 없는 요청 |
크롬 개발자 툴에 있는 Network 탭을 이용해서 HTTP의 응답상태를 확인하고, 값을 잘 받아오는지도 확인할 수있다. 이 탭에서 표시되는 것을 네트워크 로그(Network Log) 라고 한다.
각 판넬에 대한 조작은 커스텀이 가능하고, Network log가 표시 되는 열에서도 필요한 부분만 볼 수 있는데 이에 대한 자세한 사항은 공식문서 를 살펴보자
각 열이 하는 것들 중 여기서 초첨을 맞춰보는 것은 Status 와 네트워크 로그(Network Log)의 Name 을 클릭했을 때 나타나는 정보들 중Header의 정보, Response(응답) 이다. Header 를 Request의 정보와 처리현황, Response의 정보 구조를 좀더 자세하게 알 수 있다. Name 에서 표시되는 각 판넬의 역할을 자세히 알고 싶다면 View details for a single resource 를 살펴보자.
네트워크 탭말고 포스트맨(POSTMAN) 을 사용하여 응답/요청 테스트를 진행해볼 수도 있다.
간단하게 포스트맨에 대한 설치 등을 살펴보기 위한 포스팅은 이곳을 클릭하자.
참조사이트
Inspect Network Activity In Chrome DevTools
Network Monitor - MDN