요약

- 운영체제는 커널 + 기타 기능
- 운영체제는 시스템 콜을 제공 (쉘은 사용자와 OS간 인터페이스)
- 프로그램 언어별로 OS별 API를 제공
- 응용 프로그램에서 API로 시스템 콜 호출 시, 커널 모드로 변환, OS내부에서 명령 처리 후 리턴

 

|  운영체제란?

운영체제 (OS : Operating System) : 
사용자의 편의를 위한 환경을 제공하는 시스템 소프트웨어

출처:https://coding-factory.tistory.com/300

- 종류 : 윈도우, 유닉스 계열(리눅스), MacOS

리눅스커널구조,출처:https://flylib.com/books/en/3.475.1.15/1/

- 운영체제는 일반적으로는 커널여러가지가 추가된 상태를 의미하지만, 좁은 의미로 "커널(kernel)" 자체를 말합니다.

 

pf. General Purpose OS vs Embeded OS

General Purpose OS Embeded OS
컴퓨터에서 사용되는 OS

* 프로세스 실행시간에 민감하지 않고,
일반적인 목적으로 사용된다.
컴퓨터가 아닌, 다른 기종에서 특정한 작업을 실행하기 위해
만들어진 특수 목적의 OS

* 모바일, 비행기, TV, IOT 전자제품 등

 안드로이드는 Embeded OS

  아래 안드로이드 구조를 보면 안드로이드에는 리눅스 커널만 들어가고 

  일반적인 PC의 OS의 나머지 기능들은 추가되어 있지 않습니다. (정말 모바일을 위해 만들어진 녀석이에요)

  안드로이드는 리눅스 커널 위에 라이브러리와 프레임워크를 제공해서 안드로이드 앱이 작동하게 합니다.

출처:위키피디아

 

|  커널과 쉘

커널(코어, 핵심): 
: 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램 [출처 : 위키백과]

출처:위키백과

쉘(Shell)
: 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 시스템 콜을 하는 프로그램
: 사용자와 운영체제 사이에 일종의 다리 역할을 한다.

*시스템 콜의 user(shell) <-> provider(kernel)

 

 

- 쉘은 커널 위에서 동작하는 응용 프로그램 중 하나입니다.

- 사용자가 어떤 "명령"을 하면, 프로그램을 구동시킬 수 있는데, 그런 명령을 운영체제에 전달하는 역할을 하는 게 쉘이에요.

- 쉘 중에서도 유명한 쉘로 "리눅스 bash"가 있는데, 해당 내용은 이후 공부하면서 정리하려고 해요.

터미널(CLI)
그래픽 사용자 인터페이스(GUI)
사용자가 편리하게 사용할 수 있도록
입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것 
[출처 : 위키피디아]

 

|  시스템 콜

- 시스템 콜은 운영체제에게 어떤 기능을 사용하라고 요청하는 명령 또는 함수를 말하는데요.

- 시스템 콜이라고도 하고, 시스템 콜 인터페이스라고도 합니다.

- 쉽게 풀어서, 운영 체제를 깨워서, "이 작업을 해줘!" 라고 하는 명령을 말합니다.

- 시스템 콜은 커널이 제공하고 있고, 쉘은 시스템 콜을 사용해서 커널이 제공하는 서비스(기능)에 접근합니다.

시스템 콜 : 
운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 
커널에 접근하기 위한 인터페이스 [출처 : 위키백과]

 

|  API

- 프로그램 언어별로 운영체제에 맞는 API가 있습니다.

  : OS는 주로 C언어로 구성되어 있다고 합니다.

    그런데 생각해보면, 응용프로그램들은 자바, 자바스크립트, 기타 C언어가 아닌 언어들로 작성이 된 경우가 많아요.  

    그럼 어떻게 응용프로그램들은 다른 언어로 구성된 OS의 시스템콜을 호출할까요?

    그건 프로그램 언어별로 제공되는 API가 있기 때문입니다.

