http는 어떤 종류의 데이터도 전송할 수 있도록 설계가 되어있음. 이미지 동영상 텍스트 문서.. 종류 가리지 않고 전송.
1.1 버전 가장 사용 많이 함.
http 는 서버/클라이언트 모델. 클라이언트가 서버에게 응답 요청하면 서버가 요청을 받아서 클라이언트에게 응답을 준다. 무상태(stateless) 프로토콜: 서버는 클라이언트에게 받은 요청 응답하고 나면 클라이언트와 연결을 바로 끊는다. 클라이언트가 바로 다음것을 요청한다고 해서 서버는 아까 연결되었던 클라이언트와 같은지 다른지 알 수가 없음.
계속 연결상태 유지하는것이 아니라서 클라이언트와 서버가 최대 연결수보다 훨씬 많은 요청과 응답을 처리할 수 있음.
장:불특정 다수 대상으로하는 서비스에 적합 단:클라이언트가 이전에 뭘 했는지 알수가 없음. 그래서 정보 유지하기위해 쿠키와 같은 기술이 등장함.
URL: 인터넷 상 자원의 위치
IP:집 주소. 하나의 컴퓨터는 하나의 주소. 집안에는 방이 여러개 존재. 하나의 방을 포트라고 생각. 서버는 여러개가 한 포트를 같이 쓸 수 없음. 하나의 포트에 하나의 서버. 포트번호가 각각 달라야함. 즉 하나의 물리적컴퓨터에는 여러개의 소프트웨어 서버가 동작할 수 있는데 이 서버는 포트값이 다르게 동작해야한다. 포트값은 0보다 큰 숫자값이다.
HTTP는 80번 포트.
1. 먼저 원하는 서버에 접속.
2. 클라이언트가 서버에게 요청. 정해진 규칙대로 요청해야함. 요청데이타 포맷. 요청 메세지에는 헤더, 빈줄, 바디부분
헤더부분에는 헤더의 필수 등장요소 get(요청 메소드) / 요청 uri(요청자원위치)/http 프로토콜 버전
바디에 아무것도 없음. get은 요청할 때 가지고 가야할 자원도 uri 에서 같이 가져감. 두번째줄은 헤더값..
바디 요소는 post나 put일 때 들어온다.
3. 요청에 따른 응답결과를 보내줌. 응답 후 연결이 끊김.
응답 데이터 포맷도 요청데이터 포맷과 같은 구성요소.
첫줄에는 반드시 응답 HTTP의 버전/응답코드/응답 메세지.
나머지에는 날짜, 컨텐츠 타입, 컨텐츠 길이 등.. 빈 줄 다음이 실제 응답 리소스가 나오는 부분.
HTTP (Hypertext Transfer Protocol)
- 요청 메서드 : GET, PUT, POST, PUSH, OPTIONS 등의 요청 방식이 온다.
- 요청 URI : 요청하는 자원의 위치를 명시한다.
- HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전이다.
첫번째 줄의 요청메소드는 서버에게 요청의 종류를 알려주기 위해서 사용됩니다.
각각의 메소드 이름은 다음과 같은 의미를 가집니다.
참고로 최초의 웹 서버는 GET방식만 지원해줬습니다.
- GET : 정보를 요청하기 위해서 사용한다. (SELECT)
- POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)
- PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
- DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
- HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
- OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
- TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.
생각해보기
1. HTTP에 S가 붙은 HTTPS 는 어떤 용도로 사용되는 건가요? HTTP와 무엇이 다른가요?
:https는 http의 보안이 강화된 버전이다.
HTML은 계층적인 구조로 이루어져 있다.
자스는 동적인 부분을 담당한다. css,html을 이리저리 움직이고 변경할 필요가 있다. 자스가 이걸 해준다.
프론트:클라이언트 사이드 백엔드:서버 사이드.
클라이언트가 제시한 문제를 해결할 수 있어야한다. 클라이언트의 요청을 잘 처리하려면..
자스로 백엔드 처리도 가능하다. 서버로 자주 사용되는 리눅스..네트워크 이해 필요. 프레임 워크에 대한 이해 (Sping)
DBMS이해(SQL..)
브라우저(browsers)
아이폰:사파리, 크롬, 익스플로어.. 등등
html을 parsing한다. ->문자단위로 하나하나 해석, 다시 의미를 파악하는것.
DOM tree. 구조화된 정보라서 해석해서 트리구조의 형태로 데이터를 가지고 있게 된다.
돔 트리는 화면에 색과 크기로 표현됨.
parsing-general
2+3-1을 해석해야함. 연산자와 상수들을 분리 한 후 계산. 토크나이징. syntax tree를 만들고 ~
parsing=토큰단위로 잘라서 해석 후 의미에 따라 실행해주는것.
HTML parsing
<html>
<body>
<p>
Hello World
</p>
<div> <img src="example.png"/></div>
</body>
</html>
얘가 마크업이다. 실제로 브라우저에서는 쪼개져서 .. 트리구조. 이게 바로 DOM tree
토크나이저 파싱.
CSS도 마찬가지로 파싱된다. key와 value. DOM tree로 parsing된다. 객체화 된 트리구조로 ...
렌더트리가 구성되어서 디스플레이 정보를 표시해준다.
Layout은 화면에 어떻게 표현되는지..
브라우저가 어떤 식으로 높이값과 크기를 계산하는지.. 배경색, 테두리,아웃라인 등등을 그린다.
박스형태로 CSS가 그려진다. 이것이 box model이다.
positioning scheme. 레이아웃 페인팅에 관한 내용.
생각해보기
- 우리가 흔히 브라우저 탐색을 할 때 스크롤을 하거나, 어떤 것을 클릭하면서 화면의 위치를 바꿀 때, 브라우저는 어떻게 다시 화면을 그릴까요?
- 위에서 표현된 그림처럼 다시 렌더링 되지 않을까요?
아직 잘 모르겠음.. 더 배운 뒤에 생각해보자.
browser에서의 웹개발
<html>의 시작~
<style type~>html안에 코드가 굉장히 많이.. html 코드..
특징.
head는 html에대한 추가적인 설명을 담고 있음. 문서에 대한 정보를 포함
body에는 화면에 포함되어야할 것들,
html은 계층적이다.
html은 tag를 사용해서 표현한다.
<tag class="title">안녕하세요</tag>
WAS
클라이언트:서비스 요청(웹 브라우저), 서버:서비스를 제공.(웹서버)
DBMS:데베 관리 시스템. 파일 데이터 저장, 읽어들이는 기능 모두 구현했어야했음. DBMS는 다수의 사용자들이 데베 내의 데이터를 접근할 수 있도록 해줌. 보통 서버형태로 서비스 제공. DBMS에 접속해서 동작하는 클라이언트 프로그램이 많음. 이러면 클라이언트 프로그램이 커진다.(문제점) 보안이 나쁘다는 문제도.
미들웨어: 클라이언트와 EBMS사이에 서버를 두는 방식. 클라이언트는 단순히 요청만 중앙 서버에게 보내고, 미들웨어에서는 대부분의 로직 수행. 데이터 조작할 일->DBMS에게. 그 후 그 결과를 클라이언트에게 전송. 클라이언트는 복잡한 로직이 사라지고 화면에 결과만 보여주면 되기 때문에 크기가 매우 작아진다. 로직이 변경돼도 미들웨어만 변경하면 되는 장점을 가짐.
WAS:최초에는 정적인 데이터만 보여주었음. 요구사항 커지면서 데이터입력,조회등의 동적 기능 요구함. 프로그래밍 기능을 통해 가능했음(CGI) 그러나.. 웹이 복잡해지면서 브라우저와 DBMS사이의 미들웨어가 필요했음. 그게 바로 WAS임. 세가지 기능.1.실행환결,데베 접속기능 제공,2.여러개의 트랜젝션 관리3.업무를 처리하는 비즈니스 로직을 수행한다. 트랜직션은 논리적인 작업단위. 이 외에도 WAS는 다양한 기능 제공. 웹서버 기능도 제공. TOMCAT이라는 WAS만 설치하고 이용. TOMCAT이 웹서버 기능도 충분히 함. 그래서 톰캣만 설치할거임.
현업에서는 웹서버=정적컨텐츠 웹 브라우저에게 전송, WAS는 동적 컨텐츠 웹 브라우저에 전송. 프로그램이 동작해서 얻은 결과를 보통 동적 컨텐츠라 한다. 웹서버 없이 WAS만 있어도 동,정 모두 할 수 있다. 이게 발전하면서 웹서버 역할도 충분히 함. 그럼에도 웹서버가 WAS앞단에 있으면 웹서버가 더 간단해서 사람들이 많이 접속할 때 .. 서버 여러개 일 수 있다. WAS에서 동작하도록 만든게 오작동 해서 WAS 재시작해야할 때 웹서버에서 먼저 WAS를 사용하지 못하게 하고 .. 장애극복기능(failover)때문에 웹서버가 WAS앞단에서 동작하도록 함.
댓글