[Study] IP주소, HTTP, 운영체제와 컴퓨터

김zunyange·2023년 6월 9일
0

Study

목록 보기
2/2
post-thumbnail

Chapter 2. 네트워크

1. 인터넷과 네트워크의 차이는 뭘까 ?

네트워크는 이용하는 기술 등을 바탕으로 다양한 관점에서 분류할 수 있다.
그중에서도 누가 이용할 수 있는 네트워크인가라는 관점에서 볼 때, 크게 다음 2가지로 분류하면 이해하기 쉽다.

  • 사용자를 제한하는 사설 네트워크
  • 누구나 이용할 수 있는 인터넷

📡 네트워크는 일부 그룹, 조직 또는 커뮤니티가 소유한다고 하지만 인터넷은 개인 소유가 아닌 모든 사용자에게 개방되어 있다.
사내 네트워크나 가정 네트워크처럼 접속할 수 있는 사용자를 직원이나 가족으로 한정하는 사설 네트워크가 있다. 사내 네트워크는 원칙적으로 그 기업의 직원만 이용할 수 있고, 가정 네트워크는 가족만 이용할 수 있다.

🌐 반면에 인터넷은 접속할 사용자를 제한하지 않고, 누구든 이용할 수 있는 네트워크다. 인터넷에 접속하면, 다른 사용자와 자유롭게 데이터를 주고받을 수 있다.

⚖️ 네트워크와 인터넷의 근본적인 차이점은 네트워크가 물리적으로 연결되어 있고 개인용 컴퓨터로 사용되며 서로 정보를 공유 할 수있는 컴퓨터로 구성되어 있다는 것이며, 반대로 인터넷은 이러한 크고 작은 네트워크를 서로 연결하고 더 광범위한 네트워크를 구축하는 기술이다.

네트워크가 포함하는 지리적 영역은 한 국가까지 확장될 수 있는 반면, 인터넷은 국가나 대륙, 그 이상을 연결할 수 있다.
네트워크 = LAN, 인터넷 = WAN 으로 이해하면 된다.

2. 대칭키, 비대칭키, 공개키, 개인키 ... 이게 대체 뭐람

https 에서 데이터의 통신 흐름은 암호화, 복호화, 대칭키, 비대칭키(공개키)와 관련되어 있다.

  • 비대칭키 안에 공개키와 개인키가 있는것.
  • 임시키를 가지고 대칭키를 만든다.
  • 대칭키 역할 : 데이터를 보낼때는 대칭키를 써서 이동만 시킴. → 받아서 열때는 비대칭키를 사용
  • https 를 열때 비대칭키를 사용하고 사용자가 뭔가를 클릭했을 때마다 대칭키가 생성돼서 보안이 된다.
  • 비대칭키는 암호화, 복호화 키 두개를 사용해야만 함
  • 서버가 정보, 공개키를 인증기관에 보내서 인증기관은 인증서(공개키,개인키,서버정보)를 서버에게 준다.
    *여기서 공개키는 서버키에서 발급 & 개인키는 인증기관에서 발급한 암호화된 개인키
  • 서버는 인증서를 갖고 있고, 인증기관이 공개키를 프론트가 만든 브라우저에 준다. 즉 백엔드는 인증서를 갖고 있고 프론트는 공개키를 갖고 있다.

⭐️ 결론 : 대칭키는 암호화와 복호화에 동일한 키를 사용하고, 비대칭키는 암호화와 복호화에 서로 다른 키 쌍을 사용한다. 비대칭키는 공개키와 개인키로 구성되며, 공개키는 공개되어 안전한 통신에 사용되고, 개인키는 비밀로 유지되어 데이터의 복호화나 디지털 서명에 사용된다.

3. IPv4 → IPv6 버전이 나온 이유?

IPv6는 IPv4의 한계를 극복하기 위해 개발된 새로운 인터넷 프로토콜이다. IPv4은 32비트 주소 체계로 약 42억 개의 주소를 가지고 있지만, 인터넷의 급속한 발전으로 인해 이 주소 체계의 한계가 드러나게 되었다.

IPv4에서는 주소 부족 문제를 해결하기 위해 NAT을 사용하여 여러 기기를 하나의 공용 IP 주소로 연결해야 했다. 하지만 IPv6에서는 주소가 충분하므로 NAT을 사용하지 않아도 되고 이는 네트워크 관리를 단순화하고 성능을 향상시키는데 도움을 준다.

⭐️ 즉, IP가 부족해서. 자동차 번호판 숫자가 늘어난 것과 같이 생각하면 된다.

4. NAT는 정확히 어느 시점에 사용되는가?

🔥요청이 들어가는 시점(와이파이 비밀번호를 입력하면 요청이 들어가는데 그 때!)🔥

NAT은 네트워크 주소 변환(Network Address Translation)의 약어로, 주로 사설 네트워크에서 공인 IP 주소와 통신하기 위해 사용된다. NAT은 주로 사설 네트워크와 공인 네트워크 간의 통신을 중개하고 주소 변환을 수행하는 기능을 가지고 있다.


Chapter 3. 운영체제

