210509 Sun

Sunny·2021년 5월 9일
0

Today I Learned

목록 보기
50/88

1. 첫 번째 학습 내용: 네트워크

LAN

  • 근거리 통신망
  • Local Area Network

흔히 랜선이라고 부름 (정식 명칭은 아님)

UTP 케이블을 사용해서 가까이 있는 컴퓨터들끼리 통신망들을 구성하는 걸 많이 하기 때문에 랜선이라고 부르기도 함

MAN

  • 도시권 통신망
  • Metropolitan Area Network

WAN

  • 광역 통신망 (나라별/ 대륙별)
  • Wide Area Network

인터넷 (Internet)

  • 컴퓨터로 연결하여 TCP/IP 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크
  • Inter Network
  • 네트워크의 네트워크

(= 네트워크끼리 그물망을 이룬 형태)

TCP/IP

= 인터넷을 통해서 전송을 제어하는 것에 대한 규약의 모음

  • TCP (Transmission Control Protocol) 전송 제어 규약
  • IP (Internet Protocol) 인터넷 규약

WWW

  • World Wide Web
  • 문서(웹페이지)들이 있는 정보의 저장소
  • 분산과 연결

분산 = 일처리를 분산한다
Why? 서비스가 여러군데 존재함 (e.g. 네이버/ 구글 등)

분산이 되어있음으로써 얻을 수 있는 효과?
동일한 서비스를 누가 책임을 짊어지고 몰려있는 게 아니라
분산돼서 여러가지 연산을 다 따로 수행할 수 있어서 좋음

연결 = 분산된 저장소들이 서로 연결돼서 시너지를 준다

URL

  • 정형화된 리소스 로케이터/ 지정자

HTTP도 통신 규약의 일종
URL을 보다보면 이건 어떤 종류의 통신을 하는구나~를 알 수 있음 !

컴퓨터들끼리 주고 받을 때
이번에는 내가 파일을 주고 받을 꺼야~
그것을 나타내는 0과 1의 규칙이 있을거임
그런 규칙을 뜻함

HTTP

  • Hyper Text Transfer Protocol
  • Hyper Text = 링크들이 연결돼 있음
  • Hyper Text를 주고받는 전송 규약

→ 처음엔 그렇게 시작했으나
지금은 Hyper Text 뿐만 아니라 이미지, 영상, 데이터 등 다른 것을 주고받게 됨
지금은 목적에 따라 세분화됨

HTTP METHOD 꼭 기억! ⭐️

Hyper Text를 가져오는거야, 보내주는 거야, 이것을 지우는거야 등
여러가지 의미들로
Hyper Text로 무엇을 하려고 하는지
메서드로 정의해줌

FTP

  • File Transfer Protocol

TELNET

  • TErminal NETwork
  • 원격 로그인을 위한 프로토콜

컴퓨터를 원격으로 접속해서 터미널 명령어로도 컴퓨터를 운영할 수 있음

SSH

  • Secure Shell
  • 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜
  • Telnet의 대용 목적으로 설계

SSL

  • Secure Socket Layer
  • 웹서버와 브라우저 사이의 보안을 위한 프로토콜

= 웹 서버에 있는 애플리케이션과 브라우저에 있는 애플리케이션 사이의 보안을 위해서 사용하는 프로토콜

e.g. 브라우저 녹색 자물쇠 열어보면 SSL이라고 나옴

SMTP

  • Simple Mail Transfer Protocol
  • 전자메일 발송 프로토콜

Host

  • 호스트: 네트워크에 연결된 장치
  • 호스트 이름: 네트워크에 연결된 장치에 부여되는 고유한 이름

e.g. IP 주소, 도메인 주소, MAC 주소 등등

IP Address

  • Internet Protocol Address
  • 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 번호

0과 1로 표현되는 32 비트 숫자 (IP Version 4)
8비트씩 끊어서 편하게 읽는것 뿐
255가 8비트로 나타낼 수 있는 최대의 10진수 (2^8)

