What is Url? Why am I need to learn that?
본격적으로 Spring framework를 들어가기 전에 기본적인 통신이나 Url, UTF-8에 대해서 알아야 합니다. Url의 기본적인 요소나 웹 상에서의 통신 protocol 등 에 관한 기본적인 소양을 갖추어야 Spring을 활용하여 웹 상에서 동작하는 원리를 더 잘 이해할 수 있습니다. Url 은 무엇이고 구성요소는 어떤 것이 있는지 알아보도록 합시다.
This is Url : Uniform Resource Locator
저의 블로그 주소입니다. 이 블로그 주소를 보더라도 많은 의미를 알 수 있는데요.
https://valuelog.tistory.com/3
빨간색 박스 안에 들어 있는 것은 Protocol이며, 초록색 박스는 Domain이고, 파란색 박스는 Web-page를 보여줍니다.
Protocol 명이 https라고 되어있습니다. 즉, 이 프로토콜을 통해 지금 요청을 하고 요청 값을 받는 거죠.
HTTP(HyperText Transfer Protocol, 문화어: 초 본문 전송 규약, 하이퍼 본문 전송 규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다.
HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.
HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.
출처 : https://ko.wikipedia.org/wiki/HTTP
What is a URL?
A URL (Uniform Resource Locator) is a unique identifier used to locate a resource on the Internet. It is also referred to as a web address. URLs consist of multiple parts -- including a protocol and domain name -- that tell a web browser how and where to retrieve a resource.
End users use URLs by typing them directly into the address bar of a browser or by clicking a hyperlink found on a webpage, bookmark list, in an email or from another application.
출처 : https://searchnetworking.techtarget.com/definition/URL
초록색 박스 안에 있는 Domain 주소는 이 웹사이트의 ip값을 domain name으로 바꿔진 겁니다. 즉, 우리는 어떤 이름의 ip로 접속하고 있는 것이죠.
A domain name is an identification string that defines a realm of administrative autonomy, authority or control within the Internet. Domain names are used in various networking contexts and for application-specific naming and addressing purposes. In general, a domain name identifies a network domain, or it represents an Internet Protocol (IP) resource, such as a personal computer used to access the Internet, a server computer hosting a website, or the web site itself or any other service communicated via the Internet. In 2017, 330.6 million domain names had been registered. [1]
출처 : https://en.wikipedia.org/wiki/Domain_name
파란색 박스는 이 도메인 ip로 들어와서 세부 페이지에 들어가는 것이죠. 도서관으로 치면 수많은 책 중에서 하나의 책을 고르는 거라고 보시면 됩니다.
Stateless, Statefull
통신을 할 때, 바이트 스트림 기반으로 통신을 하게 되는데, 이 통신을 계속 유지하는 서비스와 유지하지 않는 서비스로 나누게 됩니다. 통신을 계속 유지하는 서비스의 예로는 chat서비스가 있습니다. 아래의 블로그에 잘 설명해주시고 계십니다.
What is Byte Stream
Byte Stream은 데이터를 있는 그대로 송수신하는 Stream. 그리고 이 Byte Stream을 이용하여 문자를 파일에 저장하는 것도 가능하다. 물론 이렇게 저장된 데이터를 자바 프로그램을 이용해서 읽으면 문제 되지 않는다. 하지만 다른 프로그램을 이용해서 읽으면 문제가 될 수 있다.
운영체제 별로 고유의 문자 표현방식이 존재한다. 그리고 운영체제에 세 동작하는 프로그램은 해당 운영체제의 문자 표현 방식을 따른다. 따라서 파일에 저장된 데이터는 해당 운영체제의 문자표현 방식을 따라서 저장되어 있어야 한다.
원래 Stream은 Byte 단위로 핸들 하는 것을 기본으로 한다. 문자도 내부적으로는 Byte 단위로 되어 있으며, 프로그램에서 문자를 사용할 때는 적절한 문자 인코딩으로 변환해서 사용해야 한다. 이러한 불편을 해소하기 위해서 Stream 차원에서 문자를 처리해주는 문자(Character) Stream을 제공하고 있다. Stream을 Byte로 핸들 하느냐 문자로 핸들 하느냐에 따라서 두 가지 종류로 나눌 수 있다.
스트림의 공통된 특징은 입력 스트림의 경우 read() 계열의 메서드를 사용해서 데이터를 읽어 들이며, 출력 스트림의 경우 write() 계열의 메서드를 사용해서 데이터를 기록한다
출처 : https://story.stevenlab.io/96 [::: STEVEN J.S MIN's Story :::]
UTF-8
한국어는 영어 알파벳과 달리 한 글자에 많은 정보를 담고 있습니다. 그래서 영어의 경우보다 많은 데이터를 담을 수 있는 공간이 필요하죠. 우리가 컴퓨터로 통신을 할 때 앞서 말했듯 바이트 스트림 기반으로 통신하게 됩니다. 바이트 기반으로 통신을 하기 때문에 글자의 정보도 바이트로 이루어지게 되어있습니다. 영어의 경우는 1byte로 모두 표현이 가능하지만 한글의 경우에는 그렇지 않습니다. 한글은 최소 3byte 기반으로 통신을 해야 한 글자 한 글자를 담아낼 수 있는데요. 그래서 우리가 개발을 할 때 unicode 설정을 UTF-8로 해야 하는 이유가 여기에 있습니다.
위키에서의 UTF-8
UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. UTF-8은 Universal Coded Character Set + Transformation Format – 8-bit의 약자이다. 본래는 FSS-UTF(File System Safe UCS/Unicode Transformation Format)라는 이름으로 제안되었다.
UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용한다. 예를 들어서, U+0000부터 U+007F 범위에 있는 ASCII 문자들은 UTF-8에서 1바이트만으로 표시된다. 4바이트로 표현되는 문자는 모두 기본 다국어 평면(BMP) 바깥의 유니코드 문자이며, 거의 사용되지 않는다. UTF-16과 UTF-8 중 어느 인코딩이 더 적은 바이트를 사용하는지는 문자열에서 사용된 코드 포인트에 따라 달라지며, 실제로 DEFLATE와 같은 일반적인 압축 알고리즘을 사용할 경우 이 차이는 무시할 수 있을 정도이다. 이러한 압축 알고리즘을 사용하기 힘들고 크기가 중요할 경우 유니코드 표준 압축 방식(Standard Compression Scheme for Unicode)을 대신 사용할 수 있다.
출처 : https://ko.wikipedia.org/wiki/UTF-8
Reference
https://valuelog.tistory.com/3
https://ko.wikipedia.org/wiki/HTTP
https://searchnetworking.techtarget.com/definition/URL
https://en.wikipedia.org/wiki/Domain_name
https://ko.wikipedia.org/wiki/UTF-8
'BackEnd > Spring' 카테고리의 다른 글
[Spring][3]Dependency Injection[의존성 주입] (0) | 2021.06.28 |
---|---|
[Spring][2] The practice of MVC pattern [MVC 패턴 실습] (0) | 2021.06.24 |
[Spring][1] MVC pattern [MVC 패턴] (0) | 2021.06.24 |
The foundation for entering Spring [ 스프링 입문의 기초 지식 ][2] (0) | 2021.06.23 |
Download the Spring Tools [스프링 툴 다운로드하기] (0) | 2021.06.22 |