1. 어디까지가 유저모드?

  • 커널 모드는 시스템 리소스에 직접 액세스하고 제어
  • 유저 모드는 응용 프로그램이 실행되는 환경으로, 보안상 제약이 있는 모드

유저 모드의 응용 프로그램은 커널 모드의 기능에 직접 접근할 수 없으며, 커널 모드를 통해 제공되는 인터페이스를 통해 필요한 작업을 요청한다.

🤷🏻‍♀️ 그렇다면 유저 모드와 커널 모드를 나누는 이유는?

1. 보안 : 모드를 분리해서 악의적인 응용 프로그램이 커널에 직접 침입하는 것을 방지, 시스템의 안전성을 높임
2. 안정성 : 커널 모드의 오류나 충돌은 전체 시스템에 영향을 미치기 때문에, 유저모드를 따로 둠으로써 유저 모드에서 실행되는 프로그램의 오류/충돌은 해당 프로세스에만 영향을 미치게 해 안정성을 높임
3. 호환성 : 커널 모드는 변화가 적고 상대적으로 안정적. 유저 모드는 응용 프로그램의 다양한 변화에 더 유연하게 대응할 수 있음. 따라서 모드의 분리는 커널 모드를 변경하지 않고도 응용 프로그램을 업그레이드하거나 새로운 응용 프로그램을 추가할 수 있도록 함

2. 프로그램 실행 과정

디스크 → 메모리 → CPU

  1. 작성된 소스 코드를 컴파일 과정을 거쳐 기계어로 변환된 실행파일을 생성 (.exe, .out)
  2. 실행파일이 디스크(RAM)에 할당 (로드)
  3. 운영 체제가 실행파일 기반으로 프로세스(인스턴스)를 생성(커널모드에서 실행)
    각 프로세스는 고유한 프로세스 제어 블록(PCB)을 가지며, CPU 스케줄링에 따라 메모리에서 실행을 대기
  4. CPU 스케줄러는 준비된 프로세스 중에서 CPU를 할당받을 프로세스를 선택 및 CPU에 할당
  5. CPU는 프로세스의 명령어를 순차적으로 실행 (커널모드 > 유저모드로 변환)
  6. 프로그램이 입출력 작업을 수행해야 할 경우, CPU는 해당 작업을 처리하기 위해 입출력 장치와 통신
    (System Call, 유저 모드 > 커널 모드 > 유저모드로 변환)
  7. 프로그램 종료.

3. 하드웨어적 캐시 vs 웹에서의 캐시는 같은가?

아니다!

하드웨어 캐시는 컴퓨터 시스템 내부에 위치한 메모리다.
CPU와 같은 프로세서와 함께 동작하며, 데이터를 빠르게 접근할 수 있도록 하며 하드웨어 캐시는 접근 시간이 빠르고 처리 속도를 향상시키는 역할을 한다.

반면에 웹 캐시는 인터넷 환경에서 웹 페이지나 웹 리소스에 대한 임시 저장소이다. 웹 캐시는 웹 브라우저, 프록시 서버 또는 콘텐츠 전송 네트워크(CDN)와 같은 시스템에서 사용된다. 웹 캐시는 이전에 요청된 웹 페이지의 사본을 저장하여 동일한 내용의 요청이 발생할 때 웹 서버로부터 다시 다운로드하지 않고 캐시된 데이터를 사용한다. 이는 웹 페이지 로딩 속도를 향상시키고 네트워크 트래픽을 줄이는 데 도움이 된다.

⭐️ 하드웨어 캐시와 웹 캐시는 서로 다른 용어이며, 다른 목적과 동작 방식을 갖고 있다.

4. 기계어 vs 인터프리터 언어 vs 컴파일 언어

  • 기계어 : 컴퓨터(CPU)가 별다른 해석(컴파일) 없이 읽을 수 있는 프로그래밍 언어
  • 인터프리터 언어 : 소스코드를 기계어로 변환하는 과정 없이 한줄씩 해석하여 바로 명령어를 실행하는 언어
  • 컴파일 언어 : 코드가 실행되기 전 컴파일러를 거쳐서 기계어로 모두 변환되어 실행되는 프로그래밍 언어
컴파일러 언어인터프리터 언어
코드 실행 전, 컴파일 타임에 소스 코드 전체를 한번에 기계어로 변환 후 실행코드가 실행 단계인 런타임에 코드 한 줄씩 중간 코드인 바이트코드로 변환 후 실행
실행 파일 생성실행 파일 생성 X
컴파일 단계와 실행 단계가 분리인터프리트 단계와 실행 단계 분리 X
한 줄씩 바이트코드로 변환 후 즉시 실행
컴파일은 한번만 수행코드 실행시마다 인터프리트 과정 반복 수행
컴파일과 실행단계가 분리되어 있어, 실행시에는 실행만 하면 되므로 코드 실행 속도 빠름인터프리트 단계와 실행 단계가 분리되어 있지 않아 반복 수행하므로 실행 속도가 느림
C, C++, C#, JAVA 등Python, Javascript, Ruby

📍 보면 좋을 사이트
https://eun-jeong.tistory.com/27
[Authentication] 암호화의 종류

profile
배움은 즐거워 ~(*ૂ❛ᴗ❛*ૂ)

0개의 댓글

관련 채용 정보