[2] 네트워크
면접을 위한 CS 전공지식 노트 CHAPTER 2
SECTION 2.1 네트워크의 기초
📌 네트워크 정의
노드와 링크가 서로 연결되어 있거나 연결되어 있으면서 리소스를 공유하는 집합
2.1.1 처리량과 지연 시간
좋은 네트워크: 많은 처리량 처리, 짧은 지연 시간, 적은 장애 빈도, 좋은 보안
- 처리량
- 링크 내에서 성공적으로 전달된 데이터의 양
- 얼만큼의 트래픽을 처리했는지
- 단위: bps(bits per second), 초당 전송, 수진되는 비트 수
트래픽이 많아졌다 = 흐르는 데이터가 많아졌다
처리량이 많아졌다 = 처리되는 트래픽이 많아졌다
- 지연 시간
- 요청이 처리되는 시간
- 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간
2.1.2 네트워크 토폴로지와 병목 현상
네트워크 토폴로지
노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형식
- 트리 토폴로지
- 계층형 토폴로지
- 장점: 노드의 추가, 삭제 쉬움
- 단점: 특정 노드에 트래픽이 집중될 때 하위 노드에 영향 끼침
- 버스 토폴로지
- 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크
- 근거리 통신망(LAN)에서 사용
- 장점: 비용 적음, 신뢰성 우수, 노드 추가•삭제 쉬움
- 단점: 스푸핑 문제
스푸핑
- 스타 토폴로지
- 중앙에 있는 노드에 모두 연결
- 장점: 노드 추가•에러 탐지 쉬움, 패킷의 충돌 발생 가능성 적음
- 단점: 중앙 노드에 장애가 발생하면 전체 네트워크 사용X, 비쌈
- 링 토폴로지
- 각 노드가 양 옆의 두 노드와 연결
- 장점: 노드 수 증가해도 네트워크 손실↓, 충돌↓, 에러 탐지 쉬움
- 단점: 네트워크 구성 변경 어려움, 회선에 장애가 발생하면 전체에 영향 끼침
- 메시 토폴로지
- 그물망 구조
- 장점: 한 단말 장치에 장애가 발생해도 계속 사용 가능, 트래픽 분산 처리 가능
병목 현상
전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
2.1.3 네트워크 분류
분류 | 설명 | 전송속도 | 혼잡도 |
---|---|---|---|
LAN | 근거리 통신망 | 빠름 | 낮음 |
MAN | 대도시 지역 네트워크 | 평균 | LAN보다 혼잡 |
WAN | 광역 네트워크 | 느림 | MAN보다 혼잡 |
2.1.4 네트워크 성능 분석 명령어
병목 현상 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
네트워크 관련 명령어
- ping
- 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
- 패킷 수신 상태, 도달 시간, 네트워크 연결 상태 확인 가능
- ICMP 프로토콜을 통해 동작
- ping www.google.com -n 12
- netstat
- 접속되어 있는 서비스들의 네트워크 상태를 표시
- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 보여줌
- 서비스 포트가 열려있는지 확인
- nslookup
- DNS에 관련된 내용 확인
- 특정 도메인에 매핑된 IP 확인
- tracert
- 목적지 노드까지 네트워크 경로를 확인할 때
- 어느 구간에서 응답 시간이 느려지는지 확인
- tracert www.google.com
2.1.5 네트워크 프로토콜 표준화
네트워크 프로토콜
- 다른 장치끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
- IEEE 또는 IETF 표준화 단체가 정함
- ex) HTTP라는 프로토콜을 통해 웹 서비스 기반 데이터 주고 받음
SECTION 2.2 TCP/IP 4계층 모델
📌 인터넷 프로토콜 스위트 정의
- 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합
- TCP/IP 4계층 모델, OSI 7계층 모델
2.2.1 계층 구조
특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계
1) 애플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS 등
- 응용 프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
용어
2) 전송 계층
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공
용어
✏️ TCP 연결 성립 과정: 3-웨이 핸드셰이크
1️⃣ SYN 단계: 클라이언트→서버, ISN을 담아 SYN을 서버에 보냄(ISN: 초기 네트워크 연결할 때 할당된 32비트 고유 시퀀스 번호)
2️⃣ SYN + ACK 단계: 서버→클라이언트, SYN을 수신하고 서버의 ISN와 승인번호로 ISN+1을 보냄
3️⃣ ACK 단계: 클라이언트→서버, 서버의 ISN+1를 담아 ACK를 보냄
✏️ TCP 연결 해제 과정: 4-웨이 핸드셰이크
1️⃣: 클라이언트→서버, FIN으로 설정된 세그먼트 보냄, 클라이언트는 FIN_WAIT_1 상태•응답 기다림
2️⃣: 서버→클라이언트, ACK라는 승인 세그먼트 보냄, 서버는 CLOSE_WAIT, 클라이언트는 FIN_WAIT_2 상태
3️⃣: 서버→클라이언트, FIN이라는 세그먼트 보냄
4️⃣: 클라이언트→서버, 클라이언트 TIME_WAIT, 서버로 ACK 보냄, 서버 CLOSED, 클라이언트 CLOSED
※ TIME_WAIT
3) 인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하는 계층
- IP, ARP, ICMP 등
- 패킷 수신 주소를 지정하여 데이터 전달
- 비연결형(상대방이 제대로 수신했는지 보장x)
4) 링크 계층
- 전선, 광섬유, 무선 등
- 실질적으로 데이터를 전달하며 장치 간에 신호를 주고 받는 ‘규칙’을 정하는 계층
- 네트워크 접근 계층
- 물리 계층(0과 1) + 데이터 링크 계층(에러 확인, 흐름 제어, 접근 제어)
✏️ 유선 LAN(IEEE802.3)
- 전이중화 통신
- 양쪽 장치가 동시에 송수신할 수 있는 방식
- 송신로와 수신로로 나눔
- 현대의 고속 이더넷
- CSMA/CD
- 반이중화 통신
- 데이터를 ‘보낸 이후’ 충돌이 발생한다면 일정 시간 이후 재전송
- 한 경로 기반, 충돌에 대비
✏️ 유선 LAN을 이루는 케이블
- 트위스트 페어 케이블
- 8개의 구리선을 두개씩 꼬아서 묶은 케이블
- UTP 케이블: 실드x, 흔함
- STP 케이블: 실드o
- 광섬유 케이블
- 광섬유로 만든 케이블
- 레이저 이용, 장거리, 고속 통신
- 광섬유 내부와 외부를 다른 밀도를 가지는 유리나 플라스틱 섬유로 제작
- 한 번 들어간 빛이 내부에서 계속적으로 반사하며 전진
- 코어: 굴절률이 높은 부분
- 클래딩: 굴절률이 낮은 부분
✏️ 무선 LAN(IEEE802.11)
- 반이중화 통신
- 수신과 송신이 같은 채널 사용
- 수신하기 시작하면 응답하기 전에 전송이 완료될 때까지 기다려야 함
- CSMA/CA
- 반이중화 통신 중 하나
- 무선 매체 살핌 → 캐리어 감지: 회선이 비어있는지 → IFS: 랜덤 값만큼 기다림, 시간 늘려가면서 기다림 → 데이터 송신
✏️ 무선 LAN을 이루는 주파수
- 와이파이
- 무선 접속 장치(공유기) 필요
- 유선 LAN에 흐르는 신호를 무선 LAN 신호로 바꿈
- +) 지그비, 블루투스
- BSS
- 기본 서비스 집합
- BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조
- 근거리 무선 통신, 하나의 AP만을 기반 → 자유롭게 이동 불가
- ESS
- 하나 이상의 연결된 BSS 그룹
- 장거리 무선 통신, 가용성, 이동성
✏️ 이더넷 프레임: 에러 검출, 캡슐화
- Preamble: 이더넷 프레임이 시작임을 알림
- SFD: 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
- DMAC, SMAC: 수신, 송신 MAC 주소
- EtherType: IP 프로토콜, IPv4, IPv6
- Payload: 전달받은 데이터
- CRC: 에러 확인 비트
계층 간 데이터 송수신 과정
✏️ 캡슐화 과정
- 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시킴
- 해당 계층의 헤더를 삽입
- 애플리케이션 계층 → 전송 계층, 데이터 → 세그먼트, 데이터그램화, TCP(L4) 헤더 붙여짐
- 전송 계층 → 인터넷 계층, IP(L3) 헤더 붙여짐, 패킷화
- 인터넷 계층 → 링크 계층, 프레임 헤더•프레임 트레일러 붙음, 프레임화
✏️ 비캡슐화 과정
- 하위 계층에서 상위 계층으로 가며 헤더 부분 제거
- 프레임화 → 패킷화 → 세그먼트, 데이터그램화 → 메세지화 → 사용자에게 애플리케이션의 PDU인 메세지로 전달
2.2.2 PDU
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위
SECTION 2.3 네트워크 기기
2.3.1 네트워크 기기의 처리 범위
상위 계층 기기는 하위 계층 처리 가능
반대는 불가능
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: L2 스위치, 브리지
- 물리 계층: NIC, 리피터, AP
2.3.2 애플리케이션 계층을 처리하는 기기
L7 스위치(로드밸런서)
- 여러 장비 연결, 데이터 통신 중재, 목적지가 연결된 포트로만 신호 보냄
- 서버의 부하 분산, 클라이언트 요청을 여러 서버로 나누는 역할, 트래픽 처리량 증가
- 바이러스 필터링, 트래픽 모니터링, 헬스 체크로 장애 서버 감시
✏️ L4 스위치 VS L7 스위치
- L4 스위치: 전송 계층을 처리, IP와 포트를 기반으로 트래픽 분산, NLB 컴포넌트로 로드밸런싱
- L7 스위치: IP, 포트 외에도 URL, HTTP 헤더, 쿠키 등을 기반으로 트래픽 분산, ALB 컴포넌트로 로드밸런싱
✏️ 헬스체크
- 정상•비정상 서버 판별
- 전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청
- 서버 부하가 되지 않을 만큼 요청 횟수 설정
✏️ 로드밸런서를 이용한 서버 이중화
- 로드밸런서 대표 기능: 서버 이중화(2대 이산 서버 필수)
- 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공
2.3.3 인터넷 계층을 처리하는 기기
라우터
- 여러개의 네트워크를 연결, 분할, 구분시켜주는 역할
- 패킷 소모 최소화, 경로 최적화 → 최소 경로로 패킷을 포워딩
L3 스위치
- L2 스위치 + 라우팅 기능
- 하드웨어 기반의 라우팅을 담당
2.3.4 데이터 링크 계층을 처리하는 기기
L2 스위치
- 장치들의 MAC주소를 MAC 주소 테이블을 통해 관리
- 패킷 전송 담당
- IP 주소를 기반으로 라우팅은 불가능
- 단순히 패킷의 MAC 주소를 읽어 스위칭 함
- 목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달
브리지
- LAN을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 포트와 포트 사이의 다리 역할
- MAC 주소를 MAC 주소 테이블로 관리
2.3.5 물리 계층을 처리하는 기기
NIC
- LAN 카드(NIC 카드)는 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
- 네트워크와 빠른 속도로 송수신하게 하는 확장 카드
- 고유의 MAC 주소가 있음
리피터
- 약해진 신호 정도를 증폭하여 다른 쪽으로 전달
- 광케이블 보급 이후 사용 잘 안 함
AP
- 패킷을 복사하는 기기
- AP에 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술을 사용하여 무선 네트워크 연결 가능
SECTION 2.4 IP 주소
2.4.1 ARP
- 컴퓨터와 컴퓨터 통신: IP 주소(가상 주소)에서 ARP를 통해 MAC 주소(실제 주소)를 찾아 MAC 주소 기반으로 통신
- ARP Request 브로드캐스트(1대다) 보내서 MAC 주소 찾기 ↔ ARP Reply 유니캐스트(1대1)로 MAC 주소 반환
2.4.2 홉바이홉 통신
- 홉(건너뛰는 모습): 여러개의 라우터를 건너가는 모습을 비유적으로 표현
- 수많은 서브네트워크 안에 있는 라우터의 라우팅 테이블 IP를 기반으로 전달
2.4.3 IP 주소 체계
- IPv4: 32비트를 8비트 단위로 점 찍음
- IPv6: 64비트를 16비트 단위로 점 찍음
- IPv4를 많이 사용
클래스 기반 할당 방식
- A, B, C는 일대일 통신
- D는 멀티캐스트 통신
- E는 예비용
- A:0.0.0.0~ , B:128.0.0.0~ , C:192.0.0.0~
- 맨 왼쪽: 구분 비트 - 네트워크 구별 주소
- 가운데: 컴퓨터에 부여할 수 있는 호스트 주소
- 맨 오른쪽: 브로드캐스트용 주소 - 네트워크에 속해 있는 컴퓨터에 데이터를 보낼 때
단점: 사용하는 주소보다 버리는 주소가 많음
DHCP
IP주소 자동으로 할당
NAT
- 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑
- 공인 IP와 사설 IP 나눔
- 공유기: 여러대의 호스트가 공인 IP 주소 사용
- 장점: 내부 네트워크 보안
- 단점: 접속 속도 느려질 수 있음
2.4.4 IP 주소를 이용한 위치 정보
IP 주소 기반으로 네트워크 주소와 위치 찾음
SECTION 2.5 HTTP
애플리케이션 계층
2.5.1 HTTP/1.0
한 연결당 하나의 요청 처리 RTT 증가 초래
RTT 증가
그림22
RTT: 패킷 왕복 시간
TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT 증가
RTT 증가 해결 방법
1. 이미지 스플리팅
많은 이미지 다운받고, nth-child(1)과 position으로 표기
2. 코드 압축
개행 문자, 빈칸 없애서 코드 크기 최소화 → 용량 줄음
3. 이미지 Base64 인코딩
이미지 파일을 64진법으로 이루어진 문자열로 인코딩
이미지에 대해 서버에 HTTP 요청할 필요가 없음
2.5.2 HTTP/1.1
매번 TCP 연결을 하는 것이 아니라 한 번 TCP를 초기화 한 이후에 keep-alive라는 옵션으로 여러개의 파일을 송수신할 수 있게 바꿈
HOL Blocking
네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 ‘성능 저하 현상’
2.5.3 HTTP/2
- 지연 시간↓, 응답 시간↑
- 멀티플렉싱, 헤더 압축, 서버 푸시, 요청 우선순위 처리
1. 멀티플렉싱
- 여러 개의 스트림 사용하여 송수신
- 특정 패킷 손실되어도 멀쩡
- 단일 연결을 사용하여 병렬로 요청 → HOL Blocking 해결
2. 헤더 압축
허프만 코딩
- 문자열을 문자 단위로 쪼갠 후 빈도수 셈
- 빈도↑: 적은 비트 수
- 빈도↓: 많은 비트 수
- 비트양 줄이기
3. 서버 푸시
클라이언트 요청 없이 서버가 바로 푸시 가능
ex) css 파일 요청이 없어도 푸시 가능
2.5.4 HTTPS
애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 HTTP 요청 → 통신 암호화
암호화 알고리즘
1. 디피-헬만 키 교환 암호화 알고리즘
- 개인키, 공개키 생성
- 나머지로 구함
2. 해싱 알고리즘
- 더 작고, 섞여 있는 조각
- SHA-256 알고리즘: 전처리된 메시지를 기반으로 해시 반환
HTTPS 구축 방법
- CA에서 구매한 인증키 기반
- HTTPS 로드밸런서
- CDN
2.5.5 HTTP/3
QUIC 계층에서 돌아감(TLS x)
UDP 기반(TCP x)
멀티플렉싱
초기 연결 설정시 지연 시간↓: 3-웨이 핸드셰이크x
퀴즈
1. TCP 연결 해제 과정인 4-웨이 핸드셰이크에서 4번째 단계의 클라이언트는 왜 TIME_WAIT 상태였다가 CLOSED 되나요?
정답 보기
1. 지연 패킷이 발생할 경우를 대비하기 위해서이다. 패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생한다. 2. 두 장치가 연결이 닫혔는지 확인하기 위해서이다. 만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어있기 때문에 접속 오류가 나타난다.2. TCP와 UDP의 차이점
정답 보기
- TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있습니다. - UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있지만, 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다는 장점이 있습니다. - TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고, UDP는 실시간성이 중요한 스트리밍에 자주 사용됩니다.3. HTTP와 HTTPS의 차이
정답 보기
HTTP : 웹 브라우저와 웹 서버 간의 통신에서 HTML 문서, 이미지, 오디오, 비디오 등의 리소스를 전송하기 위해 사용하는 규칙 HTTPS는 HTTP+SSL(secure socket layer)4. HTTP 구조
댓글남기기