네트워크(Network)란?
컴퓨터나 다른 장치들이 상호 연결되어 데이터를 주고받을 수 있는 구조다. 네트워크는 자원 공유, 통신, 연결성, 자동화를 하기 위해 탄생했다.
패킷(Packet)이란?
데이터 통신에서 정보를 전송하는 데 사용하는 단위다. 네트워크를 통해 데이터를 주고 받을 때 데이터는 패킷으로 분할되어 전송하며, 수신자는 패킷을 조합하여 데이터를 받는 다. 각 각 암호화 복호화로 통칭한다.
패킷은 헤더와 페이로드 또는 헤드와 페이로드, 트레일러로 구성되어 있다.
헤더 : 송신자와 수신자의 주소, 데이터 유형, 전송 순서, 오류 검출 코드 등이 포함한다.
페이로드 : 실제 전송되는 데이터이다.
*트레일러 : 오류 검출을 위한 코드나 체크섬을 포함한다. 패킷의 오류 검출 코드와의 차이는 위치이며 헤더의 오류 검출 코드는 헤더 부분의 오류 감지, 트레일러의 오류검출 코드는 전체 패킷의 오류를 감지해 무결성을 보장한다.
OSI(Open Systems Interconnection) 7계층이란?
컴퓨터 네트워크의 설계와 통신을 나타내기 위한 참조 모델!
통신 과정을 단계별로 분리하여 복잡성을 줄이고, 계층 간 인터페이스의 상호작용을 편하게 나타낼 수 있다.
OSI 7계층은 물-데-네-전-세-표-응으로 구성되어 있다.
물리 계층
데이터를 전송하는 데 물리적인 매체와 관한 특성을 다룬다.
케이블이나 전기같은 물리적 성질과 연결 방식, 전송 속도같은 비물리적 성질을 다룬다.
데이터를 전기적 신호를 변환, 물리적인 매체로 전송한다.
주로 이더넷, USB, WI-FI 등의 인터페이스 등이 여기에 구성되어 있다.
전송률 : 실제 단위 시간 당 전달되는 데이터 양, bps로 표시
대역폭 : 물리적을 네트워크에서 전달 가능한 최대 데이터 양을 의미, bps로 표시
*bps : 초당 비트 단위
데이터 링크 계층
인접한 네트워크 장치 간의 직접적인 통신을 다룬다.
프레임으로 데이터를 분할하고, 오류 검출 및 수정, 논리적인 주소 할당, 흐름 제어, 접근 제어 등의 기능을 수행한다.
프레이밍 : 데이터를 프레임이라는 작은 단위로 나누어 전송
프레임 : 데이터 링크 계층에서 사용되는 데이터의 전송 단위, 패킷 앞에 프레임 시작 신호(Frame Start Delimiter, FSD)라는 비트 패턴을 추가
MAC(Media Access Control) : 네트워크 인터페이스 카드에 할당된 고유한 식별번호로 네트워크 장치들이 서로 식별하고 통신할 때 사용
CRC(Cyclic Redundancy Check) : 순환중복 검사로 불리며 송신시 데이터의 비트열에 대해 다항식 연산을 수행해 체크섬을 생성, 수신시 체크섬을 계산후 비교해 데이터 무결성을 보호
네트워크 계층
패킷의 경로 선택, 여러 네트워크 간의 통신을 다룬다.
라우팅 알고리즘을 사용하여 데이터 패킷을 전송하고, 서브넷 관리 및 주소 할당을 수행한다.
IP(Internet Protocol) : 컴퓨터와 네트워크 장치를 식별해 네트워크 데이터를 주고 받는 데 사용되는 주요 프로토콜
IP주소 : 컴퓨터와 네트워크 장치를 식별, 주소를 32비트를 10진수로 표현하는 IPv4와 128비트를 16진수로 표현하는 IPv6 버전이 존재
DHCP(Dynamic Host Configuration Protocol) : 네트워크에 연결된 장치에 IP 주소 및 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소 등 기타 네트워크 구성 정보를 할당하는 프로토콜
서브넷 마스크(Subnet Mask) : IP주소를 네트워크 ID와 호스트 ID로 식별, 255.255.255.0 기준으로 255.255.255는 네트워크 ID, .0은 호스트 ID
기본 게이트웨이(Default Gateway): : 다른 네트워크나 인터넷으로 가는 경로를 제공, 주로 라우터를 사용
DNS 서버 주소(DNS Server Address) : IP주소를 도메인 이름으로 변환하거나 그의 반대를 할 때 사용 (구글 DNS서버 8.8.8.8, 8.8.4.4)
IP Suite : IP를 포함한 TCP, UDP, ICMP 등의 여러 프로토콜과 서비스의 집합
라우터(Router) : 네트워크에서 데이터를 전송하는 장치(공유기 등), 외부 네트워크와 내부 네트워크를 연결 (내부 네트워크 192.168.x.x, 특수 네트워크를 제외한 나머지는 외부 네트워크)
라우팅 : 패킷을 받아 목적지로 전달하기 위한 최적 경로를 결정, 다익스트라나 벨만 포드 알고리즘 사용
서브넷 : 큰 네트워크를 더 작은 네트워크로 나눔. 서브넷 마스크를 이용하여 서브넷 ID와 호스트 ID 분할
전송 계층
종단간 통신을 제어, 데이터의 신뢰성을 다룬다.
데이터의 분할과 재조립, 흐름 제어, 오류 복구, 연결 관리 등을 담당한다.
TCP :
UDP :
*(디)멀티 플렉싱 :
세션 계층
통신의 세션을 관리, 양 끝단 간의 상호 작용의 동기화를 다룬다.
데이터의 동기화와 동시성 제어, 오류 복구 및 회복을 수행한다.
세션
동기화
*동시성제어
표현 계층
데이터의 형식을 변환 및 압축, 데이터 암호화와 복호화를 다룬다.
이 계층은 데이터의 구문 분석, 형식 변환, 암호화와 복호화를 수행에 데이터 교환을 지원한다.
*MIME
응용 계층
응용 프로그램의 인터페이스를 다룬다.
사용자 인터페이스, 데이터 처리, 데이터 전송에 관한 응용 프로그램 및 서비스에 대한 접근을 지원한다.
HTTP
FTP
*SMTP
데이터 송신 과정
응용 계층 -> 데이터(aka. 페이로드)
전송 계층 -> 헤더(송신지와 수신지의 포트 번호, 시퀀스 번호 등의 정보) + 데이터
네트워크 계층 -> 헤더(출발지와 목적지의 IP 주소, Time-To-Live 등의 정보) + 캡슐화[헤더 + 데이터]
데이터 링크 계층 -> 헤더(MAC 주소와 같은 물리적인 주소 정보) + 프레임[헤더 + 헤더 + 데이터] + 트레일러
데이터 수신 과정
데이터 링크 계층 : 헤더(MAC 주소와 같은 물리적인 주소 정보) + 프레임[헤더 + 헤더 + 데이터] + 트레일러
네트워크 계층 : 헤더(출발지와 목적지의 IP 주소, Time-To-Live 등의 정보) + 캡슐화[헤더 + 데이터]
전송 계층 -> 헤더(송신지와 수신지의 포트 번호, 시퀀스 번호 등의 정보) + 데이터
응용 계층 -> 데이터(aka. 페이로드)