Computer Science Note - Network
본 게시글의 그림들은 참고 레퍼런스들을 토대로 직접 그렸음을 미리 밝힙니다.
NETWORK
1. 네트워크 기초
네트워크 : 노트 (Node) + 링크 (Link) 가 연결되어 리소스를 공유하는 집합
1-1. 처리량과 지연시간
좋은 네트워크
- 많은 처리량을 처리 가능
- 지연시간이 짧음
- 장애 빈도가 적음
- 좋은 보안
처리량(Throughput) : 링크 내에서 성공적으로 전달된 데이터 양 ( 트래픽 얼마나 처리했는지 의미 )
많은 트래픽 처리 = 많은 처리량을 가진다
- 처리량 단위 : BPS (Bits Per Second)
- 처리량에 영향을 주는 것들
- 사용자들이 많이 접속할때마다 커지는 트래픽
- 네트워크 장치 간의 대역폭
- 네트워크 중간에 발생하는 에러
- 장치의 하드웨어 스펙
- 트래픽 (y축) : 특정 시점에 링크 내에 흐르는 데이터의 양 ex) 서버에 저장된 파일들을 클라이언트가 다운받으면 발생하는 데이터의 누적량
- 대역폭 : 주어진 시간동안 네트워크 연결을 통해 흐를 수 있는 비트의 수
요약
- 트래픽 증가 = 흐르는 데이터 양이 증가
- 처리량 증가 = 처리되는 트래픽 증가
지연 시간 (Latency) : 요청이 처리되는 시간, 메시지가 두 장치 왕복하는데 걸리는 시간
매체 타입(유선, 무선), 패킷 크기, 라우터의 패킷 처리 시간 등에 영향받음
1-2. 네트워크 토폴로지와 병목현상
네트워크 토폴로지 : 노드와 링크가 어떻게 배치되어있는지에 대한 방식 (연결 형태)
- 트리 토폴로지
- 계층형 토폴로지라고도 하며 트리 형태로 배치
- 장점 : 노드의 추가, 삭제가 쉬움
- 단점 : 특정 노드에 트래픽이 집중될 때 하위 노드에 영향 끼칠 수 있음
- 버스 토폴로지
- 중앙 통신 회선 하나에 여러 노드가 연결되어 공유
- 근거리 통신망 (LAN)에서 사용
- 장점 : 설치 비용이 적고 신뢰성이 우수함, 중앙 통신 회선에 노드 추가 및 삭제가 쉬움
- 단점 : 스푸핑
스푸핑 : LAN상에서 송신부 패킷을 관련없는 다른 호스트에게 가지 않도록 하는 스위칭 기능 마비시키거나 속여서 특정 노드에 그 해당 패킷이 들어오도록 처리함.
스푸핑을 적용하면 올바른 수신부로 가야할 패킷이 악의적인 노드에 전달됨.
- 스타 토폴로지
- 중앙에 있는 노드에 모두 연결된 네트워크 구성
- 장점 : 노드를 추가하거나 에러 탐지가 쉬움, 패킷 충돌 가능성 낮음. 어떠한 노드에 장애가 발생해도 쉽게 에러 발견 가능. 장애 노드가 중앙 노드가 아니면 다른 노드에 거의 영향 X.
- 단점 : 중앙 노드 장애 발생시 전체 네트워크 사용 불가, 설치 비용 매우 비쌈.
- 링형 토폴로지
- 각각의 노드가 양 옆의 두 노드와 연결되서 전체적으로 한붓그리기 고리처럼 하나의 연속된 길을 통해 통신.
- 데이터는 노드 to 노드로 이동하며, 각각의 노드는 고리 모양의 길을 통해 패킷 처리.
- 장점 : 노드 수 증가해도 네트워크 손실 거의 없음. 충돌 발생 가능성 낮고 노드 고장 쉽게 찾을 수 있음.
- 단점 : 네트워크 구성 변경이 어렵고, 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼침.
- 메시 토폴로지
- 그물망처럼 연결되어있는 구조.
- 장점 : 한 단말장치에 장애가 발생해도 여러개의 경로가 존재하므로 네트워크를 계속 사용할 수 있고, 트래픽 분산 처리가 가능.
- 단점 : 노드 추가가 어렵고 비용과 운용 비용이 너무 비쌈.
병목 현상
병목 현상 (Bottleneck) : 전체 시스템의 성능이나 용량이 하나의 구성요소로 인해 제한 받는 현상. 병목현상이라 불리는 이유는 병의 몸통보다 병의 목이 좁아서 물이 상대적으로 느리게 흐르는 것과 같음. 병목현상은 이벤트 트래픽 많이 생기고 그 트래픽 처리 못하면 생김. 그래서 웹 사이트 접속 못하는 현상이 발생.
토폴로지가 중요한 이유는 병목현상을 찾을때 중요한 기준이 되기 때문!
1-3. 네트워크 분류
- LAN(Local Area Network) : 개인적으로 소유 가능한 소규모 네트워크
- 근거리 통신망. 좁은 공간에서 운영되며 전송속도가 빠르고 혼잡하지 않다.
- MAN(Metropolitan Area Network) : 시 규모의 네트워크
- 대도시 지역 네트워크(넓은 지역). 전송 속도 평균이며 LAN보다는 혼잡.
- WAN(Wide Area Network) : 세계 규모 네트워크
- 광역 네트워크(국가, 대륙 크기). 전송속도 느리고 가장 혼잡.
1-4. 네트워크 성능 분석 명령어
네트워크 병목현상 주 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
테스트를 진행하며 네트워크로 부터 발생한 문제점
임을 확인했으면 네트워크 성능 분석을 해야함. 이때 사용하는 명령어에 대해 알아보자.
ping (Packet INternet Groper)
- 네트워크 상태 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
- 이를 통해 해당 노드의 패킷 수신 상태와 도달하기까지 시간, 해당 노드까지 네트워크 잘 연결되어있는지 등 알 수 있음
- TCP/IP 프로토콜 중에서 ICMP 프로토콜을 통해 동작. 그렇기 때문에 ICMP 지원안하는 기기 대상으로는 실행 불가 or 네트워크 정책상 ICMP나 traceroute 차단하는 대상 경우 ping 테스트 불가
ping [IP 주소 or 도메인 주소]
ex)ping www.google.com -n 12
: -n 12 옵션으로 12번의 패킷을 보내고 받는다
netstat
- 접속되어있는 서비스들의 네트워크 상태를 표시하는데 사용
- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트 보여줌
- 주로 서비스 포트 열려있는지 확인할때 사용
nslookup
- DNS에 관련된 내용 확인에 사용
- 특정 도메인에 매핑된 IP 확인하기 위함
tracert
- 목적지 노드까지 네트워크 경로 확인할 때 사용
- 목적지 노드까지 구간들 중 어느 구간에서 응답시간 느려지는지 확인 가능
1-5. 네트워크 프로토콜 표준화
다른 장치들까지 데이터 주고받기 위해 설정된 공통 인터페이스. IEEE 또는 IETF에서 정함.
- IEEE802.3 : 유선 LAN 프로토콜. 이를 통해 만든 기업이 다른 장치들도 서로 데이터 송수신.
ex) 웹 접속 시 사용하는 HTTP. 서로 약속된 HTTP라는 인터페이스를 통해 노드들은 웹 서비스를 기반으로 데이터 주고받을 수 있다.
2. TCP/IP 4계층 모델
TCP/IP 4계층과 OSI 7계층 비교 및 대표 스택 (빨간색)
TCP/IP 계층은 4개를 가지고 있음. OSI 7계층은 애플리케이션 계층을 3개로 쪼개고 링크 계층을 데이터 링크 계층 + 물리 계층으로 나눠서 표현. 인터넷 계층을 네트워크 계층으로 부름.
이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 유연하게 설계되었다. ex) 전송계층에서 TCP가 UDP로 변경되었다고 해서 인터넷 웹 브라우저를 다시 설치해야하는 것은 아니다.
애플리케이션 계층 (Application Layer)
- 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층
- 응용 프로그램이 사용되는 프로토콜 계층 (FTP, HTTP, SSH, SMTP, DNS)
- FTP : 장치와 장치간 파일 전송시 사용하는 표준 통신 프로토콜
- SSH : 보안되지 않은 네트워크에서 네트워크 서비스 안전하게 운영하기 위한 암호화 프로토콜
- HTTP : World Wide Web (www) 위한 데이터 통신의 기초. 웹사이트 이용시 쓰는 프로토콜
- SMTP : 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
- DNS : 도메인 이름과 IP주소 매핑해주는 서버.
ex) www.naver.com에 DNS쿼리가 오면 ,
[Root DNS] => [.com DNS] => [.naver DNS] => [.www DNS]
과정을 거쳐 완벽한 주소를 찾아 IP 주소 매핑함. 예를 들어 www.naver.com IP주소가 222.111.222.111에서 222.111.222.122로 바뀌어도 똑같은 www.naver.com로 서비스 가능.
전송 계층 (Transport Layer)
- 송신자와 수신자를 연결하는 통신 서비스 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 제공할 수 있음
- 애플리케이션 - 인터넷 계층 사이의 데이터 전달될 때 중계 역할
- ex) TCP / UDP
TCP
- 패킷 순서 보장
- 연결지향 프로토콜 사용해서 연결
- 신뢰성 구축해서 수신 여부 확인
- 가상 회선 패킷 교환 방식 사용
UDP
- 순서 보장 X
- 수신 여부 확인 X
- 단순히 데이터만 주는 데이터그램 패킷 교환 방식 사용
가상 회선 패킷 교환 방식
각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착.
데이터그램 패킷 교환 방식
패킷이 독립적으로 이동하며 최적의 경로 선택하여 진행. 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있고 도착한 순서가 다를 수 있다.
TCP 연결 성립 과정
TCP는 신뢰성 확보하기 위해 3-Way-HandShake
라는 작업을 진행한다. 이 글 참고
1. SYN 단계
- 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보낸다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 장치마다 다를 수 있다.
2. SYN + AKC 단계
- 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN+1을 보낸다.
3. AKC 단계
- 클라이언트는 서버의 ISN+1 한 값인 승인번호를 담아 ACK를 서버에 보낸다.
이렇게 3-Way-HandShake 과정 이후 신뢰성이 구축되고 데이터 전송을 시작한다. 이 과정 덕분에 TCP는 신뢰성 있는 계층이라고 하고 UDP는 이 과정이 없어서 신뢰성이 없다.
*키워드 SYN : SYNchronization의 약자. 연결 요청 플래그 ACK : ACKnowledgement의 약자. 응답 플래그 ISN : Initial Sequence Numbers의 약어. 초기 네트워크 연결할 때 할당된 32비트 고유 시퀀스 번호
TCP 연결 해제 과정
-
- 먼저 클라이언트가 연결을 닫으려고 할 때
FIN
으로 설정된 세그먼트 보낸다. 그리고 클라이언트는FIN_WAIT_1
상태로 들어가고 서버의 응답을 기다린다.
- 먼저 클라이언트가 연결을 닫으려고 할 때
-
- 서버는 클라이언트로
ACK
라는 승인 세그먼트를 보낸다. 그리고CLOSE_WAIT
상태에 들어간다. 클라이언트가 세그먼트를 받으면FIN_WAIT_2
상태에 들어간다.
- 서버는 클라이언트로
-
- 서버는
ACK
를 보내고 일정 시간 이후 클라이언트에게FIN
이라는 세그먼트 보낸다.
- 서버는
-
- 클라이언트는
TIME_WAIT
상태가 되고 다시 서버로ACK
를 보내서 서버는CLOSED
상태가 된다. 이후 클라이언트는 어느정도 시간 대기한 후 연결 닫히고 클라이언트와 서버의 모든 자원 연결 해제된다. (CLOSED)
- 클라이언트는
Q. 왜 TIME_WAIT만큼 기다리다가 닫을까?
- 지연 패킷이 발생할 경우. 패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생한다.
- 두 장치가 연결이 닫혔는지 확인하기 위함. 만약 LAST_AKC 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 계속 LAST_ACK로 되어있기 때문에 접속 오류 발생.
보통 우분투에서 60초, 윈도우에서 4분정도로 설정되어있다.
인터넷 계층 (Intenet Layer)
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- IP, ARP, ICMP 등이 있고 패킷을 수신해야 할 상대의 주소를 지정해 데이터 전달
- 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적 특징
링크 계층
- 전선, 광섬유, 무선 등 실질적으로 데이터 전달하며 장치 간 신호 주고받는 규칙을 정하는 계층
- 데이터 링크 계층 + 물리 계층 으로 나누기도함
- 물리계층 : 무선LAN과 유선LAN을 통해 0과 1로 이루어진 데이터 보내는 계층
- 데이터 링크 계층 : “이더넷 프레임”을 통해 에러 확인, 흐름 제어, 접근 제어 담당
유선LAN(IEEE802.3)
유선LAN을 이루는 이더넷은 IEEE802.3 이라는 프로토콜 사용, 전이중화 통신을 사용.
-
전이중화 통신 (Full Duplex) : 양쪽 장치가 동시에 송수신 가능 송신로와 수신로로 나눠서 데이터 주고받음.
-
CSMA/CD : 데이터를 “보낸 이후” 충돌이 발생하면 일정 시간 이후 재전송하는 방식
유선LAN을 이루는 케이블
- 트위스트 페어 케이블 : 8개의 구리선을 두개씩 꼬아서 묶은 케이블
- 광섬유 케이블 : 레이저를 이용해 통신하기 때문에 매우 빠르고 장거리 통신 가능.
무선LAN(IEEE802.11)
수신과 송신에 같은 채널 사용. 반이중화 통신 사용. 반이중화 통신 (Half Duplex) : 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없다. 하나의 데이터를 받기 전까지 전송이 제한된다.
- CSMA/CS : 반이중화 통신 중 하나로 장치에서 데이터를 보내기 전까지 일련의 괒어을 기반으로 사전에 가능한 한 충돌을 방지하는 방식.
- 사용중인 채널이 있다면 다른 채널 감지하다가 유후상태인 채널 발견
- 프레임 간 공간 시간인 IFS 시간만큼 기다림.
- 프레임 보내기 전 0 ~ $2^k - 1$ 사이에서 결정된 랜덤 상수 기반의 결정된시간만큼 기다린 뒤 프레임 보냄. 프레임 보낸 뒤 제대로 송신되었고 ACK 세그먼트 받았다면 끝낸다. 그러나 받지 못했으면 k = k+1을 해서 이 과정 반복한다. 이 과정 반복하다가 $k_{max}$보다 커지면 해당 프레임 전송 버린다. (abort)
*전이중화 통신은 양방향 통신 가능해서 충돌 가능성이 없기 때문에 이런 메커니즘 필요없음.
무선 LAN 이루는 주파수
2.4GHz대역 or 5GHz 대역 중 하나로 구축.
- 2.4GHz
- 장점 : 장애물에 강함
- 단점 : 전자레인지, 무선 등 전파 간섭 일어나는 경우 많음
- 5GHz (일반적으로 선택함)
- 장점 : 사용할 수 있는 채널 수 많음, 동시에 사용 가능 -> 깨끗한 전파 환경
와이파이 (wifi)
- 전자기기들이 무선LAN 신호에 연결할 수 있게 하는 기술.
- AP(공유기)로 유선 LAN에 흐르는 신호를 무선 LAN으로 바꿔서 신호가 닿는 범위내에서 무선 인터넷 사용 가능.
- ex) 무선LAN기술 예시 : wifi, 지그비, 블루투스
BSS (Basic Service Set)
- 기본 서비스 집합, 단순 공유기를 통해 네트워크 접속이 아니라 동일 BSS내에 있는 AP 장치들과 장치들이 서로 통신 가능한 구조
- 근거리 무선 통신 제공, 하나의 AP만을 기반으로 구축되어 있음
- 사용자가 한 곳에서 다른곳으로 자유롭게 이동 가능, 네트워크에 접속은 불가능
ESS (Extended Service Set)
- 하나 이상의 연결된 BSS 그룹
- 장거리 무선 통신을 제공하며 BSS보다 더 많은 가용성과 이동성을 지원
- 사용자가 한 곳에서 다른 곳으로 이동하며 중단 없이 네트워크에 계속 연결가능
이더넷 프레임
데이터 링크 계층은 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화한다. 구조는 아래와 같다.
- Preamble : 이더넷 프레임 시작 알림
- SFD(Start Frame Delimeter) : 다음 바이트부터 MAC 주소 필드 시작됨을 표시
- DMAC, SMAC : 수신, 송신 MAC 주소
- EtherType : 데이터 계층 위의 계층인 IP 프로토콜 정의. ex) IPv4 or IPv6
- Payload : 전달받은 데이터
- CRC : 에러 확인 비트
*MAC : 컴퓨터나 노트북 각 장치에 네트워크 연결하기 위한 LAN카드가 있는데 이를 구별하기 위한 식별번호. 6Byte로 구성됨.
계층 간 데이터 송수신 과정
- 애플리케이션 계층에서 전송 계층으로 Request 값들이 캡슐화 과정을 거쳐 전달된다.
- 다시 링크 계층을 통해 해당 서버와 통신을 하고, 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화를 통해 데이터가 전송된다.
캡슐화 과정
상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 넣고, 해당 계층의 헤더를 덧붙임
비캡슐화 과정
하위 계층에서 상위계층으로 갈때 각 계층 헤더부분 제거
링그 계층부터 올라오면서
프레임
-> 패킷
-> 세그먼트
-> 메시지
로 비캡슐화된다. 최종적으로 사용자에게는 애플리케이션의 PDU인 메시지로 전달된다.
2-2. PDU (Protocol Data Unit)
- 네트워크의 계층 to 계층으로 데이터가 전달될 때의 한 덩어리
- 구성요소
- Header : 제어 관련 정보들이 포함됨
- Payload : 데이터를 의미
- 애플리케이션 계층 : 메시지
- **전송 계층 **: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층 : 패킷
- **링크 계층 **: 프레임(데이터 링크 계층), 비트(물리계층)
이 사이트 에서 curl 명령어로 www.naver.com으로 HTTP 요청해서 PDU 테스트를 해보자.
출력 결과
1
2
3
4
5
6
7
8
9
10
11
12
13
Content-Type: text/html; charset=UTF-8
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
x-frame-options: DENY
x-xss-protection: 1; mode=block
strict-transport-security: max-age=63072000; includeSubdomains
referrer-policy: unsafe-url
Content-Encoding: gzip
Server: nfront
Content-Length: 41653
Date: Thu, 20 Mar 2025 17:22:05 GMT
Connection: keep-alive
Vary: Accept-Encoding
3. 네트워크 기기
3-1. 네트워크 기기 처리 범위
상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 반대로는 불가능
- 애플리케이션 계층 : L7 스위치
- 인터넷 계층 : 라우터, L3 스위치
- 데이터 링크 계층 : L2 스위치, 브리지
- 물리 계층 : NIC, 리피터, AP
3-2. 애플리케이션 계층 처리하는 기기
L7 스위치
- 스위치는 여러 장비 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호 보내서 데이터 전송
- 로드 밸런서 라고도 하며, 서버의 부하를 분산하는 기기
- 클라이언트로부터 오는 Request들을 뒤쪽의 여러 서버로 나누는 역할, 시스템이 처리할 수 있는 트래픽 증가를 목표로 함
- URL, 서버, 캐시, 쿠키 기반으로 트래픽 분산
- 바이러스, 불필요한 외부 데이터 걸러내는 필터링 기능
- 응용프로그램 수준의 트래픽 모니터링 가능
- 만약 장애가 발생한 서버가 있다면 이는 트래픽 분산 대상에서 제외해야 하는데, 정기적인 health check를 이용해서 감시
L4 스위치 vs L7 스위치
-
L4 스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용 불가. 메시지를 기반으로 인식하지 못하고 IP와 포트 기반 (주로 포트 기반) 트래픽 분산한다.
-
L7 스위치는 IP, 포트 이외에도 URL, HTTP헤더, 쿠키 등을 기반으로 트래픽 분산
-
AWS에서는 L7스위치 기반 로드밸런싱은 ALB컴포넌트로, L4스위치 기반 로드밸런싱은 NLB 컴포넌트로 한다.
헬스 체크 (Health Check)
- 서버가 정상인지 비정상인지 판별하기 위해 헬스체크함. 전송 주기와 재전송 횟수를 설정한 뒤 반복적으로 서버에 요청을 보냄 (서버가 부하되지 않을 만큼).
- TCP, HTTP 등 다양한 방법을 요청을 보내며, 이 요청이 정상적으로 이루어졌다면 정상이라고 판별. ex) TCP 요청시 3-way-handshake 일어나지 않으면 정상이 아니라는 뜻
로드 밸런서를 이용한 서버 이중화
로드 밸런서는 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다.
3-3. 인터넷 계층을 처리하는 기기
라우터
- 여러개의 네트워크를 연결, 분할, 구분시켜줌
- 다른 네트워크에 존재하는 장치끼리 서로 데이터 주고받을 때 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩
L3 스위칭
- L2스위치의 기능과 라우팅 기능을 갖춘 장비. 라우터라고 해도 무방함
- 하드웨어 기반의 라우팅을 담당
3-4. 데이터 링크 계층을 처리하는 기기
L2 스위치
- 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킹 전송을 담당
- IP 주소를 이해하지 못해 IP 주소 기반 라우팅은 불가능, 단순히 MAC 주소를 읽어 스위칭 하는 역할
- 목적지가 MAC 주소테이블에 없다면 전체 포트에 전달하고 MAC 주소테이블 주소는 일정시간 이후 삭제하는 기능도 있다.
브리지 (Bridge)
- 두개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
- 포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC주소를 MAC 주소 테이블로 관리
- 통신망 범위 확장하고 서로 다른 LAN 등으로 이루어진 “하나의” 통신망을 구축할 때 사용
3-5. 물리 계층을 처리하는 기기
NIC (Network Interface Card)
- LAN 카드라고 하는 네트워크 인터페이스 카드는 2대 이상의 컴퓨터 네트워크를 구성하는데 사용됨
- 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
- 각 LAN 카드에는 고유 식별번호인 MAC 주소가 있다
리피터 (Repeater)
- 리피터로 들어오는 약해진 신호 정도를 증폭해서 다른쪽으로 전달
AP (Access Point)
- 패킷을 복사하는 기기
- AP에 유선LAN 연결한 후 다른 장치에서 무선 LAN 사용해서 무선 네트워크 사용 가능
4. IP 주소
4-1. ARP
장치 A가 ARP Request 브로드캐스트를 보내 IP 주소인 100.10.10.1 (예시)에 해당하는 MAC 주소를 찾는다. 그 후 해당 MAC 주소에 맞는 장치 B가 ARP Reply 유니캐스트를 통해 MAC주소를 반환하는 과정을 거쳐 IP주소에 맞는 MAC 주소를 찾게 된다.
* 브로드 캐스트 : 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송
* 유니캐스트 : 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터 전송
4-2 홉바이홉 통신 (hop by hop)
- IP 주소를 통해 통신하는 과정, 통신망에서 각 패킷이 여러개의 라우터를 건너가는 모습을 표현함
- 수많은 서브네트워크 안에 있는 라우터의 라우팅테이블 IP를 기반으로 패킷을 전달해나가며 라우팅을 수행해서 최종 목적지까지 패킷 전달
- 통신 장치에 있는 “라우팅 테이블“의 IP를 통해 시작주소에서 시작해서 다음 IP로 이동하는 “라우팅” 과정 거쳐서 패킷이 최종 목적지에 도달
라우팅 테이블
- 라우터에 들어가있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어있는 리스트
- 송신지에서 수신지까지 도달하기 위해 사용됨
- 게이트웨이와 모든 목적지에 대해 해당 목적지 도달하기위해 거쳐야 할 다음 라우터 정보를 가짐
게이트웨이
- 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할하는 컴퓨터/소프트웨어
- 사용자는 인터넷 접속하기 위해 수많은 게이트웨이를 거쳐야하고, 게이트웨이는 서로 다른 네트워크 상의 통신 프로토콜 변환해주기도 함
- 라우팅테이블 예시)
netstat -r
4-3 IP 주소체계
- IPv4 : 32비트를 8비트 단위로 .을 찍어 표기,
123.45.67.89
같은 방식 - IPv6 : 64비트를 16비트 단위로 .을 찍어 표기,
2001:db8:ff00:8329
같은 방식
클래스 기반 할당 방식 (Classful Network Addressing)
클래스 A, B, C 는 일대일 통신으로 사용됨. 클래스 D는 멀티캐스트 통신, 클래스 E는 앞으로 사용할 예비용.
- 클래스 A 범위 :
0.0.0.0
~127.255.255.255
00000000.00000000.00000000.00000000
~01111111.1011111.1111111.11111111
- 클래스 B 범위 :
128.0.0.0
~191.255.255.255
10000000.00000000.00000000.00000000
~1011111.1011111.1111111.11111111
- 클래스 C 범위 :
192.0.0.0
~223.255.255.255
11000000.00000000.00000000.00000000
~11011111.1011111.1111111.11111111
맨 왼쪽 비트 : 구분 비트
- 클래스 A는 0, 클래스 B는 10, 클래스 C는 110
네트워크 첫 번째 주소는 네트워크 주소로 사용되고 가장 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해있는 모든 컴퓨터에 데이터 보낼 때 사용됨
이 방식은 사용하는 주소보다 버리는 주소가 많은 단점이 있음. 이를 해소하기 위해 DHCP와 IPv6, NAT가 생김.
DHCP (Dynamic Host Configuration Protocol)
- IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷 접속할 때 마다 자동으로 IP 주소 할당
- 많은 라우터와 게이트웨이 장비에 DHCP기능 있기 때문에 대부분의 가정용 네트워크에서 IP주소 할당
NAT (Network Address Translation)
- 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법
- IPv4 주소체계만으로는 많은 주소 감당하지 못하는 단점 있지만, NAT로 공인 IP와 사설 IP로 나눠서 많은 주소 처리
사설IP를 NAT장치를 통해 공인 IP로 외부 인터넷에 요청할 수 있다. 이를 통해 A, B, C, D 는 1개의 공인 IP를 기반으로 각각 다른 IP를 가지는것처럼 사용 가능.
공유기와 NAT
- NAT 쓰는 이유 : 여러대의 호스트가 하나의 공인 IP 주소를 사용해서 인터넷 접속하기 위해서 ex) 인터넷 회선 하나 개통하고 인터넷 공유기 달아서 여러 PC 사용할 수 있는 이유는 인터넷 공유기에 NAT기능이 있기 때문
NAT를 이용한 보안
- NAT로 내부 네트워크에서 사용하는 IP주소와 외부에 드러나는 IP주소를 다르게 유지할 수 있기 때문에 어느정도 보안 가능
NAT 단점
- 여러명이 동시에 인터넷 접속하게 되므로 실제 접속하는 호스트 숫자에 따라 접속 속도가 느려질 수 있다.
4-4. IP주소를 이용한 위치 정보
IP주소는 인터넷에서 사용하는 네트워크 주소이기 때문에 위치추적 가능하다. 이 사이트에서 위치를 찾아볼 수 있다.
서울대입구역 근처에 거주중인데 나름 IP만으로 비슷하게 찾은것을 볼 수 있다. 한 정거장 정도 차이가 난다.
5. HTTP
HTTP : 전송 계층 위의 애플리케이션 계층으로서 웹 서비스 통신에 사용됨
5-1. HTTP/1.0
- 한 연결당 하나의 요청을 처리하도록 설계됨
- RTT 증가를 불러오게 됨
RTT 증가
- 서버로부터 파일을 가져올 때마다 TCP의 3-way-handshake를 계속 열어야해서 RTT가 증가하는 단점이 있음
RTT의 증가를 해결하기 위한 방법
매번 연결할때마다 RTT 증가하니 서버 부담이 많이가고, 사용자 응답시간이 길어졌다. 그래서 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하곤 했다.
-
이미지 스플리팅
많은 이미지 다운받으면 과부하 걸리기 때문에 많은 이미지가 합쳐져있는 하나의 이미지를 다운받고 이를 기반으로 background-image의 position을 이용해서 이미지 표기
-
코드 압축
코드를 압축해서 개행 문자, 빈칸 없애서 코드의 크기 최소화
-
이미지 Base64 인코딩
이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법. 장점 : 서버와의 연결을 열고 이미지에 대해 서버에 HTTP요청을 할 필요가 없다 단점 : Base64 문자열로 변환시 37% 정도 크기가 더 커진다
5-2. HTTP/1.1
- 매번 TCP 연결 하는게 아니라 한번 TCP 초기화한 이후 keep-alive 옵션으로 여러개의 파일을 송수신할 수 있다.
- 단점은 문서안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해서 대기시간이 길어진다는 점이다
HOL Blocking (Head Of Line Blocking)
- 네트워크에서 같은 큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될 때 성능저하 발생 ex) 맨 처음 패킷 매우 큰 이미지 있어서 느리게 다운받아지면 그 뒤에 있는것들 대기해서 다운로드 지연됨
무거운 헤더구조
- HTTP/1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어있고 압축이 되지 않아 무겁다
5-3. HTTP/2
- SPDY 프로토콜에서 파생된 HTTP/1.x보다 지연시간 줄이고 응답시간 더 빠르게 하고, 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리 지원하는 프로토콜
멀티플렉싱
- 여러개의 스트림 사용하여 송수신
- 특정 스트림 손상돼도 해당 스트림만 영향받지 다른 스트림들은 멀쩡함
헤더 압축
- 허프만 코딩 압축 알고리즘으로 HPACK 압축형식을 가짐
허프만 코딩 : 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도 높은 정보는 적은 비트수 사용해서 표현, 빈도 낮은 정보는 비트 수 많이 사용해서 표현 -> 전체 데이터 표현에 필요한 비트양 줄이기
서버 푸시
5-4. HTTPS
- HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청
- 이 방법으로 통신을 암호화함
SSL (Secure Socket Layer) /TLS (Transport Layer Security Protocol)
- 전송 계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제 3자 메시지 도청 및 변조 방지
- 공격자가 서버인 척 하며 사용자 정보 가로채는 “인터셉터” 방지 가능
- 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘 사용
보안 세션
- 보안이 시작되고 끝나는동안 유지되는 세션. SSL/TLS 는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보등을 공유함
HTTPS 구축방법
- 직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
- 서버 앞단에 HTTPS를 제공하는 로드밸런서 두기
- 서버 앞단에 HTTPS 제공하는 CDN 둬서 구축
5-5. HTTP/3
- World Wide Web에서 정보를 교환하는데 사용되는 HTTP의 세번째 버전
- TCP 위에서 돌아가는 HTTP/2와 달리 QUIC라는 계층 위에서 돌아감
- UDP기반으로 돌아감
- 장점 : HTTP/2의 장점인 멀티플렉싱도 가지고있으면서 초기 연결 설정시 지연 시간 감소
초기 연결 설정 시 지연 시간 감소
QUIC는 TCP를 사용하지 않기 때문에 통신 시작할 때 번거로운 3-Way-HandShake 과정 거치지 않음
QUIC는 첫 연결 설정에 1-RTT만 소요된다. 클라이언트가 서버에 어떤 신호를 한 번 주고, 서버도 거기에 응답만 하면 바로 본 통신 시작 가능하다.
QUIC는 순방향 오류 수정 메커니즘이 적용되었다. 이는 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식이며 열악한 네트워크 환경에서도 패킷 손실률이 낮다.
References