API(Application Programming Interface)
: 필요할 때 운영체제의 시스템 콜을 호출하는 형태로 만들어진 인터페이스이다.
: 쉽게 말해,함수,패키지,라이브러리이다.

ex. 
Java는 각 OS별로 서로다른 JDK를 통해 개발을 한다.
-> Java의 api 곧, 라이브러리 중 하나로 IO가 있는데, IO는 OS에 입출력을 위한 시스템콜을 호출한다

 

Q1.  왜 응용프로그램마다 운영체제별로 다른 프로그램을 제공할까요?

- 각각의 운영체제마다 시스템콜은 다릅니다. 그렇기에 각 운영체제에 맞는 API도 다를 수 밖에 없어요.

이클립스를_보면_운영체제별로_설치파일이_다르다

 

Q2. 자바 언어로 작성하면 왜 운영체제별로 다른 프로그램을 만들지 않아도 될까요?

- 자바에는 JRE라는 일종의 대안적 운영체제가 존재합니다.

- JRE는 가상머신(JVM)을 통해 데이터를 처리하고 저장합니다.

- 이러한 JRE는 운영체제 위에 덧씌워져 있는 것과 같이 동작하기 때문에,

  결국 자바로 작성한 프로그램은 하나의 소스코드로 여러 개의 운영체제에서 실행할 수 있는 것입니다.

 

|  커널 모드와 사용자 모드

출처:위키백과_cpu_protection_rigns

사용자 모드 응용 프로그램이 사용
커널 모드 OS가 사용

- 예를 들어, 카카X맵을 처음 설치해서 실행한다고 예를 들어볼게요.

  카카오X맵은 나의 실시간 위치를 확인하기 위해 [실시간 위치 정보 제공]에 대한 [권한]을 요청합니다.

  이러한 권한 요청을 하는 이유는 뭘까요? 그 이유가 바로 위의 사용자 모드와 연관이 되어 있습니다.

- 카카X맵(응용프로그램)을 키고 쓸 때 운영체제의 도움이 필요 없었다면 이 때는 사용자 모드인 상태입니다.

  그러나, 실시간 위치 정보는 운영체제(여기서는 모바일이라서 안드로이드이지만 무시할게요)에서 관리하는 정보입니다.

  따라서, 카카X맵이 실시간 위치 정보를 얻으려면 운영 체제에게 시스템 콜을 해야 하죠. 

- 이제, 시스템 콜이 이루어지고 운영체제가 작동하면 커널 모드가 시작됩니다.

  사용자의 눈으로 볼 때, 권한 요청이 수락되고 비로소 카카X맵에서 길찾기가 정상 작동됩니다. 

- 이렇듯, 응용 프로그램이 직접적으로 내장 기기의 파일이나 중요 기능을 건드리지 않도록 

  사용자 모드와 커널 모드를 분리하는 것은 매우 중요합니다.

 

** 더보기 : CPU protection rigns에 대한 자세한 설명 링크

 

|  운영체제의 역할

1. 시스템 자원 (하드웨어) 관리

2. 사용자와 컴퓨터 간 커뮤니케이션을 지원합니다.

3. 응용 프로그램을 제어합니다. (프로세스 관리, 파일 관리, 입출력관리, 네트워크 보안 등)

 

pf.
프로그램 = 소프트웨어,
소프트웨어 > 운영체제 + 응용 프로그램
응용 프로그램 > Application(PC), App(스마트폰용)

 

 

[ 추천된 책 ]

Operating System Concepts

 

[ 출처 및 참조 ]

부트캠프 수업을 들은 후 여러 자료를 참조하여 정리한 내용입니다.

https://www.techtarget.com/iotagenda/definition/embedded-operating-system

https://velog.io/@gndan4/OS-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B5%AC%EC%A1%B0-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A8%EB%93%9C%EC%99%80-%EC%BB%A4%EB%84%90-%EB%AA%A8%EB%93%9C

https://medium.com/@su_bak/os-%EC%BB%A4%EB%84%90-kernel-%EC%9D%B4%EB%9E%80-b6b8aae8d0b4

