diff --git "a/2\354\243\274\354\260\250/ARP.md" "b/2\354\243\274\354\260\250/ARP.md" new file mode 100644 index 0000000..8caefec --- /dev/null +++ "b/2\354\243\274\354\260\250/ARP.md" @@ -0,0 +1,2 @@ +ARP는 IP주소를 MAC 주소로 변환해주는 프로토콜입니다. 송신자는 목적지 물리주소(MAC) 주소가 필요하기 때문에 먼저 물리주소 요청을 위한 ARP 패킷을 BroadCast로 전송하게 됩니다. 그러면 해당하는 수신자만 자신의 물리주소를 Unicast로 전송하면서 +송신자는 목적지 주소를 알게됩니다. ARP는 캐시테이블이 별도로 존재하여 캐시테이블에 IP와 MAC주소가 매핑되어있습니다. 만약 캐시테이블에 목적지가 존재한다면, BroadCast과정을 생략하고 unicast로 게이트웨이를 통해 바로 목적지까지 데이터를 전송할 수 있습니다. diff --git "a/2\354\243\274\354\260\250/IPv4\354\231\200 IPv6\354\235\230 \354\243\274\354\232\224 \354\260\250\354\235\264\354\240\220.md" "b/2\354\243\274\354\260\250/IPv4\354\231\200 IPv6\354\235\230 \354\243\274\354\232\224 \354\260\250\354\235\264\354\240\220.md" new file mode 100644 index 0000000..43645af --- /dev/null +++ "b/2\354\243\274\354\260\250/IPv4\354\231\200 IPv6\354\235\230 \354\243\274\354\232\224 \354\260\250\354\235\264\354\240\220.md" @@ -0,0 +1,6 @@ +## IPv4 +IPv4는 32비트 주소로, 8비트(옥텟) 4개로 이루어져 있습니다. IP주소는 하위 네트워크를 만들기 위해 네트워크와 호스트 주소 부분으로 나눕니다. 서브넷을 5개의 클래스로 나누고 해당 네트워크 내에서 호스트를 구분한다. + +## IPv6 +IPv6는 기존의 IPv4주소의 주소부족 문제를 해결위해 등장한 4비트(16진수)4자리씩 8개의 그룹으로 이루어진 128비트 주소체계입니다. IPv4에 비해 불필요한 헤더를 제거하여 헤더의 크기가 줄었고, 자동 주소 설정을 통해 플러그 앤 플레이로 간편하게 주소를 설정할 수 있습니다. +또한 IPv6에서는 IPsec을 기본적으로 지원하여 보안적으로도 우수하다. diff --git "a/2\354\243\274\354\260\250/NAT.md" "b/2\354\243\274\354\260\250/NAT.md" new file mode 100644 index 0000000..e1ef48e --- /dev/null +++ "b/2\354\243\274\354\260\250/NAT.md" @@ -0,0 +1,11 @@ +## NAT +NAT는 네트워크 주소 변환으로 IPv4의 주소 부족 문제로 등장하게 되었습니다. IPv4가 많은 사용자를 감당할 수 없는 문제를 해결하기 위해 등장하였습니다. 공인 IP를 내부의 여러 사설 IP로 매핑하면서 하나의 IP 주소를 통해 내부의 여러 기기에 연결할 수 있습니다. + +## 장점 +외부에 공지하지 않고도 내부 IP주소를 변경할 수 있습니다. 또한 주소가 외부에 노출되지 않아 보안면에서 안전합니다. 확장도 NAT를 이용하면 쉽게 가능합니다. + +## 단점 +많은 사용자가 동시에 접속하면 느려진다는 장점이 있습니다. NAT는 IP 헤더 필드만을 수정하고 데이터영역은 수정하지 않기 때문에 호환성 문제가 발생할 수 있습니다. 성능 면에서도 NAT를 거쳐 접속해야하기 때문에 떨어집니다. + +![image](https://github.com/kwYoohae/CS-Study/assets/43626362/8bd8c131-88ce-44f8-9779-68f2c70a5961) + diff --git "a/2\354\243\274\354\260\250/OSI 7\352\263\204\354\270\265 \353\252\250\353\215\270.md" "b/2\354\243\274\354\260\250/OSI 7\352\263\204\354\270\265 \353\252\250\353\215\270.md" new file mode 100644 index 0000000..7f41df0 --- /dev/null +++ "b/2\354\243\274\354\260\250/OSI 7\352\263\204\354\270\265 \353\252\250\353\215\270.md" @@ -0,0 +1,22 @@ +## L1 +L1 Layer, physical layer에서는 비트 단위의 전기적 신호로 통신을 한다. 데이터를 전달만 할뿐 송수신하는 데이터가 어떤 것인지 알지 못하고 오류 검출 기능도 따로 가지고있지 않다. 케이블, 리피터, 허브 등이 있다. + +## L2 +L2 Layer, datalink layer에서는 Error Control과 Flow Control을 진행할 수 있습니다. 프레임 단위로 전송을 진행하며 CRC와 ARQ를 이용해 오류 검출 및 재전송 요청을 할 수 있습니다. 또한 Sliding Window 기법 +등을 통해 흐름 제어도 가능합니다. 데이터링크 계층의 대표적인 장비로는 브리지, 스위치 등이 있고, 이때 통신에는 MAC 주소를 사용하게 됩니다. 이 MAC 주소는 물리적으로 할당 받는데, 네트워크 카드가 만들어질 때부터 정해진 고유의 값이다. + +## L3 +L3 Layer, network layer에서는 IP주소와 같은 논리적 주소를 이용하여 통신하게 됩니다. IP주소를 이용하여 라우터에서는 목적지까지의 경로를 결정하며 데이터를 전송하게 됩니다. ARP를 통해 IP주소를 맥주소로 바꾸는 기능도 가지고 있습니다. +네트워크 계층은 기본적으로 신뢰할 수 없는 계층이기 때문에 오류 검출정도만 가능한데, ICMP에서 오류를 검출하여 송신자에게 재요청을 하도록 할 수 있습니다. IGMP를 통해 멀티캐스트 그룹핑도 가능합니다. + +## L4 +전송 계층은 데이터 전송의 신뢰성과 흐름을 관리합니다. 에러 검출 및 복구, 흐름 제어, 데이터 분할 및 재조립 등을 수행합니다. 주로 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 이 계층에서 작동합니다. + +## L5 +세션 계층은 양 끝단의 어플리케이션 간의 대화와 데이터 교환을 관리합니다. 세션의 시작, 종료, 동기화, 데이터 통신 등을 다루며, 오류 복구도 담당합니다. + +## L6 +표현 계층은 데이터의 형식 변환, 암호화, 압축 등의 데이터 변환 작업을 수행하여 서로 다른 데이터 형식을 갖는 시스템 간의 상호 동작을 가능하게 합니다. + +## L7 +응용 계층은 최종 사용자에게 서비스를 제공하기 위한 인터페이스를 제공합니다. 사용자가 네트워크를 통해 어플리케이션과 상호 작용할 수 있도록 합니다. 이메일, 웹 브라우징, 파일 전송 등이 여기에 해당합니다. diff --git "a/2\354\243\274\354\260\250/README.md" "b/2\354\243\274\354\260\250/README.md" new file mode 100644 index 0000000..299e205 --- /dev/null +++ "b/2\354\243\274\354\260\250/README.md" @@ -0,0 +1,24 @@ +### TODO +- [ ] IPv4와 IPv6의 주요 차이점 +- [ ] OSI 7계층 모델 +- [ ] 로드밸런서란(L4, L7) +- [ ] ARP란 +- [ ] NAT란 +- [ ] mac주소를 알아내는 방법 + + + +### 질문 사항 +- HTTP와 HTTPS의 차이는? + - TLS와 SSL이란? +- DNS란? + - DNS Server의 계층구조는? + - DHCP란? +- HTTP GET과 POST의 차이는? + - post 는 안전하다고 할수있나 +- TCP의 연결과정과 연결 해제의 과정은? + - 3way handshake의 이점은? + - 4way handshake에서 연결 종료 요청 후 wait을 하는 이유는? +DNS Round Robin 방식이란? + - 이 방식의 문제는 + - 해결방법은? diff --git "a/2\354\243\274\354\260\250/\353\241\234\353\223\234\353\260\270\353\237\260\354\204\234.md" "b/2\354\243\274\354\260\250/\353\241\234\353\223\234\353\260\270\353\237\260\354\204\234.md" new file mode 100644 index 0000000..22a4fae --- /dev/null +++ "b/2\354\243\274\354\260\250/\353\241\234\353\223\234\353\260\270\353\237\260\354\204\234.md" @@ -0,0 +1,14 @@ +로드밸런서란 서버에 가해지는 부하를 분산시키는 장치입니다. 즉 여러 트래픽이 동시에 요청이 올때 요청을 여러 대의 서버에 적절히 분산시킴으로써 어느 한쪽의 서버에만 과도한 요청이 가는 것을 방지하고, 많은 트래픽을 수용할 수 있도록 합니다. + +## Scale-Up & Scale-Out +로드밸런싱의 방법 중 Scale Up은 서버의 성능을 확장시키는 방법입니다. 서버의 코어를 향상시키는 방법 등을 통해 더 많은 트래픽을 수용할 수 있도록 합니다. +Scale Out은 서버의 개수를 증설하는 방식입니다. 현재 서버의 가격과 같거나 좀 더 적은 가격의 서버를 구매하여 양쪽의 서버에서 트래픽을 처리하도록 합니다. + +## L4 로드밸런서 +L4 로드밸런서는 네트워크 계층이나 전송 계층의 정보를 통해 로드를 분산시킵니다. 따라서 주소 IP주소, MAC주소, 포트번호, 전송 프로토콜에 따라 트래픽을 나눕니다. + +## L7 로드밸런서 +L7에서의 로드밸런서는 어플리케이션 계층에서 로드밸런싱을 진행하기 때문에 사용자의 요청에 따른 분산이 가능해집니다. URL, 헤더의 쿠키값 등을 통해 어떠한 서비스로 보낼지 결정할 수 있습니다. +또한 L7에서는 특정 바이러스를 감지할 수 있어 DDos 공격을 방지할 수도 있기 때문에 보안 면에서도 좋습니다. + +Screenshot 2023-08-19 at 2 04 45 AM