티스토리 뷰
📌Created By: orangeblue
📌Last Edited: 2021년 9월 18일 오후 4:17
📌Tags: NETWORK
목표
목표 : OSI 7계층이란 무엇이며 이에 대한 특징을 설명할 수 있다.
개념
📌 OSI : OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것 | 위키백과
쉽게 설명하면 상대방과 데이터를 교환할 때 데이터 교환의 과정을 국제표준으로 지정하여 네트워크 통신 계층 7단계로 나누어 설명하는 것이다.
서로 다른 네트워크의 데이터 교환은 사진과 같이 7가지 계층을 통해 전달된다. 이때 각 계층에서 데이터를 처리하는 것이 다른데 아래에서 자세히 알아보자.
OSI 7계층
OSI 7계층은 상단부터 아래와 같이 구성된다. 즉 데이터의 흐름이 상단부터 하단으로 이어진다. 반대로 데이터를 받는 쪽에서는 하단부터 상단으로 데이터가 흐른다. 이 때 응용계층이 최상단, 물리계층이 최하단이 된다. 이 7계층은 미디어계층(하단계층)과 호스트계층(상단계층)으로 다시 나눌 수 있다.
- APPLICATION LAYER ( 응용 계층 7)
- PRESENTATION LAYER ( 표현 계층 6)
- SESSION LAYER ( 세션 계층 5)
- TRANSPORT LAYER ( 전송 계층 4)
- NETWORK LAYER ( 네트워크 계층 3)
- DATA LINK LAYER ( 데이터링크 계층 2)
- PHYSICAL LAYER ( 물리 계층 1)
📌 미디어 계층(Media Layer) : 하위 3계층(물리, 데이터링크, 네트워크)를 포함하고 하위계층이라고도 한다. 이 계층은 서로 연결된 컴퓨터 사이의 데이터전송 및 목적지까지의 데이터 전송의 전반을 담당
📌 호스트 계층(Host Layer) : 상위 3계층(세션, 표현, 응용)과 중간계층(전송)을 포함하는 계층으로 실질적으로 사용자와 친숙한 계층이라고 할 수 있음
간단하게 이해하는 OSI7계층 예시
만약 당신이 A라는 데이터를 보낸다고 해보자.
- APPLICATION LAYER에서 A라는 데이터를 보낸다(비밀번호, 사진 100장 등등)
- PRESENTATION LAYER에서 데이터를 암호화한다(혹은 압축)
- SESSION LAYER에서는 상대방에게 데이터를 보낼 수 있는지 인증체크를 한다(상대방 컴퓨터에 접근할 수 있는지)
- TRANSPORT LAYER에서는 데이터를 어떤 전송방식으로 전달할 지 결정한다(TCP/UDP, 나중에 자세히)
- NETWORK LAYER에서는 논리적 주소인 IP를 확인한다(공유기를 찾는다. 하나의 공유기에는 여러 컴퓨터를 가지고 있다. LAN)
- DATA LINK LAYER에서는 NETWORK LAYER에서 확인한 물리적 주소인 MAC를 통해에 나와 데이터를 교환할 특정한 컴퓨터를 찾는다.
- PHYSICAL LAYER에서는 광케이블같은 물리적인 설비(하드웨어)로 실제 데이터 교환가 전송된다.
📌 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)이란?
- TCP : 연결 지향형 프로토콜(규칙)로서 데이터의 흐름 및 제어와 에러 제어 등을 통해서 데이터의 확실한 전송(순서보장)을 보장한다. TCP에서는 통신을 위해 각 컴퓨터사이의 연결을 수립하는데 이 과정을 3-WAY Handshaking이라고 한다. 또한 연결 후 세션을 종료하는 과정을 4-WAY Handshaking이라고 한다.
- UDP : TCP와 같은 데이터의 전송을 할 수 있게 하는 프로토콜이지만 신뢰성(순서보장x, 데이터 유실 가능성)을 보장하지 않는다. 대신 TCP보다 빠른 전송속도를 가지고 있다.
📌 TCP(Transmission Control Protocol) 메커니즘
TCP는 확실한 데이터전송을 위한 규칙이라고 할 수 있는데 어떤 식으로 TCP가 이루어지는지 간단한 과정을 설명하자면,
A가 B에게 "JSON1"라는 정보를 보낸다.(A가 B에게 SYN을 보냄)
B가 정보를 받았다면 ACK라는 것을 A에게 보낸다.(B가 잘 받으면 A에게 SYN-ACK을 보냄)
ACK가 제대로 전달되면 A는 다음 정보"JSON2"를 보낸다.(A가 B에게 ACK을 보냄)
A가 다음 정보"JSON2"를 보냈는데 ACK가 오지 않는다면 다시 정보"JSON2"를 보낸다.
이때 B에게서 ACK가 온다면 다음 정보"JSON3"를 보낸다 ( 순서 보장 O)
📌 UDP(User Datagram Protocol) 메커니즘
- A가 B에게 "JSON1","JSON2","JSON3"을 보낸다.
- B가 받았는지 안받았는지 신경쓰지 않는다.
- 만약 "JSON2"가 유실될 수도 있다. ( 순서 보장 X)
속성 | TCP | UDP |
---|---|---|
연결 방식 | 연결형 | 비연결형 |
패킷 교환 방식 | 가상회선방식 | 데이터그램방식 |
전송 순서 | 전송 순서 보장 | 전송 순서 보장 못함 |
수신여부 확인 | 수신여부를 확인 | 수신 여부를 확인하지 않음 |
통신 방식 | 1:1통신 | 1:1 OR 1:N OR N:N 통신 |
신뢰성 | 높다 | 낮다 |
속도 | 상대적으로 느리다 | 상대적으로 빠르다 |
TCP, UDP는 다음 포스팅에서 더 자세히...
📌 TCP와 UDP는 언제 사용할까?
- TCP는 신뢰성이 관건인 파일전송이나 전화연결 등에 사용된다. 반면에 신뢰성은 TCP보다 떨어지지만 속도면에서 우위가 있는 UDP는 빠른 속도가 관건이거나 몇 개의 데이터 전송 누락을 무시해도 되는 상황에서 많이 사용한다. 예컨대 스타크래프트나 롤과 같은 다양한 게임에서 UDP를 사용한다.
APPLICATION LAYER(응용계층)
사용자와 응용프로그램이 정보교환을 할 수 있도록 네트워크에 접속할 수 있게 도와주는 역할
- 사용자와 가장 밀접한 계층으로 인터페이스 역할을 담당
- 응용 프로세스 간의 정보 교환이 이루어짐
- 간단하게 응용프로그램의 정보 교환이라고 생각하면 된다.
- HTTP나 FTP, DNS 등의 프로토콜이 이에 해당
- 예컨대 메일을 보낼 때 하이퍼텍스트 교환이 발생해야 하는데 이 때 HTTP 프로토콜 규격을 통해 처리하게 된다.
PRESENTATION LAYER(표현계층)
응용계층으로부터 데이터를 받거나 세션계층으로부터 받은 데이터를 풀어서 응용계층에게 전달하는 역할
- 데이터를 어떻게 표현할 지 정하는 역할
- 세 가지 기능을 주로 담당
- 데이터의 암호화, 복호화
- MIME 인코딩이나 암호화 등의 동작이 표현계층에서 이루어짐. EBCDIC로 인코딩된 파일을 ASCII 로 인코딩된 파일로 바꿔주는 것이 한가지 예
- 데이터의 압축
- 응용 계층과의 데이터 교환을 위한 변환
- 데이터의 암호화, 복호화
- 공통 표현 방식으로 ASN.1을 채택하고 있음
- 1:1 통신이라면 각각의 인코딩과 디코딩방식을 정하면 되지만 N:N통신에서는 서로 여러 사람들이 동시에 통신해야하므로 공통된 표현 방식이 필요하다. 이 때 사용하는 규격이 ASN.1이라고 생각하면 된다.
SESSION LAYER(세션 계층)
네트워크 상 양쪽을 연결을 관리하고 연결을 지속시켜주는 역할
- 연결 세션에서 데이터 교환과 에러 발생 시 복구
- 전이중, 반이중 통신 방식으로 통신 장치 간의 상호작용 및 동기화 제공
- 전반적인 TCP/IP 세션을 만들고 없애는 책임
TRANSPORT LAYER(전송 계층)
양 끝단(END TO END, A사람과 B사람) 데이터를 전송하고 받으며 이 과정에서 오류가 발생하면 다시 맞춰주고 컴퓨터에서 실행중인 프로세스까지 도달을 책임지는 역할
- TCP / UDP 프로토콜을 포함
- 종단 간의 정확한 데이터 전송을 위한 오류 검출, 데이터 흐름을 제어
- 프로세스까지 도달해야 하므로 데이터 전송을 위한 PORT 번호를 사용
- 전송계층의 데이터 단위는 세그먼트(Segment)
📌 포트(port)번호 : 컴퓨터에는 65,536(2의 16제곱)개의 포트번호가 존재하며 각 프로그램마다 통신을 위한 포트 번호를 사용한다(mariadb는 3306포트번호를 사용). 잘 알려진 포트번호(Well Known Port)란 0부터 1,023번까지의 이미 사용 용도가 정해진 포트 번호를 말하며 세계적으로 사용하고 있는 포트 번호 표준이다. 예컨대 HTTP는 80포트 번호를 사용한다.
📌PORT 번호 확인 방법
- windows 명령프롬프트(cmd)창에서 netstat라는 명령어를 사용한다. netstat를 사용하면 해당 컴퓨터가 어떤 IP, PORT와 연결되어 있는지 알 수 있으며 백도어나 해킹시도를 점검하기 위해서도 많이 사용한다.
- netstat -all : netstat 에서 사용되는 모든 명령어를 파악할 수 있음
- netstat -an : 현재 네트워크상에서 이루어지고 있는 프로토콜의 종류, 클라이언트, 수신 상태 등을 파악할 수 있음
- netstat -na : 각종 포트를 이용한 네트워크 송수신 사항을 파악할 수 있음. 이를 통해 좀비pc나 트로이목마같은 이상 포트로의 송수신을 이 명령어를 통해 추측할 수 있음
- netstat -nap tcp | find LISTEN : TCP 결과 중에서 LISTEN 상태만을 점검
- netstat -ano | findstr /c 포트번호 : -ano로 나온 결과의 수를 알려줌
- 만약에 mariadb를 사용하는데 이미 사용하고 있다고 한다면, 연결되어 있는 port를 찾아서 프로세스를 kill해야하는데 이 때 netstat -ano | findstr 3306을 하면 3306포트를 사용중인 프로세스를 찾아주고 프로세스 id를 대상으로 kill해주면 다시 연결 할 수 있다.
NETWORK LAYER(네트워크 계층)
여러 노드를 거칠 때 경로를 찾아주는 역할
전송 데이터가 목적지까지 찾아갈 수 있게 경로를 탐색해주는 역할
- 주소(IP)를 정하고, 경로(Route)를 선택
- 라우팅 기능을 맡고 있는 계층
- 데이터단위인 패킷(Packet - IP정보가 담겨있음)을 전달
- 장비는 라우터, L3 스위치 등이 있음
DATA-LINK LAYER(데이터링크 계층)
물리적 계층에 데이터를 전송하는 역할
- 물리적 연결을 통하여 인접한 두 장치 간의 신뢰성 있는 정보 전송
- 물리적 계층에 데이터 전송 시 오류 감지 및 재전송 기능
- 물리적 주소인 MAC주소(중복되지 않는 랜카드의 주소)를 통해 통신
- 데이터단위인 프레임(Frame)을 전달
- 장비는 브리지, 스위치 등이 있음
📌 Ip주소 및 MAC 주소 확인 방법
- windows 명령프롬프트 cmd창에서 > ipconfig /all이라는 명령어를 치면 이더넷 어댑터 이더넷이란 곳에 물리적 주소라는 것이 여기서 말하는 MAC주소이다. 또한 IPv4(8비트 4개, 총 32비트) 주소는 ip주소이다.
- 만약 wi-fi를 사용하고 있다면, 무선 LAN 어댑터 wi-fi부분을 살펴보면 된다.
- 98-2C-BC-16-00-17 이런 식으로 MAC주소가 구성되는데 앞의 6자리는 해당 네트워크 인터페이스를 만든 회사의 고유번호이고 뒤에 6자리는 자신의 장치의 고유번호이다.
PHYSICAL LAYER(물리 계층)
물리적인(하드웨어)설비를 통해 전기 신호를 사용하여 비트 스트림을 전달하는 역할
- 주로 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송
- 데이터는 0과 1의 비트열, ON OFF의 전기적 신호상태로 이루어져 해당 계층은 단지 데이터만 전달
- 데이터 전달이외의 기능은 없음
- 장비는 케이블, 리피터, 허브 등이 있음
정리
📌 컴퓨터 사이에 데이터를 교환할 때에 필요한 여러 과정이 있으며 이 때 이 과정을 국제표준화기구에서 만든 OSI 7계층으로 표현할 수 있다.
📌 각 계층은 최 상단부터 APPLICATION, PRESENTATION, SESSION, TRANSPORT, NETWORK, DATA-LINK, PHYSICAL LAYER로 구성된다.
📌 이 계층을 통해 일련의 과정을 거쳐 나와 상대방은 데이터를 주고 받을 수 있다.