포스팅 제목을 작성하려 하면 항상 어떻게 작성해야 할 지 고민되네요ㅋㅋ

이번 포스팅에서는 TCP/IP의 제 1계층인 물리계층에 대하여 좀 더 추가적으로 설명하는 방향으로 작성하려고 합니다.


OSI 7계층 중

1계층인 물리계층 , 2계층인 데이터 링크 계층은 알고보면 같은 하드웨어가 제어합니다.

보통 아직까진 전 세계적으로 이더넷 칩으로 많이 들어가 있습니다.

 처음에는 이더넷 보드로 많이 들어가 있었습니다. 하지만, 이더넷 보드가 점 점 줄어들고, 그냥 보드 속으로 들어가기 시작했습니다.

요즘에는 칩셋에 많이 들어가기도 합니다. 


TCP/IP가 막강한 이유는,

하위 계층( 물리계층, 데이터링크 계층)이 무엇이 오든 상관이 없습니다. 


만약 어느 회사에 신입사원으로 A,B라는 사람이 최종 면접까지 오게 되었습니다.

그런데 회사 면접에서, A라는 사람은 " 저는 제 아래에 누굴 붙혀주셔도 열심히 근무할 수 있습니다!" 라고 대답을 하였고,

B라는 사람은 "저는 아래에 꼭 붙힘성이 좋아야 되는 사람이 붙혀주셔야지 일할 수 있습니다."라고 이야기 했다.

그럼 당신이 사장이라면 누구를 뽑겠습니까?
아무것이나 올 수 있다는 것은 엄청난 것입니다. 즉, 미래에 아직 개발되지 않은 무언가가 개발이 된다면 "언제나 갖다 붙힐 수 있다"라는 엄청난 강점이 있다는 거죠. ( 모듈화 쨩..)

TCP/IP가 문제가 많은 프로토콜임에도 불구하고 지금까지 살아남을 수 있는 이유는 이러한 이유입니다..


그럼 하부에 무엇을 붙힐 수 있을까요?


1.LAN - Local Area Network ( ex wifi )

- 보통 AN은 Area Network의 줄임말 입니다. 그 지역을 커버하는 네트워크 라는 뜻입니다.

이 앞에있는 L은 네트워크의 크기를 말해주는 것입니다.

우리집 같은 경우도 로컬, 벤쳐도 로컬, 학교도 로컬 , 대기업속에서 사용하는 인터넷이 로컬단위입니다

2.MAN - Metropolitan Area Network (미국 NY 근처의 위성도시드를 Metropolitan 지역이라 말하죠! 우리나라로 따지면, 서울특별시 같은곳 이랄까..??ㅎㅎ ) 

- LA의 시장이나, 아니면 어디 주의 주지사가 자기의 마음을 먹고 그 동네에 통채로 네트워크를 설치하면 그것이 메트로 폴리탄 네트워크 입니다.

3.WAN - Wide Area Network - (LTE)

- 나라 전체를 커버하는 네트웍입니다. 우리나라같은 경우죠.

4. PAN - > Persnal Area Network  개인영역의 네트워크.

5. BAN -> Body Area Network.


1. 물리 계층과 데이터 링크 계층.

물리 계층 통신 형태.










와.. 그림 정말 직관적이죠?!ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그리는데 진짜 힘드네여.. 댓글좀 꼭 달아주세요ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ
bit으로 되어있는 스트림을 A에서 시작되고, B까지 보내는 것.

A에서 시작한 데이터는, 각 링크를 따라서 데이터가 전송이 됩니다. 물리 계층의 통신 형태로만 봤을 경우는 통신은 이렇게 진행됩니다.

