Chapter1. TCP/IP
1.패킷교환 방식의 이점에 대해 이해한다.
2.IP의 비순서성, 비신뢰성에 대해 이해한다.
3.TCP의 3 way handshake 및 그와 비교되는 UDP에 대해 이해한다.
Chapter2. 네트워크 계층 모델
4.네트워크 통신을 계층별로 나눈 이유에 대해 이해한다.
5.통신 과정에서 일어나는 데이터 캡슐화에 대해 이해한다.
Chapter3. HTTP
6.HTTP 메세지 구조를 이해한다.
7.HTTP의 무상태성과 비연결성에 대해 이해한다.
8.HTTP 헤더 중 바디를 설명하는 헤더인 표현헤더에 대해 이해한다.
9.HTTP 헤더 중 요청과 응답에서 주로 사용되는 헤더에 대해 이해한다.
10.HTTP 헤더 중 서버에 요청하는 컨텐츠를 협상할 수 있는 협상헤더에 대해 이해한다.
Chapter4. Web Cache
11.웹 캐시의 필요성에 대해 이해한다.
12.Cache-Control: max-age=60이 어떤 의미인지 이해한다.
13.요청에서 사용하는 If-Modified-Sinse 헤더와 응답에서 사용하는 Last-Modified 헤더에 대해 이해한다.
14.요청에서 사용하는 If-None-Match헤더와 응답에서 사용하는 Etag 헤더에 대해 이해한다.
15.프록시 서버의 필요성에 대해 이해한다.
16.프라이빗 캐시와 프록시 캐시의 차이에 대해 이해한다.
17.Cache-Control 헤더의 값인 no-cache와 must-revalidate의 차이에 대해 이해한다.
1.패킷교환 방식은 기존의 회선교환보다 빠르고 동시에 다수가 사용할 수 있는 장점이 있다.
2.ip는 패킷이라는 쪼개서 전송하는 방식을 사용하기 때문에 도착한 패킷이 다 제 순서대로 도착했다는 보장을 할 수 없으며 중간에 패킷이 사라질 수 있는 단점이 있다.
3.TCP는 동기화 시도 -> 인지 응답받기 -> 인지 응답하기의 순서를 거쳐 연결한다. 하지만 UDP는 전송하고 끝이다. 예를 들자면 친구와 공놀이를 할 때 놀이를 시작하기 위해 어디 있는지 확인한 후 공놀이를 할 생각이 있는지 물어보고 좋다는 응답이 오면 나도 하고싶어 라고 응답한 후 주고받는 느낌이고 UDP는 친구가 대충 있을 것 같은 곳에 공을 던지는 방식이다..
4.네트워크 통신을 계층별로 나눠서 처리하지 않으면 서로 다른 제조사 및 시스템에서 호환이 되지 않기 때문에 처리 과정을 계층으로 나눠 표준을 정하고 문제가 발생하는 지점을 쉽게 파악해 대처할 수 있게 만들었다.
5.데이터 캡슐화란 응용->표현->세션->전송->네트워크->데이터링크->물리 총 7가지 계층을 통해 데이터를 캡슐화한 후 상대방 측에서 전송하는 것으로 받는 쪽에서는 물리->데이터링크->네트워크->전송->세션->표현->응용의 7가지 단계를 거쳐 데이터를 역캡슐화 해 사용할 수 있게 된다.
6.http는 start-line의 CRUD관련 메서드 요청과 오류코드 또는 정상응답코드의 응답이 있으며 헤더, 바디로 구성되어있다.
7.무상태성은 서버측에서 클라이언트측의 데이터(상태)를 기억하지 않기 때문에 서버를 무한대로 증설할 수 있는 장점을 가지고 있으며 비연결성은 빠른 응답과 적은 트래픽일 경우 효율적으로 작동하는 장점이 있으며 잦은 응답의 한계를 극복하기 위해 지속연결을 사용하는 방식으로 개선되었다.
8.표현헤더는 바디에 대한 정보를 담고 있는 헤더로 내용, 크기, 압축형식, 호스트, 서버정보 등 다 정리하기 힘들 정도로 많으며 본인 또는 회사만의 헤더를 마음대로 추가할 수 있다.
9.요청에서 주로 사용하는 헤더는 Referer, User-Agent, From, Host, Origin, Authorization 등이 있으며 응답에서 주로 사용하는 헤더는 Server, Date, Loacation, Allow, Retry-After 등이 있다.
10.협상헤더는 클라이언트가 서버측으로 보낼 때 클라이언트의 선호에 대해 보내는 것으로 주로 미디어 타입, 문자 인코딩, 압축 인코딩, 언어 등에 대한 것이며 q값을 통해 우선순위를 지정해줄 수 있다. (1 -> 0)
11.만약 웹 캐시를 저장하지 않는다면 페이지를 이동하거나 뒤로가기를 누를 때도 같은 양의 데이터를 그대로 받아와야 하기 때문에 반복작업이 필요한 기능일수록 데이터 사용량이 늘어나며 속도 또한 계속해서 느릴 수 밖에 없으므로 캐시를 사용해야 한다.
12.max-age는 일정 시간동안 cash를 허용해주는 방식으로 60인 경우는 60초를 의미한다.
13.If-Modified-Sinse 헤더는 데이터의 수정된 날짜를 전송해 만약 수정 날짜가 다르다면 새로운 데이터를 달라는 의미의 요청이며 만약 수정 날짜가 아직 변경되지 않았다면(업데이트가 없었다면) max-age를 연장해 주는 방식으로 응답받을 수 있다. Last-Modified 헤더는 최종 수정일을 미리 기입해 If-Modified-Sinse를 통해 조건부 요청을 가능하게 해준다.
14.응답으로 처음 데이터를 전달받을 때 Etag 헤더를 받게 되는데 이것을 이용해 캐시가 만료된 상황이라도 If-None-Match헤더를 전송해 Etag가 동일하다면 데이터 전송 없이 기존 캐시의 max-age를 갱신할 수 있다.
15.해외에서 직접적으로 데이터를 개인이 수천번 받아오는 것 보다 중간 경유지에 그 데이터를 받고 수천명에게 뿌려주는 것이 시간적으로 훨씬 이득이 될 수 있기 때문에 프록시 서버를 중간중간 중계기로 사용한다.
16.프라이빗 캐시는 개인 컴퓨터에 직접적으로 전송되야 하는 캐시이며 퍼블릭 캐시는 프록시 서버등의 중계서버에 저장될 수 있는 캐시로 설정이 없는 경우 default값은 퍼블릭이다.
17.no-cache는 사용 전 물어보고 사용하라는 의미로 사람에 비유하자면 어디 갈 때 말하고 가라 라는 느낌이 강하기 때문에 응답이 없거나 오류가 날 경우 사용할 수 있지만 must-revalidate는 허락을 받고 사용하라는 뜻으로 허락 안받으면 못나간다와 유사한 의미를 가지고 있다.
확인하는 내용들이 방대한데 내일부터 진행될 보안/인증의 과제가 걱정된다..
'회고' 카테고리의 다른 글
| [Backend] 인증 / 보안-2 (0) | 2022.07.15 |
|---|---|
| [Backend] 인증 / 보안 (0) | 2022.07.14 |
| [사용자 친화 웹] 웹 표준 & 접근성-3 (0) | 2022.07.12 |
| [사용자 친화 웹] 웹 표준 & 접근성-2 (0) | 2022.07.11 |
| 학습(알고리즘) (0) | 2022.07.10 |
