네트워크 기초
네트워크란
네트워크는 컴퓨터와 기타 장치들이 데이터를 교환할 수 있도록 연결된 구조를 말합니다. 인터넷도 하나의 거대한 전 세계 네트워크입니다
.
라우터, 스위치
라우터: 네트워크 간에 데이터를 전송하는데 사용되는 장치로, 최적 경로를 결정하여 데이터를 보냅니다.
스위치: 네트워크 내에서 데이터를 전달하는데 사용되는 장치로, MAC 주소를 기반으로 데이터를 전송합니다.
LAN, WAN
LAN (Local Area Network): 가까운 지리적 위치에 있는 컴퓨터와 장치들을 연결하는 작은 규모의 네트워크입니다.
WAN (Wide Area Network): 지리적으로 넓은 지역을 연결하는 네트워크로, 여러 개의 LAN을 연결합니다. 인터넷도 하나의 대표적인 WAN입니다.
OSI 7 Layer Model
Layer 7 : 서버가 제공하는 웹서비스를 PC가 이용하기 위해서는 PC와 서버가 각각 HTTP를 지원해야 합니다.
Layer 6 : PC와 서버간 데이터 포맷과 데이터의 인코딩과 암호화를 동일하게 지원해야 서로 통신이 가능합니다.
Layer 5 : PC와 서버간 Session 프로토콜이 일치해야 서로 통신이 가능합니다.
Layer 4 : 서버가 TCP로 보냈으면 PC도 TCP를 지원해야 통신이 가능, TCP로 보냈는데 UDP로 받으려면 안됩니다.
Layer 3 : PC와 서버가 IP주소를 가지고 있어야 서로 통신이 가능합니다. 아래의 Layer ( Data link layer, Physical layer)의 프로토콜은 네트워크마다 달라도 통신이 가능합니다.
Layer 2 : 동일 네트워크에서 같은 프로토콜(이더넷, 토큰링 등)을 지원해야 통신이 가능합니다.
Layer 1 : 동일 네트워크에서 같은 데이터 신호 코딩 방식을 지원해야 통신이 가능합니다.
OSI 7 Layer Model은 네트워크 통신의 과정을 7개의 계층으로 나눈 모델입니다.
Layer 7: Application
- 응용 프로그램과 사용자 간의 인터페이스를 제공합니다. 최종 사용자가 사용하는 애플리케이션들이 이 계층에 속합니다.
- Layer 7 – http의 특징
- 사람이 읽을 수 있으며 간단하게 고안된 프로토콜입니다.
- 확장가능 : 클라이언트와 서버가 헤더의 시멘틱에 대해 미리 합의하면 새로운 기능 추가 가능
- Stateless : 상태를 저장하지 않는 프로토콜 하지만 쿠키와 세션으로 별도의 상태를 저장 가능
- 연결 : Http는 application Layer에 있으므로 4계층인 전송계층의 연결에 관여하지 않으므로 별도의 프로토콜을 요구하지 않음
- Layer 7 – http로 제어 가능한 영역
- 캐시 : 문서가 캐싱되는 방식 제어 가능
- Origin 제약 사항 완화 : 웹 사이트간의 엄격한 분리를 강제 origin이 동일해야만 전체 정보에 접근 http 헤더를 통해 완화 가능
- 인증 : 어떤 페이지들은 특정 사용자만이 접근하도록 제어 WWW-Authenticate 또는 http 쿠키와 세션을 통해 인증
- 프록시와 터널링 : 서버 혹은 클라이언트 혹은 둘 다 프록시를 통해 다른 개체들에게 그들의 실제 주소를 숨김
- 세션 : 쿠키 사용은 서버 상태를 요청과 연결
- Layer 7 – DNS
Layer 6: Presentation
- PC와 서버간 데이터 포맷과 데이터의 인코딩과 암호화를 동일하게 지원해야 서로 통신이 가능합니다.
- 표현 계층은 데이터 표현과 암호화 등의 기능을 담당합니다. 애플리케이션으로부터 받은 데이터를 표현 형식으로 변환하거나 암호화하여 전송 준비를 합니다.
Layer 5: Session
- PC와 서버간 Session 프로토콜이 일치해야 서로 통신이 가능합니다.
- 세션 계층은 통신 세션을 설정, 유지 및 종료하는 역할을 합니다. 이 계층은 양 끝단의 애플리케이션들 사이의 연결을 담당합니다. 이 연결은 데이터의 흐름을 관리하고 동기화합니다.
Layer 4: Transport
- 서버가 TCP로 보냈으면 PC도 TCP를 지원해야 통신이 가능, TCP로 보냈는데 UDP로 받으려면 안됩니다.
- 데이터의 신뢰성과 흐름 제어를 담당합니다.
- 데이터를 세그먼트라고 하는 작은 단위로 분할하여 보냅니다.
- TCP (Transmission Control Protocol) vs. UDP (User Datagram Protocol)
- TCP: 신뢰성 있고 순서대로 데이터를 전송합니다.
- UDP: 신뢰성은 낮지만 빠르게 데이터를 전송합니다.
Layer 3: Network
- PC와 서버가 IP주소를 가지고 있어야 서로 통신이 가능합니다.
- 라우팅과 패킷 전달을 수행합니다.
- IPv4 vs. IPv6: IP 주소 체계의 버전입니다. IPv6는 주소 고갈 문제를 해결하기 위해 도입되었습니다.
- Switch와 Router의 역할
- Switch: 데이터 링크 계층에서 동작하며, 스위치 테이블을 사용하여 데이터를 전달합니다.
- Router: 네트워크 계층에서 동작하며, 최적 경로를 결정하여 데이터를 전송합니다.
Layer 2: Data Link
- 데이터 링크 계층은 네트워크 장치 간의 직접적인 통신을 담당합니다. 이 계층은 MAC (Media Access Control) 주소를 사용하여 물리적인 주소로 통신합니다. 스위치는 이 계층에서 동작하며, 스위치 테이블을 사용하여 해당 MAC 주소가 연결된 포트를 파악하여 데이터를 전달합니다. 또한, 오류 검출과 수정을 수행하여 데이터의 신뢰성을 유지합니다.
- Layer 2,3 - Switch와 Router의 역할
2계층 작업 : 직접 연결된 네트워크 내부 장비의 목적지 주소(이더넷의 경우 : MAC address)를 확인하고 전송 => 스위칭
1계층 작업 : 신호 증폭
3계층 작업 : 서버의 3계층 주소(IP)를 확인하고 해당 주소로 전송=> 라우팅
2계층 작업 : 네트워크가 바뀌었기 때문에 2계층 헤더를 갈아끼운다 => Media Translation
1계층 작업 : 신호 증폭
Layer 1: Physical
- 물리적인 계층은 네트워크의 물리적인 구성과 전기적 특성에 관련된 부분을 다룹니다. 이 계층에서는 비트(Bit)를 전기 신호로 변환하여 네트워크를 통해 전송합니다. 물리적인 연결과 전송 매체를 다룹니다. 예를 들어, 이더넷 케이블, 광섬유 케이블, 무선 주파수 등이 물리적인 계층에 속합니다.
Load Balance (로드 밸런스)
Load Balancer
- 서버에 가해지는 부하(load)를 분산(balancing)해주는 장치 혹은 기술
- 클라이언트와 서버풀 사이에 위치
- 한 대의 서버로 부하가 집중되지 않도록 트레픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 함
- Scale-out 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요
#L4 Load balancing
L4 Switch
- 로드밸런싱(부하분산) 처리
- TCP, UDP, HTTP 같은 프로토콜들의 Header를 분석하여 그 정보로 로드밸런싱
- Source IP 또는 Destination IP를 NAT(Network Address translation)
- 클라이언트와 서버가 3-way handshake를 거쳐 connection을 생성하면 중간자 역할의 L4스위치 역시 Connection을 생성하여 리스트를 관리
- 3-way handshake를 거쳐 Connection 제거할때도 L4 스위치 또한 Connection 삭제
- Connection time out이 지날 시 connection 삭제
- Connection 삭제 후 필요시 reset Flag가 담긴 packet을 전송할 수 있도록 함
L4 Load balancer가 필요한 이유
몇가지 질문을 드리겠습니다.
- 서버를 늘리고 공지로 이쪽 서버로도 접속하라고 하면 유저가 그렇게 할까요?
- 서버가 더늘어난다면 공지로 그 모든 서버를 다 안내할 수 있을까요?
- 부하가 고르게 나눠질 수 있을까요?
필요한 이유
- 서버가 가지고 있던 각각의 공인 IP가 사라졌음
- L4 스위치만이 공인 IP 123.111.43.1을 갖게 되며 모든 유저들은 이 IP로 요청
- 서버들은 L4스위치를 통해서만 통신 하므로 L4스위치와 서버는 사설 IP를 통해 통신
- L4스위치는 외부 접속용 공인 IP와 서버 통신용 사설 IP 한개 씩을 갖게 됌
- 서버가 직접적으로 외부와 연결이 안되어 있으므로 Ddos같은 공격이 불가능
L4 스위치 구성요소
- TCP는 IP 정보뿐만 아니라 Port를 이용하여 연결
- ”L4” 스위치인 이유 : Layer 4의 정보인 Port를 사용
- 서버는 다양한 서비스 제공 : 하나의 서버에서 80,8080,8888 port별 다양한 서비스 제공
- L4 스위치에는 외부에서 접속할 IP뿐만 아니라 Port까지 명시
- Virtual Server : 외부 사용자들이 접속 시 사용하는 IP와 Port를 갖고 있는 L4 스위치의 구성요소
- Pool : Virtual Server에 도달한 요청을 전달받는 서버들의 집합
- Pool Member : Pool의 소속원으로서 IP와 Port로 구성되는 서버 IP가 같더라도 Port가 다르면 다른 Pool Member
L4 스위치 traffic flow
- 3-way handshak
L4 스위치에서 NAT가 필요한 이유
- SYN Flooding Attack : 다수의 SYN Packet을 날리고 그에 대한 응답을 하지 않아 서버의 리소스를 소모시키는 공격
- 서버를 직접적으로 공격할 수 없으니 L4스위치를 공격
- SYN Queue가 쌓이는 것을 보다가 임계값을 넘으면 Client에게 SYN-ACK Packet 전송 후, SYN Queue 폐기처분
- 실제 부하와 구분이 불가능하기 때문에 부하를 공격으로 착각할수도 있으므로 스위치 단계에서는 잘 사용하지 않음
- 대신 별도의 보안장비를 이용하여 처리
#L7 Load balancing
L7 (Application) Load Balancer
- 로드밸런싱(부하분산) 처리
- Layer 7 protocol의 header를 분석하여 로드밸런싱
- L4와 마찬가지로 IP와 Port를 사용하여 로드밸런싱을 하는 것은 같으나 L7 프로토콜을 통해 사용자 정의 로드밸런싱 가능 • L7 protocol header를 조작/활용할 수 있음
- TCP와 UDP를 활용하므로 L4 Virtual Server처럼 L4 프로토콜과 L4프로토콜 Profile을 설정하며 L7 Profile 선택하여 L7 Virtual Server성격을 정의
L7 Load Balancer traffic flow
L4 vs L7 Load Balancer
Load Balancer 알고리즘
- Round Robin(순차방식)
- 오청을 순서대로 각 서버에 균등하게 분배하는 방식
- 서버 커넥션 수나 응답시간에 상관없이 모든 서버를 동일하게 처리, 가장 빠름
- IP Hash Method
- 클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식
- 사용자가 항상 동일한 서버로 연결되는 것을 보장
- Least Connection
- 서버에 연결되어 있는 Connection 수만 가지고 단순 비교하여 가장 적은 곳에 연결
- Weight Least Connections
- 서버에 부여된 Weight 값을 기반으로 Connection 수의 개수와 같이 고려하여 할당
- Fastest Response Time
- 가장빨리 응답하는 서버에 사용자 요구를 연결하는 방법
- Adaptive
- Open 또는 Pending Connection을 적게 가지고 있는 서버로 network connection 방향을 지정
- Pending Connection은 Full TCP Handshake를 완성하지 않은 것으로 이것은 초당 클라이언트 Thread의 수가 증가할 때 더욱 잘 수행
'몰입 교육' 카테고리의 다른 글
Cloud Service (0) | 2023.08.04 |
---|---|
MSA(Micro-Service Architecture) 설계 (1) | 2023.07.31 |
GIt 사용자 지정 및 버전 커밋하기 (0) | 2023.07.26 |
Git(Gitbash) 설치 및 다운로드(window) (0) | 2023.07.25 |
웹이 동작하는 원리 & 데이터 모델링 (0) | 2023.07.24 |