네트워크

OSI 7계층

소프 2022. 1. 2.
💡 OSI 7계층에 대한 전반적인 개념을 이번 글 포스팅 하나로 학습하고자 내용이 다소 많습니다.
   스크롤을 내려 오른쪽의 목차를 이용하여 원하는 부분만 보실 수 있습니다.

개념

OSI 7계층이란 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. (나무위키)

쉽게 말하면, 네트워크에서 통신이 일어나는 과정을 7계층으로 나눈 모델입니다.

 

OSI 7계층이 탄생한 배경

OSI 7계층 탄생 배경

OSI 7계층이 탄생하기 이전에는 회사마다 독자적인 장비 구조가 대다수 였습니다.

결국 같은 회사의 컴퓨터끼리만 네트워크를 연결할 수 있었고 서로 다른 기종간의 네트워크 필요성이 대두되었습니다.

위와 같은 호환성 이슈를 방지하고 모든 시스템들 간의 상호 연결에 문제가 없도록 ISO에서 OSI 참조 모델을 표준으로 제시했습니다.

 

💡 네트워크(Net + Work)란?
통신 장비끼리 마치 그물망처럼 연결되어 데이터들을 주고 받는 집단

7계층으로 나눈 이유

그렇다면 왜 7계층으로 나눴을까요? 적절한 비유가 있어 인용해봤습니다.

PC방에서 오버워치를 하는데 연결이 끊겼다.
어디에 문제가 있는지 확인을 해보자.

모든 PC가 문제가 있다면 라우터의 문제 : 3계층 네트워크 계층
광랜을 제공하는 회사의 회선 문제 : 1계층 물리 계층
한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면 7계층 Application 계층
오버워치 소프트웨어에 문제가 없고, 스위치에 문제가 있다면 2계층 data-link 계층
해당하는 계층만 문제가 있다고 판단해 다른 계층에 있는 장비나 소프트웨어를 건들이지 않는것이다.

위 인용 처럼 통신이 일어나는 과정을 단계적으로 파악하기 용이하기 때문입니다.

각 계층은 독립적인 상하구조의 계층적 특성으로 특정 계층에서 이상이 생겼을 때 다른 계층은 확인할 필요없이 문제가 있는 계층만 고쳐서 문제를 해결할 수 있습니다.

※ 상하구조 체계는 윗 계층이 동작하기 위해선 아래 계층들이 잘 작동되어야 함을 전제로 합니다. 

배우는 사람들이 쉽게 습득(?) 가능하고, 표준모델이 있기에 의사소통에 용이합니다.

 

OSI 7계층과 TCP/IP 5계층

OSI 7계층과 TCP/IP 4계층

데이터 표준을 정리한 것이 OSI 7계층이였다면, 현재 해당 이론을 실제로 사용하는 인터넷 표준은 TCP/IP 5계층입니다.

사실 TCP/IP 5계층은 미국방성의 연구에 의해 먼저 개발되었다고 합니다. OSI 7계층으로부터 진화된 계층이 아닌, 별도의 모델이라 볼 수 있습니다.

※ 오늘날 패킷 교환 방식을 처음으로 채택한 ARPANET(인터넷의 시초)이 TCP/IP 5계층이 적용되었습니다.

※ 기존 TCP/IP 4계층이 5계층으로 updated 되었습니다. 네트워크 접속 계층이 OSI 7계층의 1, 2계층과 마찬가지로 Link 계층, Physical Layer 으로 바뀌었습니다.

 

TCP/IP 모델은 인터넷 모델이라고도 불립니다. 오늘날의 인터넷 표준은 TCP/IP 모델이기 때문입니다.

TCP/IP 모델은 인터넷이 개발된 이래로 계속 표준으로 되어왔습니다. 따라서 수십년간의 운용 경험에 의해 신뢰도가 높습니다. 하지만 OSI 7계층은 가이드 역할로는 충실하지만, 실제 구현의 예가 거의 없어서 신뢰도가 낮아졌습니다.

 

※ 모델간의 차이점은 존재하지만, 계층간 역할로 봤을땐 큰 차이가 없어 TCP/IP 모델은 따로 설명하진 않겠습니다. (누구맘대로??)

OSI 7계층

