TIL 62일차 네트워크 심화

shleecloud·2021년 10월 27일
0

Codestates

목록 보기
62/95

들어가며

페어로 진행되는게 부쩍 줄어든 요즘이다. 특히 이번 주는 주로 솔로로 진행되는 스프린트가 많았다. 오늘 내용은 다소 딱딱한 내용이 많다. 이러면 딱 보면.. 한숨부터 나오고 바로 끄고 싶어진다. 그나마 버틴건 스터디 그룹에서 옹기종기 모여서 주거니 받거니 진행하니까 할만했다. 특히 마지막 연습문제 섹션이 마음에 들었다.

인터넷 프로토콜

IP와 패킷전송 절차들 정말 오랜만이다. 대학생 때 열심히 배우던 내용인데 여전하구나. 그리고 IP통신의 단점을 보완하기 위해서 나오는 TCP/UDP. 자연스러운 스토리텔링이 만들어진다.

HTTP 부터 내 영역이 아니라서 조금 낯설다. 무상태성, 무연결성의 특징은 이전에도 계속 나왔던 내용이라서 괜찮다.
HTTP 지속 연결 개념이 새로웠다. 이전엔 파일 하나 보내고 연결 끊고 다시 파일 하나 보내고 연결 끊었으면, HTTP 1.1부터는 기본으로 지속 연결에 Timeout이 존재한다.

표현 헤더

Content-Type: text/html 같은 개념이다. 자주 쓰던건데 이름이 딱 들어오지 않았다. 요청, 응답 둘 다 사용한다.

콘텐츠 협상 헤더

요청에서 사용하는 헤더이며 어떤 형태로 나에게 보내줬으면 한다는 사양이 적혀있다. 협상 헤더는 요청에만 있고 응답에는 없다.

Accept 헤더로 서버가 클라이언트한테 다시 와서 이렇게 요청하라고 협상할 수는 없다. 스프린트에서 클라이언트가 JSON으로 돌려받으려고 쓰는 구간이 있었다.

Accept-Language 헤더로 원하는 언어로 요청받는 설정도 좋았다. 언어별 우선순위를 정할 수 있다.

axios ({
  url: 'http://localhost:4000/items'
  method: 'POST',
  headers: {
    Accept: 'application/json', <------
    Accept-Language: ko-KR;en-US;q=0.9,
    Content-Type: 'application/json;charset=UTF-8',
  },
  data: {
    a: 10,
  }
}).then(console.log);

캐시 컨트롤

어떤 상황에서 캐시를 사용할지 사용하지 못하게 할지 정하는 부분도 신선했다. 예전에 ETag 갱신하는걸 몰라서 똑같은 블로그 페이지만 주구장창 띄우다가 좌절한 경험이 있다. 그래서 더 재밌었나?
no-cache 옵션과 must-revalidate 옵션은 서로 이름을 바꿔야된다.

네트워크 심화

  • HTTP 기반 네트워크 흐름에 대해 이해할 수 있다.
  • TCP/IP 기반 네트워크 흐름에 대해 이해할 수 있다.
    • TCP/IP 패킷이 왜 필요한 지 설명할 수 있다.
    • TCP와 UDP의 차이에 대해 설명할 수 있다.
  • HTTP 기본 동작과 특징에 대해 이해할 수 있다.
    • 상태유지(Stateful)과 무상태(Stateless)의 개념에 대해 설명할 수 있다.
    • HTTP 메시지 구성에 대해 설명할 수 있다.
  • HTTP 헤더의 역할에 대해 이해할 수 있다.
    • 표현, 콘텐츠 협상 등 다양한 헤더의 역할에 대해 알 수 있다.
  • 캐시가 왜 필요한 지 알 수 있다.
    • 브라우저 캐시, 프록시 캐시에 대해 설명할 수 있다.
    • 조건부 요청, 캐시 무효화 방법 등을 사용할 수 있다.
profile
블로그 옮겼습니다. https://shlee.cloud

0개의 댓글