본문 바로가기
Study/스터디 진행 정리

[Study 002-2] 면접을 위한 CS 전공지식 노트 2,3장 정리

by Nahwasa 2022. 11. 21.

스터디 메인

 

  이 스터디의 경우 이미 책의 내용이 매우 축약된 내용이므로 책 내용 정리는 크게 의미가 없다고 생각합니다. 따라서 스터디 정리는 추가로 설명한 부분에 대해 작성했습니다.

 

[ 2장 - 네트워크 ]

 

- 68page : 네트워크 얘기이니, 전반적으로 네트워크에 관한 얘기

  • TCP/IP
    • 컴퓨터간의 통신을 위한 통신규약
    • 미국방위통신청에서 컴퓨터간의 통신을 위해서 TCP/IP를 사용하도록 한 것이 그 시초
    • HW, OS, 접속매체에 관계없이 동작할수 있다는 개방성때문에 인터넷 통신을 위한 핵심으로 선택됨.
  • TCP
    • 클라이언트와 서버간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜. 3way handshake 같이
  • IP
    • 네트워크 상에서 컴퓨터의 고유한 주소. 인터넷에 접속할 때 컴퓨터 각각에 부여받음.
  • 인터넷
    • 각 컴퓨터들간에 TCP/IP 통신 프로토콜을 이용해 서로 데이터를 주고 받도록한 네트워크. 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하는 의도.
  1. 컴퓨터와 컴퓨터를 케이블 또는 무선(WiFi, 블루투스) 연결. 1:1로 전부 연결(메시 토폴로지로)하려면 NC2 필요.
  2. NC2는 무리이니 라우터
  3. 단일라우터 만으로는 N이 커질수록 감당하기 힘드니 라우터와 라우터를 연결(스타 토폴로지 형태)
  4. 거리가 멀면 케이블과 무선으로 연결이 불가능 → 모뎀
  5. 네트워크에서 도달하려는 네트워크로 데이터를 보내기위해 ISP 연결
  • ISP (Internet Service Provider)
    • 개인이나 기업체에게 인터넷 접속 서비스, 웹사이트 구축 및 웹호스팅 서비스 등을 제공하는 회사. KT, SKT, LG U+ 등. 특수한 라우터를 관리하고 다른 ISP의 라이터에도 액세스할 수 있는 회사들임.

 

- 76 page

  우리가 네트워크 확인할 때 쓰는 ping의 경우 port는 넣지 못함. 그 이유는 80page의 계층구조에서 TCP보다 ping에 쓰는 ICMP 프로토콜이 더 하위 계층임. 그래서 ping 명령어는 인터넷 연결에 대한 체크만 할 뿐, port에 대해서는 더 높은 계층의 얘기라 확인할 수 없음. port 포함해 확인하려면 주로 telnet 사용하고, tcping 이라는 별도 프로그램 써도 좋음.

 

- 114 page : HTTP에 대한 추가 설명

  • HyperText Transfer Protocol
  • www (world wide web. W3)
    • 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보공간. (=웹)
  • www상에서 정보를 주고받을 수 있는 프로토콜.
    • 처음엔 HTML을 가져오는 목적의 프로토콜. GET만 되고.
  • 주로 TCP를 사용하고, HTTP/3부터는 UDP. 80번 포트 사용.
  • 클라이언트와 서버 사이에 이루어지는 요청, 응답 프로토콜.
  • HTTPS
    • HTTP + 추가 보안 계층 (TLS. 전송 계층 보안)
    • SSL이나 TLS 인증서로 보호되는 통신. 사실상 현재는 TLS로 보호되는 경우임.
  • SSL
    • v1 : 결함으로 공개된 적 없음
    • v2 : 1995년 공개, 2011 사용 금지
    • v3 : 1996년 공개, 2015 사용 금지
  • TLS
    • SSL 좀 더 향상 시킨건데, SSL이 더 보편적인 단어라 SSL이라고 하기도 함.
    • v1.0 : SSL v3이 가진 취약점 해결. 1999 공개, 2020까지만 사용
    • v1.1 : 2006년 공개, 2020년까지만 사용
    • v1.2 : 2008년 공개, 현재 대부분의 사이트에서 지원
    • v1.3 : 2018년 공개. 최초 연결시에 암호화 통신 개시 절차 간소화, 오래된 암호화 기술(Cipher Suites) 폐기
  • Cipher Suites

 