관련 학과 학부생들이면 암기하기 위해 '물데네전세표응'으로 문장을 지어서 외웠을 것입니다. 필자도 그랬습니다. 단순 특징만 암기하는게 아니라 계층의 역할과 원리를 이해하다보니 자연스럽게 습득이 되므로 커피 세잔 마시면서 천천히 읽어보시길 바랍니다.

1계층 - 물리 계층(Physical Layer)

디지털 신호

컴퓨터는 전기가 흐른다(1), 흐르지 않는다(0)는 디지털 신호로 데이터를 정의하며, 다른 컴퓨터와 통신하려면 0과 1을 주고 받으면 됩니다. 

위 그림은 디지털 신호로 볼 수 있습니다. 수직선과 수평선이 있는 디지털 신호는 항상 0 ~ 무한대[Hz]의 주파수 범위를 갖고 있습니다. 이러한 불규칙적인 주파수 범위를 가지고 있는 디지털 신호를 현실에서의 매개체들은 감당할 수 없습니다. 

디지털 신호와 아날로그 신호

따라서 곡선형태의 아날로그 신호로 바꿔서 전송해야 합니다.

※ 디지털 신호와 아날로그 신호를 통틀어 전기 신호라 부릅니다.

 

※ 기저 대역 전송방식으로 디지털 신호를 아날로그 신호로 변환하지 않고 데이터를 전송(Baseband Transmission)할 수 있습니다. 하지만 하나의 전송로에 복수의 신호를 다중화할 수 없고 감쇠와 같은 전송장애로 인해 비교적 단거리 전송에 많이 사용 됩니다. 주로 구내 정보 통신망(LAN)에 사용됩니다.

 

(좌) UTP 케이블 / (우) 랜카드

 

어느 하드웨어가 디지털 신호 -> 아날로그 신호로 바꿔줄주는 걸까요? 랜카드가 해당 역할을 수행합니다.

흔히 본체나 노트북에 랜선 케이블이 랜카드에 꽃혀져 있는걸 볼 수 있습니다.

메인보드에 내장되어 있거나 별도로 부착되어 있는 랜카드는 0과 1의 디지털 신호를 전선에 해당하는 UTP 케이블로 아날로그 신호를 전달합니다. 반대로 아날로그 신호를 0과 1의 디지털 신호로 변환하는 역할까지 합니다.

 

물리계층 요약

 

최소 두대의 컴퓨터가 통신하기 위해 0, 1의 디지털 신호를 아날로그 신호로 바꾸어 전선으로 흘려 보내고 아날로그 신호를 0, 1의 디지털 신호로 해석하는 역할을 하는 것이 Physical Layer가 하는 역할입니다.

단순히 데이터만 전달하기 때문에 오류 제어기능은 수행하지 않습니다.

Physical Layer의 미디어 타입은 유선으론 구리, 광섬유 등이 있고 무선으론 라디오파, 마이크로파, 적외선 등이 있습니다.

대표적인 장비로 통신 케이블, 리피터, 허브 등이 있습니다.

(좌) 리피터 (우) 허브

리피터의 역할

500ml 물통에 물을 가득 넣어두고 반복해서 옆 사람의 물통에 옮기면 물이 튀기거나 햇볕에 의해 증발하여 계속해서 조금씩 물이 줄어들 것입니다.

전기 신호도 위와 동일한 현상이 일어납니다. 전선이 매우 길면 전기는 전선을 타고가며 점점 손실이 일어납니다.

이러한 손실에 의해 전송에 문제가 생기는 것을 방지하기 위해 리피터는 세기가 약해진 아날로그 신호를 받아서 다시 강화시켜주는 역할을 합니다. 약해진 파형을 다시 정상으로 만들어준다고 보면 됩니다. 요즘에는 리피터가 따로 나오는 것이 아니라, 다른 네트워크 장비에서 리피터의 역할까지 맡는 경우가 많아 이제는 잘 사용하지 않습니다.

 

허브의 역할

컴퓨터를 여러대 연결할 수 있는 네트워크 장비입니다. 허브는 리피터처럼 전기신호를 정형하고 증폭하는 기능도 합니다. 1:1로 데이터를 전송하는 것이 아니라 여러 컴퓨터의 집합을 만들어서 서로 데이터를 공유할 때 유용합니다.

그러나, 허브는 내가 보내고 싶은 목적지 컴퓨터에만 신호를 보내는 것이 아니라, 허브에 연결된 모든 컴퓨터에 신호를 보내서 더미 허브(dummy hub) 라는 이름으로 불리기도 합니다.

