본문 바로가기
2CHAECHAE 학교생활/OSNW실습

[ OS/NW 실습 ] 5주차 - 네트워크 OSI 모델 7 계층 구조

by 2CHAE._.EUN 2022. 10. 8.

[ OSI ( Open System Interconnection ) ]

 

OSI : 네트워크에 대한 표준화 모델

목적 : 하드웨어나 소프트웨어 기반의 논리적인 변화에 대한 요구 없이 서로 다른 시스템 간의 통신을 원활하게

           하기 위해 사용한다. ( 유연하고, 안전하고, 상호 연동 가능한 네트워크 구조를 위해서 설계 )

 

네트워크 경로 : PC의 웹 브라우저 프로그램에서 부터 시작하여 네트워크 전선( cable )과 네트워크 장비를 거쳐서
최종적으로 웹 서버까지 전달되는 과정을 의미한다.


[ OSI 모델 - 7 계층 구조 ]

 

OSI 7 계층은 네트워크를 통해 데이터를 주고 받는 과정을 7개의 계층으로 나누어 설명한 모델이다.

* TCP/IP : 실제 구현이 되어 실질적인 표준처럼 사용되는 네트워크 모델 

                 → 오늘날의 인터넷이 TCP/IP 기반으로 동작하고 있다.

* 프로토콜 : 네트워크를 통해 데이터를 주고 받는 과정에 대한 약속

 

 


1. 물리 계층 ( Physical Layer )

 

광케이블, 구리케이블 또는 무선 같이 단말과 단말 사이를 실제 물리적으로 연결한다. 

* 단말 : 네트워크 사이를 연결해주는 관문 역할 + 네트워크에 참여한 모든 단말을 포함 ex) PC, 스마트폰

 

즉, 네트워크 상에서 실제 데이터가 물리적으로 전달되는 곳이 1계층인 물리 계층이다.

 

물리 계층은 비트( 0,1 )를 미디어 매체를 통해서 전송하는 아날로그 전송 방식이다.

* modulization : 아날로그 → 디지털

  demodulization : 디지털 → 아날로그

 

물리적인 매체를 통해서 비트 스트림( bit stream )을 전송하는데 필요한 기능을 제공한다.

또한 인터페이스의 기계적, 전기적 규격 및 전송 매체를 다룬다. ex) RJ45잭의 선색

 

UTP 케이블 CAT5, CAT5e, CAT6은 기억할 필요가 있음 ( Ethernet )

 

* 물리 계층 전송 모드

 

① 단방향( simplex ) 모드 : 하나는 보내기만 하고 다른 하나는 받기만 한다.

② 반이중( Half-Duplex ) 모드 : 송수신이 모두 가능하지만, 한번에 송신 또는 수신만 가능하다.

③ 전이중( Full-Duplex ) 모드 : 동시에 송수신이 모두 가능하다.

 


2. 데이터 링크 계층 ( Data Link Layer )

 

 

포인트 투 포인트( point-to-point, node-to-node, hop-to-hop )로 데이터를 전송하며, 1 계층에서 발생할 수 

있는 오류를 찾아내고 이를 수정한다. 

 

아날로그를 네트워크 상에서 전송할 때는 잡음이 껴서 에러가 날 수 있기 때문에 데이터 링크 계층은

물리 계층을 신뢰성있는 링크로 변환시켜준다.

→ 물리 계층이 0과 1로 구성된 비트 단위로 데이터를 전달하는 과정에서 데이터 링크 계층은 발생할 수 있는

에러를 검출하여 수정한다. 에러를 검출하는 기법으로는 패리티 검사( Parity check ) 등의 기법이 있고,

발견된 에러를 수정하는 방법으로는 전위/후위 에러 통제 등이 있다.

 

데이터 링크 계층은 네트워크 계층( 3계층 )으로 부터 받은 비트 스트림을 프레임( frame )이라는

데이터 단위로 나눈다. 데이터 링크 계층에서는 frame을 노드-투-노드로 주고 받는다.