https://coding-factory.tistory.com/300

 

 

 

 

|  컴퓨터 구조

 

 

01. 컴퓨터의 큰 구조

- 컴퓨터는 크게 하드웨어소프트웨어로 나누어집니다. 

- 집에 있는 컴퓨터를 열어보면 그 안에 하드웨어를 볼 수 있는데,

   크게 1) CPU, 2) 메모리, 3) Storage, 4) Network, 5) IO 장치로 나누어져요.

- 소프트웨어에는 시스템 소프트웨어와 응용 소프트웨어가 있는데요,

  시스템 소프트웨어 운영체제(OS)장치 드라이버와 같이 사용자가 컴퓨터를 작동할 수 있게 하는 유틸리티를 말하며

  응용 소프트웨어(= Application software)오라클이나 게임과 같이 특정 문제나 업무를 처리하기 위한 목적으로 만들어진 소프트웨어를 말합니다.

 

[참고 : 양자 컴퓨터]


- 양자 컴퓨터는 양자의 기본 성질인 중첩, 얽힘 등을 사용해서 다수의 정보를 처리할 수 있는 새로운 컴퓨터를 말합니다.
- 오늘날의 트랜지스터(일종의 스위치)는 반도체 칩에서 원자의 크기로 나아가고 있다고 해요 (HIV바이러스보다 작은 크기)
- 큐비트 곧, 1과 0이 동시에 존재하는 '중첩'으로 양자 병렬처리가 가능해서 속도가 엄청나게 빨라지게 되었다고 해요.
- 양자 컴퓨터는 현재 계속적인 연구단계에 있으며, IBM이나 구글 등에서 연구를 진행하고 있다고 해요. 
- 다만 속도가 지나치게 빠르다 보니 손쉽게 보안을 뚫어버리기도 한다고 해요. 하지만 의료시술 및 연구에 적절히 사용될 수 있으며 보완할 시 가능성이 무궁무진하기에 차세대 컴퓨터로 주목을 받고 있다고 합니다. 양자 컴퓨터가 보급형이 되면 이제 영화 Her에 나오는 AI도 꿈만은 아니겠죠?

 

02. 폰노이만 구조

- 컴퓨터의 구조는 다양한 방식으로 분류될 수 있는데, 폰노이만에 의해 그 구조가 깔끔하게 정리되었다고 합니다.

- 간략하게 요약하면, 폰노이만 구조1) CPU, 2) 메모리, 3) 프로그램 으로 이루어진다고 해요.

- 이 구조에 따르면 컴퓨터는 키보드와 같은 입력장치로부터 받아온 데이터를

   (1) CPU의 메모리를 통해 저장하는데, 

   (2) 레지스터에서는 변수와 같은 작은 데이터 및 중간처리과정에서의 데이터를 저장하고

        캐시에서는 자주 사용하는 데이터를 임시 저장해 빠르게 접근하며

        RAM(요즘엔 DRAM, DDP4)을 통해서는 전반적인 처리를 위한 데이터를 보관한다고 합니다.

   (3) 프로그램은 어떤 문제를 해결하기 위해 만들어진 명령문의 집합체를 의미하는 것으로, 앞서 말한 시스템 프로그램이나, 응용 프로그램이 이에 해당됩니다. 사용자는 프로그램을 통해 컴퓨터와 소통을 하는데요. 프로그램이 돌아가면서 사용자의 명령을 컴퓨터가 이해할 수 있게 0과 1로 변환하고 CPU의 연산장치(ALU)를 통해 명령을 처리합니다.

 

03. 비트(bit, 0과 1)와 비트논리연산(AND, OR, NOT)

- 폰노이만 구조에서 잠시 언급된 CPU의 연산장치(ALU)에는 마이크로 연산 곧,

   1) 논리연산을 수행하는 부분과 2) 산술연산을 수행하는 부분, 그리고 3) 시프트 연산을 수행하는 부분이 있습니다.

- 여기서 연산을 수행할 때에 "비트"라는 단위가 사용됩니다.