이러한 단점을 보완해서 만든 것이 data-link 계층에서 설명할 스위치입니다.

 

2계층 - 데이터링크 계층(DataLink Layer)

네트워크는 N대의 컴퓨터가 서로 통신하는 것을 고려해야 합니다.

N대 이상의 통신장비에 연결되어 있는 전선

그러면 모든 컴퓨터마다 전선을 이어야 할까요? 위 방법은 비용면이나 효율면에서 비효율적입니다.

따라서, 컴퓨터 당 하나의 전선을 가지고 여러 대의 컴퓨터와 통신할 방법을 찾아야 합니다.

허브에 연결된 컴퓨터

물리계층에서 언급한 허브를 두면 전선의 개수를 줄일 수 있습니다.

 

허브의 단점

하지만 허브는 신호를 전달받을 포트뿐만 아니라 나머지 포트에도 전달하는 문제가 있습니다. 관계없는 다른 장비들도 데이터를 받으면 곤란한 상황이 발생할 수 있습니다. 또한, 컴퓨터 여러 대가 동시에 데이터를 보내면 데이터들이 서로 부딪히는 충돌이 발생할 수 있습니다.

 

이러한 문제를 해결하기 위해 이더넷이 등장했습니다.

이더넷은 '랜에서 데이터를 정상적으로 주고받기 위해 적용하는 규칙'입니다.

첫번째 문제인 원치않는 브로드캐스팅 문제를 해결하기 위해 기기들마다 고유한 MAC 주소를 가지고 상호간 데이터를 주고받을 수 있습니다.

두번째 문제인 충돌을 해결하기 위해 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 라는 방법을 이용합니다.

CS: 컴퓨터가 케이블에 신호가 흐르는지 확인.
MA: 신호가 흐르지 않는다면, 데이터를 보낸다.
CD: 충돌이 발생하는지 확인.

케이블에 신호가 흐른다면 신호를 보내는 컴퓨터가 잠시 대기하는 방식으로 충돌을 해결했습니다.

그런데, 현재 현실에서는 이러한 방식은 비효율적이어서 거의 쓰이지 않고, 대신에 스위치를 도입시켰습니다.

 

MAC 주소란?

랜카드에 MAC주소란게 있습니다. 전 세계에서 유일한 번호로 할당되어 있고 물리 주소라고도 불립니다.

 

OSI 7계층의 캡슐화 및 역캡슐화

네트워크 통신에서 송신할 때에는 OSI 모델이나 TCP/IP 모델에서 필요한 정보를 헤더에 담아 데이터에 붙여나가는 작업인 캡슐화를 진행합니다. OSI에서는 데이터 링크 계층, TCP/IP에서는 네트워크 계층에 해당하는데, 이 계층에서 이더넷 헤더와 트레일러를 붙이게 됩니다.

프레임

이더넷 헤더는 목적지의 MAC 주소(6 바이트), 출발지의 MAC 주소(6 바이트), 유형(2 바이트) 총 14바이트로 구성되어 있습니다.

트레일러 FCS(Frame Check Sequence)라고도 하는데, 데이터 전송 도중에 오류가 발생하는지 확인하는 용도로 사용합니다.

이렇게 데이터 링크 계층에서 전송하는 데이터 전체 구성을 '프레임(Frame)'이라고 합니다.

 

이러한 프레임 덕분에 원하는곳에만 데이터를 전송할 수 있고, CSMA/CD 규칙에 의해 충돌을 방지할 수 있습니다.

이더넷 방식

허브를 예로 들면 컴퓨터 A가 보낸 데이터를 컴퓨터 B~D에 다 전송하지만 컴퓨터 C, D는 이더넷 헤더에 붙어 있는 목적지 MAC 주소와 자신의 MAC 주소가 다르기 때문에 데이터를 파기합니다. 컴퓨터 B는 목적지 MAC 주소와 자신의 MAC 주소가 일치하므로 데이터를 파기하지 않습니다.

 

스위치

스위치는 LAN을 구성할 떄 사용하는 단말기 간 스위칭 기능이 있는 통신망 중계 장치입니다.

 