* 2계층에서 전달하는 데이터의 단위를 프레임( frame )이라 하는데, 프레임은 3계층의 페이로드인 

패킷( packet ) 앞/뒤에 헤더와 테일을덧 붙인다.

 

데이터 링크 계층의 역할 : 흐름 제어 ( flow control )

→ 수신자가 받을 수 있는 속도로 전송한다.

 


3. 네트워크 계층 ( Network Layer )

네트워크 계층은 종단-대-종단( end-to-end )로 데이터를 전송하며, 발신지( source )로 부터 목적지( destination )

까지 패킷 전달을 위한 라우팅을 처리하는 계층이다.

 

* 라우팅( Routing ) : 데이터를 전달할 때 어떤 경로로 데이터를 보낼지 경로를 지정하는 것을 의미한다.

→ 발신지로 부터 목적지까지의 경로를 지정해 패킷을 전달한다.

* 패킷( Packet ) : 네트워크 계층의 데이터 단위 ( 덩어리를 의미한다. )

 

네트워크 계층에서는 최적의 전달 경로가 정해질 수 있도록 여러 가지 기능을 제공한다.

 

① 논리 주소 지정 ( Logical Addressing )

 

여러 개의 노드가 복잡하게 연결된 네트워크에서 길을 찾아가야 하므로 논리 주소를 지정하여 길을 찾아간다.

논리 주소의 대표적인 예로 IP( Internet Protocol )이 존재한다.

또한 다른 망( 네트워크 )에 있는 노드의 주소를 표현할 필요가 있다.

 

* 물리 주소 : 직접 연결된 노드 간에 사용 가능한 주소

 

② 네트워크 계층에서는 각 노드 사이의 전송 속도를 저장하고 있다.

 

전송 속도는 노드 사이의 전송 비용에 대한 추청치가 되기 때문에 이를 이용해 최적의 경로를 선택할 수 있다.

기존에 구해진 경로의 노드가 고장이 났다면 다른 노드를 이용한 대체 경로를 찾아서 전송할 수 있다.

 


4. 전송 계층 ( Transport Layer )

전송 계층은 데이터를 주고 받을 때 데이터의 유실( Loss )이 없도록 보장해주는 계층이다.

신뢰성을 위해 데이터를 주고 받는 종단-대-종단( end-to-end )에서 전달받은 데이터의 오류를 검출하고, 
만약 오류가 있다고 판단이 되면 재전송을 요청한다.

 

데이터 링크 계층에서 신뢰성있는 전송을 보장하더라도 전송 계층에서 다시 신뢰성이 사라진다.

즉, 네트워크 계층에서 신뢰성이 없던 데이터를 전송 계층에서 다시 신뢰성을 만들어준다.

* 신뢰성이 떨어지더라도 시간성이 더 중요한 데이터도 존재한다.  UDP

 

전송 계층의 역할로는 데이터의 유실이 없도록 데이터를 다시 보내는 흐름 제어( Flow Control )를 한다.

네트워크에서는 너무 큰 크기의 데이터 메시지를 전송할 수 없기 때문에 네트워크 전송에 적절한 크기인

segment 단위로 나누고 재조립할 필요가 있다.

* segment : 전송 계층에서 다루는 데이터의 단위

 

각각의 쪼개진 데이터 메시지에는 헤더( Header ) 정보를 덧붙여서 이 segment가 몇번째 segment인지에

대해 각 segment에 순서 번호를 부여한다. segment를 전달받은 쪽에서는 해당 헤더 정보를 이용하여

다시 메시지를 재조합할 수 있다.

 

상위 계층의 데이터를 페이로드( payload )라 하며 하위 계층에서 상위 계층의 페이로드에 헤더 정보를

붙이는 것을 캡슐화한다라고 한다. 

 

전송 계층의 헤더에는 데이터의 오류를 검출하고, 오류가 있다고 판단이 되면 재전송을 요청하는 등의

흐름 제어를 하기 위한 여러 가지 정보가 들어간다.

 

* 전송 계층의 역할

