학습계획
브라우저의 동작을 처음 추적한다. 브라우저에 URL을 입력 할 때의 과정을 살펴본다.
HTTP 요청과 응답 흐름을 이해해보자.
웹 브라우저는 HTTP REQUEST 메시지를 작성한다.
프로토콜
통신 동작의 규칙을 정한 것을 프로토콜 이라한다. 사실 URL의 시작에 HTTP 말고도 다른 포로토콜도 많다 하지만 액세스 대상이 웹서버라면 HTTP 프로토콜 규약을 사용한다.
맨 처음 url을 입력했다면 웹브라우저는 HTTP 메시지를 작성한다. 즉 브라우저가 가장 먼저 하는 일은 url을 해독하는 일이다. (웹 서버와 파일명을 판단하여 만든다)
캐시정책
-
캐시란
캐시는 기본적으로 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 말한다.
종류로는 메모리 키새, cdn, 로컬캐시등이있따.
- cpu에서의 고속 메모리를 말하는 캐시 메모리(Cache Memory)
- file cashe 특정 웹사이트를 빠르게 들어갈 수 있게 저장해 둔다.
- CDN 브라우저와 웹서버간의 거리가 먼 경우 중간서버를 두고 데이터를 캐싱해둔다.
-
캐시정책
네트워크 상에서 요청하고 응답하는 것은 비용이든다. 이런 것을 보완하고 재사용성을 높이고자 캐시라는 개념을 사용하고
우리는 이것에 대해 알맞은 정책을 세울 필요가있다.
참고자료 : https://learn.microsoft.com/ko-kr/dotnet/framework/network-programming/cache-policy
HTTP
-
HTTP (Hypertext Transfer Protocol)와 HTTPS (Hypertext Transfer Protocol Secure) 는 웹을 통해 정보를 전송하는
프로토콜(의사 소통 규칙)이다. 라고 나와있다. 간단하게 HTTPS는 HTTP의 보안을 강화한 버전이다. HTTPS는 웹 서버와 웹 브라우저 간의 데이터
-
전송 과정에서 데이터를 암호화하여 인터넷에서 보안을 강화한다. 클라이언트와 서버 사이에서 이루어지는 요청과 응답의 프로토콜이라 이해했다. 클라,서버 간의
일종의 데이터를 주고받는 규칙인 것이다.

-
지금은 http 메세지에 모든것을 전송한다. html,이미지,영상, json,api 모든것을 전송 한다고 해도 무방하다.
-
http 특징
- 클라이언트 서버구조
- 무상태 프로토콜,비연결성
- http 메세지
- 단순함 확장가능
- HTTP는 TCP/IP 위에서 작동한다 간단히 말하면 IP -> TCP,UDP -> HTTP 간의 계층 구조가있다.
- TCP IP를 보완, 웹브라우저(에플리케이션) 에서 메세지를 작성할 경우
(HTTP), soket 라이브러리를 통해 전달 TCP 정보를 생성 한 후 이것을 다시
IP 패킷을 생성해 서버에 전달한다. 감싼다 라고 생각해도 될거같다.
- IP 패킷이라는 통신 단위로 데어터를 전달한다. 중간에 패킷이 사라지거나 패킷이 꼬이는 문제점이 있을수 있기 때문에 한계가 있다.
- 전송제어 프로토콜 연결지향(3 way hendshake), 순서 보장 , 데이터 전달 보증,현재는 대부분 tcp를 사용한다.
-
HTTP 구조

-
DNS(Domain Name System Servers)웹사이트를 위한 주소록과 같다. 브라우저에 웹 주소를 입력할 때, 브라우저는 그 웹사이트를 검색하기 전에
DNS를 살펴보고 브라우저는 HTTP 메시지를 올바른 장소로 전송하기 위해 그 웹사이트가 있는 서버가 어떤 것인지 찾는다.전화번호 부처럼 도메인 명을 등록한다
-
정리하자면 클라이언트와 서버가 서로 Request,Response를 하며 html등을 주고받는데 이 주고받는 메세지(프로토콜)약속을 HTTP라한다. 즉 http는
Request,Response 메세지로 나눠져있다.
HTTPS
- https의 s는 secure이다. HTTP에 데이터 암호화가 추가된 프로토콜이다. https는 내가 어떤 웹사이트에 보내는 정보를 다른 누군가가
볼수 없게 한다. 또한 내가 접속한 사이트가 신뢰가능한 사이트인지 판별해준다.
- 대칭키와 비대칭키를 사용해 암호화를 한다.
- 대칭키는 메세지를 보내는 쪽, 받는 쪽이 메세지를 복호화 하는 방식을 공유한다.
- 비대칭키는 공개키,개인키로 나뉜다 대칭키와 상반되는 개념이다. 공개키와 개인키의 각각의 이점이 있다.
공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있다. -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있다. 뿌려도 상관없다.
개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있다. -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.
- 결론적으로 https는 대칭키 비대칭키 암호화를 모두 사용하며.(연결 과정 핸드 쉐이크) 빠른 연산 속도가 필요한, 세션키는 대칭키
처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용한다.
참고자료 : https://mangkyu.tistory.com/98
SSL
-http 통신을 하면 통신을할 때 데이터들이 가로채질 수 있다. SSL 소켓을 두어 보안을 강화한다. https 가 ssl을 실제로 사용한다.
즉 SSL은 HTTPS 프로토콜의 핵심 요소이다. HTTPS는 SSL과 HTTP를 조합한 프로토콜이다. ssl은 최근에 TLS라는 이름으로 개선된
버전이 사용된다.
WWW
- WWW(World Wide Web) 간단히 웹이란 인터넷 에 포함 되는 개념으로 인터넷 보다는 작은 개념이다.
웹은 인터넷 상에서 텍스트나 그림, 소리 영상 등과 같은 멀티미디어 정보를 하이퍼 텍스트 방식으로 연결하여 제공한다.
웹의 하이퍼 텍스트는 (html,css,js)로 표현. 우리가 사용하는 웹브라우저란 웹을 컴퓨터로 불러와 실행하는 응용프로그램.
URI
- URI URI는 URL URN을 모두 포함하고있는 더큰 개념이다 식별자이다
- URL 어떻게 리소스를 얻을 것이고 어디에서 가져와야하는지 명시하는 URI이다. 위치지정자
- URI와URL의 차이는 식별자, 위치지정자이며. https://www.elancer.co.kr > URL,URI elancer.co.kr > URI 이다 URL은 어떻게 위치를 찾고 도달할수 잇느지
프로토콜의 형태를 띄어야한다.
- URN (Uniform Resource Name) 로 리소스 그자체 이름을 말한다.영구적이고 변하지않는다. 현실적으로 리소스를 이름만으로 찾는 방법이 보편화되지 않았다.
DOM
-
웹브루어지가 html문서를 해석하고 화면을 통해 해석된 결과를 보여준다. 이것을 렌더링 이라한다. 브라우저가 해석한 html코드를 트리 형태로 만드는데
이것을 dom 이라한다. 결국 브라우저는 이 트리형태의 dom을 가지고 렌더링을 한다.
-
DOM 구조를 만드는 이유는 js를 가지고 웹컨텐츠를 추가,삭제,이벤트 처리등을 추가할 수 있다. 그이유는 html은 정적이기 때문이다. 웹컨텐츠가
동적인 상호작용을 하기위해 DOM이 js를 사용해 동적인 활동을할 수 있게 되는것이다.
html
- HT(문서와 문서가 링크로 연결되어있다.)M(태그로 이루어져 있다.)L(언어) 쉽게말하면 html은 웹브라우저를 통해 웹페이지 컨텐츠를 정의하기 위해 사용되는 언어이다.
HTTP Request와 Response

