- 웹 애플리케이션
- 네트워크를 만드는 기술
- 웹을 구성하는 기술
- HTTP
웹 브라우저를 통해 접근이 가능한 어플리케이션
vs native application
(특정 기기에 설치해서 사용)
vs OSI 참조 모델 7계층
회선(circuit) 교환(switching) 방식
인터넷 상에서 사용하는 주소 체계
IP 주소만 가지고는 네트워크 상에서 송/수신이 가능하지는 않음
둘 다 포트 번호 사용
통신/데이터의 신뢰성 vs 통신의 빠른 속도, 실시간 통신
ex1) 비디오 스트리밍 상황에 주로 사용하는 방식
ex2) 미 국방부는 어떠한 점에 착안하여 TCP/IP가 극심한 전시 중에도 신뢰성을 잃지 않는다고 판단한 것인가?
ex3) DNS 서버가 TCP방식에서 동작한다면 어떠한 문제가 발생할까?
/* 나의 질문
1. 포트 번호는 통신 요청? 시 언제, 어떻게, 지정하지? -> 잘 알려진 포트의 경우 URI 등에 명시하지 않음 vs 그 외의 잘 알려지지 않은 포트(임시 포트 :8080 등)는 반드시 포함해야 함
2. 포트 번호를 지정 안 하면 어떤 일이 발생하나?
3. 같은 웹 브라우저를 동시에 2개 켜 놓고 같은 사이트에 접속을 해도 문제 없이 통신 가능 -> 어떠한 방식으로 원활히 통신이 가능한 것인가?
*/
uniform resource locator = 인터넷 상에서/웹에 게시된 어떤 자원/리소스(html, img 등)(의 위치)를 찾기/특정하기 위해 브라우저에서 사용되는 메카니즘 = 서버가 제공되는 환경에 존재하는 파일의 위치
/* 나의 질문
1. "슬래시(/)를 이용해 서버의 폴더에 진입하거나 파일을 요청할 수 있음
-> 기본적인 보안의 일환으로 외부에서 직접 접근이 가능한 경우는 거의 없음
-> (웹 개발자가)어떻게 접근을 막지?
2. uri 요소 중 bookmark는 무엇인가?
3. codestates ip 주소를 브라우저 주소 창에 쳤을 때 왜 정상적으로 접속이 안 되지..?
*/
uniform resource identifier = uniform resource locator의 기본 요소(scheme, hosts[:port], url-path) + query, bookmark
클라이언트-서버 간의 연결에 대한 설명 방법 → 어떻게 애플리케이션 내부의 요소들이 상호 간에 소통하는지 설명
/* user interface 요소들 = user 경험 관련 요소들, 웹 애플리케이션 기능적인 부분 외적인 요소들
e.g. 화면 출력, 로그, 알림, 시스템 통계, 환경 설정 등
Spring MVC의 Controller 클래스 = Spring MVC에서 클라이언트 요청의 최종 목적지
*/
/* domain knowledge -> 애플리케이션(의 서비스 계층)에서 비즈니스 로직(실제로 요청 사항을 처리하기 위해 Java 코드로 구현한 것)으로 구/표현
Spring MVC에서의 Model = Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받고 요청 사항 처리 작업한 결과 데이터(클라이언트에게 응답으로 돌려줌)
*/
/* 3개 계층에 속하지 않은 web application 구조 요소들
1. cross-cutting
2. third-party integration
*/
- microservice architecture의 장점 + 적용
- serverless architecture의 장점 + 적용