오늘은 페어와 함께하는 일정은 없이 혼자 학습하는 날이다. 그리고 HTTP네트워크 기초를 학습하는 날이였다.내 계획은 정해진 시간보다 빠르게 읽고, 노션정리를 한 후 더 풍부하게 이것저것 더 검색해 볼 계획이었는데 생각보다 시간이 부족해 오히려 시간에 쫒기며 했다. 하지만 재미있었다. 이전에는 노션에 정리를 할때도 있고 안할때도 있었다면 요즘은 계속 노션에 정리를 하며 공부를 하는데 정리를 하며 공부하니 머리에 더 잘 남는것 같다.
HTTP API 디자인에는 Best Practice가 존재한다. 사용자 관리 API인데 URL 디자인은 비교적 단순하나 "메소드"라는 개념이 등장한다. HTTP 요청에는 메소드라는 것이 존재한다. 앞서 스타벅스에서는 (학습할 때 스타벅스를 예시가 있었다.) 리소스를 그저 달라고(GET) 요청했지만, 사용자 관리 API에서는 사용자를 추가해 달라고(CREATE) 요청하거나, 지워달라고(DELETE) 요청할 수도 있다. 마치 CRUD 행동과 비슷하다. CRUD 각각의 행동과 일치하는 HTTP 메소드의 종류가 존재한다.
기억해야 할 다섯가지 메소드는 다음과 같다. GET, POST, PUT(또는 PATCH), DELETE 각각 조회, 추가, 갱신, 삭제와 관련이 있다. 메소드 설명은 MDN "HTTP 요청 메서드"를 참고하자. 이때 HTTP 메소드는 리소스를 이용해 하려는 행동에 맞게 적절하게 써야 한다는 점에 주의하자. 만일 GET 요청을 했는데, 갑자기 서버에서 리소스가 지워진다면 좋은 API 디자인이라고 볼 수 없다.
URL은 Uniform Resource Locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. URL은 scheme, hosts, url-path로 구분할 수 있다. 가장 먼저 작성하는 scheme은 통신 방식(프로토콜)을 결정한다. 일반적인 웹 브라우저에서는 http(s)를 사용한다. hosts는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다. url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다. URI는 Uniform Resource Identifier의 줄임말로, 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함한다. query는 웹 서버에 보내는 추가적인 질문이다. 브라우저의 검색창을 클릭하면 나타나는 주소가 URI이다. URI는 URL을 포함하는 상위개념이다. 따라서, 'URL은 URI다.' 는 참이고, 'URI는 URL이다.' 는 거짓이다.
네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP address(Internet Protocol address, IP 주소)라고 한다. 네트워크 상에서 특정 PC를 나타내는 IP 주소와 그 주소에 진입할 수 있는 정해진 통로, PORT(포트)가 있다. IP는 Internet Protocol의 줄임말로, 인터넷상에서 사용하는 주소체계를 의미한다. 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다. 이렇게 네 덩이의 숫자로 구분된 IP 주소체계를 IPv4라고 한다. IPv4는 Internet Protocol version 4의 줄임말로, IP 주소체계의 네 번째 버전을 뜻한다. IPv4는 각 덩어리마다 0부터 255까지 나타낼 수 있다. 이 시스템을 따르면, 2^(32)인 약 43억 개의 IP 주소를 표현할 수 있다. 그 중에서 몇 가지는 이미 용도가 정해져 있다. 특히 다음과 같은 IP 주소는 반드시 기억해야 한다.
인터넷 보급률이 낮았던 초기에는 이 버전(IPv4, IP version 4)으로 네트워크에 연결된 PC에 주소를 할당하는 일이 가능했다. 그러나 개인 PC의 보급으로 전 세계의 누구나 PC를 이용해 인터넷에 접속하고, 각종 서비스를 위해 서버를 생산하면서 IPv4로 할당할 수 있는 PC가 한계를 넘어서게 되었다. 이를 위해 세상에 나오게 된 것이 IPv6이다. IPv6는 표기법을 달리 책정하여 2^(128)개의 IP 주소를 표현할 수 있다.
네트워크 상에 존재하는 모든 PC는 IP 주소가 있다. 그러나 모든 IP 주소가 도메인 이름을 가지는 것은 아니다. 로컬 PC를 나타내는 127.0.0.1 은 localhost 로 사용할 수 있지만, 그 외의 모든 도메인 이름은 일정 기간 동안 대여하여 사용한다. 그렇다면 이렇게 대여한 도메인 이름과 IP 주소는 어떻게 매칭하는 걸까? 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는, 해당 도메인 이름과 매칭된 IP 주소를 확인하는 작업이 반드시 필요하다. 네트워크에는 이것을 위한 서버가 별도로 있다.네트워크 상에 존재하는 모든 PC는 IP 주소가 있다. 그러나 모든 IP 주소가 도메인 이름을 가지는 것은 아니다. 로컬 PC를 나타내는 127.0.0.1 은 localhost 로 사용할 수 있지만, 그 외의 모든 도메인 이름은 일정 기간 동안 대여하여 사용한다. 그렇다면 이렇게 대여한 도메인 이름과 IP 주소는 어떻게 매칭하는 걸까? 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는, 해당 도메인 이름과 매칭된 IP 주소를 확인하는 작업이 반드시 필요하다. 네트워크에는 이것을 위한 서버가 별도로 있다.