2.1 네트워크의 기초
- 노드와 링크가 서로 연결되어 있거나 연결되어잇으며 리소스르 공유하는 집합
- 노드란 서버, 라우터, 스위치 등의 네트워크 장치
- 링크는 유선 또는 무선으로 연결된 상태
2.1.1 처리량과 지연 시간
- 좋은 네트워크는 많은 처리량을 소화할 수 있으며 지연 시간이 짧고 장애 빈도가 적은 네트워크를 의미
처리량 (throughput)
- 링크를 통해 전달되는 단위 시간당 데이터의 양
- bits per second를 단위로 사용
지연 시간 (latency)
- 요청이 처리되기까지의 소요 시간
- 패킷의 크기, 라우터의 패킷 처리 시간에 영향
2.1.2 네트워크 토폴로지와 병목 현상
- 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태
- 트리 토폴로지
- 계층형 토폴로지
- 트리 형태로 구성
- 노드의 추가, 삭제가 용이
- 특정 노드에 트래픽이 집중될 때 하위노드에 영향을 끼칠 수 있음
- 버스 토폴로지
- 중앙 통신 회선 하나에 여러 개의 노드가 연결
- 근거리 통신망(LAN)에서 사용
- 설치 비용이 적고 신뢰성이 우수
- 스푸핑이 가능
스푸핑이란 LAN 상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것
- 스타 토폴로지
- 중앙에 있는 노드에 다른 노드가 모두 연결된 구성
- 노드 추가 용이
- 에러 탐지 용이
- 장애 노드가 중앙 노드가 아닐 경우 다른 노드에 영향 없음
- 중앙 노드에 장애가 발생하면 네트워크 전체에 문제 발생
- 패킷 충돌 발생 가능성 적음
- 링형 토폴로지
- 각각의 노드가 양 옆의 두 노드와 연결하여 하나의 고리처럼 구성
- 노드 수가 증가되어도 네트워크 상의 손실이 거의 없음
- 충돌 발생 가능성 적음
- 노드의 고장을 쉽게 발견할 수 있음
- 네트워크의 구성 변경이 어렵다.
- 메시 토폴로지
- 그물망처럼 연결
- 링형 토폴로지의 확장 형태
- 한 노드에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크 사용 가능
- 트래픽 분산 가능
- 노드의 추가가 어렵고 구축 및 운용 비용이 고가
- 병목 현상
- 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
- 네트워크의 토폴로지를 파악해야 병목 현상을 올바르게 해결할 수 있음
2.1.3 네트워크 분류
- 규모 기반의 분류
- LAN (Local Area Network) : 사무실 또는 개인적으로 구축 가능한 수준
- MAN (Metropolitan Area Network) : 도시 정도의 규모
- WAN (Wide Area Network) : 세계 규모
2.1.4 네트워크 성능 분석 명령어
- 어플리케이션의 코드 상 문제는 없으나 사용자가 서비스로부터 데이터를 가져오지 못하는 상황
- 네트워크 병목 현상일 가능성 존재
- 병목 현상의 주 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- ping (Packt Internet Groper)
- 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송
- 대상 노드의 패킷 수신 상태와 도달하기 까지 시간 등을 알 수 있음
- ICMP 프로토콜을 통해 동작
- ICMP 프로토콜을 지원하지 않는 기기나 ICMP가 차단된 네트워크에서는 사용 불가
ping [IP address or domain]
- netstat
- 접속되어 잇는 서비스들의 네트워크 상태를 표시하는데 사용
- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트 출력
- 주로 서비스의 포트가 열려 있는지 확인할 때 사용
- nslookup
- DNS에 관련된 내용을 확인하기 위해 사용
- 특정 도메인에 맵핑된 IP를 확인
- tracert
- 목적지 노드까지 네트워크 경로를 확인할 때 사용
- 어느 구간에서 응답 시간이 느려지는 확인 가능
2.1.5 네트워크 프로토콜 표준화
- 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스
- IEEE 또는 IETF 같은 표준화 단체에서 정의
2.2 TCP/IP 4계층 모델
- TCP/IP 4계층 모델 / OSI 7계층 모델
| 애플리케이션 계층 | 애플리케이션 계층 | | — | — | | | 프레젠테이션 계층 | | | 세션 계층 | | 전송 계층 | 전송 계층 | | 인터넷 계층 | 네트워크 계층 | | 링크 계층 | 데이터 링크 계층 | | | 물리 계층 |
- 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계
- TCP/IP 4계층 모델 위주로 설명
2.2.1 계층 구조
- 애플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS
- 응용 프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사용자에게 제공하는 계층
- 전송 계층
- TCP, UDP
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공
- 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할
- 가상 회선 패킷 교환 방식
- 각 패킷에 가상회선 식별자가 포함
- 모든 패킷을 전송하면 가상회선이 해제
- 패킷들은 전송된 순서대로 도착
- 데이터그램 패킷 교환 방식
- 패킷이 독립적으로 이동하며 최적의 경로를 선택
- 각 패킷은 도착한 순서가 다를 수 있음
- TCP 연결 성립 과정
- 연결 신뢰성 확보를 위해 3-way handshake 작업 수행
- SYN 단계
- 클라이언트는 서버에 ISN을 담아 SYN을 전송
- ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호 2. SYN + ACK 단계
- 서버는 SYN을 수신하고 서버의 ISN을 클라이언트로 전송
- 승인번호로 클라이언트의 ISN + 1을 전송 3. ACK 단계
- 클라이언트는 서버의 ISN + 1 값인 승인번호를 담아 ACK를 전송
- 연결 신뢰성 확보를 위해 3-way handshake 작업 수행
- TCP 연결 해제 과정
- 연결 해제는 4-way handshake 과정을 수행
- FIN from client
- FIN으로 설정된 세그먼트 전송
- 클라이언트는 FIN_WAIT_1 상태에서 서버의 응답 대기 2. ACK
- 서버는 클라이언트로 ACK라는 승인 세그먼트를 전송
- CLOSE_WAIT 상태
- 클라이언트는 ACK를 받으면 FIN_WAIT_2 상태 3. FIN from server
- 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN 세그먼트 전송 4. ACK from client
- 클라이언트는 TIME_WAIT 상태
- 다시 서버로 ACK를 전송
- 서버는 CLOSED 상태
- 이후 클라이언트는 일정 시간 대기후 연결이 닫히고 모든 자원의 연결 해제
- 왜 클라이언트는 TIME_WAIT 상태에서 일정 시간 후에 연결을 해제할까?
- 지연 패킷이 발생할 경우를 대비
- 두 장치가 연결이 닫혔는지 확인하기 위함
- 연결 해제는 4-way handshake 과정을 수행
- 인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송
- 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결적 특징
- 링크 계층
- 실질적으로 데이터를 전달하는 장치 간에 신호를 주고 받는 규칙을 정하는 계층
- 물리 계층과 데이터 링크 계층으로 나누기도 함
- 유선 LAN (IEEE802.3)
- 전이중화 통신
- 양쪽 장치가 동시에 송수신할 수 있는 방식
- 송신로와 수신로로 나눠서 데이터를 송수신
- TP 케이블
- twisted pair cable
- 8개의 구리선을 두개씩 꼬아서 묶은 케이블
- 구리선을 실드처리하지 않고 덮은 UTP, 실드 처리한 STP
- 흔히 말하는 LAN 케이블은 UTP 케이블
- LAN 케이블을 꽂을 수 있는 커넥터를 RJ-45
- 광섬유 케이블
- 레이저를 이용해서 통신하므로 고속 통신이 가능
- 전이중화 통신
- 무선 LAN (IEEE802.11)
- 송수신이 같은 채널을 사용하기 때문에 반이중화 통신 사용
- 반 이중화 통신
- 양쪽 장치가 동시에 통신할 수 없음
- CSMA/CD
- 데이터를 보내기 전에 캐리어 감지 등으로 충돌 방지
- 데이터를 송신하기 전에 무선 매체를 탐지
- 캐리어 감지 : 회선이 비어 있는지 판단
- IFS(Inter FrameSapce) : 랜덤 값을 기반으로 정해진 시간만큼 대기, 채널이 사용 중이면 점차 그 시간을 증가하며 대기
- 이후에 데이터를 송신
- 데이터를 보내기 전에 캐리어 감지 등으로 충돌 방지
- 무선 LAN을 이루는 주파수
- 2.4GHz 또는 5GHz
- 와이파이
- 대표적인 무선 LAN 기술
- 무선 접속 장치 (Access Point)가 필요, 흔히 공유기
- BSS (Basic Service Set)
- 기본 서비스 집합
- 단순 공유기를 통해 네트워크에 접속하는 것이 아닌 동일 BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조
- ESS (Extended Service Set)
- ESS는 여러 무선 네트워크의 연결을 의미
- 다른 BSS에서 또다른 BSS로 이동 가능
- 이더넷 프레임
- Preamble : 이더넷 프레임의 시작을 알림
- SFD (Start Frame Delimiter) : 다음 바이트부터 MAC 주소 필드가 시작
- DMAC SMAC : 수신 송신 MAC 주소
- EtherType : 데이터 계층 위의 IP 프로토콜을 정의
- Payload : 전달 받은 데이터
- CRC : 에러 확인 비트
- 계층 간 데이터 송수신 과정
- 캡슐화 과정
- 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함하고 해당 계층의 헤더를 삽입하는 과정
- 비캡슐화 과정
- 하위 계층에서 상위 계층으로 가며 헤더 부분을 제거하는 과정
- 캡슐화 과정
2.2.2 PDU
- PDU (Protocal Data Unit)
- 계층에서 계층으로 데이터가 전달될 때 한 단위를 PDU라고 함
- 제어 관련 정보들이 포함된 헤더, 데이터를 의미하는 페이로드로 구성
- 각 계층마다 부르는 명칭이 다름
- 애플리케이션 계층 : 메시지
- 전송 계층 : 세그먼트, 데이터그램
- 인터넷 계층 : 패킷
- 링크 계층 : 프레임, 비트