Domain Address

  • 네트워크상에서 컴퓨터를 식별하는 호스트이름

e.g. Google.com, Naver.com

www.google.com
이라고 치면
컴퓨터는 어떤 IP를 가리키는지 모름
그것을 도와주는 서비스가

DNS

  • Domain Name System
  • 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행

네이버 닷컴을 누르면 그거에 해당하는 IP주소가 뭔지 클라이언트가 알아야 함
네트워크 설정 같은데 가서 보면
1이 12 (내가 선호하는 DNS Server )한테 물어봄

내가 저 도메인 찾아가려고 하는데 주소 알아?
알면 바로 응답해줌
응 그거 IP 주소 몇이야~

근데 이 친구도 모를 수 있음
그럼 어떻게 하냐?

최상의 도메인을 관리하는 DNS 서버
= 전 세계적인 (닷컴, 닷넷, co.kr)

어느 컴퓨터로 가면 닷컴 주소가 있어?
어디로 가면 닷컴 관리하는 애 있어! 알려줌

이런 식의 일련의 과정을 거쳐서
example.microsoft.com을 관리하고 있는
서버 컴퓨터까지 도달하게 됨

이 과정들을 거치면서
서로 캐싱도 함
돌아오는 길에

야 저거 컴퓨터 주소 이제 알았거든?
DNS 이거 네가 해야 할 일이잖아?

그러니까 이 주소 네가 좀 기억하고 있어라고
캐싱까지 해둠

DNS Server들이 캐싱들을 하고 있으니까
나중에는 Client가 물어보면
바로 응답을 해줄 수 있음 !

도메인에 해당하는 IP 주소를 서버 관리자가 변경을 하게 되면
도메인 서버끼리 서로 다시 다시 전파하고 캐싱, 갱신하는 데까지 최대 ~~ 시간 걸릴 수 있습니다
= 전세계 DNS 서버들이 새로운 정보를 갱신하고 알게 되기까지의 시간 (그 시간 동안은 서버에 접속하는게 불안정할 수 있다)

MAC Address

  • Media Access Control Address
  • 네트워크 어댑터에 부착된 식별자

컴퓨터 네트워크 장비에 적혀있는 유일한 고유 식별자
네트워크에 접속할 수 있는 장비에는 모두 식별자가 붙어있음
(하드웨어에 부여된 고유한 식별자)

Port

  • 가상의 논리적 통신 연결단
  • 번호로 구분

e.g. 항구는 부산항이지만 들어오는 통로는 목적에 따라 다르게 배정될 수 있음 !
컴퓨터에는 물리적으로는 없는데
들어오는 신호들이
입구에서
컴퓨터가 무슨 목적으로 왔어? 물어보면
어 나 hyper text 전달하러 왔어

너는 그럼 몇 번 포트로 들어올거야, 나가
이런 식으로 가상의 개념으로 나눠둠
HTTP를 위해선 주로 80번 포트를 열어둠
(닫아놓으면 HTTP 통신을 할 수 없음)

기본적으로 컴퓨터에는 대부분의 포트가 닫혀있는데 목적에 따라 열어두고, 닫아두고 할 수 있음!
Why? 해적이 침입하면
정박하거나 진입할 수 없게 막아놨다.

OSI 7 계층 모형

Open Systems Interconnection Reference Model

깊게 알 필요는 없고 이런 게 있구나 정도로 알아두기!
밑으로 내려갈수록 하드웨어에 가까움
응용 계층으로 갈수록 소프트웨어에 가까움

물리계층까지 가면 실제 연결된 와이어, 선을 얘기하는 거임

이런 식으로 데이터 정보들이 패킷으로 하나씩 하나씩 붙음

프로세스가 네트워크를 통해 어딘가로 보내려고 한다
애플리케이션과 관련된 헤더가 붙고

그다음 Presentation, Session 하나씩 쭉쭉 붙음
물리 계층을 통해서
목적지 컴퓨터까지
저 패킷이 전달이 됨

