티스토리 뷰
리눅스를 왜 배워야 할까
- 리눅스는 IT 산업 전반에 사용되는 운영체제다.
- 수많은 네트워크, 어플레케이션, DB 등이 리눅스 기반 환경에서 동작한다.
-> 동작환경을 이해하기 위해서 - 오픈소스 코드다. 운영체제 핵심 원리를 소스코드 분석으로 배울 수 있다.
리눅스의 역사
처음 미닉스 교육용으로 리누스 토발즈가 리눅스를 만들게 되었다. 미닉스란 유닉스 계열 운영체제로 유닉스 교육용으로 만들어 졌다. 유닉스란 처음으로 멀티 프로그래밍을 가능하게 하고, C언어로 만들어져 이식성이 높은 운영체제이다. C언어 전에는 어셈블리어로 OS를 만들었고, 어셈블리어는 정해진 CPU에서만 작동하는 단점이 있어 CPU 마다 다른 어셈블리어로 작성된 프로그램이 필요하다.
유닉스는 오픈소스이지만 상용라이센스는 아니었다. 그래스 리눅스를 오픈소스로 만들게 되었고, 많은 개발자들의 관심으로 오늘날의 리눅스가 만들어졌다. 많은 개발자들이 리눅스에 참여해서 개발하는 것에서 리눅스 소스관리 툴이 필요하다고 생각했고, Git을 개발한다.
리눅스 서버버전으로 설치하기
Virtual machine(가상머신)
가상 머신은 컴퓨터 기능을 가상으로 흉내내는 에뮬레이터 기능을 하는 프로그램이다.
설치하고 접속하기
1. virtualbox 다운로드
2. 우분투 다운로드
3. virtualbox 실행하여 우분투 저장소 만들기
4. virtualbox로 우분투 설치하기 (ssh 접속을 위해 ssh install하기)
5. wsl 설치하기(생략가능)
6. wsl에서 ssh로 가상머신의 우분투 접속하기
6번에서 오랫동안 막혔다. 6번을 해결하기 위해서는 네트워크 개념을 알고 있어야 한다.
네크워크 개념
- 네트워크 통신 : request와 response로 이루어진다.
- NAT : Network Address Translation은 네트워크 주소변환이다.
- 라우터 : 서로 다른 네트워크를 연결해 주는 장비이다. 라우터의 여러 기능 중 NAT 기능을 특화하여 만든 것이 무선 공유기(wifi를 만들기 위함)이다.
- 패킷 : 네트워크가 전달하는 데이터의 형식화된 블록이다.
- TCP/IP : TCP(전송 제어 프로토콜)은 패킷 통신 방식의 IP(인터넷 프로토콜) 위에서 동작하는 프로토콜이다. IP는 패킷 전달 여부를 보증하지 않고 보낸 순서와 받는 순서가 다를 수 있다. TCP는 데이터의 전달을 보증하고, 보낸 순서대로 받게 한다.
- 랜 카드 : 유저의 데이터를 케이블에 실어서 허브나 스위치, 라우터 등으로 전달해주고 자신에게 온 데이터를 CPU에게 전달해 주는 역할을 한다.
- IP와 포트 : ip는 인터넷 주소의 물리적 값이고 포트는 논리적 값이다. ip가 엄청 큰 대저택의 집주소라고 하면 포트는 대저택의 각각의 방에 해당한다.
- ssh : Secure Shell Protocol의 약자이며 네트워크 프로토콜 중 하나이다. 컴퓨터와 컴퓨터가 인터넷 같은 public 네트워크를 통해 서로 통신할 때 보안적으로 안전하게 통신하기 위해 사용하는 프로토콜이다. 생활코딩 ssh
포트 포워딩
NAT의 응용으로 패킷이 라우터나 방화벽 같은 네트워크 게이트웨이를 통과하는 동안 하나의 ip주소와 포트 결합의 통신 요청을 다른 곳으로 넘겨주는 것이다. 외부망에서 접속한 ip와 포트를 내부 호스트에서 다시 맵핑하여 받아들이는 것이다. 특정 포트에 오는 패킷을 특정 포트로 내보내는 방식이다. 예를 들어, ip : 127.0.0.1, 포트 : 5022 로 들어온 정보는 ip : 10.0.2.15, 포트 : 22 로 변환해줘! 이렇게 설정할 수 있다.
컴퓨터와 리눅스, 인터넷이 연결될 때 발생할 수 있는 문제점
컴퓨터와 리눅스가 연결된 시점에서는 컴퓨터가 리눅스에 연결된다는 것은 인터넷을 통해 리눅스와 연결되는 것과 동일하다. 따라서 인터넷과 접속되는 하고 있그 때문에 리눅스에서는 또 다른 인터넷 통신이 불가능해진다.
해결방법 1은 리눅스에 또 다른 랜 카드를 연결하는 방법이다.(이것이 virtualbox에서 네트워크 셋팅에 어뎁터를 새로 설정하는 부분인 것 같다) 계속 윈도우랑 가성머신 우분투랑 ssh 통신이 불가능했는데 이 방법으로 해결했다.
해결방법 2는 리눅스에서 인터넷을 연결할 때 컴퓨터를 통해서 연결하는 것이다. 컴퓨터가 인터넷 통신을 사용하고 있기 때문에 컴퓨터에서 자료를 받아서 리눅스에게 전달해주는 방식으로 이해했다.
추가참고자료
'Computer Science > 마스터즈 CS10' 카테고리의 다른 글
CS05 - 함수형 프로그래밍 (0) | 2021.01.19 |
---|---|
CS04 - OOP(객체지향 프로그래밍) (0) | 2021.01.15 |
CS03 - 자료구조와 알고리즘 개념 && LinkedList (2) | 2021.01.13 |
CS02 - 쉘 스트립트 기본 (0) | 2021.01.09 |
CS01 - 컴퓨터 구조 개념 (0) | 2021.01.05 |
- Total
- Today
- Yesterday
- python
- Transaction
- 마스터즈코스
- React
- 운영체제
- DB
- 개발공부일지
- 우아한테크코스
- JPA
- 객체지향
- 인증
- 네트워크
- 학습로그
- Spring
- 우테코수업
- 월간회고
- java
- 모의면접준비
- OS
- TCP/IP
- 내부코드
- 알고리즘
- JS
- TIL
- 카카오
- 회고
- 글쓰기미션
- 코드스쿼드
- javascript
- CS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |