본문 바로가기

뭐라도 공부해보자!!( 이론 )/네트워크(공부한 것 정리하기)

네트워크 공부 2일차

반응형

네트워크 공부 2 일차이다. 웹에 대한 전반적인 그림을 배웠다. 가볍게만 훓고 지나갈 예정이고, 1 일차에서 언급했던 것처럼 "이런 게 있고 이 사람은 이렇게 이해했구나!" 정도만으로 보고 더 깊게 이해하고 싶으면 좀 더 전문적인 문헌을 찾아보기를 바란다.

  • 네트워크 인터페이스의 선택 : 예를 들어보자. 대부분의 노트북이 무선 네트워크와 이더넷을 모두 지원한다. 그렇다면 2개의 인터넷을 지원하는 상황에서 프로세스는 어떤 것을 선택할 것인가? 프로세스는 하나의 포트만을 독점할 수 있고, 하나의 IP만을 선택할 수 있다. 복수의 IP가 있는 상황에서 컴퓨터는 IP를 선택하는 알고리즘이 존재한다. 자세하게 내가 배우고 있는 영상에서는 다루지는 않지만 해당 주소에 연결함에 있어서 치루게 될 비용이 가장 적은 것을 선택한다 정도는 알 수 있었다.
  • 웹에 대한 전반적인 정리를 다루었다.(사실 이 부분이 가장 중요하다!!) 웹의 창시자 격인 사람은 티모시 버너스 리로 연구원으로 활동하면서 논문 참조에 용이한 문서 구조를 만든 것이 웹의 시초격이 되었다고 한다. 텍스트 형태의 파일에 링크의 개념을 포함시키고 이를 HTTP를 통해서 참조할 수 있게 만든 것이 1 세대의 웹이라고 보면 된다.
  • HTTP는 1.0, 1.1, 2.0, 3.0 까지 나왔고, 현재 가장 큰 비중을 차지하는 것은 1.1 이다. 클라이언트-서버 구조는 웹을 구성하는 가장 기본적인 형태 중 하나이다. 클라이언트에서 GET 형태의 쿼리를 보내게 되면 서버는 가지고 있던 HTML, CSS, 이미지, 자바 스크립트 등 여러 자료 중 요하는 것을 선택하여 다시 클라이언트로 보내게 된다. 여기서 서버가 가지고 있는 자료 중 그 형태가 정해져 있어서 변하지 않는 것들을 정적 데이터라고 한다. 서버는 즉 사용자가 요하는 정적 데이터를 송수신하고, 혹은 이 것들을 중계하는 역할을 한다. 단순한 읽기는 클라이언트를 만족시킬 수 없다. 스크립트 파일로 유저와 서버의 상호작용을 지원하는 것처럼 느끼게 할 수 있을 지언정, 단순히 서버만을 가지고 사용자가 원하는 '더 복잡하고', '더 유용한' 기능을 제공하기에 한계가 있다.
  • HTML은 프로그래밍 언어가 아닌 마크업 언어이다. 쉽게 생각해서 기존에 단순 텍스트만을 저장하는 파일로는 부족해서 그림, 영상, 글자의 정렬 등 여러 기능을 지원할 수 있도록 새로 고안한 형태의 언어이다. CSS는 스타일시트 언어로 기존의 HTML에 외관적인 부분을 구성하는 데 있어서 문서의 구조 자체가 파악될 수 없을 정도록 복잡해지는 것을 막고, 전체적인 문서의 외관을 파악할 수 있도록 고안되었다. 즉 HTML에서 디자인적인 요소를 분리하여 따로 언어로 구성한 것이 CSS다. 
  • WAS(Web Application Server)라는 개념은 좀 더 동적인 웹을 구성하기 위해 도입되었다. 기존에 서버 내의 처리를 하나의 서버가 모두 당담하였다면, 서버는 단순하게 정적인 데이터를 송수신하거나, 혹은 WAS에서 가공된 데이터들을 송수신 및 중계하는 역할만 담당하고, 실질적인 처리 과정은 WAS에 맡기는 형태로 바뀌었다. 클라이언트는 더이상 서버로부터 데이터만을 받는 객체가 아닌 서버를 변경할 수 있는 주체가 될 수 있다. 그러기 위해서는 상태를 기억해야할 장치가 필요한 데, 이것을 서버 단에서는 데이터베이스가 담당한다. 서버와 데이터 베이스는 SQL로 통신하고, SQL을 아는 것은 웹을 다룰 때 중요하다. 클라이언트 단에서도 기억을 담당하는 것이 있는 데, 그것을 쿠키(Cookie)라고 한다. 쿠키의 구성 요소는 키, 값, 존속 시간 등으로 구성되어 있으며, 필요한 경우 사용된다. 쿠키의 존속 시간은 한 번 고려해볼만한 쿠키만의 특징이다. 특정 조건이 만족되면 쿠키는 자동적으로 삭제된다. 
  • MVC 모델은 가장 기본이 된다. 실제 비지니스 모델에서 처리를 구현한 WAS 단의 모델(Model), 서버를 통해 클라이언트에게 데이터를 제공하는 단인 뷰(View), 그리고 이 전반적인 과정을 컨트롤 하는 제어(Controll) 단을 묶어서 MVC 모델이라고 부른다. 이렇게 나누는 데는 여러가지 이유가 있겠지만 가장 큰 이유는 유지, 보수가 용이하기 때문이다.
  • 자바는 알다싶이 JVM이라는 가상 머신 위에서 돌아간다. JVM은 간단하게 말해서 User 단에 자바 바이트코드만을 위한 하드웨어와 OS 역할을 한다. 자바의 이식성이 높은 이유도 JVM만 설치되어 있다면 하드웨어의 종류나 OS의 종류와 관계 없이 별도의 컴파일 과정 없이 동일한 자바 코드로 구동된다는 것이다. JVM 위에는 사용자가 원하는 소프트웨어 구동을 보조하는 소프트웨어가 존재하는 데 이를 미들웨어(Middleware)라고 한다. 안정적인 프로그램의 구동을 위해서 미들웨어를 비롯하여 안정적인 구조를 구성해 놓은 Set이 있는데 이를 프레임워크(Framework)라고 한다. 스프링(Spring)은 자바 웹을 위한 프레임 웤다. 일단은 이 정도만 기억하면 된다.
  • 데이터베이스에서의 응답시간은 매우 중요하다. 이를 모니터링하고 관리하는 프로그램을 APM이라 부른다. 응답시간을 줄이기 위해서 DB 내의 데이터를 찾기 쉬운 형태로 계속 조직하는 데 이를 튜닝이라고 한다.
  • 웹에서 클라이언트가 서버에 요구하는 메서드의 종류를 크게 4 가지로 나누자면 읽기(Read), 쓰기(Update), 생성(Create), 삭제(Delete)를 들 수 있다. 이 같은 기능을 모두 가지고 있는 API 중 하나가 RESTful API다.
  •  HTML은 클라이언트의 환경에 너무 큰 영향을 받는다. 데이터만 보내고 실제 화면의 구성은 사용자에게 맡기는 경우도 있는데, 이때 자바스크립트를 비롯한 스크립트 언어가 사용된다. 좀 더 쉽게 화면을 구성하기 쉽도록 프레임 워크로 만든 것들이 있는데 React, Vue.js 등이 그렇다.

그림은 내가 듣고 있는 강의에서 가지고 온 것이다. 참고 바란다.

 

반응형