스위치 안에는 MAC 주소 테이블이 존재하는데 MAC 주소 테이블에는 스위치의 포트 번호와 해당 포트에 연결되어 있는 컴퓨터의 MAC 주소가 등록되어 있는 데이터베이스 입니다.

맨 처음 전원을 킨 스위치 MAC 주소 테이블에는 아무것도 등록되어 있지 않지만 MAC 주소가 추가된 프레임이라는 데이터가 전송되면 MAC 주소 테이블에 포트 번호와 함께 추가 됩니다. 만약 이미 등록되어 있는 MAC 주소라면 건너 뜁니다. 이를 MAC 주소 학습 기능이라고 합니다.

 

 

스위치 플러딩

하지만 스위치도 만능 해결사가 아닙니다. MAC 주소 테이블에 MAC 주소가 등록되어 있지 않다면 허브와 같이 등록되어 있지 않은 포트 번호에 모두 전송되는 플러딩(Flooding)이 발생합니다.

 

MAN 주소 필터링

 만약 MAC 주소 테이블에 컴퓨터 B의 MAC 주소가 등록되어 있고 컴퓨터 B로 데이터를 전송한다고 가정한다면 목적지 컴퓨터인 컴퓨터 B로만 전송하게 됩니다. 이를 MAC 주소 필터링이라고 합니다. 즉, 불필요한 데이터를 네트워크에 전송하지 않습니다.

 

허브와 달리 스위치는 데이터 충돌이 발생하지 않습니다. 이유를 파악하기에 앞서 데이터 통신방식을 살펴봐야 합니다.

 

데이터 통신 방식에는 전이중 통신 방식과 반이중 통신 방식 2가지가 있습니다.

전이중 통신방식

전이중 통신 방식은 데이터의 송, 수신을 동시에 통신하는 방식입니다.

위 그림과 같이 컴퓨터 1과 컴퓨터 2를 직접 랜 케이블로 연결한다면 선을 네 쌍을 사용하기 때문에 전이중 통신 방식이 됩니다.

 

반이중 통신방식

반이중 통신 방식은 회선 하나로 송신과 수신을 번갈아가면서 통신하는 방식입니다.

허브 내부에는 송, 수신이 나누어져 있지 않기 때문에 컴퓨터 A와 B를 허브로 연결하면 동시에 데이터를 보낼 때 충돌이 이 발생합니다. 

 

스위치 - 전이중 통신방식

스위치는 충돌이 일어나지 않는 구조로 되어 있기 때문에 전이중 통신 방식으로 데이터를 주고 받을 수 있습니다. 이처럼 허브를 사용하면 충돌로 인한 네트워크 지연이 발생하기에 최근에는 네트워크로 스위치를 사용합니다. 

 

ARP(Address Resolution Protocol) 프로토콜

ARP 프로토콜은 목적지 컴퓨터의 IP 주소를 이용하여 MAC 주소를 찾기 위한 프로토콜입니다.

※ IP 주소는 3계층인 네트워크 Layer에 IP 헤더로 추가되어 2계층으로 넘어옵니다.

지정된 IP 주소를 네트워크에 브로드캐스트하여 ARP 요청을 만들어 보냅니다. 지정된 IP 주소를 가진 컴퓨터가 ARP 응답을 주면, 이를 통해 ARP 테이블(MAC 주소와 IP 주소의 매핑 정보)을 만들어 메모리에 보관합니다.

IP 주소가 변경되면 MAC 주소도 함께 변하기 때문에, 보관중이던 정보를 일정 시간이 지나면 삭제하고 다시 ARP 요청을 합니다.

 

 

데이터링크 계층 요약

결국 같은 네트워크에 있는 여러 대의 컴퓨터들이 스위치를 통해 데이터를 주고 받는 역할을 수행하며,

물리적으로 인접하여 연결된 네트워크 기기까지 데이터를 잘 전송할 수 있을까에 초점을 맞추고 MAC 주소를 사용한다고 볼 수 있습니다.

물리 계층은 데이터를 전달만 한다고 앞서 언급했습니다. 따라서, 물리 계층에서 발생할 수 있는 오류를 찾고 수정하는데 필요한 기능/절차들을 제공합니다.

  • 프레이밍: Physical Layer를 통해 받은 신호를 조합해 Frame 단위의 데이터 유닛으로 만들어 처리
  • 흐름제어: 데이터를 송수신 시, 너무 많거나 너무 적은 데이터를 송수신하지 않도록 흐름제어
  • 오류제어: 프레임 전송 시 발생한 오류를 복원하거나 재전송
  • 접근제어: 매체 상 통신 주체(장치)가 여러 개 존재할 때, 데이터 전송 여부 결정
  • 동기화: 프레임 구분자 (특별한 bit 패턴)

