Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Kuma's Curious Paradise

[네트워크] OSI 7계층과 TCP/IP 정리 본문

카테고리 없음

[네트워크] OSI 7계층과 TCP/IP 정리

쿠마냥 2024. 4. 19. 01:52

코딩을 하느라 노트북을 두드리고 있다 보면, 이것이 얼마나 마법같은 일인가 생각한다. 노트북은 어떻게 메일을 보낼 수 있을까? 어떻게 물건을 주문할 수 있을까? 이 모든 것은 눈에 보이지는 않지만, 나의 노트북에서 발송된 요청이 저 멀리 네이버 서버에 가닿기 때문이다. 네이버 서버는 다시 응답을 보내주고, 요청과 응답의 과정이 반복된다. 나와 네이버처럼, 나의 노트북과 네이버의 데이터 센터처럼 서로 떨어져 있는 장치들을 연결하는 하드웨어와 소프트웨어의 조합을 '네트워크'라고 부른다.

 

최근 프로젝트를 하며 HTTP와 헤더, SSL/TLS, OAuth, 로드 밸런싱 등 다양한 네트워크 용어를 마주쳤다. 마법이 일어날 수 있도록 하는 약속이자 준비물들이었는데, 프로젝트를 하느라 많은 신경을 쓰지는 못했다. 따라서 앞으로 네트워크를 공부하며 이들을 좀 더 깊게 알아보고 통신 과정 전반에 대한 이해도를 높이려 한다. 오늘 슬쩍 공부해 보았는데, 정말, 정말 신기한 것이 많았다! 지치지 않고 꾸준히 공부할 수 있기를 바라며 오늘은 OSI 7계층과 TCP/IP에 대해 소개한다. 

 

1. 네트워크와 친해지기

1) 홈 네트워크

인터넷 설치 기사님이 오시면 꼭 설치하시는 것이 있다. 바로 모뎀과 공유기다. 모뎀은 디지털 신호를 아날로그 신호로(ex. 전화선), 아날로그 신호를 디지털 신호로 변환하는 장치다. 공유기는 쉽게 말하자면 네트워크 관리자인데, 모뎀에서 받은 인터넷 연결을 집 안의 여러 기기들이 공유할 수 있도록 해 준다. 와이파이 연결은 모두 공유기 덕분에 가능하다. 집의 네트워크는 이렇게 구성된다. 

옛날에는 모두 선으로 데스크탑, 전화기 등을 연결했기 때문에 유선 랜 카드와 랜선이 꼭 있어야 했다. 요즈음은 무선 랜(와이파이)이나 블루투스를 통해 컴퓨터, 스마트폰, 태블릿을 자유롭게 사용할 수 있다.

 

2) 데이터 센터 네트워크

우리나라의 대표적인 데이터 센터는 네이버의 춘천 데이터 센터, KT의 김포 데이터 센터가 있다. 이곳에서는 아주아주 많은 데이터 교환이 일어난다. 이를 위해 다양한 *이중화 기술을 사용하며 *10G, 100G, 400G와 같은 고속 *이더넷 기술이 사용된다. 기존에는 3계층 구성이 일반적이었으나, 요즘은 Spine(줄기)-Leaf(잎)의 2계층 구성을 사용한다. 

 

*이중화 기술 : 네트워크 시스템에서 중요 요소를 복제하는 것을 말함. 하나가 고장 나도 지장없도록 서버, 스토리지, 네트워크 경로 등을 이중화한다. 

*G: 기가비트(Gigabit). 데이터 전송 속도의 단위. 10G는 초당 10기가비트의 속도로 데이터를 전송한다는 뜻. 

*이더넷 : 여러 장치들이 네트워크 상에서 데이터를 공유할 수 있도록 하는 기술. 광섬유 케이블 or 트위스티드 페어 케이블을 주로 사용하며, 데이터 링크(2계층)에 속하는 기술이다. 

 

2. 우리의 약속, 프로토콜!

언어에 문법이 있듯이, 컴퓨터의 정보교환에도 문법(프로토콜)이 있다. 가장 많이 쓰이는 것이 TCP/IP 프로토콜이다.

 

3. OSI 7계층과 TCP/IP 프로토콜 스택

OSI 7계층과 TCP/IP 모델 둘 다 네트워크 통신을 이루는 프레임워크인데, 각각 구조와 강조점이 다르다. OSI는 네트워크를 7계층으로 나누는 방식으로, 세션-표현 계층이 명확히 구분된다. TCP/IP는 실제 인터넷에 좀 더 가까운 모델로 4계층으로 구성되며 7계층의 몇몇 계층이 통합되어 있다.

