고재성, 이상훈님의 책을 보며 정리한 내용입니다.
문제가 될 시 해당글 삭제하겠습니다.
네트워크 구성도 살펴보기
홈 네트워크
- 홈 네트워크를 구성하기 위해서는 모뎀, 공유기, 단말기 간에 물리적 연결이 필요하다.
- 무선 연결이라고 부르는 것도 실제적으로는 공기라는 매체를 통해서 물리적으로 연결이 되는 것.
- 크게 공기를 통한 무선 연결 / 유선 랜카드 or 랜케이블을 통한 유선 연결로 나뉜다.
데이터센터 네트워크
- 안정적이고 빠른 대용량 서비스 제공을 목표로 한다.
- 10 ,25 ,40 ,100 ,400 기가와 같은 고속 이더넷 기술이 사용된다. *대역폭? : 통신에서 이용 가능한 최대 전송 속도, 인터넷이 느리면 대역폭을 늘리라는 소리가 조금 더 높은 용량의 네트워크 속도를 사용하라고 이해하면 된다.
- 최근 늘어나는 서버간 통신 트래픽 경향을 지원하기 위해서 스파인 - 리프 구조가 많이 사용된다. ⇒ 아 이런게 있구나~
- 최근 일반 서버에는 10G Base-T 이더넷 포트가 기본적으로 제공되어 리프 스위치인 TOR(Top of Rack) 와 연결되고 스파인 스위치와 40G 100G 로 연결되는 추세이다.(더 높은 대역폭을 위해서 400G 스위치로 연결되는 표준도 생겨나고 있다.) ⇒ 늘어나는 네트워크 이용량을 커버하기 위해서 데이터 센터 대역폭이 늘어나고 있다.
프로토콜(네트워크 통신 규정이나 규약)
- 상당히 많은 프로토콜이 존재하지만 최근에는 다음 두가지 관점으로 많이 표준화 되고 있다.
- 물리적 측면 : 이더넷 → 물리적인 장치를 연결하기 위한 표준 (1, 2, 3? 계층)
- 논리적 측면 : TCP/IP → 논리적인 통신을 하기 위한 표준 (1~7 계층)
- 과거 네트워킹 환경은 너무나 열악했기 때문에 자연어를 처리할 수 없었다. 때문에, 대부분의 프로토콜이 문자 단위가 아닌 비트 단위로 매우 치밀한 규칙으로 만들어졌다. → 보다 자세한 단위!
- 애플리케이션(7계층) 레벨 프로토콜은 비트 기반이 아닌 문자 기반의 프로토콜이 만들어졌고 대표적인 예가 HTTP, SMTP 프로토콜이다.
- 문자 기반 프로토콜이 실제 전송 효율성은 떨어질지 모르지만 다양한 확장이 가능하다.
- 별도 계층에서 동작하는 프로토콜이지만 함께 사용하고 있는 프로토콜 묶음을 프로토콜 스택이라고 부른다. ex) TCP/IP
OSI 7계층과 TCP/IP
OSI 7계층
- 과거에는 네트워크 규약이 표준화 되지 않았기에 각 시스템이나 어플리케이션에서 호환이 되지 않았고 이를 하나로 통합하려는 노력이 OSI 7계층이라는 결과물로 남아 있다.
- 현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택 기반으로 되어있다.
- OSI 7계층은 역할과 목표에 따라 다시 두 계층으로 나눌 수 있다.
- 1-4 계층 : 데이터 플로 계층(하위) → 정확한 데이터 전달에 초점(네트워크 엔지니어가 중요시 생각)
- 5-7 계층 : 애플리케이션 계층(상위) → 하위 계층을 생각하지 않고 데이터를 표현하는데 초점(애플리케이션 개발자가 중요시 생각)
TCP/IP 프로토콜 스택
- TCP/IP 는 이론보다는 실용성에 중점을 둔 프로토콜이다.
- 이미지를 보면 알 수 있듯, 현실에 쉽게 반영이 가능하도록 간단히 구분하는 TCP/IP 프로토콜 성향이 드러난다.
OSI 7계층별 이해하기
1계층(피지컬 계층)
- 물리적 연결과 관련된 정보를 정의한다.
- 주로 전기 신호를 전달하는데 초점이 맞추어져 있다.
- 주요 장비로는 허브, 케이블, 커넥터, 트랜시버 등이 있다.
- 1계층에서는 들어온 전기 신호를 그대로 잘 전달하는 것이 목적이기 때문에, 전기 신호가 1계층 장비에 들어오면 이 전기 신호를 재생성하여 보낸다.
- 주소개념이 없다.
2계층(데이터링크 계층)
- 1계층의 전기 신호를 모아서 우리가 알아볼 수 있는 데이터 형태로 처리한다.
- 1계층과 다르게 전기 신호를 정확히 전달하기 보다는 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는데 초점이 맞추어져 있다.
→ 말 그대로 데이터 링크를 맞추어주는 계층이다. - 주소 체계가 생겨난다는 뜻은 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있다는 의미로 무작정 데이터를 던지는 것이 아닌 받는 사람이 현재 데이터를 받을 수 있는 상태인지 확인을 해야 한다. 이 역할을 플로 컨트롤이라고 한다.
- 2계층에서 가장 중요한 특징은 MAC 주소(하드웨어 주소, 유일하다)라는 주소 체계가 있다는 것이다.
- 2계층에서 동작하는 네트워크 인터페이스 카드(랜카드)와 스위치 모두 MAC 주소를 이해할 수 있고, 스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있다.
- 네트워크 인터페이스 카드의 동작 방식
- 네트워크 인터페이스 카드에는 고유 MAC 주소가 있고,
- 입력되는 전기 신호를 데이터 형태로 만들고,
- 데이터에서 도착지 MAC 주소를 확인 후 자신에게 들어오는 전기 신호가 맞다면 해당 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재(3계층으로 Toss~)하고 아니라면 버린다.
- 스위치 동작 방식
- 스위치는 MAC 주소를 보고, 연결된 포트는 어느 것인지 주소 습득 과정에서 알 수 있다.
- 이 데이터를 기반으로 단말들이 통신할 때 포트를 적절하게 필터링하고 정확한 포트로 포워딩 해준다.
- 1계층에서 동작하는 허브는 한 포트에서 전기 신호가 들어오면 전체 포트로 전달하다 보니 전체 네트워크에서 동시에 오직 하나의 장비만 데이터를 보낼 수 있다.
- 스위치에 적절한 필터링과 포워딩 기능으로 통신이 필요한 포트만 사용하고 불필요한 처리가 감소함으로 이더넷 네트워크 효율성이 크게 향상되었고, 이더넷 기반 네트워크가 급증하는 계기가 되었다.
→ MAC 주소가 있기 때문에 가능한 일..
3계층(네트워크 계층)
- 3계층에서는 IP주소와 같은 논리적인 주소가 정의된다.
- MAC 주소와 달리 IP 주소는 사용자가 환경에 맞게 변경해 사용할 수 있고, 네트워크 주소 부분과 호스트 주소 부분으로 나뉜다. ex) 127.0.0.1
- 3계층을 이해하는 장비는 네트워크 주소를 통해서 자식이 속한(로컬) 네트워크와 원격지 네트워크를 구분할 수 있고, 원격지 네트워크를 가려면 어디로 가야 하는지 경로를 지정하는 능력(라우터)이 있다.
- 3계층에서 동작하는 하드웨어는 라우터이다.
→ 라우터는 IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할.
4계층(트랜스포트 계층)
- 1,2,3 계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보내는데 집중한다.
- 4계층은 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 한다.
- 패킷 네트워크는 데이터를 분할해 패킷에 실어 보내다 보니, 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있다.
- 이 문제를 해결하기 위해서 문제가 있는 패킷을 바로잡아주는 역할을 4계층에서 담당한다. (TCP Protocol !)
5계층(세션 계층)
- 세션 계층은 다음 3가지 역할을 한다.
- 양 끝 단, 응용 프로세스가 연결을 성립하도록 도와주고
- 연결이 안정적으로 유지되도록 관리하고,
- 작업 완료 후 이 연결을 끊어주는 역할을 한다.
- 우리가 흔히 말하는 세션 관리를 해당 계층에서 한다.
6계층(프레젠테이션 계층)
- 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해서 하나의 통일된 구문 형식으로 변환하는 기능을 수행한다. 일종의 번역기 역할
- 인코딩, 암호화, 압축, 코드 변환 같은 과정이 이 계층에서 수행한다.
7계층(애플리케이션 계층)
- 애플리케이션 프로세스를 정의하고, 애플리케이션 서비스를 수행한다.
- 네트워크 소프트웨어 UI 부분, 입/출력 부분을 정의하는 것이 애플리케이션 계층의 역할.
인캡슐레이션과 디캡슐레이션
- 데이터를 상위에서 하위로 보내는 과정을 인캡슐레이션이라고 부르고,
- 반대로 받는 과정을 디캡슐레이션이라고 부른다.
- 현대 네트워크는 대부분 패킷 단위로 통신하는 패킷 기반 네트워크이다.
→ 해당 기법을 통해서 하나의 통신이 회선 전체를 점유하지 않고! 동시에 여러 단말을 통신하도록 해준다.
(엄격히 말하면 동시 통신이 아닌, 우리가 알아보지 못할 빠른 속도록 점유가 변경되가며 통신하는 것이다) - 인캡슐레이션 상황에서 4계층부터 2계층까지(총 3개의 헤더정보) 네트워크 전송을 위한 정보를 헤더에 붙여 넣는다.(문자가 아닌 비트 단위로)
- 헤더정보를 바탕으로 디캡슐레이션 상황에서는 각 계층에서 헤더정보를 확인해 자신에게 온 정보가 맞다면 상위 계층으로 올리고 아니라면 버린다.
→ 상위 계층으로 올라가는 상황에서 하위 헤더 정보를 버려진다. - 헤더에 수 많은 정보들이 있지만 다음 두 가지 정보는 반드시 포함되어 있어야 한다.
- 현재 계층에서 정의하는 정보
- 상위 프로토콜 지시자
→ 상위로 갈수록 프로토콜의 개수가 많아지는데 지시자를 통해 찾아간다.
'CS > 네트워크' 카테고리의 다른 글
[IT 엔지니어를 위한 네트워크 입문] Chapter3. 네트워크 통신하기 (0) | 2023.01.10 |
---|---|
[IT 엔지니어를 위한 네트워크 입문] Chapter2. 네트워크 연결과 구성요소 (0) | 2023.01.10 |
JWT(Json Web Token) (0) | 2022.06.27 |
세션과 토큰 (0) | 2022.06.27 |
리다이렉션? (0) | 2022.06.01 |