\(@^0^@)/
[BOOK] 네트워크 기기, IP 주소, HTTP 본문
728x90
네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다.
- 네트워크 기기의 처리 범위
- 네트워크 기기 계층별 처리 범위
- 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다.
- 애플리케이션 계층 : L7 스위치
- 인터넷 계층 : 라우터, L3 스위치
- 데이터 링크 계층 : L2 스위치, 브리지
- 물리 계층 : NIC, 리피터, AP
- 네트워크 기기 계층별 처리 범위
- 애플리케이션 계층을 처리하는 기기
- 스위치 : 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비
- L7 스위치*
- L7 스위치는 로드밸런서(Load Balancer)라고도 한다.
- 서버의 부하를 분산하는 기기
- 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 한다
- 시스템이 처리할 수 있는 트래픽 증가를 목표로 한다
- IP, 포트 외에도 URL, HTTP 헤더, 서버, 캐시, 쿠키 등을 기반으로 트래픽을 분산한다.
- 바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능을 가진다.
- 응용 프로그램 수준의 트래픽 모니터링도 가능하다.
- L4 스위치
- L7 스위치뿐만 아니라 L4 스위치도 로드밸런서이다.
- L4 스위치는 전송 계층을 처리하는 기기
- 스트리밍 관련 서비스에서는 사용할 수 없다.
- 메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로 트래픽을 분산한다.
- 클라우드 서비스(AWS 등)에서의 로드밸런서
- L7 스위치를 이용한 로드밸런싱은 ALB(Application Load Balancer) 컴포넌트
- L4 스위치를 이용한 로드밸런싱은 NLB(Network Load Balancer) 컴포넌트
- 헬스체크(health check)
- 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것.
- L4 스위치 또는 L7 스위치 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판별한다
- TCP, HTTP 등 다양한 방법으로 요청을 보낸다
- 로드밸런서를 이용한 서버 이중화
- 로드밸런서는 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다.
- 2대 이상의 서버가 필수인 이유 :
에러가 발생하여 서버 1대가 종료되더라도 서비스는 안정적으로 운용되어야 하기 때문
- 인터넷 계층을 처리하는 기기
- 라우터(router)*
- 여러 개의 네트워크를 연결, 분할, 구분시켜 주는 역할
- 라우팅을 하는 장비
- 라우팅 : 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩
- 소프트웨어 기반의 라우팅과 하드웨어 기반의 라우팅을 하는 것으로 나눠진다.
- L3 스위치
- L2 스위치의 기능과 라우팅 기능을 갖춘 장비
- L3 스위치를 라우터라고 해도 무방하다.
- 하드웨어 기반의 라우팅을 담당하는 장치.
- 라우터(router)*
- 데이터 링크 계층을 처리하는 기기
- L2 스위치
- 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리
- 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당
- IP 주소를 이해하지 못해 IP 주소를 기반으로 라우팅은 불가능하며
단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다.
- 브리지(bridge)
- 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 포트와 포트 사이의 다리 역할을 하며, 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리.
- 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 '하나의' 통신망을 구축할 때 쓰인다.
- L2 스위치
- 물리 계층을 처리하는 기기
- NIC(Nextwork Interface Card)
- 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
- 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
- 리피터(repeater)*
- 들어오는 약해진 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치
- 이를 통해 패킷이 더 멀리 갈 수 있다.
- 광케이블이 보급됨에 따라 현재는 잘 쓰이지 않는 장치
- AP(Access Point)*
- 패킷을 복사하는 기기
- 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술(와이파이 등)을 사용하여 무선 네트워크 연결을 할 수 있다.
- NIC(Nextwork Interface Card)
- ARP(Address Resolution Protocol)
- IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜
- 컴퓨터와 컴퓨터 간의 통신은 흔히들 IP 주소 기반으로 통신한다고 알고 있지만,
정확히 말하면 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신한다. - ARP*를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다.
- RARP*를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 한다.
- 홉바이홉 통신*
- IP 주소를 통해 통신하는 과정
- 홉(hop) : 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것
- 즉, 통신 장치에 있는 '라우팅 테이블'의 IP를 통해 시작 주소부터 시작하여
다음 IP로 계속해서 이동하는 '라우팅'과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신 - 라우팅 테이블(routing table)
- 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법들이 들어 있는 리스트
- 게이트웨이(gateway)
- 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어
- 사용자는 인터넷에 접속하기 위해 수많은 톨게이트인 게이트웨이를 거쳐야 하며
게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해 주는 역할을 한다.
- IP 주소 체계
- IP 주소는 IPv4와 IPv6로 나뉜다.
- IPv4 : 32비트를 8비트 단위로 점을 찍어 표기
ex) 123.45.67.89 - IPv6 : 64비트를 16비트 단위로 점을 찍어 표기
ex) 2001:db8::ff00:42:8329 - 추세는 IPv6로 가고 있지만, 현재 가장 많이 쓰이는 주소 체계는 IPv4
- IPv4 : 32비트를 8비트 단위로 점을 찍어 표기
- 클래스 기반 할당 방식(classful network addressing)
- 처음에는 A, B, C, D, E 다섯 개의 클래스로 구분하는 클래스 기반 할당 방식을 사용.
- 앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소.
- 클래스 A, B, C는 일대일 통신 클래스 D는 멀티캐스트 통신, 클래스 E는 예비용으로 사용됨.
- 네트워크의 첫 번째 주소는 네트워크 주소로 사용되고,
가장 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용됨. - 단점 : 사용하는 주소보다 버리는 주소가 많다.
해결방안으로 DHCP와 IPv6, NAT가 나옴.
- DHCP(Dynamic Host Configuration Protocol)
- IP주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- 네트워크 장치의 IP주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다.
- 많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며,
이를 통해 대부분의 가정용 네트워크에서 IP 주소를 할당한다.
- NAT(Network Address Translation)
- 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법.
- IPv4 주소 체계만으로는 많은 주소들을 모두 감당하지 못하는 단점이 있었는데,
NAT로 공인 IP와 사설 IP로 나눠서 많은 주소를 처리한다. - NAT를 가능하게 하는 소프트웨어는 ICS, RRAS, Netfilter.
- 공유기와 NAT
- 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함
- 인터넷 공유기에 NAT 기능이 탑재되어 있을 경우,
인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용할 수 있다.
- NAT를 이용한 보안
- 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다.
- NAT의 단점
- 여러 명이 동시에 인터넷을 접속하게 되므로 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다.
- IP 주소는 IPv4와 IPv6로 나뉜다.
- IP 주소를 이용한 위치 정보
- IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에
이를 통해 동 또는 구까지 위치 추적이 가능하다.
- IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에
- HTTP
- 애플리케이션 계층으로, 웹 서비스 통신에 사용된다.
- HTTP/1.0
- RTT 증가
- HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었는데,
이는 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에
RTT가 증가*하는 단점이 있다.- RTT : 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간
- HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었는데,
- RTT의 증가를 해결하기 위한 방법
- RTT 증가할 경우 :
서버에 부담이 많이 가고, 사용자 응답 시간이 길어진다. - 해결 방법 :
이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩이 있다. - 이미지 스플리팅
- 많은 이미지를 다운로드하게 되면 과부하가 걸린다.
- 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드하고,
이를 기반으로 background-image의 position을 이용하여 이미지를 표기하는 방법
- 코드 압축
- 코드를 압축해서 개행 문자를 최소화한다.
- 빈칸을 없애서 코드의 크기를 최소화한다.
- 이미지 Base 64
- 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법.
- 장점 : 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없어진다.
- 단점 : Base64 문자열로 변환할 경우 37% 정도 크기가 더 커진다.
- RTT 증가할 경우 :
- RTT 증가
- HTTP/1.1
- HTTP/1.0에서 발전한 것
- 매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있도록 한다.
- HTTP/1.0에서도 keep-alive가 있었지만 표준화되어 있지 않았고,
HTTP/1.1부터 표준화되어 기본 옵션으로 설정되었다.
- HTTP/1.0에서도 keep-alive가 있었지만 표준화되어 있지 않았고,
- HTTP/1.1*은 한 번 TCP 3-웨이 핸드셰이크가 발생하면 그다음부터 발생하지 않는다.
- 단점 :문서 안에 포함된 다수의 리소스(이미지, css 파일, script 파일)를 처리하려면
요청할 리소스 개수에 비례해서 대기 시간이 길어진다. - HOL(Head Of Line) Blocking
- 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
- 파일을 다운로드할 때 순차적으로 잘 받아지다가 앞의 파일이 느리게 받아진다면,
그 뒤에 있는 것들이 대기하게 되며 다운로드가 지연되는 상태.
- 무거운 헤더구조
- HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무겁다.
- HTTP/2
- HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있다.
- 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜
- 멀티플렉싱
- 여러 개의 스트림을 사용하여 송수신하는 것.
- 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작할 수 있다.
- 스트림(stream) : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
- 병렬적인 스트림*들을 통해 데이터를 서빙.
- 애플리케이션에서 받아온 메시지를 독립된 프레임으로 조각내어 서로 송수신한 이후 다시 조립하여 데이터를 주고받는다.
- 단일 연결*을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다.
- HTTP/1.x에서 발생하는 문제일 HOL Blocking을 해결할 수 있다.
- 헤더 압축
- HTTP/1.x에 있던 큰 헤더라는 문제를
HTTP/2에서 허프만 코딩 압축 알고리즘을 사용하여 헤더를 압축해서 해결. - 허프만 코딩(huffman coding)
- 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현,
빈도가 낮은 정보는 비트 수를 많이 사용해서 표현하여 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
- 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현,
- HTTP/1.x에 있던 큰 헤더라는 문제를
- 서버 푸시*
- HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운로드할 수 있었다면,
HTTP/2는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다.
- HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운로드할 수 있었다면,
- HTTPS
- 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청
- 이를 통해 '통신을 암호화' 한다.
- HTTP/2는 HTTPS 위에서 동작한다.
- SSL(Secure Socket Layer)/TLS(Transport Layer Security Protocol)
- SSL/TLS은 전송 계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제삼자가 메시지를 도청하거나 변조하지 못하도록 한다.
- 공격자가 서버인 척하며 사용자 정보를 가로채는 네트워크 상의 '인터셉터'를 방지할 수 있다.
- 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
- 보안 세션
- 보안이 시작되고 끝나는 동안 유지되는 세션
- SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유한다.
- 세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간
즉, 사용자는 일정 시간 동안 응용 프로그램, 자원 등을 사용할 수 있다.
- 세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간
- 클라이언트와 서버가 키를 공유하고 이를 기반으로 인증, 인증 확인 등의 작업이 일어나는
단 한 번의 1-RTT가 생긴 후 데이터를 송수신한다. - 클라이언트에서 사이퍼 슈트를 서버에 전달해서 암호화 알고리즘 리스트를 제공할 수 있는지 확인한다.
제공할 수 있다면 서버에서 클라이언트로 인증서를 보내는 인증 메커니즘이 시작되고,
이후 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작된다.- 사이퍼 슈트(cypher suites) : 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약
- AEAD 사이퍼 모드(Authenticated Encryption with Associated Data) :데이터 암호화 알고리즘
- 암호화 알고리즘
- 디피-헬만 키 교환 암호화 알고리즘 : 암호키를 교환하는 하나의 방법
- 해싱 알고리즘 :데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘
- SHA-256 알고리즘 : 해시 함수의 결괏값이 256비트인 알고리즘.
비트 코인을 비롯한 많은 블록체인 시스템에서 사용 - 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
- SHA-256 알고리즘 : 해시 함수의 결괏값이 256비트인 알고리즘.
- 인증 메커니즘
- 인증 메커니즘은 CA에서 발급한 인증서를 기반으로 이루어진다.
- CA에서 발급한 인증서는 안전한 연결을 시작하는 데 있어 필요한 '공개키'를 클라이언트에게 제공하고,
사용자가 접속한 '서버가 신뢰'할 수 있는 서버임을 보장한다. - CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만 참여할 수 있다.
ex) Comodo, GoDaddy, GlobalSign, Amazon
- SEO(Search Engine Optimization)에도 도움이 되는 HTTPS
- SEO : 검색엔진 최적화
- 사용자들이 구글, 네이버 같은 검색엔진으로 웹 사이트를 검색했을 때 그 결과를 페이지 상단에 노출시켜 많은 사람이 볼 수 있도록 최적화하는 방법
- 구글이 사이트 내 모든 요소가 동일하다면 HTTPS 서비스를 하는 사이트가 그렇지 않은 사이트보다 SEO 순위가 높다고 밝힘.
- 메타 설정
- 페이지 속도 개선
- 사이트맵 관리
- SEO : 검색엔진 최적화
- HTTPS 구축 방법
- 직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스를 구축
- 서버 앞단의 HTTPS를 제공하는 로드밸런서 구축
- 서버 앞단에 HTTPS를 제공하는 CDN 구축
- HTTP/3
- TCP 위에서 돌아가는 HTTP/2와는 달리
HTTP/3은 QUIC라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반*이다. - HTTP/2에서 장점이었던 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점이 있다.
- 초기 연결 설정 시 지연 시간 감소*
- QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3-웨이 핸드셰이크 과정을 거치지 않아도 된다.
- QUIC은 첫 연결 설정에 1-RTT만 소요된다.
- 클라이언트가 서버에 어떤 신호를 한 번 주고, 서버도 거기에 응답하기만 하면 바로 본 통신을 시작할 수 있다.
- QUIC은 순방향 오류 수정 메커니즘(FEC, Forward Error Correction)이 적용되었다.
- 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식
- 열악한 네트워크 환경에서도 낮은 패킷 손실률을 자랑한다.
- QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3-웨이 핸드셰이크 과정을 거치지 않아도 된다.
- TCP 위에서 돌아가는 HTTP/2와는 달리
네트워크 챕터를 두 번에 나눠서 포스팅하였는데, 첫 번째에 공부했던 것보다 지금이 더 수월하게 읽혔다.
아무래도 단어들이 눈에 좀 익어서 그렇지 않을까?
단 한 번 보고서 외울 수도, 이해할 수도 없는 부분이라고 생각 되기에 무리하지 않고, '네트워크가 이렇게 구축되는구나~' 하면서 자연스럽게 넘어가려 한다.
꾸준하게 3 - 4 회독하다 보면 자연스럽게 흐름이 파악될 것 같다!
출처 : 면접을 위한 CS 전공지식 노트
728x90
'BOOKS > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
[BOOK] 프로세스와 스레드 (0) | 2023.05.03 |
---|---|
[BOOK] 운영체제와 컴퓨터, 메모리 (0) | 2023.04.28 |
[BOOK] 네트워크의 기초, TCP/IP 4계층 모델 (0) | 2023.04.20 |
[BOOK] 프로그래밍 패러다임 (Programming paradigm) (2) | 2023.04.19 |
[BOOK] 디자인 패턴 (Design Pattern) (0) | 2023.04.13 |