TCP/IP는 물리 계층과 데이터링크 계층에서 특정 프로토콜을 규정하지 않고, 모든 표준과 기술적인 프로토콜을 지원합니다. 이 레벨에서 통신은 hop - to - hop / node - to - node 이거나, 컴퓨터 라우터 간의 통신입니다. 물론 통신 단위는 비트이며, 두 노드 간에 연결이 설정되면 비트 스트림이 연결에 따라 흘러가게 됩니다. 그렇지만 물리 계층은 각 비트를 개별적으로 처리합니다. 위에서 보신 그림은 노드간의 통신을 보여줍니다.

이 시점에서, 두 대의 컴퓨터 간의 서로 라우터 R1,R3,R4를 통하여 서로 통신하기 위한 가장 효율적인 방법을 알게 된다고 가정합시다.여기서 가장 큰 문제는, 효율적인 방법을 알아내는 것입니다.

만약 노드가 n개의 링크에 연결되어 있다고 하면, 각 링크 당 하나씩 n개의 물리 계층 프로토콜이 필요합니다. 

그림은 통신에 단지 하나의 물리 계층만 포함되어 있는것만으로 보여줍니다 각 컴퓨터는 단지 하나의 링크에 포함되어 있고, 각 라우터는 두 개의 링크에만 포함되어 있습니다. 그림에서의 컴퓨터 A,B간의 비트의 연결은 4개의 독립적이고 짧은 여행으로 이루어 집니다. 라우터 R1은 세 개의 물리 계층(두 개는 우리의 시나리오에서 보여준)을 갖습니다. 링크 1에 연결된 계층은 링크1에 사용되는 프로토콜 형식에 따라 비트를 받습니다. 링크3에 연결된 계층은 링크 3에서 사용되는 프로토콜 형식에 따라 비트를 보냅니다.. 포함되는 다른 두 개의 라우터도 같은 상황입니다.

물리 계층의 통신 단위는 비트이다.


여기에서 데이터 링크 계층의 통신 형태로 보면 조금 차이점이 있습니다.

데이터 링크 계층

먼저 그림 보고 갈게요..

데이터 링크 계층의 통신 형태








Datalink계층에서 데이터는 Datalink->physical -> physical -> Datalink  이런식으로 반복적으로 이동하게 됩니다. 


2계층이니 hop - to - hop으로 전송을 하게 됩니다.


TCP/UDP는 데이터링크 계층에 대해 특정 프로토콜을 규정하지 않습니다. 모든 표준과 프로토콜들은 이를 지원합니다. 이 레벨에서도 통신은 (두 홉 or 노드) 간의 통신입니다. 그렇지만 통신 단위는 프레임(Frame - 2계층의 봉투)이라는 패킷입니다. 프레임은 네트워크 계층으로부터 받은 데이터에 헤더가 더해지고 트레일러가 더해짐으로 캡슐화가 된 패킷입니다.

통신 정보 가운데 헤더는 프레임의 발신지와 목적지를 포함합니다. 목적지 주소는 노드들이 링크에 연결되어 있기 때문에, 프레임의 정확한 수신자를 규정하는 데 필요합니다. 발신지 주소는 프로토콜에 의해 요구될 수 있는 가능한 응답이나 확인응답을 위해 필요합니다.

컴퓨터 A 와 라우터 R1 간의 이동하는 프레임은 라우터 R1 과 R3 간에 이동하는 프레임과 다르다는 것을 주목해야 합니다.

프레임이 라우터 R1에 의해 수신될 때, 이 라우터는 왼쪽에 나타나있는 데이터 링크 프로토콜로 프레임을 전달합니다.(왼쪽 - Link1에서 사용하는 프로토콜로 전달 한다는 것) 프레임은 개방되고 데이터는 제거 됩니다. 그러면 데이터는 라우터 R3로 보내지는 새로운 프레임을 생성하기 위하여 오른쪽(Link2에서 사용하는 프로토콜을 사용하여 ) 에 나타나 있는 데이터링크 프로토콜로 보내집니다. 이유는 링크 1과 링크 3이 서로 다른 프로토콜을 사용하게되면 서로 다른 형식의 프레임이 요구됩니다. 또, 그림에는 프레임의 물리적인 이동은 보여주지 않았습니다. 물리적인 이동은 물리계층에서만 이루어 집니다. 두 노드는 데이터링크 계층에서 논리적으로 통신하는 것이지 물리적이 아닙니다. 

