어떻게 주고받는 거지..?
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의 특성을 활용해 송신자와 수신자의 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것입니다.
둘을 비교한 표는 다음과 같습니다.
각각의 계층은 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 까지 다양하게 존재한다.
- 이더넷에 접속되어 있는 장치들은 어느때라도 데이터를 전송할 수 있는데, 전송하기 전에 회선이 사용 중인지 감시하고 있다가 회선이 비어 있을 때 데이터를 전송한다. 만약 데이터를 전송하는 시점에 다른 장치가 동시에 전송을 개시하면 충돌이 발생하게 되며, 충돌한 데이터들은 버려지고 데이터를 전송한 장치들에게 재전송을 요구하게 된다.