- 비트는 2진수 10을 나타내는 것으로, 스위치를 키고 끄는 것과 같이 ON과 OFF를 의미해요.

- 이 2진수의 수에 대해 비트 논리 연산을 수행할 수 있는데, 그것이 바로 AND/OR/NOT 연산입니다. 

- 컴퓨터 내부 회로는 AND, OR, NOT을 토대로 다시 NAND, NOR, XOR...을 만들어내는데요. 

- 논리회로를 엮어내어 산술연산을 만들 수도 있습니다.

 

[ 참고 : bit와 byte와 nibble ]

1 byte = 8 bits
1 nibble = 1/2 bytes = 4bits

* nibble은 영어로 '야금야금 먹다'라고 합니다. bite는 영어로 '한 입 베어 씹어 먹다'라는 뜻이라 해요.
  그러니 해석하면 byte는 '한 입'이니 1이고, nibble은 '야금'이니 1/2로 보면 쉬울 것 같아요.
  이런 소소한 재미. 버그도 그렇지만 공부하면 할 수록 과거 개발자들의 소박하며 귀여운 네이밍들을 볼 수 있네요.ㅎ
  

 

04. 비트 산술연산, 조합회로와 순차회로

- 앞에서 ALU에는 논리연산 외에도 산술연산을 수행한다고 이야기하였습니다. 그 중에서도 덧셈을 담담하는 것이 바로 아래의 '가산기'에요.

 

(1) 가산기(Adder)

- ALU에는 가산기라는 것이 있는데요. 논리회로를 조합해 반가산기 -올림을 제외한 한 자릿수 덧셈만 처리-를 만들고, 다시 추가으로 논리회로를 조합해 전가산기-올림까지 처리-를 만들면 제대로된 덧셈이 가능해집니다.

- 전가산기여러개를 묶으면 이젠 여러 자릿수를 계산할 수 있게 됩니다. 8개를 묶으면 8bit, 16개를 묶으면 16bit... 더 나아가서는 64bit의 자릿수를 처리할 수 있게 돼요.

 

(2) 발진기와 클럭

- 앞에서는 논리회로를 조합해서 만든 가산기(=덧셈기)를 말했다면, 이번엔 NOT을 만들어주는 발진기를 소개하려 합니다.

발진기(Oscilliator)는 전자회로를 통해 연속파의 교류신호를 발생하는 회로를 말하는데요. (말이 참 어렵다)

- 쉽게 말하면 0 -> 1 -> 0 -> 1.. 을 마치 매트로놈처럼 주기적으로 반복해서 만들어주는 녀석이라고 생각하면 됩니다.

- 다시, Oscilliator를 통해서 0이 들어오면 1을, 1이 들어오면 0을 반환하는 걸 하나의 사이클로 보는데요.

클럭(Clock)은 1초 동안 이 사이클이 움직이는 주파수를 말하는 것으로, 단위는 Hz로 표기됩니다.

- 클럭이 높을 수록 처리속도는 빨라지는데, 클럭을 높힌다고 다 놓은 것이 아닌 것이, 그만큼 발열량과 소비 전력이 커지는 단점이 있다고 합니다. 그래서 최근에는 클럭(클럭 - 비유 : 도로 제한 속도)을 높히기 보다는 멀티 코어(코어 - 비유 : 도로 차선) 또는 멀티 스레드를 통해 CPU 성능을 높이는 것을 추구한다고 해요.

 

(3) 플립플롭과 비트의 Write/Read

- 플립플롭(flip-flop)은 래치(latch)라고도 하며, NOR게이트를 조합해 만든 회로인데요, 최근에 스위치가 ON이었는지, OFF였는지를 알 수 있게 해주는 회로입니다.

- 결국 다시 말해, 플립플롭은 0 or 1 곧, 비트를 저장할 수 있는 회로를 말해요.

- 플립플롭의 종류는 R-S flip-flop, Level-triggered flip flop, D-type flip-flop, JK flip-flop 등 종류가 매우 다양하다고 합니다.

