OSI 7계층
이기종 시스템 간 네트워크 통신을 위한 표준 아키텍처 정의
통신에 관련된 목적을 달성하기 위해 계층별로 분리하였고 그로인해 계층별 작업이 용이하다.
네트워크로 통신이 이뤄지기 위해서는 모든 계층을 거쳐야 한다.
미리 알고 들어가야 할 것
노드(종단점) : 하나의 네트워크를 구성하기 위해 연결된 네트워크 장비들의 묶음 (컴퓨터 + 스위치 + 허브, 등)
MTU ( Maximum transmission Unit ) : 네트워크 장비에서 전송할 수 있는 최대 패킷 사이즈 ( TCP : 65535byte )
네트워크 액세스 (TCP 1계층)
1. 물리계층 (OSI 1계층)
Bit 단위
물리적인 장치(네트워크 장비)의 전기적, 전자적 연결 담당
디지털 신호와 아날로그 신호 간 변환이 일어나는 구간
장비 : 허브, 랜포트 등...
2. 데이터 링크 (OSI 2계층)
Frame 단위
윗 계층에서 전달된 Packet을 감싸 Frame을 형성
Packet 에 MAC 주소 부여
종단점 간 데이터 전송을 가능하게 함 (두 네트워크 장비의 직접적 연결을 가정)
연결된 노드 간 데이터 전송 제어
MAC 주소를 기반으로 목적지의 장비를 찾아감
MAC address table에 해당하는 주소가 없으면 연결된 모든 노드에게 브로드캐스팅을 함
MAC 주소 기반 필터링이 가능하지만 권장하지 않음 (스푸핑이 쉬움...)
신뢰성을 위한 흐름제어, CRC 기반 오류 체크, 회선 제어
프로토콜 : Ethernet
장비 : L2 스위치, 브릿지, 스위칭 허브 (요즘 말하는 허브)
장비가 하는 일
외부에서 들어온 Frame 분석 후 연결된 여러개의 네트워크 장비들 중 MAC주소가 일치하는 장비로 패킷 전송
외부로 전송 시 전달된 패킷에 자신의 MAC 주소를 넣지는 않는다.
인터넷 (TCP 2계층)
3. 네트워크 (OSI 3계층)
Packet 단위
윗계층에서 전달된 Segment를 감싸 Packet 형성
Segment에 IP 주소 부여
노드 간 데이터 전송을 위한 경로 설정 (Routing)
인접한 네트워크 장비들의 IP address table 생성
IP 주소를 통해 목적지의 MAC 주소를 알아옴 (ARP)
프로토콜 : ARP, IP, ICMP
장비 : 라우터
장비가 하는 일?
라우터와 게이트웨이를 거쳐 다른 네트워크 장비와 통신이 이뤄짐
호스트에 도달하기 위한 최적의 경로를 라우팅 알고리듬으로 선택하고 제어
전달된 Frame의 SRC MAC 을 자신의 MAC 주소로 변경
노드 간 데이터 전송을 위한 경로 설정 (Routing)
( * 하나의 파일에서 생성된 각각의 패킷은 경로가 매번 달라질 수 있음 )
전송 (TCP 3계층, OSI 4계층)
Segment 단위
윗 계층에서 전달된 데이터를 Packet으로 변환 (큰 데이터는 여러개의 패킷으로 나뉨)
종단 간 신뢰성과 효울성이 있는 데이터 전송을 담당
Process 를 특정하기 위한 주소로 port 번호 사용
구체적인 목적지 까지 데이터 전달
분할과 재조립, 연결제어, 흐름제어, 혼잡 제어 등 수행
종단간 통신을 이루는 최하위계층
프로토콜 : TCP, UDP
장비 : L4 스위치 (로드밸런서)
장비가 하는 일?
쪼개진 패킷들을 하나로 재조립하여 특정 port를 사용하는 host로 데이터를 넘겨줌
네트워크 장비의 MTU에 의해 최대 packet 사이즈가 제한됨
패킷 사이즈가 커지면 Loss 가 커질 가능성이 높음
성능이 괜찮아지려면 MTU 보다 패킷 사이즈를 작게 하기를 권장 (1500byte under = 브로드밴드, 576byte under = dial-up)
패킷 사이즈가 너무 작아지면 효율성이 낮음 (거의 헤드만 보낼수도??)
패킷 사이즈를 키우면 MTU에 의해 패킷을 반복적으로 쪼개고 붙이는 작업이 일어날 수 있으니 적당함을 찾아야 할듯 ...?
Jabber?
Jabbers—Received packets that longer than 1632 octets. This number excludes frame bits, but includes FCS octets that had either a bad FCS (Frame Check Sequence) with an integral number of octets (FCS Error) or a bad FCS with a non-integral octet (Alignment Error) number.
A Jabber packet is defined as an Ethernet frame that satisfies the following criteria:
-Packet data length is greater than MRU.
-Packet has an invalid CRC.
-Received (Rx) Error Event has not been detected.
응용 (TCP 4계층)
5. 세션 (OSI 5계층)
Data / Message 단위
응용 프로그램 간의 논리적인 연결 생성 및 제어를 담당
양 끝단의 응용 프로세스의 통신을 관리하는 방법을 제공
TCP/IP 세션을 생성하고 제거 (OS에서 담당)
서버와의 연결 유지
프로토콜 : TLS, SSL (4보다는 위고 6보다는 아래라서??)
6. 표현 (OSI 6계층)
Data 단위
인코딩/디코딩, 암호화/복호화, 압축/압축해제 등의 역할 수행
7. 응용 (OSI 7계층)
프로토콜 : HTTP, SMTP, SSL, FTP
네트워크 계층에 대한 개념적인 이야기만 했으니 실질적으로 어떻게 돌아가는지 알아보고자 한다.
우리가 사용하는 컴퓨터는 모든 계층을 사용한다고 봐도 무방하다. 라우터 자리에 컴퓨터를 설치하고 라우터작업을 수행하는 OS를 설치하면 컴퓨터는 라우터가 되는것이다. 물론, 다른 장비도 마찬가지이다.
이번에 검색하면서 알게 된것인데, 컴퓨터간 랜선으로 연결(라우터나 허브와 같은 장비 없이)을 하면 서로 데이터를 주고 받을 수 있다고 한다. 컴퓨터만으로도 MAC 주소를 통해 인접한 컴퓨터와 통신을 할 수 있다는 것이다.
그렇다면 스위치와 라우터는 왜 필요한것일까? 라는 의문으로 이어졌다.
스위치는대충 여러개의 네트워크 장비들을 한곳으로 묶기 위해 사용을 하는 듯 하다. 라우터에서 일치하는 IP를 찾아 들어온 패킷을 MAC 주소로 정확한 목적지 호스트에 전달을 한다.
라우터는 외부 네트워크와의 통신을 위해 필요하고 외부 네트워크와 만나는 최상위 장비인듯??...
일단 내 컴퓨터에서 파일을 특정 서버로 전송하는 과정을 살펴보자.
구조는 아래와 같다.
노드#1 : (컴퓨터#1 - 스위치 - 라우터) - ISP router - ( 라우터 - 스위치 - L4 스위치 - [서버#1, 서버#2] ) : 노드#2
* 3-way handshake는 이미 진행된것으로 가정 (TCP/UDP 및 세션 활성화)
* 각 장비마다 MTU는 정해져있지만 간결하게 하기 위해 모든 장비의 MTU는 1000byte로 가정
* MTU의 보다 쉬운 접근을 위해 추가적으로 만들어지는 헤더의 크기는 무시한다고 가정한다. (i.g.1000byte의 패킷을 500byte의 MTU를 가진 장비를 거치면 두개의 500byte 프레임으로 나눔)
* 서버#1은 혼잡한 상황을 가정하여 L4 스위치인 로드밸런서를 통해 서버2에 접속
컴퓨터에서 서버#2에 파일 (MTU 보다 큰 파일, 5000byte, 헤더 용량 무시)를 전송하고자 한다.
전송계층에서 5000byte파일을 MTU 인 1000byte의 크기, 5개로 분할하여 전송하고자 한다. 총 5번의 패킷이 외부 네트워크로 전송된다.
한번 과정을 거칠때마다 1000byte씩 전송되어 전체 데이터를 전송하기까지 아래의 과정을 5번 반복하게 된다.
[
전송계층에서 만들어진 1000byte의 패킷에 IP주소와 MAC주소를 넣어서 프레임을 만듦
만들어진 프레임을 스위치에 전달 (인접한 네트워크 장비간 데이터 교환, MAC 주소 기반)
스위치에서 인접한 라우터로 프레임 전달 ( 인접한 네트워크 장비간 데이터 교환 )
라우터에서 ARP를 활용하여 목적지의 MAC 주소를 찾아냄
라우팅 테이블을 통해 라우팅 원격 네트워크 경로를 선택
헤더의 SRC MAC에 라우터의 MAC 주소로 치환
경로에 있는 인접한 라우터로 게이트웨이를 거쳐 이기종 네트워크와 데이터 교환
적어도 하나 이상의 인접한 라우터에서 SRC MAC 주소를 현재 라우터의 MAC 주소로 치환하며 전송
최종 목적지 노드에 도착 ( 노드#2 라우터 )
라우터에 IP 필터링 과정을 거침
스위치에서 MAC 주소가 일치하는 서버#2 (로드밸런서에서 반환된 주소)를 찾음
서버#2로 Packet 전송
]
전송된 패킷들을 4계층에서 재조립하여 하나의 파일로 만듦
전송이 완료되면 세션을 종료하고, 남은 계층에서 필요한 작업을 수행
위 과정에서 조금 특이하다 느낀것은 하나의 파일에서 만들어진 다수의 패킷이더라도 각각 다른 라우팅 경로를 통해 목적지에 도착 할 수 있다는 것이다. TCP는 위의 순서를 보장한다는 것이고 UDP 는 순서를 보장하지 않는다고 생각된다.
보통 온라인 게임을 하면 ping이 보통 10ms 내외로 찍힌다. 심지어 네트워크 장비의 MTU가 일정치않아 MTU보다 큰 데이터를 처리하기 위해 패킷을 쪼개어 헤더를 붙이이고 다시 패킷을 재결합하는 과정을 거치고도 10ms 내외면 위의 과정들이 얼마나 빨리 이뤄지는지 신기할 뿐이다.
네트워크 알아볼수록 신기한게 많다.
아직 겉핥기에 부족하니 나중에 조금 더 깊게 알아보도록 하겠다.
댓글