다시 말하면, 라우터 R1에 있는 데이터 링크 계층은 프레임을 컴퓨터 A에 있는 데이터링크 계층으로부터 직접 보낸 것으로 생각합니다.

A에서 R1으로 보내지는 것은 한 물리 계층에서 다른 물리 계층으로 가는 비트 스트림입니다. A에서 프레임은 비트 스트림으로 변환되어 지고, R1에서 비트들은 프레임으로 전환되는데, 이는 프레임이 교환되는 두 데이터링크 계층을 이해하는 데 도움을 줍니다.

데이터 링크 계층에서의 봉투 단위는 Frame입니다.




3계층으로 와봅시다.

네트워크 계층.


네트워크 계층의 통신 형태



2계층까지는 방금 그림처럼, 하드웨어로 제어가 됩니다. 근데 3계층은 1,2계층처럼 어렵진 않습니다. 

3계층의 TCP/IP는 인터넷 프로토콜(IP)를 지원합니다.

IP : Internet Protocol - TCP/IP 프로토콜에서 사용되는 전송 메커니즘.

- 인터넷은 수 없이 많은 프로토콜로 구성되어 있습니다. 그 중 프로토콜의 하나의 이름이 IP라는 놈이 있습니다. 막강한 놈이죠!!! 얘가 있기 때문에 지금까지 다른 프로토콜이 살아남을 수 있었던 겁니다!!!(이유는 나중에 한 포스팅으로 따로 분리하여 설명하도록 하겠습니다.)

(ARP,RARP,IP,ICMP,IGMP)

IP는 한 문장으로 말할 수 있습니다. "신뢰성 없는 비연결형 데이타그램 (Datagram) 프로토콜! "

한국 사람이 데이터그램을 "떠돌이"라고 정의를 했습니다. 인터넷이라는 바다가 있습니다. 우리가 구글에 패킷을 딱! 쏘면~ 패킷이 구글까지 가야되는데, 구글까지 가는동안 패킷이 바다를 둥둥~~ 떠다닙니다. 이러다가 어떻게든 구글에 도착하고, 구글이 응답을 하면 이 응답도 바다에 둥~둥 떠다니다가 우리에게 응답이 오게 됩니다.

떠돌이는 가족이 없습니다. 그렇기 때문에 이 세상에서 자기만 혼자이기 때문에 다른 사람과 연관이 없습니다. 이렇기 때문에 인터넷에 엄청난 수의 떠돌이들이 돌아다닙니다. 그러다가 중간에 죽기도 하고(손실) 도착도 하기도 합니다.

그리고, 중복될 수 있습니다. ( 죽었다 라고 생각됬지만, 알고보니 살아있던거죠ㅋㅋㅋ. 3계층에서 죽을 수 있었지만, 4계층이 신뢰성을 보장하기 때문에 재전송을 할 수 있습니다. - IP는 경로를 기록하지도 않고, 자신의 목적지에 도착하면 데이터그램을 재조정하는 기능을 가지고 있지 않습니다.)

이와 같이 에러가 발생할 수 있기 때문에 에러가 많은 프로토콜이라 생각합니다.( 다른 이유도 많죠.)

하지만 IP는 이렇게 말합니다  "나는 !! 최선을 다 했어!! -Best-Effort!!" - 하지만 오류검사나 추적을 제공하지 않습니다.

매우 안좋게 보이죠?

하지만 이것이 전 세계를 석권했습니다. 그 이유는. Internet를 관리하는 곳을 본 적이 있나요??