- 전원이 공급되는 한, 플립플롭은 상태의 변화를 위한 신호(클럭)이 발생할 때까지 현재 상태를 유지해요.

- 플립플롭을 여러개 묶으면 8bit latch를 만들수 있는데요, 8-to-1 selector와 3-to-8 decoder로 온전한 8 bit latch를 만들 수 있다고 합니다. 그리고 이 8bit latch가 우리가 말하는 RAM이라고 해요. RAM에서는 8-to-1 selector와 3-to-8 decoder를 통해 3개Address가 있으면 8개 중 하나의 비트선택해서 쓰거나 읽을 수 있다고 합니다.

- 이제 이 8 X 1 latch를 여러개 연결하게 되면 하나의 비트에서 여러개의 비트를 쓸 수 있는 m * n RAM array를 만들 수 있다고 해요. 그렇다면 64k RAM은 얼만의 데이터를 쓸 수 있을까요? 65536(2^16) x 8bits라고 합니다.

* 1 Megabytes = 1 Mega x 8 bits = 8 Megabits

[ 참조 : 어셈블리어 - 주소 배정 ]

MOV R1, #120     R1 <- 주소120 직접 지정
MOV R1, R2        R1 <- R2
MOV R1, 120      R1 <- 주소120의 데이터 넣기
MOV R1, @120  R1 <- 상대 주소 120 --- 위 세가지와 다르다.

 

(4) 누산기(Accumulator)와 레지스터

- 앞서 가산기에서 덧셈을 처리한다는 이야기를 하였고, 쭉쭉 내려와 RAM에서 특정 데이터를 저장하고 읽을 수 있다는 걸 이야기했어요. 이번에는 누산기에 대해 이야기를 할 건데요.

- 누산기산술 및 논리연산의 결과 또는 중간계산과정을 저장하는 레지스터를 말합니다.

- 구체적으로 들어가면 8-bit Adder와 8-bit Latch로 구성되어 있으며, Clear스위치가 눌리면 어떤 데이터든 기존 값을 삭제하고, Adder를 통해 덧셈이 이루어진다고 해요.

 

(5) Program Counter (PC) 

- Program Counter, 16-bit counter는 1씩 증가하는 조합논리회로를 말한다고 해요.

- 프로그램 카운터는 다음에 실행될 명령어가 들어갈 주기억장치의 주소를 기억하는 레지스터입니다.

Register Program Counter = 명령 계수기.
다음 수행될 명령어의 주소를 저장
Instruction Register = 명령 레지스터.
PC가 지정하는 번지에 기억된 명령어를 임시 저장
Status Register = 상태 레지스터.
CPU의 상태(flag) 정보 기억
프로세서의 상태나 연산 결과의 상태를 저장하기 위한 특수 목적의 레지스터
General Purpose Register = 범용 레지스터.
작은 데이터들의 임시 저장 공간. 연산 처리 및 데이터 주소를 지정

* 인터럽트시 PC는 1, R = 0이 된다. 

* Set(Preset) : 101010 | 111111 = 111111,  Clear(Reset) : 101010 & 000000 = 000000 

 

05. 어셈블리어(저급 언어)와 고급언어. 

- 어셈블리어는 기계어와 일대일 대응이 되는 저급 언어로, 컴퓨터 구조에 따라 사용하는 기계어가 달라집니다. 컴퓨터의 CPU마다 지원하는 오퍼레이션의 타입과 갯수, 레지스터의 타입과 갯수, 저장 데이터 표현 형태도 다 다르기 때문에 컴퓨터 제조업체에 따라서 어셈블리어도 다를 수 밖에 없어요.

- 어셈블리어는 니모닉이라고 하는 일련의 숫자를 단어로 바꿔준 언어를 사용합니다. (ex. MOV, LOAD, ADD, h)

- 어셈블리어의 한계를 극복하기 위해 고급언어가 등장하게 되었는데요,