OSI 모델은 네트워크를 표준화하는 데 기여했으나 구현이 복잡하여 네트워크 작업을 느리게 만들었다. 따라서 현재 대부분의 네트워크는 TCP/IP 모델로 구성되어 있으나, 하나하나 동작을 나누어 이해하기에는 OSI가 더 적합하기 때문에 네트워크를 배울 때 이것으로 많이 시작한다고 한다. 

 

출처 : https://www.bmc.com/blogs/osi-model-7-layers/

 

그림에서 볼 수 있듯이, OSI는 총 7계층으로 이루어진다. 

OSI 모델 TCP/IP 모델
7계층 Application Layer 애플리케이션 계층 애플리케이션 계층
6계층 Presentation Layer 프레젠테이션(표현) 계층
5계층 Session Layer 세션 계층
4계층 Transport Layer 트랜스포트(전송) 계층 트랜스포트 계층
3계층 Network Layer 네트워크 계층 인터넷
2계층 Data Link Layer 데이터 링크 계층 네트워크 액세스
1계층 Physical Layer 피지컬(물리) 계층

 

1~4 계층을 Data Flow Layer 또는 하위 계층이라 부른다. 이 계층에서는 전기 신호를 데이터화하여 주소에 정확히 전달하는 역할을 한다. 네트워크 엔지니어가 주로 관심을 가져야 할 분야이다. 

5~7계층을 Application Layer 또는 상위 계층이라 부른다. 데이터를 얼마나 어떻게 만들건지, 데이터가 문법을 정확히 지켰는지, 사용자에게 어떻게 표현할 건지 등에 초점을 맞추는 영역으로 애플리케이션 개발자들이 고민해야 할 부분이다. 

 

4. *OSI 7계층, 자세히 알아보기

*OSI : Open Systems Interconnection의 약어. 다양한 시스템들(Systems)이 서로 연결(Interconnection)되도록 돕는 개방형(Open / 범용적) 모델이라는 뜻. 즉, 표준화된 통신 규약이다. 

 

1) 1계층 : '피지컬 계층'이라는 말 그대로 물리적인 연결이 이루어지는 곳이다. 허브, 리피터, 케이블, 커넥터, 트랜시버..... 이름만 들어도 어지러운 장비들을 가지고 전기 신호를 주고받는다. 우리가 보내는 요청들은 모두 전기의 켜짐과 꺼짐인데, 이를 주고받으려면 이 장비들이 필요하다. 

 

2) 2계층 : 전기 신호를 모아서 1과 0으로 이루어진 데이터 형태로 처리한다. 2계층의 중요한 특징은 *MAC라는 주소 체계가 있다는 것이다. *네트워크 인터페이스 카드는 물리적 장치로, 공장에서 태어날 때 고유한 MAC 주소를 발급받는다.이들은 데이터를 입력받으면 데이터에서 MAC 주소를 확인하고, 자신의 주소와 일치하면 메모리에 적재한다. (아니면 버린다.) *스위치는 내 단말기기가 어떤 MAC 주소를 가졌는지, 어느 포트에 연결되어 있는지 'MAC 주소 테이블'에 차곡차곡 저장한다. 이 데이터를 기반으로 단말들이 통신할 때 정확한 포트로 쏴 준다. 적절한 곳으로 정보를 보내주는 스위치 덕분에 네트워크 효율이 크게 향상되었고 이는 이더넷 기반 네트워크로 이어졌다. 

 

*MAC : Media Access Control의 약어. 이더넷 기반 장치가 통신할 때 필요한 물리적 주소다. '00:1A:2B:3C:4D:5E'와 같이 48비트 형식으로 표현된다. 

*네트워크 인터페이스 카드: 줄여서 NIC. PC나 서버에서 네트워크에 연결해 주는 카드나 인터페이스를 지칭한다. 이더넷 카드나 네트워크 어댑터라고 부르기도 한다고. 

*스위치: 데이터 패킷(프레임)을 올바른 곳으로 전달하는 역할을 한다. 연결된 각 장치의 MAC 주소와 포트를 학습한다. 들어오는 프레임의 목적지 MAC 주소를 확인하고 테이블에 있는 포트로 전송한다. 만약 주소가 테이블에 없다면 송신 포트를 제외한 모든 포트로 프레임을 플러딩한다. 

 

3) 3계층 : 통신을 하기 위해서는 두 가지 주소가 필요하다. 바로 MAC 주소와 *IP 주소. MAC는 네트워크 인터페이스 카드를 식별하는 물리적 주소이며 변경이 불가능하지만, IP 주소는 장치들 간 통신을 위한 논리적 주소로 (우리의 도로명 주소와 같은 것이다.) 동적으로 할당되며 변경이 가능하다. 3계층에서는 '*라우터'라는 장비를 사용하는데, 이는 IP 주소를 바탕으로 최적의 경로를 찾아 데이터 패킷을 전달한다. 