우리 학교 네트워크는 학교에서 관리하고, KT는 KT에서 관리하고, 이런 네트워크가 모여서 Internet이 됩니다.

하지만 이걸 다 묶어서 한번에 관리해 주는 사람이 없습니다. 그렇기 때문에 저희가 노트북으로 AP를 종료하고, 연결하고 할 때 따로 승인을 받거나 이러지 않아도 되는겁니다.(지금 이 순간에도 어느 네트워크는 부팅되고 있고, 어떤 네트워크는 종료되고 있다는게 그 증거죠.)

종료된 네트워크에는 도착할 수 없기 때문에, 전송된 데이터는 죽습니다. 그럼 이런 궁금증을 갖을 수 있죠.

종료된 네트워크에 무조건 도착을 해야한다면? -> 그렇다면 종료된 네트워크가 켜지기 전 까지 데이터를 기다려줄 저장공간은? 종료된 네트워크에 어떠한 요청이 올 줄 알고? 주소를 잘못 작성하여 잘못 요청이 왔다면? 어떻게 할겁니까? - Super Count Example!!! 훗훗훗훗훗 메롱~


IP에 대해서 설명이 조금 길어졌죠??ㅎㅎㅎ;;






ARP(Address Resolution Protocol)

->전화번호를 생각하면 쉽습니다. 전화번호에 우리가 이름을 넣으면 전화번호가 나옵니다.( ip주소를 넣어주면 물리주소로 알려준다)

그리고 전화번호가 생각나지만, 이름이 생각나지 않을 수 있습니다. 이럴경우를 대비해서

RARP(Reverse ARP)가 있습니다. (물리주소 - > IP주소로 변환)

->4월 말이나 5월 초에 포스팅 할꺼에여..

ICMP (Internet Control Message Protocol) - 문제점을 통지할 필요가 있을 경우, 문제점을 알려주는 프로토콜이다. 



A가 B에게 데이터를 전달 하려고 하면, R1,R3,R4를 걸쳐서 전달 되죠?  이 경로를 찾아주는 것이 3계층의 역활입니다.

경로가 결정 되면, A는 R1에게 전달 하라고 2계층에게 전달합니다. 그럼 R1에게 전달 되고, R1의 네트워크 계층이 다시 R3에게 가라고 2계층에게 명령을 하면, 전달되고 하는 방식으로 전달이 됩니다.


네트워크 계층에서의 통신과 데이터링크나 물리 계층에서의 통신 간에 주요 차이점이 있습니다. 네트워크 계층의 통신은 종단 대 종단인데 반하여 다른 두 계층 간의 통신은 노드 대 노드입니다. 컴퓨터 A에서 출발하는 데이터그램은 컴퓨터 B에게 도착하게 됩니다. 라우터의 네트워크 계층은 가장 최적의 경로를 찾기 위해 패킷의 발신지와 목적지를 조사할 수 있습니다. 그러나 이들은 패킷이 내용을 변경하는 것은 허용하지 않습니다. 물론, 통신은 논리적인 것이지 물리적인 것은 아닙니다. 

컴퓨터 A와 B의 네트워크 계층이 데이터그램을 보내고 받는 것으로 생각하지만 실제 통신은 물리 계층에서 이루어집니다.




전송계층

전송 계층의 통신 형태.


전송 계층과 네트워크 계층 사이에는 큰 차이점이 있습니다. 물론 네트워크에 있는 모든 노드들이 네트워크 계층을 갖는 것이 필요하지만 단지 두 컴퓨터만 전송 계층을 가질 필요가 있습니다. 네트워크 계층은 컴퓨터 A로부터 컴퓨터 B까지 개별적인 데이터그램을 보내는 책임을 갖지만, 전송 계층은 A에서 B까지 사용자 데이터그램, 패킷, 세그먼트라는 전체 메시지를 전달하는 책임이 있습니다. 세그먼트는 몇 개 또는 몇십 개의 데이터그램으로 이루어질 수 있습니다. 세그먼트는 데이터그램으로 나뉠 필요가 있고 각 데이터그램은 전송을 위해 네트워크 계층으로 전달되어져야 합니다. 인터넷은 각 데이터그램에 대해 서로 다른 경로를 지정하므로 데이터그램은 순서가 바뀌어 도착하거나 손실될 수도 있습니다. 컴퓨터 B에 있는 전송 계층은 모든 데이터그램이 도착되어, 조립되고, 세그먼트로 만들어질 때 까지 기다려야 합니다.

