티스토리 뷰
이 포스트는 「Computer Networks: A System Approach , By L.Peterson , 5th, 2011」 을 참고하여 작성했습니다.
저번 강의에서 프로토콜의 관계를 나타낸 프로토콜 그래프에 대해 살펴보았다.
이번에는(계층적) 프로토콜의 동작 원칙에 대해 알아보겠다.
호스트 1과 2의 네트워크 통신을 나타낸 그림이다.
호스트 1의 app과 호스트 2의 app의 통신을 위해서는 계층화된 구조를 이용하여 물리적인 교환을 하는 과정이 필요하다.
즉, 호스트 1이 Sender라면 호스트 1의 App에서 데이터를 아래 계층으로 보내어 결국 가운데에 있는 네트워크 망을 통하여 교환이 이루어진다.
App에서 Data를 RRP프로토콜에 보내고 RRP프로토콜은 데이터는 건드리지 않고 헤더를 이용하여 여러 가지 정보를 담는다. 이 과정을 포장/캡슐화(Encapsulation)이라고 한다. 또 아래 HHP프로토콜에서 포장/캡슐화를 통하여 헤더를 추가한 뒤에 교환이 이루어지게 된다.
헤더를 붙이는 과정에서 데이터는 반드시 보존되어야 한다. 또 수신하는 호스트에서는 붙어있는 헤더를 하나씩 떼며 대칭 관계를 유지하여 호스트 2의 App까지 전달해야 한다.
이 과정을 논리적인 구조로 본다면 호스트 1 App과 호스트 2 App사이의 교환이지만 실제로는 이러한 캡슐화 과정을 통해 send down을 하여 데이터 교환이 이루어지게 된다.
헤더에는 주소, DEMUX KEY 등 여러 가지 정보가 들어있다.
논리적 통신과 물리적 통신을 그림으로 살펴보면 위와 같다.
논리적인 구조는 각 호스트의 Peer 간의 통신이지만 실제로는 하위계층을 거쳐 통신이 이루어짐을 볼 수 있다.
컴퓨터 공학에서는 추상화/계층화의 개념이 매우 중요하다.
크고 복잡한 문제를 한 번에 풀려고 하는 것은 굉장히 어려운 일이다.
우리는 이러한 어려운 문제를 추상화를 통하여 해결할 수 있다.
추상화란 "~한 기능"이 있다고 가정한 상태로, 즉 "~한 기능"이 하위 계층으로부터 제공된다고 가정하는 것이다.
추상화를 통하여 "~한 기능"의 문제로부터 해방될 수 있다.
계층화란 여러 계층으로 나누어 각 계층이 해당 기능을 담당하는 것을 말한다.
하위 계층이 제공하는 기능을 정해진 인터페이스를 통하여 이용하여 상위 계층에게 제공하는 것이다.
컴퓨터 통신은 이러한 추상화/계층화 과정을 통하여 이루어져 있다.
표준 구조 (Standard Architectures) (1)
네트워크 구조의 표준 구조에는 "Open Systems Interconnect (OSI) Architecture"가 있다. 줄여서 'OSI 계층'이라고 부른다.
OSI계층은 7개의 계층 모델로 이루어져 있다. 서로 다른 컴퓨터와 서로 다른 네트워크 간 통신을 가능하게 하기 위하여 국제적으로 정한 규칙이라고 생각하면 된다.
OSI계층은 위 그림처럼 이루어져 있다.
Physical(1 계층)부터 Application(7 계층)으로 이루어져 있다.
각각의 호스트 간 동일한 계층을 Peer라 한다.
가장 중요하게 다뤄야 할 부분은 1,2,3 계층이다.
1,2,3 계층의 실제 통신에는 통신을 가능하게 하는 스위치 모델이 사용된다.
즉 호스트 1의 1 계층과 호스트 2의 1 계층은 엄밀히 따지면 서로 Peer관계가 아니다. 스위치 모델을 통하여 통신이 이루어지므로 호스트1의 1계층은 중간 스위치의 1 계층과 Peer 관계이다.
7 계층에 대해 자세히 살펴보겠다.
1 계층 (Physical)
: 물리적인 신호 교환과 관련된 사항을 담당한다. 즉 0과 1(비트)의 교환이 이루어지는 계층이다.
이곳에서 전달 매체, 신호(디지털, 아날로그)등을 결정한다. 이렇게 정의된 1 계층을 2 계층에서 이용할 수 있다.
2 계층 (Data link)
: 하나의 링크로 연결된 노드 사이의 비트 묶음(프레임)의 교환이 이루어지는 계층이다.
1 계층에서 이미 추상화한 비트 교환 기능을 이용하여 프레임 단위의 비트를 교환하도록 하는 계층이다.
2 계층 역시 3 계층에서 이용할 수 있다.
3 계층 (Network)
: 네트워크를 통해 연결된 호스트(단말) 사이의 데이터(패킷) 교환이 이루어지는 계층이다.
우리가 앞서 살펴본 패킷 스위칭 등이 이곳에서 이루어진다.
4 계층 (Transport)
: 4 계층부터는 스위치를 사용하지 않는다. 우리는 앞선 1,2,3 계층을 통하여 통신이 가능하지만 여러 요인으로 인하여 통신의 신뢰성을 보장할 수 없다. 따라서 4 계층을 통하여 통신 응용 사이의 신뢰성 있는 메시지를 제공하여 통신의 신뢰성을 제공한다. end-to-end(호스트 간)의 신뢰성 있는 데이터 전송이 가능하게 한다.(Process 간 channel 제공)
5,6 계층 (Session, Presentation)
: 5,6 계층은 실제 통신에서는 생략되는 경우도 있다. 대화 패턴과, 데이터 표현방법에 대한 처리가 이루어진다.
7 계층 (응용 계층)
: 실제 통신을 이용하는 App에 관련된 사항을 처리하는 계층이다. 응용 계층은 User와 집 적적으로 연결되어 있다.
OSI 7 계층은 통신에 필요한 모든 기능/기술을 7 계층의 계층구조로 배분하여 하위계층에서 서비스를 추상화하고 상위계층에서 해결하는 형태임을 알 수 있다.
표준 구조 (Standard Architectures) (2)
OSI계층에 이서 다른 표준 구조로는 인터네트(Internet) 구조가 있다.
인터넷 구조를 OSI 7 계층에 빗대어 본다면 1,2,3 계층의 역할을 맨 아래 NET에서 수행하며 TCP, UDP에서 4 계층의 역할을 수행하고, 5,6 계층은 생략되며 맨 위 FTP, HTTP 등이 7 계층의 역할을 한다.
중간에 있는 IP는 OSI계층에는 없는 개념으로 대략 OSI 3 계층에 가까운 개념이다.
인터넷 구조의 특징은 오른쪽 그림과 같이 APP에서 여러 계층을 동시에 사용할 수 있는 등 융통성 있는 계층 구조를 가지고 있으며 IP를 기준으로 모래시계 형태의 모양을 가지고 있다. 모든 통신은 IP를 거친다.
성능의 기준 1 : 대역폭
대역폭(Bandwidth) 이란 처리량/처리속도를 말하며 단위 시간당 전송될 수 있는 데이터의 양이다.
예를 들어 10 Mbps는 1초당 10M의 bit를 처리할 수 있다는 것이다.
각 링크 간, 종단 간으로 표현되며 우리가 실제로 느끼는 것은 종단 간의 대역폭이다.
대역폭은 비트 폭과 관련이 있다. 속도가 높아지면 비트 폭은 작아지며 비트 사이가 좁아진다.
위 그림처럼 대역폭이 높아졌을 때 비트 사이의 거리가 좁아진 것을 확인할 수 있다.
성능의 기준 2 : 소요시간/지연시간
A지점에서 B지점으로 메시지를 송신하는데 걸리는 시간을 말한다. 때로는 왕복 지연시간(RTT)이 더 중요할 수 있다.
소요시간은 Propagation + Transmit + Queue + (스위칭 시간)에 비례하여 증가한다.
Propagation(전파 지연시간)은 "거리/전파의 속도"로 표현되어 거리가 멀수록, 속도가 느릴수록 지연시간은 증가한다.
Transmit(전송시간)은 "데이터의 양/대역폭"으로 표현되어 데이터양의 많을수록, 대역폭이 작을수록 전송시간은 증가한다.
이 외에도 패킷 스위칭을 하게 되면 다른 작업의 데이터도 함께 처리해야 하므로 데이터가 많아 기다리는 시간이 발생할 수 있다. 이 시간을 큐잉 지연(queuing delay)이라고 한다. 큐잉 시간은 예측하기 어렵고, 커질 때는 전파 지연시간이나 전송시간보다 커질 수 있다.
다만 집적 링크(회선 연결)에서는 큐잉 지연은 발생하지 않는다.
회선 스위칭 시에 걸리는 시간을 나타낸 그림이다.
회선 스위칭은 먼저 서킷을 만드는 과정이 필요하고 그에 따른 시간이 걸린다.
그러나 한번 회선을 연결하면 그 후에는 데이터를 물 흐르듯이 전송할 수 있다.
처음 회선을 연결하는 시간부터, 마지막 데이터가 전송되는 시간까지를 소요시간으로 계산한다.
패킷 스위칭은 회선 스위칭과 달리 회선을 연결하는 시간이 필요하지 않다.
패킷에 정보들을 모두 담아 다음 노드에 보내어 목적지까지 도착하게 한다. 각각의 과정에서 sotre & forward과정을 거친다. 또한 패킷 스위칭 시에는 큐잉 지연 시간이 걸릴 수 있다. 데이터 전송 과정이 물 흐르듯이 자연스럽지 않고 배가 움직이듯 덜컹거리며 전송된다고 생각하면 된다.
패킷 스위칭은 이전 노드로부터 패킷이 도착해야 다음 패킷으로 보낼 수 있는 store & forward 과정을 거친다. 그러나 만약 패킷의 크기가 크다면 매우 오랜 시간이 걸릴 것이다. 따라서 패킷을 여러 가지 조각으로 잘라 전송하는 과정을 Pipelining이라고 한다.
위에서 살펴보면 대역폭과 소요시간은 상대적인 중요성을 가진다.
즉 목적에 따라 중요하게 생각해야 할 요소가 다를 수 있다.
만약 작은 메시지를 통신한다면 대역폭보다는 소요시간이 더 중요할 것이다.(수강신청 등)
그러나 큰 메시지를 통신한다면 큰 대역폭이 필요할 것이다.(영화 다운로드 등)
기술의 발전으로 점점 대역폭의 크기는 증가하고 있다. 대역폭의 증가가 곧 성능의 증가를 불러올까?
꼭 그렇게만은 볼 수 없다. 왜냐면 데이터도 점점 커지고 있기 때문이다.
1KB 패킷을 1 Mbps 대역폭으로 전송하는 것과 1MB 패킷을 1 Gbps 대역폭으로 전송하는 것은 같기 때문이다.
Lecture Note #4에 계속..
'Lecture Note > 컴퓨터 통신' 카테고리의 다른 글
컴퓨터 통신(CC) Lecture Note #6 (0) | 2020.10.27 |
---|---|
컴퓨터 통신(CC) Lecture Note #5 (0) | 2020.10.06 |
컴퓨터 통신(CC) Lecture Note #4 (0) | 2020.09.30 |
컴퓨터 통신(CC) Lecture Note #2 (0) | 2020.09.15 |
컴퓨터 통신(CC) Lecture Note #1 (0) | 2020.09.10 |
- Total
- Today
- Yesterday
- 예외처리
- Computer Architecture
- node.js
- 투포인터
- typeORM
- 알고리즘
- 컴퓨터 통신
- nodeJS
- 재귀
- nestjs
- 그래프
- 동적계획법
- 백준
- 구현
- 중앙대학교
- 백트래킹
- 자바스크립트
- BFS
- 컴퓨터 구조
- 벨만포드
- 시뮬레이션
- 세그먼트 트리
- 그리디
- java
- dfs
- ReactNative
- 자바
- nest.js
- 스레드
- boj
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |