Network

ssh(secure shell) 원격 제어
클라이언트와 서버가 있다.
클라이언트에는 ssh client가 있어야 하고 서버에는 ssh server가 있어야 한다.
클라이언트에서 rm과 같은 명령을 보내면 ssh server가 자기가 설치돼있는 컴퓨터에게 명령을 전달하고, 그 컴퓨터는 그 명령을 하고 결과를 ssh server에 보낸다. 그러면 다시 ssh client에게 결과를 전달해준다.


Port
웹은 80, ssh는 22번 포트를 사용한다.
모든 컴퓨터에는 포트가 있다.
0부터 65000까지가 있다.
클라이언트 웹브라우저에서 웹서버에 접속할 때 기본적으로 80번 포트로 접속을 한다.
naver.com이라고 치면 자연스럽게 naver.com:80으로 접속하는 것이다.
웹서버는 요청을 처리하고 마찬가지로 80번 포트로 전해준다.
1024까지의 포트는 well-known port이다. 고정된 포트 번호이다.
그 나머지의 포트는 사용자가 임의로 정해서 쓴다.
만약 웹서버의 포트번호를 80이 아니라 8888로 하면 naver.com:8888로 해줘야만 들어갈 수 있다.


Port Forwarding
ISP(Internet Service Provider)에서 인터넷을 받아서 라우터(공유기)를 통해 집 안 각각의 컴퓨터들이 연결된다.
ISP에서 public IP가 들어온다. 그 IP는 라우터의 IP가 된다.
그 라우터에 연결된 각각의 컴퓨터들은 또 고유한 private IP address를 받게 된다.
Public IP는 외부에서도 그 IP를 알고 있으면 접근이 가능하다.
Private IP는 외부에 공개되지 않는 IP이기 때문에 그 아이피만 갖고는 접속이 안된다.
포트 포워딩: 사용자가 라우터에 9000번 포트로 접근을 하면 그 포트는 라우터에 연결된 컴퓨터 중 하나로 연결되도록 라우터를 설정할 수 있다.
router IP는 환결설정 tcp/ip 칸이나 어딘가에 나와있다. 192.168.0.1 라우터 ip에 접속하면 공유기 설정을 할 수 있고 거기서 포트 포워딩을 할 수 있다.
라우터 설정에서 내우 IP와 외부 포트, 내부 포트를 정해놓는다.
그러면 사용자가 라우터가 갖고 있는 public IP를 통해 접근을 하는데, 뒤에 외부포트를 붙인다.
curl http://ipinfo.io/ip를 하면 public IP를 알 수 있다.


Domain / DNS
google.com이라고 입력 -> DNS라는 서버의 아이피는 알고 있다 -> google.com이라는 domain name을 갖고 DNS 서버에 접속 -> google.com의 ip address를 DNS에서 얻는다
DNS가 있기 전에 hosts라는 파일이 있었다.
인터넷이 되는 각각의 컴퓨터마다 hosts파일이 있었다. 이 파일에 적혀있는 도메인의 아이피를 가지고 접속을 했다.
/etc/hosts에서 수정할 수 있다. localhost에 접속했을 때 127.0.0.1로 가는 것도 여기 설정돼있다.
hosts파일에 없을 때 DNS에 접속하는 것이다.
인터넷에 참여하고 있는 각각의 컴퓨터를 host라고 한다. 이 각각의 것들이 모여있는 것이 network이다. network가 모여 있는 전체적인 집단이 internet이다. 그래서 파일 이름이 hosts이다.
hosts파일을 공격하는 방법: google.com을 해커가 만든 사이트로 가도록 수정하고 아이디 비밀번호 등 입력한 내용을 얻는다.
모르는 도메인 이름에 접속해야 할 때는 /etc/resolv.conf에 있는 nameserver에 접속해서 아이피를 얻는다.



간단한 정리
클라이언트와 서버의 차이: 웹브라우저와 웹서버의 관계
웹브라우저라는 건 크롬 익스플로러 등이 있고 웹서버는 아파치 엔진엑스 등이 있다.
웹브라우저가 웹서버에 접속하려면 도메인네임이나 아이피가 필요하다.

그러면 웹 브라우저에서 어떤 웹 사이트에 접속하려고 하면 어떤 일들이 일어날까.
웹 서버의 아이피 주소를 알아야 하는데 도메인 네임 밖에 모른다.
그러면 클라이언트의 컴퓨터에서 /etc/hosts파일을 읽어서 도메인 네임과 매칭되는 아이피 주소가 있는 지 확인한다.
만약 있다면 그 아이피 주소로 이동을 한다.
localhost가 127.0.0.1로 가는 건 hosts파일에 설정돼있기 때문이다.
없다면 DNS로 가야 되는데 DNS의 아이피 주소는 클라이언트의 컴퓨터가 이미 알고 있다.
그래서 DNS로 가서 도메인 네임에 맞는 아이피 주소를 읽어와서 이동을 한다.

웹서버라는 건 컴퓨터인데 어떤 컴퓨터나면 안에 파일들이 있고, document root로 설정된 디렉토리에서 클라이언트의 요청에 해당하는 파일을 찾는다. 그러고 그 파일을 읽어서 웹브라우저에 답해준다.







-------------------------------------------------------------
Reference
https://opentutorials.org/course/2598/14470

댓글

이 블로그의 인기 게시물

논문 정리 - MapReduce: Simplified Data Processing on Large Clusters

논문 정리 - The Google File System

kazoo: Using zookeeper api with python