728x90
네트워크의 기초
- 네트워크
- 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체
- 처리량 (throughput)
- 링크를 통해 전달되는 단위 시간당 데이터양
- 트래픽, 네트워크 장치간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙 등의 영향을 받음
- 지연 시간
- 요청이 처리되는 시간
- 어떤 데이터가 두 장치 사이를 '왕복'하는데 걸린 시간
- 매체 타입(유·무선), 패킷 크기, 라우터의 패킷 처리 시간등의 영향을 받음
- 네트워크 토폴로지
- 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태
- 트리 토폴로지
- 계층형 토폴로지라고 하며 트리 형태로 배치된 네트워크 구성
- 노드의 추가, 삭제가 쉬우며 상위 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음
- 버스 토폴로지
- 중앙 통신 회선 하나에 여러 개의 토드가 연결되어 공유하는 네트워크 구성
- 근거리 통신망(LAN)에서 사용
- 설치 비용이 적고 신뢰성이 우수하며 중앙 통신 회선에 노드를 추가, 삭제하기 쉬움
- 스위칭 기능을 마비시키거나 속여서 특정 노드에 패킷을 전달하는 '스푸핑'이 가능하다는 단점이 있음
- 스타 토폴로지
- 중앙에 있는 노드에 모두 연결된 네트워크 구성
- 노드의 추가, 삭제가 쉬우며 패킷의 충돌 발생 가능성이 적음
- 중앙 노드를 제외한 노드에서 에러가 발생할 경우 쉽게 발견할 수 있고 다른 노드에 끼치는 영향이 적음
- 중앙 노드에 에러가 발생할 경우 네트워크 전체를 사용할 수 없음
- 링형 토폴로지
- 각각의 노드의 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식
- 노드 수가 증가되어도 네트워크상의 손실이 거의 없고 충돌이 발생할 가능성이 적음
- 네트워크 구성 변경이 어렵고 회선에 장에가 발생할 경우 전체 네트워크에 영향을 크게 끼침
- 메시 토폴로지
- 망형 토폴로지라고도 하며 그물망 처럼 연결되어 있는 구조
- 특정 노드에 장애가 발생해도 네트워크를 계속 사용할 수 있고 트래픽 분선 처리가 가능
- 노드의 추가가 어려움
- 병목 현상
- 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
- 이벤트로 인해 트래픽이 증가했을 때 이벤트와 상관없는 기존 서비스 마저 접속 불가능한 경우
- 네트워크 분류
- LAN (Local Area Network)
- 근거리 통신망
- 같은 건물이나 캠퍼스와 같은 좁은 공간에서 운영됨
- 전송 속도가 빠르고 혼잡하지 않음
- MAU (Metropolitan Area Network)
- 대도시 지역 네트워크
- 도시 같은 넓은 지역에서 운영됨
- WAN (Wide Area Network)
- 광역 네트워크
- 국가 또는 대륙 같은 넓은 지역에서 운영됨
- LAN (Local Area Network)
- 네트워크 성능 분석 명령어
- 어플리케이션 코드상에는 문제가 없는데 서비스로부터 데이터를 가져오지 못할 경우 네트워크 병목 현상일 가능성이 있음
- 병목현상의 주된 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
- ping (Packet INternet Groper)
- 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
- TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작함
- netstat
- 접속되어 있는 서비스들의 네트워크 상태를 표시하는 명령어
- nslookup
- DNS에 관련된 내용을 확인하기 위해 쓰는 명령어
- tracert
- 윈도우의 경우 tracert, 리눅스의 경우 traceroute
- 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어
- 네트워크 프로토콜 표준화
- 네트워크 프로토콜
- 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
- IEEE 또는 IETF라는 표준화 단체에서 정의함
- 네트워크 프로토콜
TCP/IP 4계층 모델
- TCP/IP 4계층 모델
- 어플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
- 전송 계층
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름제어를 제공
- 어플리케이션 계층과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할
- TCP
- 패킷 사이의 순서를 보장
- 연결지향 프로토콜의 사용해서 연결하여 신뢰성을 구축
- 수신 여부를 확인하며 '가상회선 패킷 교환 방식'을 사용
- 신뢰성을 확보할 때 '3-way handshake'라는 작업을 진행
- 연결 해제 시 '4-way handshake' 과정이 발생
- UDP
- 패킷 사이의 순서를 보장하지 않음
- 수신 여부를 확인하지 않으며 단순히 데이터만 주는 '데이터그램 패킷 교환 방식'을 사용
- 인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달
- 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있음
- 링크 계층
- 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 '규칙'을 정하는 계층
- 물리 계층
- 무선 LAN, 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
- 데이터 링크 계층
- '이더넷 프레임'을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층
- 어플리케이션 계층
- 전이중화 통신
- 양쪽 장치가 동시에 송수신 할 수 있는 방식
- CSMA/CD
- 유선 LAN의 '반이중화 통신' 중 하나
- 데이터를 '보낸 이후' 충돌이 발생한다면 일정 시간 이후 재전송하는 방식
- 반이중화 통신
- 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통실할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식
- 이더넷 프레임
- Preamble: 이더넷 프레임의 시작을 알림
- SFD(Start Frame Delimiter): 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
- DMAC, SMAC: 수신, 송신 MAC 주소
- EtherType: IP 프로토콜을 정의
- Payload: 전달받은 데이터
- CRC: 에러 확인 비트
- 계층 간 데이터 송수신 과정
- 요청 값들이 애플리케이션 계층부터 링크 계층까지 캡슐화 과정을 거쳐 전달되며 링크 계층을 통해 서버와 통신을 진행
- 서버에서는 링크 계층부터 어플리케이션 계층까지 비캐슐화를 거치며 데이터가 전송됨
- 캡슐화 과정
- 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
- 비캡슐화 과정
- 하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정
- PDU (Protocal Data Unit)
- 네트워크의 특정 계층에서 다른 계층으로 데이터가 전달될 때 한 덩어리의 단위
- 제어 관련 정보들이 포함된 '헤더', 데이터를 의미하는 '페이로드'로 구성되어 있음
- 각 계층마다 부르는 명칭이 다름
- 어플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
네트워크 기기
- 네트워크 기기의 처리 범위
- 계층별로 처리 범위를 나울 수 있음
- 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 반대는 불가
- 어플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: 브리지, L2 스위치
- 물리 계층: NIC, 리피터, AP
- L7 스위치
- 어플리케이션 계층을 처리하는 기기
- 로드밸런서라고도 하며, 서버의 부하를 분산하는 기기
- 요청들을 여러 서버로 나누는 역할을 하며 시스템이 처리할 수 있는 트래픽 증가를 목표로 함
- L4 스위치와의 차이
- L4 스위치는 인터넷 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없으며 IP와 포트를 기반으로 트래픽을 분산
- L7 로드밸런서는 IP, 포트 외에도 URL, HTTP 헤더, 쿠키 등을 기반을 트래픽을 분산
- 라우터
- 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 장비
- 여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할
- 소프트웨어 기반의 라우팅과 하드웨어 기반의 라우팅을 하는 것으로 나뉘고 하드웨어 기반의 라우팅을 담당하는 장비가 L3 스위치
- L3 스위치
- L2 스위치의 기능과 라우팅 기능을 갖춘 장비
- L2 스위치
- MAC 주소를 테이블을 통해 관리하며, 패킷 전송을 담당
- IP 주소 기반으로 라우팅은 불가능하며 패킷의 MAC 주소를 읽어 스위칭하는 역할
- 목적지가 MAC 주소 테이블에 없다면 모든 포트에 전달
- 브리지
- 두 개의 근거리 통신망을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 통신망 범위 확장 및 서로 다른 LAN등으로 이루어진 '하나의' 통신망을 구축할 때 사용됨
- NIC (Network Interface Card)
- LAN 카드라고도 불리며 2대 이상의 컴퓨터 네트워크를 구성하는데 사용됨
- 네트워크와 빠른 속도로 데이터를 송수신 할 수 있도록 컴퓨터 내에 설치하는 확장 카드
- 리피터
- 수신되는 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치
- 광케이블 보급으로 현재는 잘 쓰이지 않음
- AP (Access Point)
- 패킷을 복사하는 기기
IP 주소
- ARP (Address Resolution Protocol)
- IP와 MAC 주소의 다리 역할을 하는 프로토콜
- IP 주소를 실제 MAC 주소로 변환
- 역으로 MAC 주소를 IP 주소로 변환하는 것은 RARP
- 홉바이홉 통신
- IP 주소를 통해 통신하는 과정
- 통신 장치에 있는 '라우팅 테이블'의 IP를 통해 시작부터 다음 IP로 계속 이동하며 패킷이 최종 목적지에 도달하는 통신
- 라우팅 테이블
- 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트
- 게이트웨이, 목적지에 도달하기 위해 거쳐야 할 다음 라우터 정보가 담겨있음
- 게이트 웨이
- 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨텨나 소프트웨어를 두루 일컫는 용어
- 서로 다른 네트워크상의 통신 프로토콜을 변환해주는 역할을 하기도 함
- IP 주소 체계
- IPv4
- 32비트를 8비트 단위로 점을 찍어 표기
- IPv6
- 64비트를 16비트 단위로 점을 찍어 표기
- IPv4
- 클래스 기반 할당 방식
- 초창기 A, B, C, D, E 다섯 개의 클래스로 구분하는 클래스 기반 할당 방식(CIDR)을 사용했음
- 앞 부분을 네트워크 주소, 그 뒤를 호스트 주소로 놓아서 사용
- 클래스 A·B·C 는 일대일 통신, D는 멀티캐스트 통신, E는 예비용으로 사용하는 방식
- 맨 왼쪽에 있는 비트를 '구분 비트'라고 함
- 네트워크의 첫 번째 주소는 네트워크 주소로 사용되고 가장 마지막 주소는 브로드 캐스트용 주소로 사용됨
- DHCP (Dynamic Host Configuration Protocol)
- IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- IP 주소를 수동으로 설정할 필요없이 인터넷에 접속할 때마다 자동으로 할당 가능
- NAT (Network Address Translation)
- 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법
- NAT 장치를 이용해 공인 IP와 사설 IP를 변환
- 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해 주로 사용됨
- 내부에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기에 네트워크에 대한 어느 정보의 보안이 가능
- 호스트의 숫자에 다라 접속 속도가 느려질 수 있음
HTTP
- 기본적으로 어플리케이션 계층으로서 웹 서비스 통신에 사용됨
- HTTP/1.0
- 한 연결당 하나의 요청을 처리하도록 설계됨
- RTT 증가를 불러오게 됨
- RTT의 증가를 해결하기 위해 여러 방법을 사용
- 이미지 스플리팅
- 여러 이미지 다운로드 시 과부화가 걸리기 때문에 합쳐진 하나의 이미지를 다운로드 후 background-image의 position을 이용하여 이미지를 표기하는 방법
- 코드 압축
- 코드의 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법
- 이미지 Base64 인코딩
- 이미지를 64진법으로 이루어진 문자열로 인코딩하는 방법
- 이미지에 대해 서버에 HTTP 요청을 할 필요가 없어짐
- 인코딩 시 크기가 37% 정도 커지는 단점이 있음
- 이미지 스플리팅
- HTTP/1.1
- 최초 TCP 초기화 후 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 개선됨
- HTTP/1.0 에도 keep-alive가 있었지만 표준화 되어있지 않았으며 HTTP/1.1부터 기본 옵션으로 설정됨
- 문서에 포함된 리소스(이미지, css 파일, 스크립트 파일 등)개수에 비례해서 대기 시간이 길어지는 단점이 있음
- HOL(Head Of Line) Blocking
- 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
- 무거운 헤더 구조
- 쿠키 등 많은 메타데이터가 압축되지 않은 채로 들어가 있어서 헤더가 무거워짐
- HTTP/2
- SPDY 프로토콜에서 파생된 HTTP/1.x 보다 지연 시간을 줄이고 응답시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜
- 멀티플렉싱
- 여러 개의 스트림을 사용하여 송수신한다는 것
- 특정 스트림의 패키시 손실되어도 다른 스트림은 정상적으로 동작할 수 있음
- 병렬로 여러 요청을 받을 수 있으므로 HOL Blocking을 해결 할 수 있음
- 헤더 압축
- 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가짐
- 서버 푸시
- 클라이언트의 요청 없이 서버가 바로 리소스를 푸시 가능
- HTTPS
- 어플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청
- SSL(Secure Socket Layer)/TLS(Transport Layer Security Protocol)
- SSL 1.0 부터 TLS 1.3 버전까지올라가며 TLS로 명칭이 변경되었으나 보통 SSL/TLS라고 부름
- 전송 계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신할 때 제3자가 메시지를 도청하거나 변조하지 못하도록 함
- 보안 세션을 기반으로 데이터를 암호화
- 보안 세션
- 보안이 시작되고 끝나는 동안 유지되는 세션
- SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유
- 사이퍼 슈트 (cypher suites)
- 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_CCM_SHA256
- TLS_AES_128_CCM_8_SHA256
- 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약
- AEAD(Authenticated Encryption with Associated Data) 사이퍼 모드
- 데이터 암호화 알고리즘
- 인증 메커니즘
- CA(Certificate Authorities)에서 발급한 인증서를 기반으로 이루어짐
- 인증서는 연결을 시작하는 데 있어 필요한 '공개키'를 클라이언트에 제공하고 사용자가 접속한 '서버'가 신뢰할 수 있는 서버임을 보장
- SEO(Search Engine Optimization)
- 검색 엔진 최적화
- 구글, 네이버 등 검색엔진으로 웹 사이트를 검색했을 때 결과 페이지 상단에 노출시켜 많은 사람이 볼 수 있도록 최적화하는 방법
- 캐노니컬 설정
- 메타 설정
- 페이지 속도 개선
- 사이트맵 관리
- HTTPS 구축 방법
- CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
- HTTPS를 제공하는 로드밸런서 배치
- HTTPS를 제공하는 CDN을 배치
- HTTPS/3
- TCP위에서 돌아가는 HTTP/2와 달리 QUIC라는 계층위에서 돌아가며 UDP기반으로 돌아감
- QUIC는 TCP를 사용하지 않기 때문에 3-way handshake과정을 거치지 않으므로 초기 연결 설정 시 지연 시간 감소 효과가 있음
'독후감 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
면접을 위한 CS 전공지식 노트 (5) - 자료 구조 (0) | 2025.05.28 |
---|---|
면접을 위한 CS 전공지식 노트 (4) - 데이터베이스 (0) | 2025.05.13 |
면접을 위한 CS 전공지식 노트 (3) - 운영체제 (1) | 2025.05.09 |
면접을 위한 CS 전공지식 노트 (1) - 디자인 패턴과 프로그래밍 패러다임 (0) | 2025.05.08 |