컴퓨터들이 통신 기술을 이용하여 구축하는 연결망
좋은 네트워크 조건 : 많은 처리량, 짧은 지연 시간, 적은 장애 빈도, 좋은 보안 갖춤
링크를 통해 전달되는 단위 시간당 데이터 양 (bfs)
요청이 처리되는 시간
트리 토폴로지
- 계층형 토폴로지
- 트리 형태로 배치한 네트워크 구성
장) 노드의 추가, 삭제가 쉬움
단) 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음버스 토폴로지
- 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성
- 근거리 통신망(LAN)에서 사용
장) 설치 비용이 적고 신뢰성이 우수하며 노드를 추가하거나 삭제하기 쉬움
단) 스푸핑이 가능한 문제점스푸핑
스위칭 기능(송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 함)을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것
스타 토폴로지
- 중앙에 있는 노드에 모두 연결된 네트워크 구성
장) 노드 추가와 에러 탐지가 쉽고 패킷의 충돌 발생 가능성이 적음
단) 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가링형 토폴로지
- 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신하는 망 구성 방식
장) 노드 수가 증가되어도 네트워크상의 손실이 거의 없고, 충돌 발생 가능성이 적으며, 노드의 고장 발견이 쉬움
단) 네트워크 구성 변경이 어렵고, 회선에 장애 발생 시 전체 네트워크에 영향메시 토폴로지
- 망형 토폴로지
- 그물망처럼 연결되어 있는 구조
장) 장애 발생 시 여러 개의 경로가 존재하므로 네트워크를 계속 사용 가능하고, 트래픽 분산 처리 가능
단) 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가
규모를 기반으로 분류
항목 | LAN | MAN | WAN |
---|---|---|---|
규모 | 근거리 | 대도시 지역 | 광역 |
전송 속도 | 고속 | 평균 | 저속 |
네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어
접속되어 있는 서비스들의 네트워크 상태 표시
도메인에 매핑된 IP 확인
목적 노드까지 네트워크 경로 확인
네트워크 프로토콜
이란 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스입니다.
이를 통해 다른 장치라도 서로 데이터를 주고 받을 수 있습니다. 예를 들어 웹에 접속할 때 쓰이는 프로토콜로 HTTP가 있습니다.
OSI 7계층
은 인터넷 환경에서 통신하기 위해 네트워킹에 대한 표준을 7계층으로 나눈 것입니다. 크게 7계층이 있는데요 물리 계층, 데이터링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 그리고 응용 계층이 있습니다. 문제가 발생했을 때 계층을 통한 문제 발생 지점과 해당 계층 문제 해결을 통해 문제를 해결할 수 있다는 이점이 있습니다.
특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계됨
응용 프로그램이 사용되는 프로토콜 계층
DNS
DNS
는 도메인 주소를 IP 주소로 변환해주는 시스템입니다. DNS는 다음과 같은 순서로 작동하게 되는데요. 첫번째로는 URL을 입력하면, ISP가 관리하는 DNS 해석기에 요청을 라우팅 시킵니다. 그 다음에 DNS 해석기가 루트 서버에 top-level의 서버 주소를 요청하구요. 그 다음에 second-level, sub DNS server. 이렇게 해서 최종적으로 IP 주소를 얻게 됩니다.
송신자와 수신자를 연결하는 통신 서비스를 제공
TCP | UDP |
---|---|
패킷 순서 보장 | 패킷 순서 보장 X |
연결을 통한 신뢰성 구축 | 연결 X |
수신 여부 확인 | 수신 여부 미확인 |
가상회선 패킷 교환 방식 | 데이터그램 패킷 교환 방식 |
가상회선 패킷 교환 방식
각 패킷은 식별자를 통해 하나의 가상 회선으로만 이동하며 모든 패킷을 전송하면 가상회선이 해제되고 전송된 순서대로 도착하는 방식
데이터그램 패킷 교환 방식
패킷이 독립적으로 최적의 경로를 선택해 이동, 순서가 다를 수 있음
3-Way Handshake
TCP 연결을 할 때 사용하는 작업 (1. 계세요? 2. 있습니다 3. 네 보냅니다)
1. SYN(SYNchronization, 연결 요청 플래그) 단계 : 클라이언트가 서버에 클라이언트 ISN을 담아 SYN 전송
2. SYN+ACK 단계 : 서버는 클라이언트의 SYN을 받고, 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN+1을 전송
3. ACK(ACKnowledgement, 응답 플래그) 단계 : 클라이언트는 서버의 ISN응 받고, 서버의 ISN+1한 승인번호를 담아 ACK를 서버에 전송4-Way Handshake
TCP 연결을 해제할 때 사용하는 작업 (1. 끊어도 돼요? 2. 잠시만요 3. 네 끊으세요 4. 끊습니다)
1. 클라이언트는 서버로 FIN을 보내고 FIN_WAIT_1 상태로 변함
2. 서버는 ACK을 보내고 CLOSE_WAIT 상태로 변경, 클라이언트는 FIN_WAIT_2 상태로 변경
3. 잠시 후에 클라이언트에 FIN 전송
4. 클라이언트 TIME_WAIT 상태가 되고 서버로 ACK 전송, 서버 CLOSED 상태 변경, 잠시 후에 연결이 닫히고 클라이언트와 서버의 연결 해제TIME_WAIT이 있는 이유
- 지연 패킷이 있는 경우 데이터 무결성 문제 발생
- 두 장치가 연결이 닫혔는지 확인하기 위함
장치로부터 받은 패킷을 지정된 IP주소로 전송하기 위해 사용하는 계층
전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달
애플리케이션 계층에서 하위 계층으로 캡슐화 과정을 거쳐 전달하고, 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터 전송
캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
계층 간 데이터가 전달될 때 덩어리의 단위
계층 | 명칭 |
---|---|
애플리케이션 계층 | 메시지 |
전송 계층 | TCP(세그먼트) UDP(데이터그램) |
인터넷 계층 | 패킷 |
링크 계층 | 데이터링크계층(프레임) 물리계층(비트) |
네트워크
는 여러 개의 네트워크 기기
를 기반으로 구축
네트워크 기기
는 계층별로 처리 범위를 나눌 수 있음애플리케이션 계층 : L7 스위치
인터넷 계층 : 라우터, L3 스위치
데이터 링크 계층 : 브리지, L2 스위치
물리 계층 : NIC, 리피터, AP
서버의 부하를 분산시켜주는 시스템입니다. 크게 L4 로드밸런서와, L7 로드밸런서가 있는데요. L4 로드밸런서는 4계층 이하의 정보를 가지고 로드를 분산해줍니다. 특히 MAC주소, IP주소, 포트정보를 가지고 트래픽을 분산해주고요. L7 로드밸런서는 응용 계층의 정보를 가지고 로드를 분산해줘요. 패킷 내용을 확인하고 분산해서 DDos 같은 비정상적인 트래픽도 필터링할 수 있습니다. 이를 활용하여 서비스를 안정적으로 운용하게 해주는 서버 이중화도 가능합니다.
반복적으로 서버에 요청을 보내어 정상적인 서버 또는 비정상적인 서버를 판별
라우터, L3 스위치
L2 스위치, 브리지
NIC, 리피터, AP
IP
는 Internet Protocol의 약자로 인터넷 망을 통해 패킷을 전달하는 프로토콜입니다. 비연결성과 비신뢰성의 특징을 가지는데요. 비연결성은 패킷을 보내는 길을 정하지 않는 것이고, 비신뢰성은 패킷의 완전한 전달을 보장하지 않는 것입니다.
IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜
라우팅
은 IP 주소를 찾아가는 과정
IPv4, IPv6
왜 사용할까?
NAT에 대한 참고 자료 (https://run-it.tistory.com/24)
RTT
는 패킷 왕복 시간을 의미한다.
이미지 스플리팅
이미지가 합쳐 있는 하나의 이미지를 다운로드 받고, background-image의 position을 이용하여 이미지를 표기
코드 압축
코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기(용량)를 최소화
이미지 Base64 인코딩
이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법
(매번 TCP 연결을 하는 것이 아니라) 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신
네트워크에서 같은 큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
헤더에 많은 메타데이터가 들어 있고 압축이 되지 않아 무거움
HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있습니다.
여러 개의 스트림을 사용하여 송수신
허프만 알고리즘을 사용하는 HPACK 압축 형식
허프만 코딩
은 텍스트 압축을 위해 널리 사용되는 방법으로, 자주 출현하는 문자는 적은 비트의 코드로 변환하여 표현하고 출현 빈도가 낮은 문자는 많은 비트의 코드로 변환하여 표현해서 전체 데이터 표현에 필요한 비트 양을 줄이는 방식서버 푸시
클라이언트 요청 없이 서버가 바로 리소스를 푸시
ex) html을 읽으면서 그 안에 들어 있던 css 파일을 서버에서 푸시하여 클라이언트에 먼저 전송
애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 (통신을 암호화)
전송 계층에서 보안을 제공하는 프로토콜
SEO
(Search Engine Optimization)는 검색엔진 최적화를 의미하며, HTTPS 구축, 캐노니컬 설정, 메타 설정, 페이지 속도 개선, 사이트맵 관리 등을 통해
TCP 기반이 아닌 UDP 기반으로 돌아간다.
QUIC은
순방향 오류 수정 메커니즘
이 적용.
전송한 패킷이 손상되었다면 수신 측에서 에러를 검출하고 수정하는 방식이며 열약한 네트워크 환경에서도 낮은 패킷 손실률.