OSI 7계층, TCP/IP 4계층, TCP/IP updated 5계층
1. OSI 모형(Open Systems Interconnection Reference Model)
네트워크 통신에서 일어나는 과정을 단계 별로 파악하기 쉽게 7단계로 나눈 것
국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층이라고 한다. - wikipedia
이 모델은 프로토콜을 기능 별로 나눈 것이다. 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다. '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다. 일반적으로 하위 계층들(물리, 데이터링크)은 하드웨어로, 상위 계층들(네트워크, 전송, 세션, 표현, 응용)은 소프트웨어로 구현된다.
1 계층 Physical Layer 물리계층
물리 계층(Physical layer)은 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층이다. 다양한 특징의 하드웨어 기술이 접목되어 있기에 OSI 아키텍처에서 가장 복잡한 계층으로 간주된다.
모든 데이터는 0과 1의 전기신호의 나열로 이루어져 있다. 따라서 0과 1만 송수신할 수 있으면 된다.
이러한 1 계층 모듈은 PHY 칩에 하드웨어적으로 구현되어 있다.
- Encoding: 0과 1의 전기신호의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보낸다.
- Decoding: 아날로그 신호가 들어오면 0과 1의 나열로 해석한다.
- 위 과정을 통해 물리적으로 연결된 두 대의 컴퓨터가 데이터를 주고받을 수 있게 해주는 모듈이 Physical Layer
2계층 Data-Link Layer 데이터링크 계층
데이터 링크 계층(Data [3] link layer)은 포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 필요하다. 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공한다. 주소 값은 물리적으로 할당받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다. 주소 체계는 계층이 없는 단일 구조이다. 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다. 이 외에도 HDLC나 ADCCP 같은 포인트 투 포인트(point-to-point) 프로토콜이나 패킷 스위칭 네트워크나 LLC, ALOHA 같은 근거리 네트워크용 프로토콜이 있다. 네트워크 브릿지나 스위치 등이 이 계층에서 동작하며, 직접 이어진 곳에만 연결할 수 있다.
- 프레임에 주소부여(MAC - 물리적 주소)
- 에러 검출/재전송/흐름 제어
- Framing: 아날로그 신호 데이터의 앞과 뒤에 Flag와 Header, Trailer를 넣어 프레임의 시작과 끝을 구분하는 것
- 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
- Framing은 Data-Link Layer에 속하는 작업들 중 하나
- 2 계층 모듈은 랜카드에 하드웨어적으로 구현되어있다.
3 계층 Network Layer 네트워크 계층
네트워크 계층(Network layer)은 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다. 네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다. 라우터가 이 계층에서 동작하고 이 계층에서 동작하는 스위치도 있다. 데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층이다. 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.
서브 네트의 최상위 계층으로 경로를 설정하고, 청구 정보를 관리한다. 개방형 시스템들의 사이에서 네트워크 연결을 설정, 유지, 해제하는 기능을 부여하고, 전송 계층 사이에 네트워크 서비스 데이터 유닛(NSDU : Network Service Data Unit)을 교환하는 기능을 제공한다.
- 주소 부여(IP)
- 경로 설정(Route)
- 수많은 네트워크들의 연결로 이루어지는 inter-network에서 목적지로 데이터를 전송하기 위해 routing(IP 주소를 이용하여 길을 찾음)과 forwarding(다른 라우터에게 데이터를 넘겨주는 것)
- 처음 하나의 컴퓨터에서 데이터를 전송하려 한다면,
- 현재 연결된 라우터에게 패킷(data+IP address)을 전송
- 패킷을 받은 라우터는 패킷을 열어서 IP주소를 확인
- 자신과 연결된 컴퓨터 중 일치하는 IP주소를 가진 컴퓨터를 탐색
- 3에서 찾을 수 없다면, 데이터를 다시 포장해서 다른 라우터에게 forwarding
- 전송받은 라우터가 자신과 연결된 컴퓨터 중 IP주소가 일치하는 컴퓨터로 패킷을 내려보낸다.
- 운영체제의 커널 Kernal에 소프트웨어적으로 구현되어있다.
4 계층 Transport Layer 전송계층
전송 계층(Transport layer)은 양 끝단(End to end)의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다. 시퀀스 넘버 기반의 오류 제어 방식을 사용한다. 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다. 가장 잘 알려진 전송 계층의 예는 TCP이다.
종단 간(end-to-end) 통신을 다루는 최하위 계층으로 종단간 신뢰성 있고 효율적인 데이터를 전송하며, 기능은 오류 검출 및 복구와 흐름 제어, 중복검사 등을 수행한다.
- 패킷 생성(Assembly/Sequencing/Deassembly/Error detection/Request repeat/Flow control)
- Port번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈
- 전송받은 데이터를 알맞은 프로세스에게 전송해야 한다.
- 데이터를 받고자 하는 프로세스들은 포트 번호(Port Number)가 필요하다.
- 포트 번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값이다.
- 한편, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
5 계층 Session Layer 세션 계층
세션 계층(Session layer)은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
통신하는 사용자들을 동기화하고 오류 복구 명령들을 일괄적으로 다룬다.
- 통신을 하기 위한 세션을 확립/유지/중단 (운영체제가 해줌)
6 계층 Presentation Layer 표현 계층
표현 계층(Presentation layer)은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 예를 들면, EBCDIC로 인코딩 된 문서 파일을 ASCII로 인코딩된 파일로 바꿔 주는 것이 표현 계층의 몫이다.
- 사용자의 명령어를 완성 및 결과 표현.
- 포장/압축/암호화
7 계층 Application Layer 응용계층
응용 계층(Application layer)은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다. 응용 서비스의 예로, 가상 터미널(예를 들어, 텔넷), "Job transfer and Manipulation protocol" (JTM, 표준 ISO/IEC 8832) 등이 있다.
- 네트워크 소프트웨어 UI 부분
- 사용자의 입출력(I/O) 부분
- TCP/IP 소켓 프로그래밍
- 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍이라고 한다.
- 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로 만들어서 동작시킬 수 있다.
- TCP/IP 소켓 프로그래밍을 통해 누구든 자신만의 Application layer 인코더와 디코더를 만들 수 있다. 즉, Application layer 프로토콜을 만들어서 사용할 수 있다.
- 대표적인 Application layer 프로토콜엔 HTTP가 있다.
- HTTP 인코더가 데이터를 input 받으면 header, body, status code 등의 데이터를 함께 생성하여 4 계층의 인코더를 통과하고, 1~3 계층 인코더를 통과하여 아날로그 신호로 변환되고, 수신 측 컴퓨터에서 순서대로 디코더를 통과하며 데이터로 변환된다.
TCP/IP
인터넷 프로토콜 스위트(영어: Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라 고도 불린다.
현재 수많은 프로그램들이 인터넷으로 통신하는 데 있어 가장 기반이 되는 프로토콜로 실제 대다수 프로그램은 TCP와 IP로 통신하고 있다.
ARPANET이 개발된 이후 현재의 인터넷으로 발전해나가는 과정에서 대부분의 데이터 통신이 TCP와 IP 기반으로 이루어졌기에 인터넷 프로토콜 그 자체를 표현하는 용어이기도 했고, 다양한 프로토콜이 개발된 현시점에도 사실상 인터넷 프로토콜을 대표하는 용어로 사용 중이다. 이를 이용해서 컴퓨터를 연결하는 체계를 이더넷(Ethernet)이라고 부른다.
TCP/IP 4 계층
1 계층 네트워크 액세스 계층(Network Access Layer or Network Interface Layer)
- OSI 7 계층의 물리계층과 데이터 링크 계층에 해당한다.
- 물리적인 주소로 MAC을 사용한다.
- LAN, 패킷망, 등에 사용된다.
2 계층 인터넷 계층(Internet Layer)
- OSI 7 계층의 네트워크 계층에 해당한다.
- 통신 노드 간의 IP 패킷을 전송하는 기능과 라우팅 기능을 담당한다.
- 프로토콜 – IP, ARP, RARP
3 계층 전송 계층(Transport Layer)
- OSI 7 계층의 전송 계층에 해당한다.
- 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다.
- 프로토콜 – TCP, UDP
4 계층 응용 계층(Application Layer)
- OSI 7 계층의 세션 계층, 표현 계층, 응용 계층에 해당한다.
- TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.
- 프로토콜 – FTP, HTTP, SSH
TCP/IP updated 모델 5 계층
기존 Netwrok Access Layer(Ethernet Protocol), Internet Layer(IP Protocol), Transport Layer(TCP Protocol), Application Layer(HTTP protocol)의 4 계층으로 이루어져 있던 TCP/IP 모델이 TCP/IP updated model로 대체되면서 OSI의 상위 계층(application, presentaion, session)이 application 계층 하나로 통일되었다. 또한 Internet Layer가 Network Layer로, Network Interface (Link) 계층은 Data Link와 Physical 계층으로 나뉘었다.
[Applicatoin + Presentation + Session] -> [Application]
[Internet] -> [Network]
[Link(Network Interface)] -> [Data Link + Physical]
1 계층 물리 계층
상대 컴퓨터와 데이터를 주고받기 위해 물리적인 전기 신호로 데이터를 전송하는 계층
아날로그 신호로 통신, 하드웨어적으로 서킷에 모듈로 존재(PHY칩)
2 계층 데이터 링크 계층
같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
라우터(공유기) 안에 속한 로컬 상의 컴퓨터들을 구분하기 위해 사용된다.
(하드웨어적으로 랜카드가 존재하며 mac 주소를 사용한다.)
3 계층 네트워크 계층
실직적인 IP 주소를 사용한다.
수많은 네트워크 계층으로 이루어진 인터넷 망에서 목적지까지 데이터를 전송하기 위해
1. IP 주소를 이용해서 가장 가까운 목적지를 찾고(라우팅)
2. 자신 다음의 인접 라우터에게 데이터를 넘겨주는 역할(포워딩)을 한다.
(운영체제 커널에서 S/W로 구현)
4 계층 전송 계층
TCP/UDP 헤더 삽입(세그먼트화)
포트 번호 설정 (포트 : 컴퓨터에서 실행되고 있는 프로세스들이 가지는 고유한 ID 값)
특정 프로그램이나 프로토콜은 고유의 포트 번호를 가진다. (http : 80, ue4 : 7777)
정리 : Port 번호를 사용하여 최종 도착지인 프로세스까지 데이터를 도달하게 해주는 계층
5 계층 응용 계층
보내는 데이터의 속성을 정의한다. 이 데이터가 무슨 종류(확장자)인지 판별하기 위해
데이터의 타입 : 이미지 파일, 사운드 파일, 텍스트 파일 등으로 구분시켜 준다.
주로 "dataType:binary" 등으로 헤더를 붙여서 보냄
참고문헌