- 이 중에서도 컴파일 언어는 소스 코드를 어셈블리어에서 기계어로 변환하는 "컴파일링"을 통해 먼저 메모리에 기계어로 번역된 코드를 올려두고 실행을 하는 언어를 말합니다. 예를 들어, C언어가 있죠. (자바도 컴파일 언어라고도 하는데, 사실상 컴파일과 인터프리터가 섞인 형태입니다)

- 반면 인터프리터 언어는 사전의 컴파일링 없이, 소스 코드를 한 줄씩 실행하며, 컴파일링을 진행하고 변환 코드를 실행하는 언어를 말합니다. 예를 들어, javascript, SQL, python, Ruby, 스크래치 등이 있습니다.

 

06. 다시 폰노이만. CPU의 구조와 실행과정

- 다시 폰노이만 구조로 돌아오면, 컴퓨터는 아래와 같이 구성됩니다.

[1] CPU : Controller Unit(Program Counter, 주소) + ALU (가산기 + 논리연산 + 레지스터)

[2] Memory

[3] 프로그램

 

- CPU의 기본 구조

PC(Program Counter) 다음 실행할 명령어 주소를 저장
IR(Intruction Register) 최근 인출한 명령어 보관
누산기 데이터 일시 보관
MAR(Memory Address Register) CPU가 메모리 참조 위해 보관하는 데이터 주소를 가진 레지스터
MBR(Memory Buffer Register) CPU가 메모리부터 읽거나, 저장할 데이터 자체를 보관하는 레지스터

 

- CPU의 기본 실행 구조

Instruction Fetch 실행할 명령어를 메모리에 읽어 CPU로 가져옴
Instruction Decode 인출한 명령어에 포함된 데이터를 가져오고 명령어를 해독
Instruction Execution 명령어 실행
Write Back 실행 결과 저장

* Instruction은 여기서 '명령어'라는 의미

 

- CPU의 명령어 구조 : opcode(사전 약속된 명령어) + operand(argument, 데이터)

 

 

 

[참조] 

- 마이크로 연산, https://devraphy.tistory.com/308?category=1014713 

- 레지스터 전송과 마이크로 연산 바로가기

- 클럭(Clock), https://soojong.tistory.com/entry/%ED%81%B4%EB%9F%ADClock

- 클럭과 코어와 스레드, 캐시메모리 https://library.gabia.com/contents/infrahosting/1227/

- 누산기 https://itpmw.tistory.com/578

IPv4 

- 네트워크 상에서 데이터를 교환하기 위한 프로토콜

- 데이터가 정확하게 전달될 것을 보장하지 않음 *다른 계층에서 데이터잘못된 것을 고정

 

ICMP

- 인터넷 제어 메세지 프로토콜

- 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메세지를 전송 받는데 주로 쓰인다.

* 상대방과 통신이 되는지 아닌지 확인

* Type  3 오류 : Destination unreachable, 상대 목적지까지 못간 경우

  Type 11 오류 : Time exceded, 상대방 노드에서 데이터를 받지 못한 경우(ex. 방화벽 문제)

 

라우팅 테이블

- 라우팅 == 지도

- 어디로 보내야 하는지 설정되어 있는 라우팅 테이블

 

라우팅 전송 과정

- 내컴퓨터 -> 공유기로,

  (1) 라우팅 테이블 통해, 공유기로의 IP대역대 확인

  (2) [eth | IPv4 | ICMP 요청] 프로토콜에 따라 전송

  (3) 이더넷의 MAC주소 변경 

- 공유기 -> 다른 컴퓨터가 있는 공유기

- 다른 컴퓨터의 공유기 -> 다른 컴퓨터

 

조각화

- 데이터의 최대전송단위(MTU, Maximum Transmission Unit)는 일반적으로 최대 1500 byte로 되어 있다.

- 내가 전달하려는 데이터가 MTU보다 크면 조각화를 통해서 데이터를 전송한다.

- IPv4

  MF:More Fragment, 내 다음에 데이터가 더 있으면1 아니면 0,  Offset : 위치