- 123 page

  여기서 나온 사이퍼 슈트가 5개라는 말은, 이 책에서 121page에 "TLS 1.3을 기반으로 설명합니다." 에 따른 것이지, 실제론 114 page에서 얘기햇떤 것 처럼 더 많이 있음.

 


 

[ 3장 - 운영체제 ]

 

- 134 page

  이 책에 나온 수준은 단순히 개념만 알고 적당히 대답만 할 수 있는 수준임. 실제 개발에서 전반적인 시야를 넓히려면 별도로 공부하는게 좋음. 네트워크쪽은 책의 제목에 비해 일반적인 수준보다 더 써있는 것 같고(개발자한테 L4, L7의 차이를 물어볼 정도면 그냥 대답하지 말란 얘기가 아닐까..), 1,3,4,5장은 좀 빈약한 느낌이라 저자가 네트워크쪽 좋아하는 것 같음.

 

- 139 page

  레지스터는 CPU 내에서 연산 처리용이고, 캐시는 CPU와는 별도로 메모리와 CPU 속도 차이를 완화하는 역할.

 

- 144 page

  지역성 때문에 자바에서도 이론적인 자료구조의 시간복잡도와 다르게, 그냥 캐싱이 잘 되는 형태가 더 빠른경우가 있음. 예를들어 Queue 구현 시 이론적으론 LinkedList가 빠를 것 같지만, 실제론 배열 기반으로 구현된 ArrayDeque가 전반적으로 더 빠름.

 

- 147 page : 쿠키 관련

  로컬 스토리지는 자동 로그인을 생각하면 되고, 세션 스토리지는 비로그인 장바구니를 생각하면 됨.

쿠키의 경우, HTTP.는 기본적으로 요청-응답이 끝나면 연결이 끊어지는 무상태성이 특징임. 따라서 클라이언트의 상태를 서버가 아닌 클라이언트에 저장해두고 필요 시 서버에 전달해 보완해야함.

기본 로직은 '클라가 서버에 HTTP 요청 -> 서버가 응답 시 쿠키 전달 -> 클라이언트는 이후 쿠키를 담아 보냄' 임.

스프링, 스프링부트의 경우 외장 혹은 내장 톰캣에서 이 쿠키를 처리해줌. 그래서 스프링에서 별도로 사용자 정보를 유지하지 않아도 로그인을 페이지 변경될때마다 다시 안해도 됨.

 

- 147 page : 레디스 관련

  레디스는 인메모리에서 동작하므로 빠름. 키-밸류 형태로 데이터는 가지고 있음. 유튜브 조회수를 생각하면 좋은데, 실제 사용자가 영상을 볼 때 마다 DB에 update 치는건 매우 부하가 클 것임. 그래서 레디스 등을 중간에 사용해서 여기다가 어느정도 쌓아두고, 주기적으로 실제 DB에 업데이트 하는 것임. 세그먼트 트리 자료구조의 lazy propagation 생각하면 됨.

 

- 162 page

  자바의 경우 보통 스택, 힙, 메소드 영역으로 얘기하고 책의 정적 영역이 메소드 영역임. 메소드 영역에 코드 및 전역변수와 static 변수들이 있고, 힙은 new를 통해 생성된 객체, 스택은 함수 호출 시 지역변수 등이 들어간다고 보면 됨. 그래서 재귀 함수가 너무 많이 불릴 시 stack overflow 발생 (커뮤 아님)

 

- 173 page

  임계 영역에 대해 책의 설명이 애매한데, 그냥 코드 상에서 공유 자원에 접근하는 부분을 얘기한다고 보면 됨.

 

- 174 page

  뮤텍스는 공유 자원이 1개일 때 본인이 락을 걸고 들어가서, 본인이 락을 풀고 나와야 함. 음식점에서 열쇠 가지고 가야하는 화장실 생각하면 됨.

  세마포어는 동기화 대상이 1개 이상인 경우로, 뮤텍스와 달리 자원을 소유하는건 불가함. 지하철역 화장실 생각하면 됨. 한 번에 쓸 수 있는 사람 수가 정해져있음.

  모니터는 자바에서도 모니터로 제공되는데, 세마포어 직접 짜려면 복잡하니 쉽게 쓸 수 있게 인터페이스로 만들어둔거라고 보면 됨.

 

 

 

댓글2