① segment 분할과 재조립

② 서비스 지점 주소 지정 ( Service Point Addressing )

→ 컴퓨터에는 여러 개의 프로세스( 실행 중인 프로그램 )가 동시에 동작하고 있다.

    전송 계층의 end-to-end 통신은 컴퓨터와 프로세스간의 통신이기 때문에 서비스 지점 주소인 포트 번호가

    필요하다. 

③ 연결 제어 (  Connection Control )

- 비연결형( Connectionless ) 전송 계층 ( ex) UDP ) : segment를 독립적인 패킷으로 다룬다.

- 연결지향 ( Connection-Oriendted ) 전송 계층 ( ex) TCP ) :

   segment 사이에 순서 번호로 상관 관계를 지정하고 각 segment를 순서대로 전달한다.

④ 흐름 제어 ( Flow Control ) : 종단을 연결하는 경로의 상태에 따라 전송률 제어

→ 2 계층의 흐름 제어와 4 계층의 흐름제어는 단위가 다르다.

⑤ 밀집 제어 ( Congestion Control ) 

→ 흐름 제어는 한 연결에 대한 제어이고 밀집 제어는 여러 개의 연결에 대한 제어이다.

⑥ 오류 제어 ( Error Control ) : 종단간 손상되거나 손실된 패킷 재전송 

 

* TCP( Transmission Control Protocol ) VS UDP( User Datagram Protocol )

 

TCP와 UDP는 모두 인터넷의 기반이 되는 통신 프로토콜이다. UDP는 실시간 멀티미디어 전송 등의 목적으로 많이

사용되고 있다.

( 멀티미디어 : 서로 다른 정보( 음성, 음악, 영상 등 )를 한 곳에 묶어서 전송할 수 있고, 수신단에서는 header를 

사용해서 분류가 가능하다. )

 

  TCP UDP
흐름 제어 O X
신뢰성 O X
속도 ( UDP 보다 ) 느림 ( TCP 보다 ) 빠름

 

UDP는 1개의 메시지를 여러 개의 segment로 나누어 전달할 뿐 신뢰성과 관련된 역할은 하지 않는다. segment가

중간에 전송을 실패한다면 TCP는 오류가 발생한 segment의 재전송을 요청하여 오류를 복구하지만 UDP는 오류 난

상태 그대로 통신을 진행한다.

 

하지만 UDP는 상대적으로 속도가 빠르다. 흐름 제어의 경우 추카적인 크기의 헤더 정보뿐만 아니라 오류 복구에 따른

추가적인 시간도 필요한데 UDP는 흐름 제어를 하지 않기 때문에 상대적으로 빠를 수 밖에 없다. 

 

즉 신뢰성이 떨어지더라도 시간성이 더 중요한 데이터인 실시간 영상 중계 등에서는 주로 UDP를 사용한다.

실시간 방송에서 화면이 깨져서 보이는 경우가 전송 도중 오류가 난 상태 그대로 통신을 진행하는 경우이다.

 


5. 세션 계층 ( Session Layer )

 

 

세션 계층은 두 개의 응용 프로세스에서 통신( 세션 )을 관리하는 계층이다. 

2개의 어플리케이션이 통신을 하는 방법으로는 Simplex, Half-Duplex, Full-Duplex 방식이 존재한다.

 

simplex 송수신 중 하나만 가능
half-duplex 송수신이 동시에 불가능하고 한 가지만 가능
full-duplex 동시에 송수신이 가능

 

세션 계층까지를 통해서 통신에 사용될 메시지가 만들어진다면 4계층부터 만들어진 메시지가 실제 네트워크로

전송된다. 


6. 표현 계층 ( Presentation Layer )

 

표현 계층은 두 시스템이 주고 받는 정보의 구문 및 의미론과 관련이 있다. 

표현 계층은 데이터를 표현함으로서 두 시스템이 주고 받은 데이터의 내용을 들여다 본다. 

 

즉, 표현 계층에서는 응용 계층에서 다루는 데이터의 형식을 변환하는 계층으로, 암호화 및 복호화,

