[Network] OSI Model, TCP/IP Layer
CS/Network

[Network] OSI Model, TCP/IP Layer

Protocol은 통신규약이다.

서킷 스위칭은 종단간 바로 연결해서 보내는 방식이다. 이는 매우 비효율적
패킷 스위칭은 라우터를 거쳐서 보내는 방식이다. 비용이 크게 절감되며 패킷으로 쪼개서 보내기 때문에 처리가 용이하다.
A -> 스위치 -> 라우터 ---(패킷 포워딩)---> 라우터 -> 스위치 -> B서버

OSI 7 layer는 모든 종류의 컴퓨터 시스템 간 통신을 가능하게 하는 네트워크 설계를 위해 생긴 방식이며, 지금은 압축되어 TCP/IP Layer를 사용한다.
Pysical은 '전선', Data Link는 '바로앞에 전송', Network는 '종단간 전송', Transport는 '신뢰성 검사' 라고 알고있자.
Port번호는 Transport에서 어플리케이션에 전송하기 위한 주소이다.

IP주소는 전세계 수억개들의 컴퓨터에 각각 주소를 부여하기 위해 만들어졌다. IPv4방식이 있는데 번호마다 각각 역할이 다르다.

Protocol

통신하고자 하는 두 개체 간에 무엇을 어떻게 언제 통신할 것인지를 서로 약속한 규약, 규칙입니다.

미국, 일본, 한국 서로 다른 국가에서 네이버 접속이 가능할까요?
같은 형태로 통신규약이 만들어졌기 때문에 가능합니다. 이것이 프로토콜입니다.

 

OSI 모델

Open System Interconnection
모든 종류의 컴퓨터 시스템 간 통신을 가능하게 하는 네트워크 설계를 위한 계층 구조입니다.

서킷 트레이서 방식은 설치하는데 너무 비효율적이므로 현재 패킷 스위칭 방식을 사용하고 있습니다.

 

OSI 계층 구조

중계 노드인 라우터들은 사실 IP주소까진 알아야 통신이 가능하지만, 4계층부터의 정보는 알 필요가 없어집니다.
라우터는 이 패킷이 오류가 났는지 부터는 알 필요가 없고 최종 목적지까지 안전하게 패킷을 전송하기만 하면 되기 때문입니다.

이 그림이 네트워크의 전부라고 합니다. 그리고 지금까지 이 OSI 계층을 사용하고 있고 앞으로도 바뀔 일이 없다고 합니다.
너무 많은 표준이 만들어져서 다른 계층을 사용하기에 부담이 되며, 아직까지 사용하기에 가장 효율적이기 때문입니다.

 

계층적 구조와 같은 표준의 장점

네트워크 제품들이 전부 표준에 근거하여 설계되어 수많은 회사에서 다른 제품들을 만들어서 서로 다른 회사들의 제품들을 사용해도 문제없이 동작함에 있어서 큰 장점이라고 생각합니다.

 

데이터 교환 방식

패킷이 만들어져서 전송되는 과정입니다.
각 계층마다 정보를 Header에 붙여서 캡슐화를 진행합니다. 마지막 물리계층까지 가면 유선, 무선 방식을 통해 전송이 되며 패킷을 받아서 다시 역캡슐화 시켜서 Header 정보를 활용해 계층마다 정보를 확인합니다.

Tail의 역할은 남는 공간을 아무의미없는 숫자로 채우는 것입니다. 깔끔하게 패킷을 보내기 위해서는 저렇게 보내는 것이 가장 좋습니다.

다음에는 계층별 역할의 요약입니다.

 

Layer 1 : Physical Layer

컴퓨터는 서로 0,1만으로 통신하기 때문에 이런 물리적으로 통신할 수 있는 규약이 필요한데 이를 정의한 계층입니다.

주요 기능

- 장치와 전송 매체간의 인터페이스 특성과 전송 매체 유형 규정
- 비트 표현 방법(부호화 유형)
이미지파일을 보낼 때 픽셀을 일자로 쭉 보내면 오류도 많을 것이고 시간도 오래 걸릴 것입니다. 이를 - - - - 4bits 등으로 쪼게서 보내면 오류의 위험이 줄어듭니다. 이처럼 어떤 방법으로 부호화해서 보낼지
- 데이터 전송 속도(bps)
광케이블을 쓰느냐 다른것을 쓰느냐에 따른 속도 차이가 존재하는데 이 전송 속도를 규정합니다.
- 비트의 동기화(송수신자 간 클록)
- 회선 구성(점-대-점, 다중점)
- 물리적 접속 형태(mesh, star, ring, bus, tree)
- 전송 모드(simplex, half-duplex, full-duplex)
양방향 통신이 가능한지, 단방향 통신만 가능한지를 나타냅니다.

Layer 2 : Data Link Layer

물리적인 계층을 서포트 해주는 계층입니다. A에서 B까지 가는데 중간에 수많은 라우터들이 있을 것입니다. 이때 바로 옆에 있는 쪽에게만 잘 전송하기 위해 정의한 규약입니다.

주요 기능

- 프레임(frame) 구성
- 물리 주소 지정 (송수신자 주소)(MAC)
Media Access Controll (MAC) 0F.13.XX.XX.XX.XX
hop by hop 간의 주소를 의미합니다.
- 흐름 제어
hop 간의 통신에서도 흐름과 오류를 검출해야 합니다. Transport
- 오류 제어
- 접근 제어