- 실제 페이로드 

  Data

* 조각화를 할 때에는 MTU에서 IPv4프로토콜만큼을 제외하여 데이터를 조각낸다.

  (ex. 아래의 경우 MTU가 3300byte이며, IPv4가 20byte가 필요하므로 데이터를 3280bytes씩 조각화한다)

* 조각화된 각 데이터에는 ID값이 있어 어느 고유 데이터에서 파생된 조각인지 확인할 수 있다.

* 각각의 조각화된 데이터들을 offset으로 위치 지정한다. (배열의 index처럼 어느 위치에 있는지를 나타냄) / 8

 

 

 

[출처] 따라하면서 배우는 IT, 네트워크 기초

https://www.youtube.com/watch?v=_AONcID7Sc8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=14 

 

https://www.youtube.com/watch?v=LDsp-Xb168E&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=7 

 

ARP 프로토콜

- 같은 네트워크에서 통신할 때는 MAC주소를 통해 통신한다.

- ARP프로토콜은 MAC주소를 IP주소를 이용해서 알아오는 프로토콜이다.

- 출발지 및 목적지의 MAC주소와 IP주소가 페이로드에 작성되어 있음

 

네트워크상에서 보는 ARP

목적지IP주소와 요청IP주소가 일치하는 곳
그곳의 MAC주소를 다시 출발지로 전달한다.

■ 실제로 컴퓨터끼리는 IP주소를 사용해 데이터를 주고받는다

※ 출처 : 따라하면서 배우는 IT

https://www.youtube.com/watch?v=s5kIGnaNFvM&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=6 

 

■ 요약

1. 3계층의 기능

- 3계층에서 하는 일 : 서로 다른 네트워크 대역 곧, LAN과 LAN을 연결시켜준다(LAN+LAN = WAN)

- 3계층에서 쓰는 주소 : IP 주소

- 3계층 프로토콜 : 

더보기

1) ARP

2) IPv4

- 현재 IPv6로 넘어가는 중이다.

3) ICMP

 

 

2. 일반적인 IP 주소 (4byte, 10진수)

  255.255.255.255     *하나의 필드당 0~255까지 사용가능

- Classful

- Classless

* 서브넷 마스크 : 어디까지가 네트워크 구분하는 곳인지

- 사설IP와 공인 IP

* 공인 IP : 인터넷 세상과 통신할 때 사용하는 IP 주소

* 사설 IP : 같은 네트워크 대역에서 사용하는 IP 주소

 

> 부족한 IP주소를 해결하고자 사설IP와 공인 IP를 만들었다.

> 공유기 한 대를 통해 우리집 컴퓨터, 노트북, 휴대폰로 인터넷을 사용

> 실제 인터넷 세상에서는 공인 IP로만 통신, 외부 네트워크 대역에서는 사설 IP 대역이 보이지X

 

 

3. 특수한 IP 주소

- 0.0.0.0    : 나머지 모든 IP

- 127.X.X.X : 나 자신을 나타내는 주소

- 게이트웨이 : 공유기의 IP. 네트워크 대역에서 가장 낮거나 가장 큰 걸 쓴다.

 

 

 실습

- 사설 IP : CMD 에서 ipconfig 하기

- 공유 IP : 네이버에서 내 ip주소 검색하기

■ 가까이 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다

https://www.youtube.com/watch?v=HkiOygWMARs&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=5 

 

 요약

 

1. 2계층에서 하는 일

- 2계층의 기능 : 오류 제어, 흐름 제어

- 2계층의 네트워크 크기

  : 하나의 네트워크 대역 (LAN)에서만 통신할 때 사용

  : 다른 네트워크와 통신할 때는 3계층이 도와주어야 한다.

 

2. 2계층에서 사용하는 주소

- MAC주소 (=물리적인 주소)

 

3. 2계층 프로토콜

- Ethernet 프로토콜

  1) Destination Address : 목적지 MAC주소 6 byte 

  2) Source Address : 보내는 MAC주소 6byte

  3) Ethernet Type : 캡슐화된 상위 프로토콜이 뭔지 미리 알려준다. 2byte

     - IPv4(0x0800), ARP(0x0806)

 

 

 실습

