OSI(Open Systems Interconnection) 참조 모델
1. OSI(Open Systems Interconnection) 참조 모델
OSI 7계층으로 나뉘어져 있으며, 전송측은 응용 계층에서 물리 계층으로, 수신측은 거꾸로 물리 계층에서 응용 계층으로 데이터를 보내는 계층화된 구조를 사용한다. 이런 표준화된 모델을 사용함으로써, 다른 기종, 운영체제에서도 통신이 가능하다.
1.1. 물리 계층(Physical Layer)
물리 계층은 데이터를 물리 매체상에서 소통이 가능한 통신 신호로 변환하여 전송한다. 전압 레벨과 전압이 변하는 시점, 케이블의 기능, 전송 절차 등을 정의한다.
물리 계층에서는 전송/수신 중 생기는 오류를 복구하지 않고, 단지 신호를 전송만 한다. 저렴한 구리선(UTP, STP, 동축 케이블)이 많이 쓰이며, 비교적 먼 거리를 연결할 수 있는 광섬유 케이블도 사용된다. Wi-Fi, Bluetooth를 통한 무선 통신도 있다.
데이터 전송에는 bandwidth, throughput 등의 지표가 사용된다. Bandwidth는 정해진 시간 동안 데이터를 전송할 수 있는 최대 용량을 말하여, throughput은 네트워크 속도, 패킷 손실 등이 고려되어 목적지에 도달한 데이터의 양이다.
1.2. 데이터링크 계층(Data Link Layer)
데이터링크 계층은 직접 연결된 서로 다른 2개의 네트워킹 장치 간의 데이터 전송을 담당하며, 여기서 전송되는 데이터를 프레임(frame)이라 한다. 이 계층은 프레임의 종류, 길이 등을 정의하고, 일반적으로 MAC(Media Access Control)이라 하는 매체 접근 제어 기능을 사용한다. 대표적인 장치로 스위치(switch)가 있다. 스위치는 프레임 전송을 위해 MAC 테이블을 만들고, 이를 참조한다. MAC 테이블의 각 항목에는 MAC 주소와 이에 대응되는 장치 port가 있다.
MAC 주소는 하드웨어 주소라고도 하며, 이 주소는 장치를 만들 때 장치 내의 ROM에 영구적으로 기입되어 나온다. 데이터링크 계층의 주요 역활은 다음과 같다.
- 프레이밍(Framing): 물리 계층으로부터 수신한 신호 혹은 네트워크 계층에서 내려온 데이터를 프레임 단위의 정해진 크기로 만들고 전송한다. 임의의 계층별로 어떤 고정된 크기의 데이터 유닛을 일반적으로 프로토콜 데이터 유닛(PDU, Protocol Data Unit)이라고 한다.
- 흐름 제어(Flow Control): 너무 많거나, 적게 데이터를 송수신하지 않도록 데이터 흐름을 제어한다.
- 오류 제어(Error Control): 프레임 전송 시 발생한 오류를 복원하거나 재전송한다.
- 접근 제어(Access Control): 여러 통신 장치가 있을 때, 데이터 전송 여부 결정
- 동기화(Synchronization): 특별한 비트 패던을 통한 프레임 구분자 제공
프레임에는 헤더(송신, 수신 주소 등), 데이터, 트레일러(오류 검출 코드 등)가 있다. 오류 검출, FCS(Frame Check Sequence)에는 보통 CRC(Cyclic Redundancy Check)가 쓰인다.
1.3. 네트워크 계층(Network Layer)
네트워크 계층은 상위 계층으로부터 받은 데이터를 패킷(또는 데이터그램) 단위로 규격화하고, IP 주소를 기반으로 데이터를 전송한다.
주로 사용되는 장치는 스위치나 라우터이다. IP주소와 장치 port를 가지고 있는 장치 내의 IP 테이블과 라우팅 기능을 통해 패킷 경로를 결정한다.
주요 역활은 다음와 같다.
- 패킷 전달(Packet Forwarding): 종단 간(end-to-end)? 패킷 전달
- 라우팅(Routing): 라우팅 프로토콜을 사용하여 효율적인 경로로 패킷을 전송
- 논리적 주소(Logical Address): 전송 계층으로부터 받은 데이터에 송수신 장치의 IP 주소를 붙여 전송
1.4. 전송 계층(Transport Layer)
전송 계층은 송수신 장치 간의 통신 세션을 제어(연결 설정, 유지 등)한다. 물리, 데이터링크, 네트워크 계층까지는 데이터를 어떻게 보낼지 관여하였고, 전송 계층부터는 응용 프로그램에 관련된 역활을 수행한다.
따라서 전송 계층은 포트(또는 소켓)주소를 포함하는 세그먼트라는 PDU를 사용한다. 주요 역활은 다음과 같다.
- 종단 간 데이터 통신 보장: 데이터 통신 흐름 제어, 오류 제어
- 지연에 따른 왜곡 및 대역폭 부족 해결
- 동시에 여러 개의 논리적 연결 지원
- 사용자 데이터 분할과 재조립: 전송 시 사용자 데이터를 세그먼트로 분할하고 순서 번호를 할당한다. 수신 시 이 번호를 참조하여 재조립한다.
1.5. 세션 계층(Session Layer)
세션 계층은 종단 간 통신 세션의 시작과 종료를 정의한다. 또한 Full/Half-duplex 모드 등 통신 방향을 결정하며, 데이터 점검 및 복구를 위해 동기 점(synchronization points)를 데이터 중간에 삽입한다. 예를 들어, 파일이 800페이지라면 50페이지마다 동기 점을 추가하여, 50페이지씩 정상적으로 전달되었는지 확인할 수 있다.
1.6. 표현 계층(Presentation Layer)
표현 계층은 응용 계층에서 생성한 데이터를 다른 모든 컴퓨터가 이해할 수 있는 형태로 변환한다. ASCII, Binary 등이 사용될 수 있다.
또한 데이터 암호화와 압축 기능을 지원하기도 한다.
1.7. 응용 계층(Application Layer)
응용 계층은 응용 프로그램과 통신 프로그램 사이를 연결하는 인터페이스를 제공하는 OSI의 최상위 계층이다.
응답이 자신에게 직접 보내지는 질의를 반복적 질의(iterative query)라 한다.
자신을 대신하여 필요한 매핑을 얻도록 하는 것은 재귀적 질의(recursive query)라 한다.
2.4.2.1.
이론상, DNS 질의는 반복적이고 재귀적일 수 있다. 일반적으로 요청하는 호스트로부터 로컬 DNS 서버까지 질의는 재귀적이고, 나머지 질의는 반복적이다.