하이시떼루여~~ 굿! 할뤼이데이 데쓰네여~~


어제는 OSI와 프로토콜에 대해서 간단히 포스팅을 했습니다.

지금부터 OSI 7 Layer(OSI 7 계층)에 대해서 공부하죠. ( 상남자 멋쪄잉ㅎ..ㅎ )

OSI 7 Layer는 통신 프로토콜을 코딩(작성)하기 위해서는 반드시 필요한 개념입니다.

저 또한 레시피 큐레이션 서비스(Flook)를 개발하고 소멤에 발표 준비를 할 당시, OSI모델에 대해서 공부를 했었어요!

OSI 모델은 쉽게 말하면 Pear - to  - Pear 통신이라 말 할수 있어요! 즉 7계층은 7계층끼리만 이야기 할 수 있고, 6계층은 6계층끼리, 이런식으로만 이야기 할 수 있기 때문에, 특정한 계층이 변경이 되어도 다른 계층에는 전혀 영향을 주지 않습니다.

OSI 7 Layer를 이해하기 위해서는 그림이 반드시 필요하다고 생각합니다 ( 저도 급해서 그림만 외운 기억이 있네요.)




인터넷에 떠돌아 다니는 그림이 많지만, 마음에 드는 그림이 없어서 직접 타이핑 했습니다.


아래서 위로 1계층~ 7계층 입니다.(물리,데이터링크,네트워크,전송,세션,표현,응용 계층이라 부릅니다)


7개의 계층은 3개의 그룹으로 나눌 수 있습니다. 

- 1,2,3계층은 물리계층,데이터링크 계층, 그리고 네트워크 계층으로 한 장치에서 다른 장치로 데이터를 전송할 때 필요한 물리적인 면(전기적인 규격,물리적인 연결,물리 주소,전송시간과 신뢰도) 을 처리합니다.


- 5,6,7계층인 세션계층,표현 계층, 응용 계층은 사용자 지원 계층으로 생각될 수 있습니다. 이들은 서로 관련이 없는 소프트웨어 시스템간의 상호 연동을 가능하게 합니다!.


- 4계층인 전송계층은 지금 설명한 두 그룹을 연결하고, 하위 계층에서 전송한 내용을 상위 게층이 사용할 수 있는 형태가 되도록 보장한다. OSI 모델의 상위 계층은 거의 대부분 소프트웨어로 구현된다. 하위 계층은 대부분 하드웨어로 구성되는 물리 계층만 제외하고 하드웨어와 소프트웨어의 조합으로 구성된다.



1계층 - 물리계층(Physical Layer)

해석을 먼저 조금 갈까요..? To transmit bits - bit 단위로 보낸다. over a medium 매체 위에서. to provide mechanical 한 기계의(기계적으로) and electrical specifications 전기 규격에 의해서. (물리계층 - > 물리계층으로 전송)

즉, 직역하면 물리 계층은 물리 매채를 통하여 비트 스트림을 전달하는 데 필요한 기능들을 조정한다. 여기서는 전송매체와 인터페이스의 기계적이고 전자적인 규격을 다룬다.


물리계층의 특징.

1. 인터페이스와 매체의 물리적인 특성.

- 물리 계층은 장치와 전송 매체 간에 인터페이스의 특성을 규정한다. 이는 또 전송 매체의 유형도 규정한다 (다음주 중 자세하게 포스팅 할 예정)


2.비트의 표현.

- 물리계층은 해석되지 않은 비트의 스트림(0과 1의 연속) 으로 구성되어 있다. 전송되기 위해서 비트는 신호로 부호화 되어야 한다. 물리 계층은 부호화(encoding)의 유형을 규정한다( 0과 1로 어떻게 바뀌는지.)


3. 데이터 전송률 

- 전송률(초당 보내지는 비트의 수)도 물리 계층에서 규정된다. 다시 말하면, 물리 계층은 비트가 얼마나 길게 유지되는 가인 비트의 주기를 규정한다.


4.비트의 동기화

- 송신자와 수신자는 같은 비트율을 사용할 뿐만 아니라 비트 레벨에서 동기화( 시간적으로 )되어야 합니다. 만약 송신자가 12시 0분에 전송을 했어도, 수신자가 12시가 아닌 12시 1분, 혹은 11시 59분부터 전송된 데이터를 받는다고 가정하면 데이터의 이질감이 생기기 때문입니다.


5.회선 구성.

- 물리 계층은 매체에 대한 장치들의 연결과 관련 있다.

