네트워크란 연결되어 있는 것을 의미하며 컴퓨터와 컴퓨터 사이의 연결이다.
컴퓨터 네트워크를 하기 위해 송수신 장치 간 통일된 통신 규약인 프로토콜이 존재한다.
프로토콜의 형식이 존재하고, 각 필드마다 의미가 존재한다.
대표적인 프로토콜의 종류로는 TCP/IP, OSI 7 계층, SPX/IPX, AppleTalk 등 이 존재한다.
하나의 계층을 Layer 라고 부른다.
- 같은 계층끼리 통신하는 것을 프로토콜이라고 한다.
- 상위 레이어와 하위 레이어를 연결시켜주는 것을 인터페이스라고 한다. ex) 마우스와 키보드가 하위 계층, 본체가 상위 계층일 경우 사람의 손이 인터페이스 역할을 하여 손을 움직여서 컴퓨터 내부에서 마우스 커서를 움직인다.
- 각 계층을 연결시켜주는 것을 인터페이스라고 한다!
- 상위 계층이 하위 계층에 요청을 보내면 하위 계층이 상위 계층에 제공하는 인터페이스를 서비스라고 한다.
계층적 모듈 구조를 취해 모듈화의 장점을 챙긴 구조이다.
계층 구조의 장점으로는 다음과 같다.
- 전체 시스템을 이해하기 쉽고, 설계 및 구현이 용이하다.
- 모듈간의 표준 인터페이스가 단순하면 모듈의 독립성을 향상시킬 수 있으며, 이는 시스템 구조를 단순화시키는 장점이 된다.
- 대칭 구조에서는 동일 계층 사이의 인터페이스인 프로토콜을 단순화시킬 수 있다.
- 특정 모듈의 외부 인터페이스가 변하지 않으면 내부 기능의 변화가 전체 시스템의 동작에 영향을 미치지 않는다. 예를 들어 HTTP 에서 HTTPS 로 프로토콜이 변경됐음에도 전체 구조가 변경되지는 않았다.
대표적인 계층 모델로는 OSI 7계층 모델이 있다.
상위계층(유저와의 접촉)
- 응용계층
- 표현계층
- 세션계층
- 전송계층
하위계층
- 네트워크 계층 (망과의 접속)
- 데이터 링크 계층
- 물리 계층
OSI 참조 모델은 각각 특정 기능을 수행하는 서로 다른 계층 7개를 의미한다.
- 각 계층은 헤더와 데어티 단위로 정의도고, 헤더에는 각 계층의 기능과 관련된 정보가 포함된다. 송신측이 헤더를 생성하여 추가하면 수신 측에서 해당 계층이 이 헤더를 사용한다.
- 상위 계층이나 하위 계층 사이에 주고받는 것을 서비스 데이터 단위(SDU) 라고 하고, 같은 계층 사이에서 주고받는 것을 프로토콜 덷이터 단위(PDU) 라고한다.
- 이 데이터 단위는 송신 측이나 수신 측의 다음 계층에 데이터 정보를 전송할 때 사용한다.
- 아래 계층으로 갈 수록 헤더가 더 많이 붙게 된다.
송신 호스트 : 상위 계층에서 하위 계층으로 데이터가 이동할 수록 각 계층의 정보를 담고 있는 헤더를 데이터에 붙여서 내려보내게 된다.(캡슐화)
수신 호스트 : 하위 계층에서 상위 계층으로 데이터가 이동할 수록 각 계층은 자신 계층의 헤더 정보를 확인하고 맞으면 헤더를 제거하고 상위로 올려보낸다.
위와 같은 방식으로 '상위 계층의 헤더 + 데이터' 가 하위 계층의 데이터가 된다. (캡슐화 == 인캡슐레이션)
정리
- 계층 n 프로토콜 : 계층 n 모듈끼리 사용하는 통신 규칙을 뜻 함
- 동료 프로세스 : 동일 계층에 위치한 통신 양단 프로세스
- 인터페이스 : 상하위 계층 사이의 접속 방법
- 서비스 : 상위 계층이 하위 계층을 사용하는 방법
- 송신 호스트 : 데이터가 상위 계층에서 하위 계층으로 갈수록 헤더가 추가
- 수신 호스트 : 데이터가 하위 계층에서 상위 계층으로 갈수록 헤더 제거
송신 호스트와 수신 호스트가 통신을 하기 위해서는 데이터 자체를 중개하는 것이 필요로 하고 네트워크 / 데이터링크 / 물리 계층이 데이터 망에서 사용되는 중개 노드이다.
중개노드로 하위 3계층을 사용하는 이유??? 실제 네트워크 프로토콜은 OSI 참조 모델의 7계층을 모두 사용하지 않고, 처음 세 계층(물리, 데이터 링크, 네트워크)만 사용하기 때문이다.
ex) 줌에서 내가 말하고 ppt 를 공유하는 것이 데이터로 변환되어서 다른 사람의 컴퓨터로 전송된다. 이 때 중개 노드가 필요로 하다.
- 물리 계층
- 0 과 1로 되어있는 데이터를 전기적 신호로 변경해서 전송 매체를 통해 전송해준다.
- 데이터를 실제로 보내는 부분
- 데이터 링크
- 어떤 통신 방식을 쓸 것인지(이더넷, 와이파이, 블루투스 등..)
- 어떤 통신 방식을 쓸 것인지 나타낸다.
- 오류를 검출할 수 있는 기능이 있다.
- MAC 주소라고 하는 물리적인 주소가 존재
- 네트워크 계층
- 데이터를 보낼 때 어떤 경로로 데이터를 보낼지 나타낸다.
- ip 주소를 사용하고, 어느 중개기를 사용해서 최적의 경로로 보낼 것인지
- 전송 계층
- E2E connection → 어떤 포트를 사용할 것인지 알려주는 부분
- TCP, 신뢰성 있는 전송을 할 것인지(커넥션), 데이터를 보내고 끝낼 것인지
- 세션 계층
- 연결에 대한 시작 / 유지 / 종료를 나타내는 부분이다.
- 표현 계층
- 데이터에 대한 포맷을 알려준다. ex) 동영상 → mpeg, 이미지 → jpeg
- 데이터에 대한 암호화 복호화 압축을 책임진다.
- 어플리케이션 계층
- 우리가 실제로 사용하는 프로그램을 표현하는 계층, ex) 웨일앱, 메일앱
계층 7개는 서로 독립적이므로 어느 한 계층의 변경이 다른 계층에는 영향을 미치지 않는다.(모듈화)
기능에 필요한 몇 개의 계층만 표준화하면 정상적으로 통신할 수 있다.
상위 4계층은 상요자와의 접속을, 하위 3계층은 망과 접속을 위한 계층이다.
- 물리 계층
- 두 시스템 간에 데이터를 전송하려고 링크를 활성화하고 관리하는 전기적, 기계적, 절차적, 기능적 특성 등을 정의한다.
- 물리 계층은 허브, 라우터, 네트워크 카드, 케이블 등 전송매체를 통해 비트를 전송한다.
- 상위 계층에서 전송된 데이터를 물리매체를 통해 다른 시스템에 전기적 신호로 전송한다.
- LAN 카드, 케이블, 허브, 라우터 등 물리적인 것과 데이터 전송에 사용하는 전압 등 기본적인 것이 물리 계층에 속한다.
송신 측의 물리 계층은은 데이터 링크 계층에서 0과 1로 구성된 비트열의 데이터(프레임)을 받아 전기적 신호로 변환한 후 전송매체를 통하여 수신 측에 보낸다.
수신 측의 물리 계층은 송신 측에서 받은 전기 신호를 0과 1로 구성된 비트열로 복원하여 수신 측의 데이터 링크 계층에 전송한다.
- 데이터 링크 계층
- 물리적 링크를 이용하여 신뢰성 있는 데이터를 전송하는 계층으로, 네트워크를 통해 데이터를 전송할 때 전송로 역할을 한다.
- 비트를 프레임이라는 논리적 단위로 구성하는데, 전송하려는 데이터에 인접하는 노드(시스템) 의 주소가 더해진다. 주소는 최종 수신지의 주소가 아닌 전송되는 다음 노드의 주소가 된다.
실제 형태는 아래와 같다.
- 시스템 간에 오류 없이 데이터를 전송하려고 네트워크 계층에서 받은 데이터 단위(패킷) 를 프레임으로 구성하여 물리 계층으로 전송한다.
- 프레임 == 데이터 + 헤더 + 트레일러 로 구성된다.
- 트레일러에는 오류를 검출하는 특별한 비트들이 있다.
- 네트워크 계층
- 상위 계층에 연결하는 데 필요한 데이터 전송과 경로선택 기능을 제공하고, 라우팅 프로토콜을 사용하여 최적의 경로를 선택한다.
- 데이터를 전송할 수신 측의 주소를 찾고 수신된 데이터의 주소를 확인하여 내 것이면 전송 계층으로 전송한다.
- 네트워크 계층은 데이터를 패킷 단위로 분할하여 전송한 후 재결합한다.
- 전송 개체 사이에 안정적으로 전송할 수 있도록 서비스를 제공한다.
- 전송 계층
- 프로토콜(TCP, UDP) 과 관련된 계층으로 오류 복구와 흐름 제어 등을 담당하며, 두 시스템 간에 신뢰성 있는 데이터를 전송한다.
- 네트워크 계층에서 온 데이터를 세션 계층의 어느 애플리케이션에 보낼 것인지 판독하고, 네트워크 계층으로 전송할 경로를 선택
- 네트워크 계층에서 전송한 데이터와 실제 운영체제의 프로그램이 연결되는 통신 경로라고 할 수 있다.
송신 측은 데이터의 크기가 커지면 패킷으로 분할 전송을 하게 되고 수신 측에선 분할된 패킷을 헤더에 담겨 있는 정보를 바탕으로 재조립 한다.
자세한 내용은 TCP/IP 에서 다뤄보도록 한다.
- 세션 계층
- 응용 프로그램 계층 간의 통신을 제어하는 구조를 제공하고, 응용 프로그램 계층 사이의 접속을 설정, 유지, 종료시켜주는 역할을 한다.
- 사용자와 전송 계층 간의 인터페이스 역할을 한다.
- 데이터의 단위(메시지) 를 전송 계층으로 전송할 순서를 결정하고, 데이터를 점검 및 복구하는 동기 위치를 제공
- 표현 계층
- 데이터 표현 차이를 해결하려고 서로 다른 형식으로 변환하거나 공통 형식을 제공하는 계층이다.
- 그래픽 정보는 JPEG 형태로, 동영상은 MPEG 형태로 변환하여 송수신하는 기능과 데이터 압축 및 암호화 기능을 제공
- 표현 계층과 응용 계층, 세션 계층 간의 관계를 보여준다. 표현 계층의 헤더에는 전송되는 데이터 유형과 전송 길이 등의 정보가 포함된다.
- 응용 계층
- 파일 전송, 데이터베이스, 원격 접속, 이메일 전송 등 응용 서비스를 네트워크에 접속시키는 역할을 하며 여러가지 서비스를 제공
- 사용자에게 정보를 입력 받아 하위 계층으로 전달하고, 하위 계층에서 전송한 데이터를 사용자에게 전달한다.
정리
- 물리 계층 : 물리적으로 데이터를 전송하는 역할을 수행
- 데이터 링크 계층 : 물리적 전송 오류를 해결 (오류 감지 / 재전송 기능)
- 네트워크 계층 : 올바른 전송 경로를 선택 (혼잡 제어 포함)
- 전송 계층 : 송수신 프로세스 사이의 연결 기능을 지원
- 세션 계층 : 대화 개념을 지원하는 상위의 논리적 연결을 지원
- 표현 계층 : 데이터의 표현 방법
- 압축 : 전송되는 데이터의 양
- 암호화 : 전송되는 데이터의 의미
- 응용 계층 : 다양한 응용 환경을 지원