본문 바로가기

웹/기초

어떻게 주고받는 거지..?

1년 전 42서울 과제였던(지금은 사라진) netwhat을 수행하기 위해 구글 검색창에 netwhat을 검색하면, 제일 많이 보이는 게 OSI 7계층글이었습니다. 이후에도 webserv를 하면서 볼 기회가 한번 더 있었지만, 생각보다 기반 지식을 모르고 프로젝트를 해도 어찌어찌 진행은 할 수 있었습니다. 근데 시간이 지나고 나니까 결국 대학 때 그렇게 싫어했던, 시험보기 위해 공부하고 시험 끝나면 잊어버리고가 되어버린 것이었습니다.

 

아마 지금 정리하는 것도 깊게 파지는 않겠지만, 그래도 정리하면서 한번 쯤 짚어보고 가는 게 좋을 것 같습니다.

 

대체 멀리 있는 사람과 어떻게 정보를 주고받는 걸까?

OSI 7계층 모델이란?

네트워크를 알기 위해선 결국 OSI 7계층 모델을 볼 수 밖에 없었던 것이었습니다. OSI 7계층(OSI 모형, Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것입니다.

출처: 크리에이티브 커먼즈

가장 밑에 있는 계층인 물리계층부터 위로 올라가면서 간단하게 설명을 추가하겠습니다.

 

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

가장 아랫층인 물리계층에서는 물리적인(기계적, 전기적, 기능적, 절차적) 수단을 통해 비트를 송수신합니다. 데이터를 전기신호로 변환해서 주고받는 기능을 합니다. 물리 계층에서는 데이터를 전송만 할 뿐 에러에 대해서는 신경쓰지 않습니다. 대표적인 장비로는 통신 케이블, 리피터, 허브 등이 있습니다. 전송 단위는 bit를 사용합니다.

 

2계층 - 데이터 링크 계층(Datalink layer)

물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보 전달을 수행할 수 있도록 도와주는 역할을 합니다. 오류를 찾고, 전송이 제대로 되지 않았다면 재전송도 합니다. 이 계층에서는 맥 주소를 가지고 통신합니다. 대표적인 장비로는 스위치가 있습니다. 전송 단위는 MAC주소를 사용합니다.

 

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

네트워크 계층에서는 데이터를 목적지까지 안전하고 빠르게 전달하는 기능(라우팅)을 합니다. 대표적인 장비는 라우터입니다. 이 계층에서 IP주소를 부여하고, 데이터를 작은 크기의 패킷으로 분할하여 전송하는 역할을 수행합니다. 

 

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

OSI 7계층 구조는 전송계층을 기점으로 하위계층인 네트워크 서비스와 상위계층인 사용자 서비스로 구별될 수 있습니다. 전송계층은 양 끝단(end to end)의 사용자들(송신자의 프로세스와 수신자의 프로세스)이 신뢰성있는 데이터를 주고받을 수 있도록 합니다. 따라서 상위 계층이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 합니다. 전송 계층에는 여러 프로토콜이 있습니다. 대표적인 전송 계층의 예는 TCP, UDP입니다. 전송 단위는 세그먼트입니다.

 

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

세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공합니다. 세션 계층에는 인증 및 중단, 재연결등의 기능을 합니다. 또한 다른 응용 프로세스가 응답할 대까지 기다리는 시간을 결정하기도 합니다. TCP/IP 세션을 만들고 없애는 책임을 집니다. SSL, TLS와 같은 프로토콜이 있습니다.

 

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

표현 계층은 네트워크 상의 여러 다른 데이터 표현 방식을 통일된 구문의 형식으로 변환시키는 기능을 수행합니다. . MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어집니다. 

 

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

응용 계층은 응용 프로그램과 통신 프로그램 간의 인터페이스를 제공합니다. 응용 계층의 프로토콜에는 HTTP, FTP, DNS 등이 있습니다. 

 


TCP/IP 모델이란?

위에서 언급한 OSI 모델은 사실 개념적인 모델입니다. 따라서 실제로 사용되는 프로토콜의 모음인 TCP/IP 모델도 알아야 합니다.

 

구글에 TCP/IP를 검색하면 인터넷 프로토콜 스위트라는 제목의, 다음과 같은 내용을 포함한 글이 나옵니다.

 

인터넷 프로토콜 스위트(영어: Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.

 

즉, 다시 한 번 천천히 살펴보자면, TCP/IP를 사용한다는 것은, IP 주소체계를 통해 목적지에 도달하여 TCP의 특성을 활용해 송신자와 수신자의 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것입니다.

 

둘을 비교한 표는 다음과 같습니다. 

 출처 : https://dikapedia.com/wiki/OSI_Model_%26_TCP/IP_Model

 

각각의 계층은 OSI 모델과 비슷하지만, 정확하게 일치하지는 않는다고 합니다. 하지만 제 짧은 지식으로는 아무리 읽어도 무엇이 다른지 모르겠습니다.  

 

TCP/IP에 대해 더 자세히 알아보고, 정리해야겠지만 일단 여기서 급하게 마무리하고, 이것저것 더 많이 알게되면 추가적으로 글을 작성해야겠습니다.

 

TCP/IP 모델의 각 계층별 프로토콜 다음과 같습니다.(아주 잘 정리해놓으신 분이 계셨습니다.)

출처: https://goitgo.tistory.com/25

각 계층 별 프로토콜

 
Application Layer
 
①FTP (File Transfer Protocol)
- 파일 전송 프로토콜
 
②VSFTP (Very Secure File Transfer Protocol)
- VSFTP는 보안 부분을 특히 강조한 데몬으로 Redhat,Suse,Open-BSD에서 기본 FTP로 채택하고 있으며 보안, 빠른 퍼포먼스, 안정성을 주요 특징으로 소개하고 있다.
 
③SNMP (Simple Network Management Protocol)
- SNMP는 TCP/IP 프로토콜 그룹을 이용하여 인터넷상에서 장치를 관리하기위한 기반구조이다. 이것은 인터넷을 감시하고 관리하기 위한 기본적인 운영을 제공한다.
 
④SMTP (Simple Mail Transfer Protocol)
- 전자 우편을 보내고 받는데 사용되는 TCP/IP 프로토콜이다.
 
⑤HTTP (Hyper Text Transfer Protocol)
- Web-Browser같은 응용프로그램을 통해 Web-Client와 Web-Server사이에 데이터를 전송하는 프로토콜 이다.
- 평문 (암호화 하지않은) 통신이기 때문에 도청이 가능하다.
 
⑥HTTPS (Hyper Test Transfer Protocol Secure)
- HTTP의 약점을 보안하기 위하여 HTTP 암호화나 인증 등의 구조를 더한 것 이다.
- 웹페이지의 로그인이나 쇼핑의 결제 화면 등에서 사용되고 있다.
 
⑦DNS (Domain Name System)
- 네트워크상에서 컴퓨터들은 IP주소를 이용하여 서로를 구별하고 통신한다. 사람들이 네트워크를 통해 원격의 컴퓨터에 접속하기 위해서는 IP주소를 이용하여야 하지만, 숫자의 연속인 IP주소를 일일이 외울 수 없기 때문에 쉽게 기억할 수 있는 도메인 주소 체계가 만들어 졌다.
- 도메인 주소를 IP주소로 변환시켜주거나 그 반대의 기능을 한다.
 
Transport Layer
 
① TCP (Transmission Control Protocol)
- 인터넷상의 컴퓨터들 사이에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용되는 프로토콜이다. IP가 실제로 데이터의 배달처리를 하는 동안, TCP는 데이터 패킷을 추적 관리한다.
- TCP는 연결지향 프로토콜인데, 이것은 메시지들이 각단의 응용프로그램들에 의해 교환되는 시간동안 연결이 확립되고 유지되는 것을 의미한다.
- TCP는 IP가 처리 할 수 있도록 메시지를 여러개의 패킷들로 확실히 나누고, 반대편에서는 완전한 메시지로 패킷들을 재조립할 책임이 있다.
 
② UDP (User Datagram Protocol)
- UDP는 IP를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지들이 교환될 떄 제한된 서비스만을 제공하는 통신 프로토콜이다.
- UDP 는 TCP와는 달리 메시지를 패킷으로 나누고, 반대편에서 재조립하는 등의 서비스는 제공하지 않는다.
- 교환해야할 데이터가 매우 적은 네트워크 응용프로그램들은 처리시간 단축을 위해 Tcp보다 UDP를 쓴다.
 
③SCTP (Stream Control Transmission Protocol)
- TCP와 UDP의 단점을 개선한 전송계층 기술로 고속전송과 신뢰성을 보장한다.
- Flow control : 시간당 송신자가 보내는 패킷의 양이 수신자가 수신할 수 있는 패킷의 양을 넘어서지 않게 하는 것이다.
 
Network Layer
 
① IP (Internet Protocol)
- TCP/ IP 기반의 인터넷 망을 통하여 데이터 전달을 담당하는 프로토콜이다.
- 패킷의 완전한 전달을 보장하지 않는다.
- IP패킷 헤더 내에 수신 및 발신 주소를 포함한다.
 
② ICMP (Internet Control Message Protocol)
- 인터넷 계층 프로토콜 중 ICMP는 호스트 또는 라우터 사이에 오류정보, 제어 메세지를 전달하는데 사용되며 주로 IP가 이용하지만 ping과같은 응용프로그램이 직접 사용하는 경우도 있다.
 
③ IGMP (Internet Group Message Protocol)
- 로컬 네트워크상의 멀티캐스팅 그룹관리를 위한 프로토콜
- 하나의 라우터와 여러 호스트로 구성되는 서브네트워크 상에서, 호스트들이 어떤 멀티캐스트 그룹에 속하는 가를 라우터가 알도록 하기위한 일종의 그룹 관리용 프로토콜
- ICMP, IGMP등은 데이터 전송용 프로토콜이 아니고, 네트워크상에 이벤트 또는 변화를 알리는데 사용되는 제어용 프로토콜이다.
 
④ ARP (Address Resolution Protocol)
- 인터넷에 연결되는 모든 호스트는 네트워크 계층 주소에 해당하는 32bit의 IP주소를 가지고 있다.
- LAN에서 어떤 컴퓨터에 IP패킷을 물리적으로 전달하기 위해서는 먼저 그 장비의 MAC주소를 알아야 하는데 어떤 장비의 IP주소를 가지고 그 장비의 MAC 주소를 알아내기 위한 절차(프로토콜)를 ARP 라고 한다.
- 동일한 목적지 호스트에 IP패킷을 연속하여 보낼 때 매번 ARP를 사용하면 ARP를 처리하기 위한 패킷들을 자주 전송하게 되어 대역 이용률이 떨어진다. 이와같이 매번 ARP request 패킷을 방송하지 않도록 하기위하여, ARP로 얻은 최근의 정보를 캐시에 기록해 두는 것이 효율적이다.
 
⑤ RARP (Reverse Address Resolution Protocol)
- ARP의 역과정 , 즉 48 비트의 MAC주소로부터 그 장비의 32비트 IP 주소를 알아내는 과정을 RARP 라고 한다.
 
 Data-Link Layer
 
① 이더넷
- 회선상에서 데이터를 전송하는 여러 가지 방식들중 현재 전세계적으로 90%이상 사용되는 대표적인 네트워크 형태이다.
- 데이터를 전송하기 위해 CSMA/CD 라는 약속을 사용하며 전송속도는 현재 10~1000Mbps 까지 다양하게 존재한다.
- 이더넷에 접속되어 있는 장치들은 어느때라도 데이터를 전송할 수 있는데, 전송하기 전에 회선이 사용 중인지 감시하고 있다가 회선이 비어 있을 때 데이터를 전송한다. 만약 데이터를 전송하는 시점에 다른 장치가 동시에 전송을 개시하면 충돌이 발생하게 되며, 충돌한 데이터들은 버려지고 데이터를 전송한 장치들에게 재전송을 요구하게 된다.