마찬가지로, 데이터 링크 계층 기술은 랜카드에 구현되어 있습니다.

데이터를 받아서 이더넷 헤더를 붙이고, FCS를 붙여 전기 신호로 만들어주는 것 까지 수행합니다.

 

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

데이터링크 계층에서는 스위치를 통해 같은 네트워크에 있는 컴퓨터 끼리만 통신이 가능했습니다. 

네트워크 대역

네트워크 계층의 역할은 다른 네트워크 간의 통신을 가능하게 해주는 역할을 수행합니다.

라우터

2계층인 데이터 링크에서 스위치가 필요했던 것처럼 네트워크 계층에서는 라우터라는 장비가 필요합니다.

라우터는 해당 목적지까지 가는 최적의 경로를 안내해줍니다. 이를 라우팅이라 합니다. 

라우터에는 라우팅 테이블이 있어 경로 정보를 등록하고 관리합니다.

※ 라우터는 스위치의 기능도 포함되어 있습니다. 흔히 볼 수 있는 공유기에 해당합니다.

 

데이터를 보내려는 목적지를 알기 위해선 네트워크를 식별할 수 있는 IP 주소(IP Address)를 알아야 합니다.

※ IP 주소는 네트워크상에서 컴퓨터가 가지는 고유한 주소이며 ISP(Internet Service Provider)에서 제공합니다.

IP 패킷

네트워크 계층에는 IP(Internal Protocol)라는 프로토콜이 있습니다. IP 헤더를 붙여 캡슐화를 진행해 만든 것을 IP 패킷이라 합니다. IP 헤더에는 그림과 같이 많은 정보가 담겨져 있습니다. 중요한 점은 출발지 IP 주소와 목적지 IP 주소가 담겨져 있다는 것입니다.

 

라우터

스위치 - 라우터

라우터는 위에 설명했듯, 스위치로 연결된 서로 다른 네트워크들이 통신하는데 필요한 장비입니다.

위 그림은 스위치에 라우터를 연결한 모습입니다.

네트워크를 구분하는 네트워크 ID가 다른 것을 볼 수 있습니다. 왼쪽 스위치의 네트워크 ID 192.168.0 이며 오른쪽 스위치의 네트워크 ID 192.168.1 입니다.

 

네트워크를 분할한 다음 컴퓨터 한 대가 다른 네트워크로 접속하려면 네트워크의 출입구를 설정하는 기본 게이트웨이를 설정해야 합니다.

일반적으로 해당 대역의 1 호스트 ID 라우터의 IP 주소가 게이트웨이 주소가 됩니다.

 

IP 주소에 대한 자세한 설명은 추후 포스팅 하겠습니다.

 

네트워크 입구는 설정했으니 라우팅 기능을 통해 데이터를 전송해야 합니다.

네트워크대역 - 라우터

 

라우터에 등록된 라우팅 테이블을 기반으로 데이터를 전송합니다.

 

[10분 테코톡] 🔮 히히의 OSI 7 Layer

A 호스트에서 B 호스트로 데이터를 보낸 다는 가정하에, 현재 data는 라우터 마에 위치해 있습니다.

우리가 보기엔 라우터 바로 이동하면 되는것처럼 보입니다. 하지만 라우터 마는 가,나,바 어디로 보낼지 알 수 없습니다. 이를 위해서 라우팅 테이블 정보를 참고합니다. 건네 받은 IP 주소를 보고 수신 호스트(55.10.54.74)가 속한 네트워크를 식별하여 도착 가능한 최적의 경로상에 있는 라우터를 찾아냅니다.

※ 깊게 들어가면 라우터는 패킷의 전송경로를 결정하기 위해 랜테이블, 네트워크 테이블, 라우팅 테이블을 사용합니다. 라우터는 위의 3가지 테이블을 관리함으로써 다른 네트워크에 연결된 장치들을 비롯하여 네트워크에 연결된 모든 장치들의 주소를 인식하고 이것을 바탕으로 패킷의 전송경로를 결정합니다. 자세한 내용은 다음 기회에 정리하겠습니다.

 