점 - 대 - 점(point to point configuration) 에서 두 장치는 전용 링크를 토하여 연결된다.

( 여기에 자세한 설명이 나와 있어용~> http://blog.naver.com/ryungtek/40111437571 )

다 중 점 (multipoint configuration) 에서 링크는 여러 장치에 의해 공유된다.

다중점은 , 수업시간에 교수님과 학생들이 이야기 할 때, 강의실에 있는 모두가 같이 대화할 수 있는것을 다중점이라 한다.


6. 물리적 접속형태

- 물리적 접속 형태는 장치들이 네트워크를 만들기 위해 어떻게 연결 되는지를 규정한다. 종류들을 살펴보자.

1. 그물형 접속형태(mesh topology - 모든 장치는 다른 모든 장치들과 연결되어 있음.)  - 그물형 접속 형태는, 특정한 장치는 모든 장치랑과 연결이 되어 있기 때문에, 어느곳이나 한번에 갈 수 있다. 속도가 매우 빠르며 비용이 많이드는 접속형태이다. (완전 연결형이라 부르기도 한다. 슈퍼컴퓨터에서 사용.) -( 점 대 점 )

2. 성형 접속형태(star topology - 장치들은 중앙 장치를 통하여 연결) - 성형 접속 형태는 , 연결해 있는 중앙 장치가 있기 때문에 모든곳이 한번을 거쳐서 갈 수 있다. 하지만 중앙장치가 고장이 나면, 모든 곳의 통신이 두절된다. - 주로 가정의 공유기로 예를 들 수 있다. ( 점 대 점 )

3. 링형 접속형태 (ring topology - 각 장치는 링을 구성하도록 이웃하는 장치와 연결) - 한 장치는 2개의 연결상태를 가지며, 원형 큐 (Circular Queue)형태로 연결되어 있다. 한 장치가 고장이 나더라도, 고장나지 않은 방향으로 모든곳의 통신이 가능하다. 하지만 두 개 이상이 고장이 나면 통신이 두절된다. - 많이 사용하는 곳은 공장이다. 공장의 노드가 고장이 날 확률이 1%라고 하자. 그러면 두 개 이상 고장이 날 확률은 0.01%이기 때문에 공장에서 많이 사용한다. ( 점 대 점 )

4. 버스형 접속형태 (bus topology - 모든 장치가 공통 링크 상에 있음.)  - 모든 장치는 하나의 연결 통로를 공유하는 형태이다. 옛날 학교와 같은 곳에서 사용하던 방법이다. 이 연결이 제일 저렴하다.( 다중점 )


7. 전송 모드

-물리 계층은 두 장치사이의 전송 방향(단방향,반이중,전이중)도 규정한다. 

단방향 모드(simplex mode - 학교방송) 에서 어느 한 장치는 보내기만 할 수 있고 다른 장치는 받을 수만 있다. 단방향 모드는 한 방향 통신이다. ( 학교 방송 )

반이중 모드(half duplex mode-무전기) 에서 두 장치는 보내고 받을 수 있지만 같은 시간에는 안 된다. 양방향 통신이다.( 무전기 )

전이중 모드(full-duplex mode - 전화 )에서는 두 장치는 같은 시간에 보내고 받을 수 있다. 양방향 통신이다.( 전화기 )




1계층에 대해석 간략하게 설명 했는데요. 이 부분은 소프트웨어 개발자들이 필수적으로 알아야 할 사항보단, 전자과 학우들이 알아야 할 부분이라고 생각합니다. 하지만, 개발자들도 기초지식은 이정도는 알아야 한다는 부분을 작성했습니다.




2계층 - 데이터 링크 계층(Datalink Layer)

To organize bits into frame - bit를 frame 단위로 만든다(구성한다). 보통 2계층의 단위는 Frame이다. 하나의 봉투 혹은, 쌀 가마 라고 생각하면 쉬운데, 쌀 하나하나(bit)를 쌀 포대(Frame)에 담어서 윗 계층에게 주는 역할을 한다.

to provide hop-to-hop delivery - 홉 단위로 전해준다, 라는 의미이다. 여기에서 홉을 어떻게 설명해야 할까 고민을 많이 했었다. 그러던 도중 이어 달리기가 생각이 났다. 이어달리기는 출발점 부터 바통을 들고 먼저 결승점을 통과해야 하는 경기이다. 여기서 바통은, 첫 주자가 다음주자에게, 그 다음주자는 다다음 주자에게, 이렇게 전달이 된다. 이런식으로 전달이 되는것을 hop- to - hop이라 부른다.

(여기에서 데이터 링크가 물리 계층에게 포장되어 있는 쌀을 줄 때, 쌀을 한톨 한톨씩 주는 것이 아니라, 그 쌀 포대의 위치(포인터)를 준다.)



-> 물리계층의 있는 그대로의 전송 설비를 신뢰할 수 있는 링크로 변환한다. 이는 상위 계층인 네트워크 계층에게 오류 없는 물리 계층으로 보이도록 한다.

데이터 링크 계층에 대해서 자세히 보자.


우리가 매일 사용하는 데이터 링크 계층은 신뢰성이 있을까??

우리가 사용하고 있는 데이터 링크 계층은, 무선랜 , LTE , 이더넷이 있다.

이 중 무선랜과 이더넷은 재전송을 하지 않는다. 하지만 LTE 같은 경우는 신뢰성 있는 통신을 보장한다.(LTE는 우리가 돈을 내고 쓰는 비싼 자원이기 때문에 신뢰성을 보장한다.-2계층에서 재전송을 해줌.)

이더넷과 무선랜은, 4계층 행님께서 재전송을 책임져 주신다..^^;;다행이죠?

재전송을 하기 위해서는 헤더를 이용하는데, 여기에서 특이한 점이 있다면, 2계층은 트레일러(T)를 사용한다. 


1. 프레임 구성.

- 네트워크 계층으로부터 받은 비트 스트림을 프레임(frame)이라는 데이터 단위로 나눈다. : 사실 이 부분은 OS의 지식이 필요합니다. 실제로 3계층과 2계층은 따로따로 개발된 모듈입니다. 즉 그렇다는건, 3계층에서 실행되고 있는 프로세스와 2계층에서 실행되고 있는 프로세스끼리 통신을 해야 한다는 뜻이겠죠. 2계층과 3계층이 통신하는 방법을 알려면 OS의 대한 기초지식이 있어야 합니다. OS 지식을 활용하여, 두 계층간의 통신 방법은 두가지가 있습니다.  첫번째는, 메시지 패싱이 있고, 두번째는 쉐어드 메모리가 있습니다.

사실 쉐어드 메모리는 구현하긴 어렵지만 이론상으론 쉬우니까 쉐어드 메모리로 설명을 해보죠ㅎㅎ

쉐어드 메모리는, 메모리에 데이터를 씁니다.그리고, 3계층이 2계층에게 "야~ 데이터 써놨으니까 가져가라~~" 이런식으로 Signal을 보내고 / 호출을 합니다.

그리고 2계층은 그 메모리에 가서 데이터를 읽어옵니다.( 그 주소는 포인터겠죠!?- 이 부분을 모르면 자료구조를 알아야 해염.. )

- 2계층의 봉투의 이름은 Frame이다 - 이 봉투에 헤더를 작성해야 하는데, 그 내용은 물리주소 작성(받는 사람과 받는 사람의 주소)한다. 

- 물리주소는 가지고 있는 하드웨어의 갯수만큼 있으며, LTE,무선랜,블루투스 주소가 각각 존재한다.

- 주소는 16진수로 표기되며 MAC(Media Access Control)주소라고도 부른다.



2. 물리 주소 지정.

-프레임이 네트워크 상에 서로 다른 시스템에 분배되어진다면 데이터링크 계층은 프레임의 송신자 그리고/또는 수신자를 지정하기 위해 프레임에 헤더를 더한다(encapsulation) 만약 프레임이 송신자 네트워크가 아닌 다른 네트워크에 있는 시스템이라면, 수신자 주소는 다음 네트워크로 가도록 연결된 연결 장치의 주소가 된다.


3. 흐름 제어.

- 수신자에 의해 처리되는 데이터율이 송신자가 보낸 데이터율보다 낮으면 데이터링크 계층은 수신자가 흐름 제어 메커니즘이 수행된다.

-> 인강을 x2배속으로 하면 귀에 잘 들어올리가 없다. 즉, 모든 세계에 있는 모든 컴퓨터가 속도가 같을 순 없다. 속도는 cpu와 메모리에 따라서 많이 차이가 난다.

그럼, 한 컴퓨터가 다른 컴퓨터에게 데이터를 보낼 때, 성능 좋은놈이 성능 안좋은 놈한테 자기의 최고 속도에 맞춰서 데이터를 보내면, 속도가 느린놈이 데이터를 다 받아들이는 것은 아니죠.  그렇기 때문에, 느린놈(수신자)의 속도에 맞춰서 보냅니다.. -> 이러면 속도 차이에 의해서 없어지는 데이터는 없어진다. - 그렇기 때문에 어렸을떄 눈높이 학습지를 엄청나게 풀었죠!!!!!!!!!!!!!



4. 오류 제어.

- 데이터 링크 계층은 손상되고 손실된 프레임을 탐지하고 재전송(Trailer 사용)하는 매커니즘을 수행함으로써 물리 계층의 신뢰성을 더합니다. 이는 또 중복된 프레임을 인식하기 위한 매커니즘도 이용한다.

방금 말한 2계층에는 유일하게 트레일러가 있습니다. 헤더는 앞에 붙고, 뒤에 트레일러가 붙는거죠~

트레일러는 에러를 검출하기 위해서 사용합니다. 그럼 트레일러는 어떻게 에러 검출을 할까요? 흔히 우리가 발견할 수 있는 통신 에러는 손상,손실이 있습니다. 이 두 에러에 대해서 구별할 수 있으신가요?? 깨진 데이터가 손상이고, 데이터가 유실(잃어버린것)이 손실=입니다.

즉 , 도착을 안했거나, 아니면 도착을 했는데 깨졌거나 둘 중 하나일 것입니다.

신뢰성 통신을 하기 위해서는 보낸 데이터에 대해서 응답이 와야 합니다.

시간이 지나서 답이 오지 않으면, 손실로 생각을 하고 답을 오긴 했지만 데이터가 깨져서 왔으면 손상으로 생각합니다. 이런 검사들을 트레일러가 해주죠.

( 여기에서 트레일러의 역할이 중요한데요, 전송하는 데이터는 bit 단위로 날라갑니다. 트레일러는 bit의 갯수를 짝수개로 맞춰주는 역할을 합니다.

만약 0101의 데이터가 날라간다면, 트레일러는 0일테고, 0100의 데이터가 날라가면 트레일러는 1이라 맞춰져 있을 겁니다.)

-> bit의 1의 갯수가 짝수가 아니라면 손상 혹은 손실이다.


5. 접근 제어

- 둘 또는 그 이상의 장치가 같은 링크에 연결되어 있을 때 데이터링크 프로토콜은 어떤 주어진 시간에 어느 장치가 제어권을 갖는지 결정하는 것이 필요하다.

접근제어는 눈치게임을 생각하면 됩니다. 공기라는 매체에 소리를 내지만, 소리의 충돌이 발생시키지 않도록 하는 것이죠.(공기에 대한 접근을 제어한다.)




3계층 네트워크 계층(Network Layer)

To move Packet (패킷도 봉투의 하나라 생각하면 된다.) from source to destination.(원천지?소스?데이터?가 목적지로 가는데 있어서) 
다들 1계층 물리계층이 전송을 담당한다고 말했지만, 이 글을 읽으 시는 분들은 "물리계층이 보내는 목적지를 어디에서 정하는거지? "라는 의문이 들었기를 기대합니다ㅎㅎ!! 바로 여기! 그 목적지를! 네트워크 계층에서 결정합니다.

네트워크 계층은 네비게이션(어디 길을 통해서 목적지 까지 가는 길이 제일 빠른지 와 같은것)이라 생각하면 된다. 목적지를 결정 해야 Hop - to - Hop으로 전송을 하지 않겠는가? 

네트워크 계층은 다중 네트워크(링크)를 통하여 전달되는 발신지 대 목적지 전달을 책임집니다. 데이터링크 계층이 같은 네트워크(링크)상에서 두 시스템 간에 패킷을 전달을 책임지지만 네트워크 계층은 각 패킷이 발신 지점에서 최종 목적지까지 갈 수 있도록 보장합니다.

만약 두 시스템이 같은 링크에 연결되어 있다면, 항상 네트워크 계층이 필요는 없습니다. 그렇지만 두 시스템이 네트워크(링크)간에 연결 장치를 통하여 서로 다른 네트워크에 연결되어 있다면 발신지 대 목적지 전달을 위해 네트워크 계층이 필요하다. 그 밖의 네트워크 계층의 주요 기능을 살펴보자.


4계층이(신뢰성 있는 놈이) 보내라 하면, 봉투에 넣고 주소를 작성하고, 주소를 통하여 길을 찾습니다. 길을 찾은 후에는, 찾은 길에 대해서 다음 길로 이동하죠.

1. 논리 주소 지정.(ip)

- 데이터링크 계층에 의해 구현된 물리 주소지정은 내부적인 주소지정 문제를 처리합니다. 만약 패킷이 네트워크의 범위를 벗어난다면 발신지와 목적지를 구분하기 위한 또 다른 주소지정 시스템이 필요하다. 네트워크 계층은 상위 계층으로부터 오는 패킷에 송신자와 수신자의 논리 주소를 포함하는 헤더를 더한다.(자세한건 뒤 쪽에서 좀 더 상세하게 나온다.)

-> 물리적인 주소의 대응되는 주소이다.

2. 경로 지정.

-독립된 네트워크나 링크를 네트워크 간 연결 (internetworks) 또는 규모가 큰 네트워크를 만들기 위해 서로 연결하려고 하면 연결 장치(라우터 또는 스위치)는 패킷의 최종 목적지까지 경로지정이나 스위칭하게 된다.

즉 , 발신지로부터 목적지로부터 경로를 지정한다. 경로를 지정하게 되면, 모든 패킷은 그 경로로 지나간다 ( 경로 찾는것은 다음 포스팅에서 자세히 나온다.)

   




4계층 전송 계층.(Transport Layer)

To provide reliable (신뢰성을 제공한다.) process- to -process (프로세스 간의 -프로세스는 실행되고 있는 프로그램이다.) message delivery and error recovery (메세지 전달 중 에러가 발생하면 에러를 복구한다.)

이것은, 내가 미쳐버린 파닭집에 외상을 해서, 룸메에게 외상비를 대신 갖다 달라고 돈을 줬다. 하지만 룸메가 없어진 것. 미쳐버린 파닭 사장님도 도착했다는 말이 없다. 여기에서 룸메는 미쳐버린 파닭에 가는 중, 길이 막혀서 늦게 도착할 수 있지만, 우리는 룸메가 길이 막혀서 늦게 도착하는 것을 모를 수 있다.

여기에서는 이렇게 해야 한다.

내가 돈을 보내는 것을 사장님에게 미리 말을 한다(사장님!! 돈 보낼께용!!) - 이것을 연결을 맺는 것이다(connection setup)

그리고 돈을 보낸다! 그리고 여기서부터 시간을 잰다. 하지만, 왕복할 시간을 훨씬 더 많이 지난다. 이럴 경우, 전송계층은 reliable(신뢰)성 있어야 하기 때문에, 다시 외상비를 다른 친구한테 보낸다. 그러므로 신뢰성이 성립한다.

물론 이 예에서는 돈을 다시 보낸것은 엄청난 불 이익이 있을 수 있습니다. 하지만, 패킷을 재 전송하는 것에 대해서는 큰 손실이 없기 때문에 가능하다.

네트워크 계층이 패킷의 발신지 대 목적지 전달을 책임지지만, 이들 패킷간의 관계는 인식하지 않는다. 이는 각 패킷을 각 단편이 분리된 메시지에 속하는지 여부에 따라 독립적으로 처리한다. 다시 말하면, 전송계층은 발신지 대 목적지 레벨에서 오류 제어와 흐름 제어를 통하여 순서대로 도착하는 것을 보장( 쉽게 생각하면 Queue처럼.)한다. 

즉 , 인터넷은 보낸 순서대로 도착하지 않는다. 그래서 전송계층이 그것을 순서대로 붙혀준다.(UDP는 순서대로 붙혀주지 않고 그냥 다 받아버린다.)

데이터를 큰 조각을 내서 보내주고, 그 조각들을 맞춘다.

그 밖의 전송 계층의 책임은 다음과 같다.


1. 서비스 지점 주소지정.

- 컴퓨터는 같은 시간에 여러 개의 프로그램을 실행한다. 이러한 이유 때문에, 발신지 대 목적지 전달은 하나의 컴퓨터에서 다음 컴퓨터까지 전달하는 것뿐만 아니라 한 컴퓨터상에 특정 프로세스(실행 중인 프로그램)에서 다른 컴퓨터에 있는 특정 프로세스(실행 중인 프로그램)까지 전달을 의미한다. 그래서 전송 계층 헤더는 서비스지점(service-point) 주소(또는 포트 주소)라는 주소 유형을 포함한다. 네트워크 계층은 정확한 컴퓨터에 각 패킷을 갖게 하지만 전송 계층은 컴퓨터상의 정확한 프로세스에게 전체 메세지를 갖게 한다.

즉, 우리는 컴퓨터에 프로그램을 많이 실행시킨다. 하지만 이런것들이 다 멀티태스킹이 가능하지 않는가? 실제로 컴퓨터의 통신은 컴퓨터+프로세스 : 컴퓨터+프로세스 의 통신이다.

좀더 추가 설명을 하겠다.

우리가 컴퓨터에 IE를 2개를 실행시켰다. 그리고 한개는 daum, 하나는 naver를 지정해서 검색을 탕! 하면? 당연히 다음과 네이버가 나올 것 이다.

컴퓨터가 이것을 어떻게 정확히 실행시켜주는 것인가? 어떤것이 먼저 요청을 보내고 어떤것이 먼저 응답이 올 지 모르는데? 힝?

여기에서 통신은, 컴퓨터-컴퓨터 통신은 구별이 안된다. 우리의 컴퓨터는 공통적인 요소인데, 이것을 구분하기 위해서, IE브라우저 A가 네이버에 접속, IE브라우저가 B에 접속 하는것을, process에 번호를 붙혀서 그 프로그램을 구분한다. 이 번호를 서비스 지점 주소라 한다!

이것을 포트번호라 부르기도 한다.(포트번호 ~~ 쓰세요~ -> 서비스 지점 주소 ~을 적으세요~ ==같은 맥락이다.)


2.분할과 재조립

- 메시지는 각 세그먼트가 순서 번호가 들어있는 전송 가능한 세그먼트로 나눈다. 이 순서 번호는 전송 계층에 메시지가 목적지에 정확하게 도착하여 재조립되고 패킷이 전송 중에 손실되거나 교체된 것에 대한 식별이 가능하게 합니다. 여기에서 분할은 세그멘테이션. 리 어셈블리는 다시 합치는것이라 부릅니다.

음~~ 그니까 여기는~ 데이터를 보내기 위해서는 조각을 내고, 받으면 다시 합쳐야된다는거죠~

-> 이게 매우 큰 일이다.


3. 연결 제어.

- 전송 계층은 비연결형이거나 연결형일 수 있다. 비연결형 전송 계층은 각 세그먼트를 독립적인 패킷으로 처리하고 목적지 기계에 있는 전송 계층에 전달한다. 연결형 전송 계층은 패킷을 전달하기 전에 먼저 목적지 기계에 있는 전송 계층과 연결을 만든다. 모든 데이터가 전송된 후에 연결이 종료된다.

쉽게 설명하면,

4계층은 연결을 맺는놈, 연결을 맺지 않는놈으로 구분을 한다.

맺지 않는놈은 도착한 애들을 독립된 애들로 보는거고,

연결형은 순서가 마구잡이로 도착해도, 순서대로 나열해주는 것이다.

-> 이것을 UDP( 비연결형 ) , TCP(연결형) 이다.

UDP에서는 같은 놈이 계속 데이터를 보내도, 같은놈이 데이터를 보냈다고 생각하지 않는다. 

TCP에서는 여러명이 계속 데이터를 보내도, 각각의 사람들을 인식하여 사용자들이 보낸 데이터들을 사람별로 순서대로 받아들인다.

그럼 어떻게 순서대로 도착했는지 알까?

-> 포스팅 후 링크 이 자리에 작성해 두겠습니다 ㅎㅎ


4. 흐름 제어

- 데이터링크 계층처럼 전송 계층은 흐름 제어를 책임집니다. 그렇지만 이 계층에서 흐름 제어는 단일 링크라기보단 종단 대 종단에서 수행되죠.

흐름제어는 2계층에서도 할 수 있지만 4계층과 구분할 줄 알아야 합니다.

4계층의 흐름제어는 종단을 연결하는 경로의 상태에 따라서 전송률을 좌지우지 합니다.

만약 4개의 경로가 있다고 생각 해봅시다.

4개의 컴퓨터는 모두 속도가 다르고, 가장 빠른놈, 제일 느린놈이 존재하기 마련입니다.

그렇다면, 가장 빠른 속도의 컴퓨터가 자신의 속도에 맞춰서 데이터를 보내면?
가장 느린놈은 데이터를 다 받지 못하여 손실이 발생할 것이죠 ㅋ 갑질ㅋ

2계층은 내가 전송할 놈의 속도만 보면 되는데, 4계층은 통신할 상대방의 사이에 있는 사람 모두를 고려해야 합니다.

-> 종단 을 연결하는 경로의 상태에 따라 전송률을 결정한다. 

4개의 컴퓨터(A,B,C,D)가 있다고 가정하자.

컴퓨터 A에서 D까지 데이터를 보낼 때 어떤 속도에 맞춰야 하냐면.. 아! 속도는 A는 100개 B는 75개 C는 150개 D는 125개 이다.

속도는 A가 D에게 보낼 때, 그 경로에 있는 모든 컴퓨터의 속도를 신경써줘야 한다.

2계층의 흐름제어와 차이점을 꼭 알아두세요!





5. 오류 제어

4계층은 손상되거나 손실된 애들을 다 재전송 합니다. (정확한 것은 다음 포스팅에서 할꺼얌!!)

데이터링크 계층처럼 전송 계층은 오류 제어를 책임집니다. 이 계층은에서는 오류 제어는 단일 링크를 따라 수행되기보다 프로세스 대 프로세스로 수행합니다. 보내는 전송 계층은 전체 메시지가 수신측 전송 계층에 오류(손상,손실,중복)없이 도착하는 것을 보장합니다. 오류 교정은 항상 재전송을 통해 이루어 집니다.


사실 여기까지 하면 TCP/IP의 모든것을 배운거나 마찬가지 입니다.

5계층부터 7계층까지는 논리적인 모델로써, 개발자가 직접 코딩해야 하는 부분입니다.


5계층 세션계층 (Session Layer)

서론 .우리가 전화를 할 경우, 전화는 서로 연결이 계속 되어야 합니다(Connection). Session은~ 음~!! 화상 전화를 할 경우, 비디오와 오디오가 날아가야 할 두개의 Connection이 필요하죠? 그런 여러개의 연결이 합쳐져서 하나의 서비스가 되면, 그것을 세션이라 부릅니다. 쉽게 말하면, 전송계층에서 음성Connection이나 영상Connection만 연결을 해줄 수 있는데, 이것들을 유지하기 위해서는 Session이 필요합니다 ( 정보를 계속 남기는거죠). 보통 5계층 부터는, 소프트웨어 개발자가 코딩을 해야 하는 부분입니다


처음 네 계층( 물리, 데이터링크 , 네트워크 , 전송 계층) 에 의해 제공되는 서비스는 일부 프로세스에 대해 충분하지 않습니다.

세션 계층은(5계층 , session Layer)는 네트워크 대화 제어기(dialog controller)입니다. 이는 통신 시스템 간의 상호대화를 설정하고, 유지하고, 동기화 합니다. 세션 계층의 주요 책임은 다음과 같습니다.

1. 대화 제어.

- 세션 계층은 두 시스템이 대화하는 것을 허용합니다. (두 시스템 간의 대화 허용) 이는 두 프로세스 간에 반이중이나 전이중 모드로 통신하는 것을 책임집니다.

만약 사용자가 무전기 앱(혹은 웹 서비스 를)을 개발하려고 하면, 사용자가 대화 제어 기능을 직접 개발해서 넣어야 합니다( 어떤 사람이 말 할때 다른 사람이 말 못하게 하는 등.)

반이중 - > 우리가 인터넷에 주소를 입력하면, 우리가 입력한 주소가 서버로 날라가서 결과가 화면에 나옵니다.


2. 동기화

- 세션 계층은 데이터 스트림에 확인점(synchronization point)를 추가하는 것을 허용합니다. 예를 들면, 어떤 시스템이 3000페이지 파일을 보내려고 한다면, 100 페이지마다 각각의 확인점을 추가합니다. 이럴 경우, 파일을 전송하는 과정 중, 644번 페이지에서 끊기게 되면  601~644까지의 정보는 삭제한 뒤, 600번 부터 다시 재전송 하게 됩니다.

- 추가적으로 패턴을 이용하여 동기화를 하기도 합니다. 패턴을 주로 bit으로 많이 사용합니다. 예를 들면, 1이 8개가 오는 부분을 자르겠다고 패턴을 설정합니다.

그럼 전송하는 부분 중, 11111111 이런 패턴이 오면 데이터에 동기화를 걸어주는데, 이 쯤에서 이런 생각을 하실겁니다 

"그럼 원래 보낼려고 했던 데이터에 1이 연속적으로 8개가 오면 어떻하지????"

-> 그건, 원래 1이 8개가 오는 데이터는 11110000 / 00001111 이런식으로 나눠서 전송하게 되고, 이 부분을 합쳐주는 방식을 사용합니다.

주로 패턴을 이용한 동기화는 많이 사용하지 않고, 페이지 갯수(사이즈로) 많이 나눠서 사용합니다.



6계층 표현계층 (Presentation Layer)

데이터를 transelate(번역) 하고, encrypt and terimate 하는것. 표현계층을 볼 때는, Cpu 제조사의 bit 표현법이 생각납니다. 빅 엔디언과 리틀 엔디언의 bit을 count하는 방법은 서로 방향이 틀렸던 것 처럼!(이부분은 C과 매우 연관성이 있는데, 이 부분은 따로 포스팅 하나로 빼야하니 뭐 ㅠㅠㅠ..;;) 각 계층에는 봉투가 필요하다! 받는사람 ~~ 누구 보내는사람 ~~ 누구 이렇게. 그래서 데이터가 내려오면, 7계층 데이터가 보내면, 6계층은 자신만의 봉투에 넣고, 정보(헤더)를 적는다. 이건 러시아인형이랑 같다. (인형을 열면 인형이 나오고, 인형이 나오면 인형이 나오고) .


표현 계층은 두 시스템 간에 교환되는 정보의 구문(Syntax)과 의미와 관련이 있다.


1. 변환.

-두 시스템에 있는 프로세스(실행중인 프로그램)은 항상 문자 스트링,숫자 등의 형식으로 정보를 교환한다. 정보는 전송되기 전에 비트 스트림으로 변경되게 된다. 서로 다른 컴퓨터는 서로 다른 부호화 시스템을 사용하기 때문에 표현 계층은 서로 다른 부호화 방법간에 상호 운용성을 책임진다. 송신자의 표현 계층은 송신자의 의존 형식을 공통 형식으로 변경한다. 수신하는 기계의 표현 계층은 공통 형식을 수신자 의존 형식으로 변경한다.

옛날에 IBM,HP두개의 컴퓨터는 서로 통신이 되지 않았다. 이게 빅 엔디언과 리틀 엔디언의 차이이다. 이런 경우, 서로 통신을 할 때 다른 방향으로 해석을 하게된다.

2. 암호화.

중요한 정보를 전달하기 위해서 시스템은 프라이버시를 보장해야 한다. 암호화는 송신지가 원래의 정보를 다른 형식으로 변환하고 변환된 메시지를 네트워크를 통하여 보내는 것을 의미한다. 복호화는 메시지를 원래 형식으로 되돌릴 수 있도록 변환하는 반대과정이다.

3. 압축.

데이터 압축은 정보에 들어 있는 비트의 수를 줄여준다. 데이터 압축은 텍스트,오디오, 비디오와 같은 멀티미디어 전송에 매우 중요하다.


7계층 응용 계층(Application Layer)

응용 계층은 사용자가 네트워크에 접속하는 것을 가능하게 한다. 전자우편, 원격 파일 접속과 전송, 공유된 데이터베이스를 제공한다. 응용 계층에 의해 제공되는 특정 서비스는 다음과 같다.

1. 네트워크 가상 터미널

- 네트워크 가상 터미널은 사용자에게 원격 호스트에 로그온을 허용하는 물리적인 터미널의 소프트웨어 버전이다. 그렇게 하기 위해 응용은 원격 호스트에 이야기 하고, 교대로 호스트에게 이야기 하고 또는 그 반대로 이야기한다. 원격 호스트는 자신의 터미널 중 하나와 통신하는 것으로 믿고 로그온을 허용한다.

*터미널에는 input과 output만 있다.


2. 파일 전송,접근,관리(FTAM)

- FTAM(에프탐)은 OSI 7 Layer의 기준이다. 산업 기준으론 FTP라고 부른다. 이것은 사용자에게 로컬 컴퓨터에서 사용하기 위해, 원격 컴퓨터로부터 파일을 검색하기 위하여, 자체적으로 원격 컴퓨터에 있는 파일을 관리 하거나 제어하기 위하여 원격 호스트에 있는 파일 접근(데이터를 읽거나 변경하기 위하여)을 허용한다.

3.기타 서비스.

- 카톡의 메시지 전송 서비스, 전자우편 서비스, 디렉토리 서비스 등이 있다.




해당 포스팅은 McGraw-Hill Korea 출판사의 TCP/IP프로토콜(4판)의 많은 부분을 참고하여서 포스팅 했습니다.


감사합니다.

+ Recent posts