HTTP네트워크에 대해 공부하던 중 OSI 7 Layer와 TCP/IP Layer에 대해 이해해보고자 정리해본다.
네트워크 프로토콜을 들어가기 전에 IP와 IP 패킷의 단점에 대해 알아보자.
IP(인터넷 프로토콜)
인터넷 통신의 기본
IP주소 :
각 컴퓨터들이 갖는 고유한 주소(ex: 55.10.54.75)
패킷 :
IP에 데이터를 전달하기 위해 이용하는 통신 단위
-> pack + bucket이 합쳐진 단어로, 소포로 비유할 수 있다.
데이터를 무사히 전송하기 위해 출발지 IP,목적지 IP, 등의 정보(IPv4 헤더, IPv6 헤더, IP 주소)가 포함되어 있다.
-> 우체국 송장과 비슷!단점 :
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트는 서버의 상태를 파악할 방법이 없기 때문에 패킷을 그대로 전송
- 비신뢰성
- 중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 파악할 방법이 없다.
- 전달 데이터의 용량이 클 경우 이를 패킷 단위로 나눠 데이터를 전달하게 되는데 패킷들은 중간에 서로 다른 노드를 통해 전달될 수 있다.
-> 클라이언트가 의도하지 않은 순서로 서버에 패킷이 도착할 수 있다.
이와 같은 IP 패킷의 한계를 어떻게 보완하는지 네트워크 프로토콜 계층을 통해 알아보자.
네트워크 프로토콜 계층에는 OSI 7 Layer와 TCP/IP Layer이 있다.
우선 OSI 7 Layer와 TCP/IP Layer가 무엇인지 알아보고, 각 단계별로 하는 역활에 대해 알아보고자 한다.
국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층이라고 한다.
목적: 이 모델은 프로토콜을 기능별로 나눈 것이다. 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다. '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다. 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다.
위키백과
통신이 일어나는 과정을 단계별로 파악할 수 있다.
계층을 분리함으로서 각 계층은 독립적인 역할을 할 수 있다.
7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있다.
현대 TCP/IP 5 Layer(model)이 산업계의 표준이다.
OSI 7 Layer은 이질적인 시스템간 상호 접속을 위해 공통적인 기반을 제공한다. 개념적으로 우수하기 때문에 Network 설계 기반은 OSI 7 Layer을 참조한다.(Reference로의 가치)
그러나 TCP/IP Model이 OSI 7 Layer보다 빨리 발표되었기 때문에 TCP/IP Layer가 표준이 되었다.
-> TCP/IP 모델은 4 Layer 버전도 있지만 현재는 Updated 된 5 Layer를 사용한다.
따라서 현재 쓰이고 있는 TCP/IP Updated Model을 기준으로 단계를 정리해보았다.
두 대의 컴퓨터가 통신할 때
모든 파일과 프로그램은 0과 1의 나열 -> 데이터 주고 받을 시 0과 1을 주고 받는다
encoding : 0과 1의 나열을 아날로그 신호로 바꾸어서 전선으로 흘려보낸다
decoding : 아날로그 신호를 받으면 0과 1로 해석해서 읽는다.-> Physical Layer란 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받게 해주는 계층
(input을 받아 output을 만든다 - 함수와 같음)
Physical Layer 기술이 구현되어 있는 곳
(!같은 네트워크에 있는) 여러대의 컴퓨터가 동시에 데이터를 보낼 때
01010111.. 여러 컴퓨터로 부터 받은 이어진 데이터를 어떻게 끊어읽느냐에 따라서 데이터가 제대로 전달된다.
하나의 네트워크 안에 스위치가 있어 전송한 데이터의 목적지를 찾아 목적지에만 데이터를 보내준다.Framing : 물리 계층을 통해 수신한 신호를 조합하여 프레임(Frame) 단위의 정해진 데이터 유닛으로 만들어 처리하는 작업
-> 즉, 데이터의 앞뒤에 특정한 비트열을 붙이는 것이고,그 전송 단위가 Frame이다.
-> 직접 연결된, 즉 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 계층
Data Link Layer 기술이 구현되어 있는 곳
(처음 시작 시 설명한 IP 패킷이 만들어지는 계층이다.)
더 많은 컴퓨터들이 통신할 때
상대방의 IP 주소를 알고 있어야 데이터를 보낼 수 있다.
데이터에 IP주소를 붙여서 패킷을 만든다
라우터가 패킷을 받아서 ip확인 후, 연결된 컴퓨터에 해당 주소가 없으면 다음 라우터에 넘긴다-> 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서
IP 주소(Addressing)를 이용해서 목적지 컴퓨터로의 길을 찾고(routing)
자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)
Network Layer 기술이 구현되어 있는 곳
운영체제 커널에 구현되어있다.
컴퓨터가 데이터를 최종 도착지로 전달할 때(해당 프로세스)
컴퓨터에서 실행되고 있는 여러 개의 프로그램, 즉 프로세스들은 포트 번호(Port Number)를 가진다.
포트 번호(Port Number): 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값 -> 프로세스를 식별하기 위한 숫자.(ex: https://www.naver.com:80 에서 80부분)
송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트번호를 붙여서 보낸다.
-> Port 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 계층
Transport Layer 기술이 구현되어 있는 곳
운영체제(OS)의 커널에 소프트웨어적으로 구현되어있다.
유저가 어플리케이션을 사용할 때
사용자는 어떠한 웹 사이트에 접속하고, 정보를 검색하거나 메일을 확인하는 등의 서비스를 이용한다.
(서버에)데이터를 요청하고 (클라이언트가)제공 받는다.-> 통신 서비스를 실현하는 계층
< OSI 7 Layer >
Session Layer
- 데이터가 서로 만나는 환경을 조성해주는 단계로
이 계층에서는 통신 시스템 사용자간의 연결을 유지하거나 설정합니다. TLS, SSH등이 이 계층에 속합니다.
Presentation Layer
- 데이터를 더 빠르고 안전하게 전송하기 위한 압축,
그리고 더 안전하게 전송하기 위한 암호화/복호화 작업을 하는 계층입니다.
이를 통해 위의 세션 계층 간의 주고받는 인터페이스를 일관성 있게 제공할 수 있습니다.
(해당 데이터가 **TEXT인지, 그림인지, GIF인지, JPG인지의 구분/ 코드 간의 번역을 담당)
Application Layer
- 도착한 데이터를 최종 사용자가 확인하는 마지막 단계라고 할 수 있습니다.
HTTP 프로토콜이 이 계층에 속합니다.