오늘도 스프링 학습을 이어나갔다. 코드 작성법은 어느정도 익혔으나 본질적이고 이론적인 부분들을 놓치고 있다는 생각이 들어서 그런 부분들을 채워나가기 위한 공부를 했던 것 같다.
여기에는 오늘 공부해본 네트워크에서 기본적으로 알아야할 것들에 대해 조금이나마 정리해보았다.
1. 네트워크 기본 지식
- 네트워크와 인터넷
컴퓨터 네트워크란 여러 장치가 연결되어 정보를 주고받을 수 있는 통신망을 의미한다. 인터넷은 여러 네트워크를 연결한 네트워크의 네트워크를 의미한다.
- 메시지와 호스트
네트워크에는 여러 장치가 서로 연결되어 정보를 주고받는다. 이런 정보를 주고받을 수 있는 장치간 주고받는 정보를 메시지라고 한다. 그리고 네트워크를 통해 흐르는 정보를 최초로 생성 및 송신하고, 최종적으로 수신하는 가장자리에 위치한 정점을 호스트라고 부른다. 우리가 일상 생활에서 사용하는 네트워크 기기 대부분 PC, 스마트폰, TV 등이 여기에 속한다고 봐도 무방하다.
- 클라이언트, 서버
서버와 클라이언트는 각각 요청과 응답을 주고받는 호스트이다. 서버는 어떤 서비스를 제공하는 호스트이고, 클라이언트는 서버에게 어떠한 서비스를 요청하고 서버의 응답을 제공받는 호스트이다.
- 자원(Resource)
네트워크 상의 메시지를 통해 주고받는 대상으로 HTML 파일, 이미지 파일, 동영상 파일, 텍스트 파일 등이 될 수 있다. 두 호스트가 네트워크를 통해 서로 정보를 주고받을 때 송수신하는 대상이 자원이다.
- URI, URL, URN
네트워크상에서 자원을 주고받으려면 자원을 식별할 수 있어야한다. 자원을 식별할 수 있는 정보를 URI(Uniform Resource Identifier)라고 부른다. 자원을 식별하는 통일된 방식이 URI이다.
위치를 이용해 자원을 식별하는 위치기반 식별자를 URL(Uniform Resource Locator)이라고 한다.
이름을 이용해 자원을 식별하는 이름기반 식별자를 URN(Uniform Resource Name)이라고 한다.
- URL 자세히 살펴보기
위의 사진은 HTTP(S)에서의 일반적인 URL 형식을 나타낸다.
- scheme
URL의 첫 부분에 해당하는 것이 scheme으로 자원에 접근하는 방법을 의미한다. 일반적으로 사용할 프로토콜이 명시된다. http(s)://이 바로 여기에 해당한다.
- authority
authority에는 호스트를 특정할 수 있는 정보가 명시된다. 주로 IP주소 또는 도메인 이름이 명시되며 콜론 뒤에 포트 번호를 덧붙일 수도 있다.
- path
path에는 자원이 위치한 경로가 명시된다. 자원의 위치는 슬래시(/)를 기준으로 계층적으로 표현된다. 위의 예시에서는 원하는 자원인 myfile.html이 최상위 경로 아래(/), path 아래(/path), to 아래(/path/to)에 있는 것이다. 그렇기 때문에 /path/to/myfile.html이 되는 것이다.
- query
HTTP는 요청-응답 기반의 프로토콜이다. 클라이언트는 서버에게 URI(URL)이 포함된 HTTP 요쳥 메시지를 보내고 HTTP 서버는 이에 대해 HTTP 응답 메시지를 보낸다. URL 구문만으로도 문제없이 자원의 위치를 식별할 수 있는 경우도 있지만 더 많은 정보가 필요할 경우 쿼리 파라미터(Query Parameter)(또는 쿼리 문자열(Query String)이라고도 한다.)를 사용할 수 있다.
쿼리 파라미터는 물음표로 시작되는 <키=값> 형태의 데이터로, 앰퍼샌드(&)를 사용해 여러 쿼리 파라미터를 연결할 수 있다.
위의 예시에서는 <key1=value>, <key2=value>라는 쿼리 파라미터가 포함된 것이다.
쿼리 파라미터는 수많은 정보들 중에서 특정 단어를 검색한 결과에 해당하는 것이나 수많은 검색 결과 중에서 원하는 방식으로 정렬한 결과 등을 가져오기 위해 사용한다.
결과 조회, 검색, 정렬, 트래킹(어떤 경로로 사용자가 사이트에 방문하는지) 등의 용도로 사용된다.
- fragment(anchor)
fragment(anchor)는 자원의 한 조각을 가리키기 위한 정보이다. 예를 들어 HTML 파일과 같은 자원이 있다면 그 HTML 파일 내에서 특정한 부분을 가리키기 위해 사용된다. 이 블로그에서도 목차에서 제목이나 소제목을 누르면 해당 부분으로 이동하게 될 때 이 fragment를 통해 이동하는 것을 간단히 확인해 볼 수 있다.
fragment 처리는 서버로 전달되지 않고 브라우저가 서버로부터 자원을 받은 이후에 이루어진다. 자원 내에서의 북마크의 한 종류라고 할 수 있다.
2. 오늘 배운 것
- 스프링 프레임워크에 대해 조금 더 잘 이해하게 된 것 같다.
- 내가 부족한 부분이 어떤 것인지 알게된 것 같고, 무얼 공부해야할지 조금 알게된 느낌이다. 살짝 헤매고 있다가 다시 길을 찾은 느낌이라 앞으로 더 집중력있게 공부할 수 있을 것 같다.
'오늘 배운 것' 카테고리의 다른 글
24-05-14 Spring 개인 과제 (2) (0) | 2024.05.14 |
---|---|
24-05-13 Spring 개인 과제 (0) | 2024.05.13 |
24-05-11 ERD 다이어그램 그리는 법 (0) | 2024.05.11 |
24-05-10 Spring 과제 시작 (0) | 2024.05.10 |
24-05-09 인증/인가, 쿠키/토큰 (0) | 2024.05.09 |