Django/네트워크

OSI7 Layer & TCP/IP

치킨맛코드 2021. 8. 28. 21:05

기업은 기본적으로 다른 기업과 경쟁을 하며 자신들의 기술을 외부로 공개할려고 하지 않는다. 네트워크 기기도 마찬가지인데 대부분의 네트워크 기기들은 기업과 기업 간 서로간 규약을 통해서 네트워크 기기를 만든것이 아니라 자사 기기의 최적화를 위해 만든 기기인 만큼 상호간 통신을 하기 어려운 문제가 발생했다. 

 

네트워크가 통신을 못한다는것은 중대한 문제이기에 이것을 해결하기 위해 모델을 만들었는데 이것이 TCP/IP, OSI 7 Layer 모델이다.

OSI 7 Layer and TCP/IP


먼저 OSI계층에 대해 알아보자.

하위 계층인 Physical, Data Link, Network, Transport, 상위계층인 Sesion, Presentation, Application으로 나뉘어져 있으며 각각의 기능은 다음과 같다.

1. Physical

실제 네트워크에서 필요한 장비들, 케이블, 전기적인 부분을 정의하고 있다. 데이터 통신을 하기 위해서는 '전기'를 사용하는데 장비와 장비 끼리 연결하는 구리선을 통해 전류가 흐르고 이것을 통해 데이터가 통신된다. 전류가 흐른다면 도착점이 있을 것 이며 즉 송/수신에 대한 정의가 필요하다. 또 이와같은 정의들은 단순히 송/수신을 하는것 뿐 아니라 받은 쪽에서 '동기화' 할 수 있는 기술도 필요하다. 상호간의 대역폭 도 맞춰야 하는데 한쪽 송신자는 10mbs를 사용하는데 수신자는 100mbs를 사용할때 낮은쪽으로 맞춰줘야한다.  이런 일련의 모든 과정이 끝난 후 데이터를 송 수신할 수 있게되며 일상속에서 가장 쉽게 확인할 수 있는 1계층은 UTP케이블(pc뒤에 연결된 인터넷케이블) 이다

2. Data Link

단순히 전기만 주고 받는것이 전부가 아니라 받은 전기를 바탕으로 데이터값으로 변환을 해야한다. 1계층에서 받은 전류값을 시스템이 이해할 수 있는 bit로, 이 bit를 모아서 하나의 단위인 프레임으로 만든다. 실제 데이터를 송/수신할때 에러를 감지할 수 있는 기능을 가지고 있다. (정정하지는 않음) MAC주소는 여기에 정의가 되어 있다.

3. Network

실제 구분했던 하나의 LAN이 네트워크 라고 이야기 할 수있으며 구분된 LAN끼리 통신을 하기 위해서는 '주소값'을 가지고 있어야한다. 이 주소값을 통해 목적지에 도착할 수 있다. 이 주소값은 IP라고한다.
ip를 가지고 목적지에 도착하더라도 실제로 통신이 되는것이 아니다. 
만약 본인이 친구의 집주소를 알고 그곳에 도착했다고 가정하자. 하지만 친구집에 들어간것이 아닌 그 앞에 도착해서 친구를 만나서 대화를 하는것이 아니기에 이와 마찬가지로 통신을 위해서는 무엇인가가 필요한데 그것을 위해 4계층이 필요하다

4. Transport
통신을 위해서는 여러가지 규칙이 있는데 신뢰성을 가지고 있는 전송방법과 신뢰성을 보장하지 않는 대신 보다 빠르게 전송하는 방법, 에러가 발생할때 어떻게 정정할 것인지 안할것인지 등을 구체적으로 명시해 두고 정리해 둔 계념이다. 가장 유명한 개념으로는 TCP, UDP 계념이다.


5. Sesion

전송이 끝나면 상호간 통신을 주고 받을때 대화를 어떻게 연결하고 유지하고 정리할 것인가에 대한 파트를 정의한다.

ip를 통해 목적지를 찾아가고 상위 계층에 서비스 하고있는 프로토콜(7계층, FTP, HTTP, DNS등)들이 어떤 것이 선택되는것인가에 따라 4계층이 정의된다.

 

TCP 는 상호간 연결을 유지해 주며 가상 회선을 연결한다. 

클라이언트와 서버 간 가상 회선을 맺을때 서버는 보통 21번(tcp)포트를 열고 이 포트를 통해 서비스를 연결한다.

 

FTP 같은 경우 한번 연결하게 될 경우 일정 시간동안 연결된 상태(ID/PWD)를 통해 인증 할때 이것과 관련된 계층이 세션계층. 지속적으로 연결과 주고 받은 프로토콜을 유지하게 해 준다.


HTTP 같은 경우 상호간 연결하고 난 후 바로 세션을 끊는 경우가 많다. 대형 서버인 네이버, 다음 등의 경우 수 많은 웹 서버를 연결하는데 이것을 일일이 관리하는건 굉장히 부하가 많이 발생해서 그렇다.

일상생활 속에서 볼 수있는 경우는 웹 브라우져 비 정상적으로 종료될때 다시 구동하게 되면 '세션을 복구하겠습니까?' 라는 메세지가 나오는데 이걸 하는 곳이다.

6. Presentation 

데이터를 주고 받을때 어떻게 표현할 것인가에 대한 개념이다.
데이터는 타입을 가지고 있는데 대표적으로 mp3, avi, txt 등의 확장자로 표현된다. 이런 데이터들은 서버 등을 통해 다운로드 받을때에는 확장자로 표현되지 않지만 모든 데이터가 전송이 된료된 이후에는 타입을 표현해 준다. 데이터를 다운로드할때 너무 용량이 커서 문제가 발생할 경우를 대비해 용량을 압축하는 기술을 사용하기도 하는데 가장 대표적인 예시가 MP3파일이다.

또한 다른 운영체제에서 작성된 파일을 받았을 경우 "ㅇㅏㄴㄴㅕㅇㅎㅏㅅㅔㅇㅛ' 와 같이 글자가 깨지거나 "꽳뜋똫땨" 등의 경우로 표현되는 경우가 있는데 이것은 6계층에서 사용하는 개념이 서로 달라서 발생하는 오류이다.

 

7. Application
어떤 프로그렘을 사용해서 데이터를 송/수신할 것인지? 또한 메세지의 타입을 어떻게(ftp,http등) 정할것인지를 규정하는 계층이다.
웹서버를 열때 약속된 개념인 http를 통해 웹 클라이언트에게 응답을 한다.

 

이상으로 OSI 7 Layer에 대해 알아보았다 TCP/IP같은 경우 OSI 7을 축약시킨 것과 같은 개념이라고 보면 된다.

1.network interface
하드웨어적, 장비적 특성 부분과 같은 개념이다.

2.internet
네트워크 계층을 담당하는데 
inter 상호간에 연결된 net(work)이다.

3.transport(host-to-host)
중간에 어떤 장비들이 연결되어 있는가가 중요한게 아니라 통신에 있는 host끼리 상호간 가상 회선을 맺는게 중요하다.

4.application
osi7계층에서 5~7계층을 하나로 묶어서 표현한다.