OSI 참조 모델
OSI(Open System Interconnection) 참조 모델은 다른 시스템 간의 원활한 통신을 위해
ISO(국제표준화기구)에서 제안한 통신 규약(Protocol)이다.
각 계층은 다른 계층에 대해 알 필요가 없이 자신의 계층에서 캡슐화 은닉(숨기기)가 가능하다.
TCP/IP 모델
TCP/IP(Transmission Control Protocol/Internet Protocol) 모델은 우리가 범용적으로 사용하는 TCP 프로토콜과 IP 프로토콜을 OSI 7계층 형식에 맞추어 더 추상화(혹은 간략화) 시킨 모델이다.
인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜이다.
- 1960년대 말 ARPA에서 개발하여 ARPANET(1972)에서 사용하기 시작
- Unix의 기본 프로토콜로 사용 → 현재 인터넷 범용 프로토콜로 사용
다음과 같은 기능을 수행하는 프로토콜이 결합된 것이다.
TCP
- 신뢰성 있는 연결형 서비스 제공
- 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능 제공
- 스트림(Stream) 전송 기능 제공
- 헤더(Header) : Source/Destination Port Number, Sequence Number, Acknowledgement Number, Checksum 등 포함
IP
- 데이터그램을 기반으로 하는 비연결형 서비스 제공
- 패킷의 분해/조립, 주소 지정, 경로 선택 기능을 제공
- 헤더(Header)의 길이 = 20Byte ~ 60Byte
- 헤더(Header) : Version, Header Length, Total Packet Length, Header Checksum, Source IP Address, Destination IP Address 등 포함
데이터 전송 과정 (TCP/IP Model, OSI Layer 7 Model)
도식화 이미지
1. Application Layer
Application Layer : UI 제공
사용자(응용 프로그램)가 OSI 환경에 접근할 수 있도록 서비스를 제공
- 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스 제공
Presentation Layer : 데이터 가공/처리
응용 계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고,
세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 한다.
- 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층
- 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식(포맷) 변환, 문맥 관리 기능
Session Layer : 데이터의 무결성이나 신뢰성 확인
송 · 수신 측 간의 관련성을 유지하고 대화 제어를 담당한다
- 대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능
- 송 · 수신 측 간의 대화 동기를 위해 전송하는 정보의 일정한 부분에 체크점을 두어 정보의 수신 상태를 체크하며, 이 때의 체크점을 동기점(Synchronization Point)라고 한다.
2. Transport Layer
Transport Layer : 서비스 구분 및 데이터 전송 방식 담당
논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써
종단 시스템(End-to-End)간에 투명한 데이터 전송을 가능하게 한다.
- 하위 3계층과 상위 3계층의 인터페이스 담당
- 종단 시스템(End-to-End)간의 전송 연결 설정, 데이터 전송, 연결 해제 기능
- 주소 설정, 다중화(분할 및 재조립), 오류 제어, 흐름 제어 수행
- 주소 : Port
3. Internet Layer
Network Layer : 네트워크 연결 관리 및 데이터 교환, 중계 기능
- 네트워크 연결을 설정, 유지, 해제하는 기능을 한다.
- 경로 설정(Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행
- 주소 : IP
더 자세히(데이터 생성 과정)
- TCP segment에 IP 헤더를 추가하고, IP routing을 한다.
- IP routing이란 목적지 IP 주소(destination IP)로 가기 위한 다음 장비의 IP 주소(next hop IP)를 찾는 과정을 말한다.
- IP routing을 하면 그 결과물로 next hop IP와 해당 IP로 패킷 전송할 때 사용하는 인터페이스(transmit interface, 혹은 NIC)를 알게 된다.
- ARP(Address Resolution Protocol)를 사용해서 next hop IP의 MAC 주소를 찾는다. 그리고 Ethernet 헤더를 패킷에 추가한다. Ethernet 헤더까지 붙으면 호스트의 패킷은 완성이다.
- transmit NIC의 드라이버를 호출한다.
- 드라이버는 NIC 제조사가 정의한 드라이버-NIC 통신 규약에 따라 패킷 전송 요청한다.
- NIC는 패킷 전송 요청을 받고, 메인 메모리에 있는 패킷을 자신의 메모리로 복사하고, 네트워크 선으로 전송한다.
- 이때 Ethernet 표준에 따라 IFG(Inter-Frame Gap), preamble, 그리고 CRC를 패킷에 추가한다.
- IFG, preamble은 패킷의 시작을 판단하기 위해 사용(네트워킹 용어로는 framing)
- CRC는 데이터 보호를 위해 사용(TCP, IP checksum과 같은 용도이다)
- 이때 Ethernet 표준에 따라 IFG(Inter-Frame Gap), preamble, 그리고 CRC를 패킷에 추가한다.
- 패킷 전송은 Ethernet의 물리적 속도, 그리고 Ethernet flow control에 따라 전송할 수 있는 상황일 때 시작된다. 회의장에서 발언권을 얻고 말하는 것과 비슷하다.
- TCP segment에 IP 헤더를 추가하고, IP routing을 한다.
4. Network Access Layer
클라우드를 사용했을 경우 개발자들이 신경쓰지 않아도 되는 부분이며, 점점 시대가 갈수록 중요성이 떨어지는 부분이다. 일반적인 기업에서의 전산팀이 바로 이 6, 7계층을 담당하게된다.
Data Link Layer : 물리적 매체에 패킷 데이터를 싣고 보냄
두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 한다.
네트워크 계층에서 정보를 받아 주소와 제어 정보를 헤더와 테일에 추가한다.
- 송신 측과 수신 측의 속도 차이를 해결하기 위한 흐름 제어 기능
- 프레임의 시작과 끝을 구분하기 위한 프레임 동기화 기능
- 오류의 검출과 회복을 위한 오류 제어 기능
- 프레임의 순서적 전송을 위한 순서 제어 기능
- 주소 : Mac
Physical Layer : 실제 물리적인 영역
전송에 필요한 두 장치간의 실제 접속과 절단 등 기계적, 전기적 기능적, 절차적 특성에 대한 규칙을 정의한다.
TCP/IP 캡슐화(Encapsulation)
송신 측 입장에서 데이터 생성 과정
각각의 레이어를 거치면서 데이터의 양은 계속 많아진다.
상위 계층으로부터 받은 데이터는 관여하지 않고, 각 계층에서의 추가 데이터만 계속 더해진다.
TCP/IP 역캡슐화(Decapsulation)
수신 측 입장에서 데이터 생성 과정
- PDU(Protocol Data Unit, 프로토콜 데이터 단위) : 동일 계층간에 교환되는 정보의 단위
- SDU(ServiceDateUnit, 서비스 데이터 단위) : 서비스 접근점(SAP)을 통해 상, 하위 계층기리 주고받는 정보의 단위
- SAP(서비스 접근점) : 상위 계층이 자신의 하위 계층으로부터 서비스를 제공받는 점(Point)
OSI 7 계층 vs. TCP/IP 모델
- OSI 7 계층에서는 Presentation 계층에서 캡슐화를 하지 않고, Compression을 한다.
- OSI 7 계층은 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면에 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.
- TCP/IP 모델은 OSI 모델보다 먼저 개발되었고, 서로 정확하게 일치하지 않는다.
⍞ Reference
- 도서 : 2020 시나공 정보처리기사 필기, 길벗
'정리 log > 용어 · 개념' 카테고리의 다른 글
[OS] 메모리 관리 전략 (0) | 2020.05.28 |
---|---|
[네트워크] 프로토콜 (0) | 2020.05.25 |
[네트워크] 인터넷, IP 주소, 서브네팅 (0) | 2020.05.17 |
[OS] 프로세스(Process) vs. 스레드(Thread) (0) | 2020.05.10 |
[면접준비] 객체 지향 프로그래밍 (0) | 2020.05.07 |
댓글