인코딩 및 디코딩 등의 데이터 형식을 변환한다. 변환을 함으로서, 데이터의 양을 줄일 수 있다. 

 

① 변환( character encoding )

② 암호화 ( encryption, decryption )

③ 압축 ( data compression )

 

예를 들면, 전자 우편과 HTML 등이 존재한다. 

 


7. 응용 계층 ( Application Layer )

 

응용 계층은 응용 프로그램을 위한 프로토콜이다. 응용 계층은 사용자에게 인터페이스를 제공해준다. 

사용자는 응용 계층에서 제공하는 인터페이스를 이용하여 네트워크 서비스를 이용할 수 있다.

예를 들면, 웹 브라우저, FTP 프로그램 등이 존재한다.  

 


[ TCP/IP 프로토콜 ]

 

 

1. 물리 계층과 데이터 링크 계층 

 

① 특정 프로토콜을 지정하고 있지 않지만 주로 LAN과 PAN을 사용한다. 

 

* LAN( Local Area Network ) : LAN 안에서 관리하는 주체는 하나이다. ex) 학교

  PAN( Personal Area Network ) : ex) 블루투스

 

② channel : 2개가 연결이 되면 다 채널이다. 

 

 CDMA( Code Division Multiple Access ) : 코드 분할 다중 접속

 

③ packet 

 

- collision avoidance : CSMA/CD( Ethernet ) ( Carrier Sense Multiple Access / Collision Detection )

: 누군가 데이터를 보내고 있는지 감지하고 아무도 안보내고 있다면 내가 데이터를 전송할 수 있다.

또한 여러 명에서 접근이 가능하기 때문에 충돌을 방지하기 위해서 일부 전송자들은 순서가 뒤로

밀려나고 추후에 다시 접근을 시도해야한다.  충돌이 아예 안일어날 수 는 없기 때문에 가급적 피해서

충돌을 방지한다. 

 

- collision free : token ring, token bus

: LAN에서 디바이스끼리 통신을 할 때 token ring, token bus를 많이 사용한다.

 

- collision recovery : 충돌이 발생할 경우 복원한다. 

 


2. 네트워크 계층

 

IP( Internet Protocol )를 사용한다.

 

① ARP( Address Resolution Protocol ) : IP를 고유한 물리적인 주소로 변환한다.

* RARP : 물리적인 주소를 IP 주소로 변환하는 것

 

② ICMP( Internet Control Message Protocol ) : 네트워크 에러를 검사하고 보고하는 프로토콜

→ 문제를 해결하는 것이 아니라 네트워크의 상태를 점검할 뿐, 네트워크 상의 어떤 문제를 해결하진 못함.

     송신자에게 데이터그램의 문제점을 통지하는데 사용한다. 

 

③ IGMP( Internet Group Message Protocol ) : 인터넷 그룹 메시지 프로토콜 

→  멀티캐스트를 위해서 그룹을 관리하는 프로토콜로 그룹에 등록된 사용자에게 데이터를 전송하는 것

 


3. 전송 계층

 

① UDP( User Datagram Protocol ) : 사용자 데이터그램 프로토콜

→ 데이터그램을 상호 연관성 없이 단순 전달

    패킷의 손실, 중복 전달, 비순서적 전달 등 다양한 이슈가 발생할 수 있다. 

 

② TCP( Transmission Control Protocol ) : 전송 제어 프로토콜

→ 연결 설정 후, 스트림 형태로 데이터를 전달한다. 

    패킷들은 상호 연관성을 가지고 있어 순서 정보를 가지고 있다.

    손실된 패킷은 재전송되며, 중복 전달된 패킷은 수신자가 무시한다.

    비순서적 패킷 전달 문제가 발생하지 않는다. 패킷은 순서 정보를 가지고 있어 수신자 측에서

    순서 번호를 맞춘다. 

 

* 데이터 그램 : 기존 packet에 IP header를 붙이는 것을 의미

 


4. 응용 계층

 

socket programming