- 내 컴퓨터의 맥 주소는 뭘까?  CMD에서 ipconfig/all 치고 물리적 주소 확인하기

 

■ 네트워크의 기준! 네트워크 모델

https://www.youtube.com/watch?v=y9nlT52SAcg&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=4 

 

■ 요약

1. 네트워크 계층 모델에는 TCP/IP와 OSI 7Layers가 있다.

 

2. OSI 7계층 상세 구조

 

3. 패킷이란

- 데이터의 형식화된 블록

- 여러 프로토콜들로 캡슐화되어 있다.

- 캡슐화 방식 : [헤터 [헤더 [페이로드] (푸터) ] (푸터) ]  *상위 -> 하위 순으로 캡슐화

- 디캡슐화 : 패킷을 하나씩 뜯는 방식 *하위 -> 상위 순으로 디캡슐화

더보기
계층_별로_패킷의_이름이_다르다.

 

▲ 보낼 때 : 프로토콜을 붙일 때, OSI 7 계층 기준으로 상위 -> 하위 순으로 붙인다.

  받을 때 : 하위 -> 상위 순으로 확인

 

 

■ 네트워크란 무엇인가?

※ 출처 : 따라하면서 배우는 IT

https://www.youtube.com/watch?v=Av9UFzl_wis&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi 

 

■ 요약

1. 네트워크란,

- 노드들이 데이터를 공유할 수 있게하는 디지털 전기통신망의 하나이다.

- 분산되어 있는 컴퓨터를 통신망으로 연결한 것

 

2. 인터넷이란,

- 전세계를 연결하는 가장 큰 네트워크

- WWW는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것으로 인터넷과 다른 개념이다.

 

3. 네트워크는 크기/연결형태에 따라 여러 개의 분류로 나누어진다.

1) 크기 : LAN / WAN / MAN / 기타

▶ LAN(Local Area Network) : 근거리 통신망. 가까운 지역을 연결

- ex. PC방에서 친구와 스타크래프트를 LAN UDP로 연결

 WAN(Wide Area Network) : 멀리 떨어진 곳을 연결. 가까운 지역끼리 묶인 LAN과 LAN을 다시 하나로 묶은 것

- ex. 우리집에서 네이버와 연결

2) 연결 형태 : Star형, Mesh형

▶ Start형 : 주로 LAN대역(가까운 곳)에 있는 장치들끼리 연결할 때 사용한다.

* 공유기가 고장나면 나머지 장치들도 연결이 안 된다

▶ Mesh형 : 여러 장비들끼리 서로 그물처럼 연결

* 장치 하나가 고장이 나더라도 다른 장치들 전체에 영향을 미치지 않는다.

▶ 혼합형 : 여러 형태를 혼합한 형태로, 실제 인터넷은 혼합형으로 되어 있다.

 

4. 네트워크의 통신방식

유니캐스트 특정 대상과만 1 : 1로 통신
멀티캐스트 특정 다수와 1 : N으로 통신
브로드캐스트 네트워크에 있는 모든 대상과 통신

 

5. 네트워크 프로토콜

- 프로토콜이란, 일종의 약속 양식을 말한다.

- 네트워크에서 노드와 노드가 통신할 때

    어떤 노드가 어느 노드에게

    어떤 데이터를 어떻게 보내는지

   작성하기 위한 양식

 

5-1. 네트워크 프로토콜 종류

가까운 곳과 연락할 때 이더넷 프로토콜 (MAC 주소) 
멀리 있는 곳과 연락할 때 ICMP, IPv4, ARP (IP 주소)
여러가지 프로그램으로 연락할 때 TCP, UDP (포트 번호)

▶ 실제로 채팅창과 같은 프로그램을 쓸 때는 패킷 곧, 여러 개의 프로토콜을 캡슐화해서 사용한다.

 

+ Recent posts