[10분 테코톡] 🔮 히히의 OSI 7 Layer

라우터가 데이터를 수신 및 송신 하는 그림입니다.

데이터를 건네 받은 라우터는 이더넷 헤더의 MAC 주소를 읽고 자기에게 온 프레임이 맞는지 확인한 후, IP 헤더에서 수신 호스트의 IP 주소를 읽고, 어느 라우터로 패킷을 전송할지 라우팅합니다. 최적의 경로 상에 위치한 다음 라우터에 해당하는 위치로 수신지를 결정한 라우터는 ARP 프로토콜을 사용해 다음 라우터의 IP 주소를 MAC 주소로 변환합니다. 라우터는 전달받은 프레임의 이더넷 헤더를 버리고, 다음 라우터의 MAC 주소를 다음 수신지로 한 새로운 이더넷 헤더를 붙여 라우터 B로 전송합니다.

 

라우터 간의 통신에 대한 자세한 내부 원리를 알고 싶으면 아래 링크를 참고 바랍니다.

쉽게 이해하는 네트워크 12. TCP/IP 모델의 인터넷 계층과 IP 프로토콜

 

라우팅 테이블에 경로 정보를 등록하는 방법은 수동 등록과 자동 등록이 있습니다.

수동으로 등록하는 방법은 소규모 네트워크에 적합하고, 자동으로 등록하는 방법은 대규모 네트워크에 적합합니다.

자동으로 등록하는 방법은 라우터 간에 경로 정보를 서로 교환하여 라우팅 테이블 정보를 자동으로 수정해줍니다.

이처럼 라우터 간에 라우팅 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜(Routing Protocol)이라고 합니다.

라우팅 프로토콜을 설정하여 라우터 간에 경로 정보를 서로 교환하고 그것을 라우팅 테이블에 등록해 나갑니다.

라우팅 프로토콜에는 RIP, OSPE, BGF 등이 있습니다.

 

네트워크 계층 요약

네트워크 계층의 역할은 목적지 IP 주소에 데이터를 넘겨주기 위해 경로 검색(라우팅)을 통해 찾은 다음 라우터에게 내 데이터를 넘겨주는(forwarding) 것을 반복하여 해당 네트워크에 방문하고, 목적지 IP에 내 데이터를 넘겨주는 역할을 수행합니다.

즉, 어떻게 하면 멀리 떨어져 있는 최종 목적지까지의 패킷을 잘 전송할 수 있을까에 초점을 맞추고 IP 주소를 사용한다고 볼 수 있습니다.

네트워크 계층은 운영체제의 커널에 소프트웨어적으로 구현되어 있습니다.

 

4계층 - 전송 계층(Transport Layer)

1,2,3계층으로 인해 전세계로 데이터를 송수신할 수 있게 되었습니다. 하지만 데이터를 전달만할뿐 수신 호스트가 패킷을 수신할 준비가 되었는지, 전송과정에서 패킷이 손상되거나 유실되지는 않았는지 등의 문제들은 신경쓰지 않습니다.

따라서, 패킷이 전송 과정에서 아무 문제 없이 제대로 수신지 컴퓨터에 도착할 수 있도록 패킷 전송을 제어하는 역할은 전송 계층이 담당합니다. (패킷 흐름제어, 오류 제어 등)

 

연결형 통신과 비연결형 통신

왼쪽 그림처럼 신뢰할 수 있고 정확한 데이터를 전달하는 통신을 연결형 통신이라 하며 TCP 프로토콜이 있습니다.

오른쪽 그림처럼 효율적으로 데이터를 전달하는 통신을 비연결형 통신이라 하며 UDP 프로토콜이 있습니다.

 

TCP(Transmission Control Protocol)

TCP 헤더

4계층에서는 TCP 헤더를 붙여 세그먼트를 만듭니다.

TCP 헤더는 검증 절차를 거쳐야 하므로 관련 정보들이 많기 때문에 UDP보다 복잡합니다.

TCP에 대한 자세한 내용은 추후 포스팅 하겠습니다.

※ UDP의 헤더에는 목적지 주소와 실 데이터만 존재합니다. (체크섬 제외)

이러한 점으로 인해 속도는 느립니다. 주로 신뢰성이 필요한 이메일이나 파일전송에 쓰입니다.