우리는 두 전송 계층이 서로 세그먼트를 이용하여 통신하는 것으로만 생각하지만 통신은 물리 계층에서 비트 교환을 통하여 이루어 집니다.


전통적으로, 전송 계층은 TCP/IP프로토콜에서 두 개의 프로토콜에 의해 표현됩니다.( 최근에 SCTP(Stream Transmission Protocol)라는 프로토콜이 발표되긴 했습니다.)



전송계층에는 2개의 프로토콜이 있습니다.

1. TCP/IP

2. UDP


UDP는!

우리가 소켓 프로그래밍 할 때 두개중 하나를 많이 선택합니다.

선택을 할 때, 이름을 주의깊게 보면 좋습니다. 그 중 UDP는 User Datagram Protocol 입니다. 이름 중 Datagram이 붙어 있으니, 떠돌이 입니다. 떠돌이들은 서로 연관관계가 없기 때문에 신뢰성이 없습니다. (전체적으로 신뢰성이 없는 프로토콜 입니다.) Datagram Protocol 입니다. Datagram이 포함되어 있지만, IP와 구분이 되기 어려워서 User가 붙었습니다. 그래서 IP위에 있다고 해서 User Datagram Protocol입니다.

특징.

- 데이터 그램의 상호 연관성 없이 단순 전달한다.

- 패킷의 손실, 중복 전달, 비 순서적 전달 발생 가능합니다.


TCP는!

Transmission Control Protocol 의 줄임말입니다.

제가 이전에 들었던 미쳐버린 파닭 사장님의 이야기와 비슷합니다.

제가 친구에게 1000원을 전달해 주라고 하면, 그 돈이 전달되었다고 하기 전 까지 1000원을 계속해서 전달해 주는겁니다.( 이터가 갈 때 까지 계속 전송한다. - 전송을 제어하는 프로토콜이라 말한다.)

특징.

- 연결 설정 후, 스트림(Stream) 형태로 데이터 전달.(우리가 전화를 하면, 계속적으로 연결되어 있다. 말을 안해도 주변 잡소리들도 다 전송이 된다. 그렇기 때문에 연결되어 있는 시간대로 요금이 청부된다.)

- 패킷들은 상호 연관성을 가짐

- > 즉,순서 정보를 가진다. 순서 정보를 가지고 있으면, 누가 없어졌는지 알 수 있다. 예로들면, 우리가 어릴 때 소풍을 가면 번호대로 많이 앉아 있다. 다른반 쌤들은 그 번호를 이용해서 누가 빠졌는지 확인할 수 있었다.

-> 빠져있는 데이터를 받을때 까지 재전송한다.

-> 하지만 전송 중, 빠졋다고 생각되는 데이터가 뒤늦게 도착 하여도, 수신자는 그 데이터를 무시한다( 버려버림!!) 


전송 계층의 통신 형태


전송계층은 통신을 하지 않는다. 전송계층은 end - to - end 통신이기 때문이다. 전송 계층은 중간 노드를 방문하지 않음. 그렇기 때문에 우리가 응용프로그램을 만들 때, end 와 end이 통신할 수 있도록 프로그램을 만들어야 합니다.




정의 인용 및 참고한 서적 : TCP/IP프로토콜 제4판(Behrouz A. Forouzan) - MccGraw-Hill Korea 출판사.


+ Recent posts