데이터의 헤더들이 붙은 그것들을 패킷이라고 부르는데
패킷이 네트워크 선을 타고 쭉~ 가서
목적지 컴퓨터까지 가는데
중간중간에 있는 네트워크 컴퓨터들이 도와주는 것

How? 패킷에 있는 정보를 읽어서
어디로 가야 하는구나!
어떤 IP로 가려고 하는구나!
이런 것들을 알아내고
쭉쭉 보내줌

목적지에 도착하게 되면
반대로 마지막으로 붙힌 헤더부터

하나씩 까내서
어떤 애플리케이션까지
가야되는 목적지가 어디구나!
결국 목적지 애플리케이션의 데이터가 전달이 됨!

이렇게 계층 따라서 쭉쭉 데이터가 붙었다가
나중에는 택배 박스 포장을 풀듯이 (이걸 반복해서)
안에까지 전달됨

이렇게 패킷을 한 번 쫙 풀어보면
목적지가 어딘지?
전달하려고 하는 데이터가 뭔지?
어떤 애플리케이션까지 가는지?
이런 것들이 바로 쫙 나옴!

HTTPS가 아닌
그냥 HTTP 같은 경우는
이 패킷의 내용이 암호화되지 않기 때문에
중간에 0과 1의 내용을 도청하게 되면
세부 내용 그냥 알게됨
고로 서로간의 통신간의 암호화된 HTTPS를 사용해야 함!

2. 두 번째 학습 내용: 암호화

암호같은 걸 주고 받으면
서로 규칙을 정해둘 수 있음!
or 매칭하는 키를 정해둘 수 있음

암호화 기법

  • 대칭키
  • 공개키(비대칭키)
  • 해시

대칭키 암호화 방식

= 암호를 만들 때 쓰는 키랑 풀때 쓰는 키가 똑같음
e.g. 압축 파일 암호화 할때

공개키(비대칭키) 암호화

= 암호를 만들 때 쓰는 키랑 풀때 쓰는 키가 다름

공개키라는 것은 아무한테나 줘도 됨
이 상자를 잠글 때 쓰는 키인데, 이걸 너를 줄게 !
잠글 때 쓰면 돼~

그 친구가 상자를 잠궈서
나한테 택배를 보냄

택배를 보낼때
중간에 거치는 사람들은
여는 키가 없으니까 열 수 없음

나는 받았을 때
여는 키로만 열 수 있음
친구들한테는 공개키를 복사해서 다 주는거임

당연히 대칭키 방식보다는 안전함
언제? 내가 나의 복구화키를 안전하게 갖고 있으면!

그런데 이게 키가 너무 복잡해지면
암호화하고 복구화 하는데 힘듦
= 자원이 많이 소모됨

키의 사이즈를 적당히 두고 사용하면 됨

해시

  • 임의의 데이터(암호 등)를 고정된 길이의 데이터로 매핑하여 원래의 입력값과의 관계를 찾기 어렵게 만든 것
  • SHA, MD5 등

(= 어떤 데이터를 넣든 간에 256 비트 짜리의 임의의 데이터로 변경됨)

한번 해시하게 되면
다시 원래의 데이터로 복원할 수 없는 방식 (수학적 개념)

해시 함수를 사용하면
원래 있던 데이터가 변형돼서
다시 복원할 수 없게 됨

왜 썼냐면?
데이터베이스의 암호 (ABCD)를
해시를 이용해서
임의의 문자열로 보냄

해시 함수를 통하면
ABCD가 무조건 1111로 나옴
데이터베이스에 저장된건 1111이고

보낼 때 ABCD를
클라이언트 컴퓨터에서
해시함수를 거쳐서 서버로 보냄

그러면 서버는 항상 1111
패스워드 맞구나!하고선

매칭해서 통과하게 만듦
원래대로 복원할 수 없다고 했지만
사실은 복원할 수 있음

How? 매칭하는 테이블을 만들어 놓으면!
해커들이 이미 테이블들을 만들어놔서
MD5는 복구할 수 있음

profile
iOS Developer

0개의 댓글