여기서 중요한 점은 출발지 포트번호와 목적지 포트번호가 존재한다는 점입니다.

 

TCP 프로토콜은 데이터 송수신 전에 3-way handshake를 통해 기종간의 연결이 잘 수립되었는지 먼저 확인합니다.

3-way handshake 과정은 아래와 같습니다.

  1. 통신을 하려면 컴퓨터2에게 허가를 받아야 하므로, 컴퓨터1에서 연결 확립 허가를 받기 위한 요청(SYN)를 보낸다.
  2. 컴퓨터2는 컴퓨터1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)를 보내고 동시에 컴퓨터1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)를 보낸다.
  3. 컴퓨터2의 요청을 받은 컴퓨터1은 컴퓨터2로 허가한다는 응답으로 연결 확립 응답(ACK)을 보낸다. 

연결을 끊을 때는 4-way handshake를 이용합니다.

4-way handshake 과정은 아래와 같습니다.

  1. 컴퓨터 1에서 컴퓨터 2로 연결 종료 요청(FIN)을 보낸다.
  2. 컴퓨터2에서 컴퓨터 1로 연결 종료 응답(ACK)을 반환한다.
  3. 또한 컴퓨터 2에서도 컴퓨터 1로 연결 종료 요청(FIN)을 보낸다.
  4. 컴퓨터 1에서 컴퓨터 2로 연결 종료 응답(ACK)을 반환한다.

 

UDP(User Datagram Protocol)

UDP는 TCP처럼 신뢰성을 중요시하지 않고 데이터를 효율적으로 빠르게 보내는 것을 중요시 합니다. 수신측에서 데이터를 제대로 받고 있는지 조차 신경을 쓰지 않습니다. 중간에 손실되도 다시 보내지 않고 오로지 빠르게 보내는 것을 목표로 합니다.

따라서 동영상 스트리밍방식으로 전송하는 동영상 서비스혹은 온라인 게임과 같은 곳에 사용됩니다. 

동영상을 TCP로 전송하게 되면 수신 확인하는 데 시간이 너무 오래 걸려서 동영상을 원활하게 볼 수 없습니다.

UDP를 사용한다해도 데이터 몇개가 소실되어 전체 화면에서 일부 구역이 제대로 안나오는 수준에 불과합니다.

UDP의 단위는 데이터그램입니다.

 

UDP

UDP는 확인 응답을 받지 않기 때문에 같은 랜에 있는 네트워크 장비에 브로드캐스트와 같이 불특정 다수에게 보내는 일괄 통신을 할 수 있습니다.

 

 

마지막으로 TCP와 UDP를 비교하는 적절한 사진을 가져와봤습니다. 저만 보고 빵 터졌나요? ㅎㅎ;

TCP & UDP

 

포트번호

데이터를 전송하는 궁극적인 목적은 애플리케이션이 데이터를 처리하여 애플리케이션의 목적에 따른 서비스를 제공하기 위한 것입니다. 포트 번호를 통해 원하는 애플리케이션을 식별하여 데이터를 전송하는 것입니다.

택배나 우편물을 배송을 비유하자면 다음과 같습니다.

기숙사 = IP 주소, 해당 호실의 사람 = 포트 번호

즉, 전송계층에서의 포트번호는 동일한 컴퓨터 안에서 통신을 하고 있는 애플리케이션을 식별할 때 사용하는 애플리케이션의 주소라고 할 수 있습니다.

 

포트번호 종류

ICANN에서는 포트번호를 크게 3종류로 구분하였습니다.

 

웰 노운 포트(well-known port) 번호는 HTTP(웹), FTP(파일 전송), SMTP(이메일 전송) 등과 같이 인터넷에서 널리 사용되는 서버 애플리케이션이 사용하도록 예약된 번호로 0 ~ 1023 까지의 번호가 할당되어 있습니다. 대표적으로 HTTP 프로토콜을 사용하는 웹 서비스는 포트 80번을 사용합니다.

 

등록된 포트(registered port) 번호는 웰 노운 포트 번호 이외에 자주 이용되는 서버 애플리케이션을 식별하기 위한 포트 번호로 1024 ~ 49151 까지의 번호가 할당되어 있습니다.

 

동적포트 할당