Layer 3 : Network Layer

바로 옆 쪽에만 신경쓰는 것에서 더 나아가서 시작지점 A에서 끝지점 B까지 전송하기 위해 필요한 규약입니다.

주요 기능

- 논리 주소 지정 (IP)
종단 간 주소인 IP주소를 사용합니다.

IP 프로토콜의 한계

비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송합니다

비신뢰성 : 중간에 패킷이 사라지면 어떻게 할것인가, 패킷이 순서대로 안오면 어떻게 할 것인가

프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 어떻게 할 것인가

 

- 경로 지정 (Routing)
패킷이 최종 목적지에 전달될 수 있도록 경로를 지정하거나 교환 기능을 제공합니다.

Layer 4 : Transport Layer

유튜브에서 영상이 살짝 깨져도 시청하는데 문제가 없습니다. 하지만 전화를 받을 때 조금이라도 깨지면 알아들을 수 없게 됩니다.
A에서 B까지 데이터를 전송하고나서 B에서 몇비트가 오류가 발생함을 알았을 때, 위처럼 오류가 발생해도 괜찮은 것이 있고 아닌 경우도 있습니다. 이를 신뢰성이 있다 없다고 판단하는데 이 Transprot Layer에서 신뢰성의 유무를 판단하여 패킷을 재전송할지 말지를 판단하게 됩니다.

신뢰성있는 통신을 할것인지 말건지를 결정하는 계층이기 때문에 하나라도 깨지지 않고 보내기 위해 패킷을 분할하고 재조립하는 과정까지 지원합니다.

주요 기능

- 서비스 지점 주소 지정
End단의 주소인 IP 뿐만 아니라 사용하는 애플리케이션까지 인식해야 합니다. KaKaoTalk 어플까지 도달하기 위해 KakaoTalk의 Port 주소를 통해 도달할 수 있게 주소를 지정해줍니다.

- 분할과 재조립
패킷을 분할하고 재조립하는 기능을 제공합니다.
- 연결 제어

TCP 3 way handshake를 통해 연결이 되었는지 먼저 확인합니다.
- 흐름 제어
그림과 같이 패킷마다 다 같은 경로로 차례로 온다는 보장이 없습니다. 그래서 이 계층에서 패킷을 올바르게 조립해서 흐름제어 합니다.
패킷을 분할해서 #1, #2, #3 넘버를 부여합니다. 이를 전송할 때 1, 3, 2 순서로 섞여서 차례로 전달될 수 있습니다. 하나의 패킷이 늘 똑같은 경로로 보내지 않을수도 있습니다. 그래서 1번이 먼저 오고 3번이 먼저 올 수 있는 경우가 존재할 수 있습니다. 이 계층에서 1, 2, 3으로 올바르게 조립해서 보여주는 흐름을 제어하는 역할을 담당합니다.

- 오류 제어

데이터가 중간에 누락되었는지 알 수 있습니다. 즉, 데이터 전달을 보증합니다.

Layer 5 : Session

 

Layer 6 : Presentation

패킷을 압축해서 보낼것인가, 보안을 강화해서 보낼것인가를 담당합니다.

Layer 7 : Application

 

TCP/IP Layer

OSI 7 Layer를 사용하다보니 신경쓸 계층이 너무 많다는 문제가 있었습니다. 그래서 이를 4계층으로 나눠서 새로운 TCP/IP Layer 계층이 등장합니다.
사실 TCP/IP Layer란 개념이 먼저 만들어졌지만 OSI 7 Layer를 일반적으로 사용하다가 최근에 TCP/IP Layer를 사용하기 시작했습니다.

이렇게 4개의 계층으로 축소시켰습니다.

 

실제 패킷 확인

wireshark를 활용해 내부적으로 계층별 정보들이 전부 나오는 것을 확인할 수 있습니다.

TCP/IP Layer에서 실제 들어가는 헤더

실제로 들어가는 헤더의 내용은 그림과 같이
TCP, IP, MAC주소 같은 각 계층마다 필요한 정보가 들어갑니다.

용어

bit

1계층에서 주로 쓰이는 단위입니다.

frame

2계층에서 주로 쓰이는 단위입니다.

packet

3계층 이상부터 주로 쓰이는 단위입니다.

 

이외에도 다양한 용어가 있지만 사실 주로 쓰이는 것들은 이 3가지가 됩니다.

frame과 packet만 구분할 수 있으면 됩니다.

주소

MAC


IP

ipv4 4bytes 32bits 주소 체계
ipv6 6bytes 48bits 주소 체계

5공학관 5층 건물에서 256개 호스트를 커버할 수 있을 때,
192.168.5.x
4층 건물에서
192.168.4.x
1공학관 1층 건물은?
192.167.1.x 이런식으로 할당 가능!

우리집에서 A클래스로 할당하면? 끽해뫄야 30개 안넘는데, 너무 숫자 낭비입니다.
왠만한 회사, 학교에서도 C클래스를 이용합니다.

 

참조

대학교 네트워크 프로토콜 강의

'CS > Network' 카테고리의 다른 글

[Network] DHCP  (0) 2022.10.18
[Network] IP  (0) 2022.10.14
[Network] DNS  (0) 2022.10.11
[Network] ARP  (1) 2022.10.04
[Network] Ethernet  (0) 2022.09.29