*라우터: 데이터 패킷의 전달을 관리하고 네트워크 간 트래픽을 제어하는 장치. 네비게이션 달린 우체부랄까... 

 

4) 4계층 : 1~3계층이 데이터를 잘 쪼개서 올바른 곳으로 보내는 역할이라면, 4계층은 데이터들이 잘 보내지는지 확인하는 역할을 한다. 네트워크는 데이터를 잘개 쪼개어 '패킷'에 실어보낸다. 따라서 중간에 패킷이 분실되거나 순서가 바뀔 수 있는데, 이런 일이 없도록 바로잡아 주는 일을 한다. 4계층에서는 패킷 헤더에 "이 순서로 보내시오!"라며 시퀀스 번호(Sequence Number)를, "이 순서로 받으시오!"라며 ACK 번호(Acknowledgement Number)를 적어 준다. 또한 패킷이 유실되면 재전송을 요청하며 순서가 뒤바뀌어도 바로잡아준다. 

4계층에서는 로드밸런서와 방화벽이 활동한다. 이들은 애플리케이션 구분자(포트 번호)와 시퀀스, ACK 번호를 활용하여 부하를 분산하거나 보안 정책을 수립하여 패킷을 통과하고 차단하는 기능을 수행한다. 

 

5) 5계층 :  네트워크 상에서 양 끝단 시스템이 세션을 형성하고 유지하며, 필요한 경우 종료할 수 있도록 관리하는 역할을 한다. 여기서 '세션'은 사용자가 인터넷 사이트를 켜서 창을 닫아 종료하기 전까지의 기간을 생각하면 된다. 사용자가 웹사이트에 접속하면 서버-클라이언트 간 세션이 형성되어 사용자는 요청을 보내고 서버는 응답을 할 수 있다. 

 

6) 6계층 : 서로 표현 방식이 다른 애플리케이션이나 시스템 간 통신을 돕기 위해 번역가 역할을 수행한다. 데이터 변환이나 암호화, 압축 등의 기능을 수행한다. MIME 인코딩은 이메일로 파일을 보낼 때 필요한 인코딩이며, 압호화와 압축은 데이터의 보안과 전송 효율을 높이는 데 사용된다. 

 

(인증 메일 기능을 구현하며 보았던 MIME! Multipurpose Internet Mail Extensions의 약자인 MIME은 이메일을 통해 텍스트가 아닌 데이터, 이미지, 비디오, 오디오 등을 전송할 수 있도록 하는 기술이다. 이룸 프로젝트에서는 단순 텍스트가 아닌 HTML 형식의 메일을 보내고자 했기 때문에 MIME 를 사용했다.) 

 

 

7) 7계층 : 사용자와 직접적으로 상호작용하는 애플리케이션을 말한다. 네트워크 서비스를 최종 사용자에게 제공하며, 사용자의 데이터 입력과 출력을 담당한다. 대표적인 프로토콜로 웹에서 데이터를 주고받을 때 쓰는 HTTP가 있으며, 파일 전송을 위한 FTP, 이메일 전송을 위한 SMTP 등 다양한 프로토콜이 있다. 

 

(위의 인증 메일 기능에서 나는 구글의 SMTP 프로토콜을 사용하였다...! Simple Mail Transfer Protocol의 약자인 SMTP는 이메일을 보내기 위한 규약으로, HELO 명령으로 서버에 자신을 소개하고 차례차례 MAIL FROM, RCPT TO, DATA, QUIT 명령으로 메일을 보낸다. 이메일 서버는 각 명령에 대해 상태 코드와 메시지로 응답하여 성공, 실패를 이메일 클라이언트(ex.naver mail)에 알린다.)

 

5. 인캡슐레이션과 디캡슐레이션

인캡슐레이션은 데이터를 보낼 때 발생한다. 예를 들어 이메일을 보내는 상황이라면, 애플리케이션에서 타닥타닥 타자를 치면 데이터가 생성된다. 7계층에서 일어나는 일이다. 4계층에서 헤더에 포트 번호와 같은 정보가 추가되고, 3계층에서 IP주소가, 2계층에서 MAC 주소가 추가된다. 이렇게 계층을 거치며 필요한 모든 정보가 캡슐화되어 목적지로 전송된다. 

 

인캡슐레이션이 옷을 하나하나 입는 과정이라면, 디캡슐레이션은 그 반대다. 데이터 패킷이 도착하면 각 네트워크 계층은 자신에게 해당하는 정보가 적힌 헤더를 읽고 제거한다. 그 결과 원래의 데이터만 애플리케이션 계층에 도달하게 된다.