클라이언트 애플리케이션이 포트 번호가 필요할 때 할당할 수 있도록 배정된 번호를 동적 포트라고 하며 49152 ~ 65535 까지의 번호를 사용합니다. 클라이언트 애플리케이션은 자신의 포트 번호를 미리 결정하지 않고, 운영체제에 의해 포트 번호가 필요할 때마다 동적 포트 번호 범위 내에서 사용되지 않고 있는 임의의 번호가 자동으로 할당됩니다. 운영체제는 애플리케이션 별로 동일한 값이 할당되지 않도록 포트 번호를 관리하면서 동적으로 포트 번호를 할당해 줍니다. 따라서 통신이 시작되기 전까지 애플리케이션이 어떤 포트를 사용할지 알 수 없으며 사용하는 포트도 통신할 때마다 달라집니다.

클라이언트-서버간의 통신시 IP주소와 포트번호의 조합의 자세한 내용은 아래 링크 참조

IP 주소와 포트 번호의 조합으로 통신 상대방 식별

 

Physical Layer(1계층) ~ Transport Layer(4계층)의 주된 기능은 데이터를 전달하는 것이였습니다.

5계층부터는 데이터를 만드는 작업으로 컴퓨터 내의 프로세스들에의해 데이터를 만드는 작업 이라 할 수 있습니다.

※ TCP/IP 5계층에서는 5~7계층을 Application Layer 하나의 계층으로 설계 되었습니다.

 

5계층 - 세션 계층(Session Layer)

데이터가 서로 만나는 환경을 조성해주는 역할을 수행한다고 볼 수 있습니다.

앞선 1~4계층의 정상적인 역할 수행으로 네트워크 세션이 생성되었다고 표현할 수 있습니다.

즉, 생성된 세션을 통해 통신 장치들간의 상호작용을, 운영체제가 확립, 유지, 중단 하는 작업을 수행합니다.

통신장치 간의 통신방식을 결정할 수 있습니다. 종류로는 3가지, 즉 전이중 방식, 반이중 방식, 단방향 방식 등이 있다.

세션계층의 동기화

세션계층의 중요한 기능 중 하나인 동기화가 있습니다.

특정 지점에서 송수신 오류가 발생하면 이전에 동기점으로 설정한 통신이 완벽했던 지점부터 다시 재전송합니다.

대표적인 프로토콜/기술들은 SSH, NetBIOS 등이 있습니다.

 

6계층 - 표현 계층(Presentation Layer)

상위나 하위계층에서 사용하는 데이터 표현양식과 무관하게 사용할 수 있도록 해주는 환경을 제공합니다.

데이터 표현형식이 EBCDIC이고 크기가 5MB라 가정합시다. 이를 다른 형태로 번역하여 크기를 줄일뿐더러 응용 계층이 이해할 수 있는 언어로 변환할 수 있습니다. 

※ 7계층에서 5계층으로 캡슐화 될때는 서버가 이해할 수 있는 언어로 변환합니다.
해당 예시에선 ASCII로 바꿀 시 앞선 효과를 볼 수 있습니다.

또한, 우리가 흔히 보는 파일의 확장자가 해당 계층에서 결정된다고 보면 되며

데이터를 안전하게 전송하기 위해 암/복호화 작업도 수행합니다.

대표적인 기술로 SSL, JPEG, MPEG, ASCII, EBCDIC 등이 있습니다.

 

7계층 - 응용 계층(Application Layer)

유저와 가장 가까운 계층으로서 응용 프로세스 직접 관계하여 일반적인 응용 서비스를 수행합니다.

우리가 하는 크롬 웹 브라우저, 메신저 등이 7계층에 해당하는 프로토콜을 보다 쉽게 사용하게 해주는 응용 프로그램입니다.

 

대표적인 프로토콜로 HTTP, HTTPS, FTP, Telnet, DNS 등이 있습니다.

 

출처

[이해하기] OSI 7계층 그리고 TCP/IP 4계층

OSI 7 계층이란?, OSI 7 계층을 나눈 이유

네트워크 | OSI 7계층 그림과 함께 이해하기

OSI 7계층 등장 배경

OSI 7계층

모두의 네트워크 정리 - 1

모두의 네트워크 정리 - 2

모두의 네트워크 정리 - 3

필자가 추천하는 네트워크 전체 지식 관련 블로그

sparcs 21' Winterr Wheel Seminar 'Network' 세미나 PPT

댓글