- HTTP Request,HTTP Response 메시지의 구조
- 공통 구조
- 시작 : HTTP 요청 / 또는 요청에 대한 성공 또는 실패가 기록된다.
- HTTP 헤더: 요청에 대한 설명 / 또는 메시지 본문에 대한 설명이 들어간다.
- 빈 줄
REST API
- http:://주소//자원ex)book/... 이런식의 url,uri 가있다한다면 http프로토콜 방식의 post,get,put,delete를 통해 자원을 CRUD한다면 이 것을
RESTful 하다. REST API이다.
웹 브라우저에 URL을 입력하면 어떤 일이 생기나요?
- 브라우저에 URL,URI 형태로 www.naver.com을 입력한다.
- pc 가 naver접속을 하기위해서는 naver의 IP주소를 알아야한다. (여기서 os의 수준에 따라 방법이 상이하다. 윈도우기준) dns에게 질의한다.
(정확히는 DNS 서버에 질의하기전 밑과 같은 순서를 거친다).
- HOST 파일 확인
- DNS Cache 확인
- DNS 서버 질의
- 공유기의 포트포워딩을 통한 DNS 서버 질의
- ISP의 DNS 설정을 따라서 DNS 서버 질의
- DNS 서버로부터 응답이 와서 도메인 네임에 따른 IP 주소를 얻게 된다.
- 브라우저는 해당서버와 tcp연결을 한다.(연결은 TCP/IP 3-way handshake라는 연결 과정을 통해 이뤄진다)
- 브라우저가 웹서버에 HTTP 요청을 보낸다.
- 서버가 요청을 처리하고 응답을 보낸다.
- 서버가 HTTP 응답을 보낸다.
- 브라우저가 HTML 컨텐츠를 보여준다. (HTMl을 랜더링한다)
참고자료 https://www.youtube.com/watch?v=GAyZ_QgYYYo
https://velog.io/@khy226/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-url%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4-%EC%96%B4%EB%96%A4%EC%9D%BC%EC%9D%B4-%EB%B2%8C%EC%96%B4%EC%A7%88%EA%B9%8C
http 헤더
http 헤더에는 많은 정보가 들어간다. 크게 4가지롸 나뉘어진다.
- General 헤더 : 메시지 전체에 적용되는 정보, 예) Connection: close
- Request 헤더 : 요청 정보, 예) 웹브라우저 정보가 뭔지
- Response 헤더 : 응답 정보, 예) 서버 정보가 뭔지
- Entity 헤더 : 엔티티 바디 정보, 예) Content-Type:text/html 콘텐츠 타입은 바디와 관련된 정보라고 보면 된다

-
표현 헤더 종류
- Content-Type : 표현 데이터의 형식
- Content-Encoding : 표현 데이터의 압축 방식
- Content-Language : 표현 데이터의 자연 언어
- Content-Length : 표현 데이터의 길이
-
협상
-
전송 방식
쿠키
- 쿠키 : http 메세지의 기본 적인 무상태한 특성 때문에 서버에서는 사용자의 아이디를 계속 응답이 올때마다 검증해야한다 그렇다면 모든 요청에 계속 아이디를
넣어 사용한다고해도 이거또한 보안상 문제가있다. 이러한 해결책이 쿠키이다.

Set cookie : 서버에서 클라이언트로 쿠키 전달(응답)
서버에 전송하지않고 , 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지를 사용하자.
민감한 정보는 넣지말자.
요구사항 정리
https://triest.tistory.com/14 HttpURLConnection 설정 및 옵션