TIPs

TCP / IP 간단한 설명들.

겨울거북이 2005. 5. 23. 13:27

우선 ISO가 아니라 OSI 7 Layer라고 합니다. ( OSI Reference Model이라고도 하죠.)

이 OSI 7 Layer라는 표준은 ISO라는 단체에서 만든 것으로 다음을 정의합니다.

네트워크에서 두 호스트간의 통신 과정을 7개의 논리적인 부분으로 나눈 것입니다.

1 계층에서 7 계층까지의 역할을 일일이 설명하기엔 여기서는 무리가 있어 요약하자면

예를 들어 말씀드리죠.

A라는 사용자와 B라는 사용자가 메신져를 하고 있다고 가정합시다.

A가 메신져 창에 "안녕 ~"이라고 입력할 때, 글을 쓰고 엔터키를 누르는 동시에

컴퓨터상에서는 메신져라는 어플리케이션을 통해 이 데이터를 사용자로부터 받게

됩니다. ( 7계층 - Application Layer )

컴퓨터는 사용자로부터 이 데이터를 받으면 컴퓨터들끼리 인식할 수 있는 형태로

변환하게 됩니다. encryption(암호화), extraction(압축), BCD, ASCII, MPEG..etc

이런 것들이 다 이 계층에서 이루어집니다. ( 6계층 - Presentation Layer )

그리고 이 데이터를 B에게 보내기 위해서 이 계층에서 하는 일은 논리적인 연결 설정,

유지등을 합니다. 논리적인 연결이라는 것은 이런 겁니다.

나의 컴퓨터와 당신의 컴퓨터가 인터넷으로 연결은 되어있으나 내가 메신져로

당신에게 대화를 요청하기 위해선 당신의 컴퓨터상에서도 메신져가 로그인 되어있어야

가능합니다. 즉 어플리케이션간의 연결을 의미합니다. ( 5계층 - Session Layer )

여기까지를 Upper Layer(상위 계층)이라고 부르는데 그 이유는 사용자와 컴퓨터간의

통신이기 때문입니다. 이어서 나오는 4계층부터 1계층까지는 Lower Layer(하위 계층)

이라고 해서 컴퓨터와 컴퓨터, 혹은 하드웨어와 하드웨어간의 통신으로 이루어집니다.

컴퓨터내에서는 이러한 데이터들을 외부로 보내기 위해 이 데이터가 어떤 속성의

데이터라는 것을 알려주기 위해 Port 번호를 할당하고 이 데이터를 Segment라고 하는

단위로 자른 후에 종단간의 신뢰성 있는 전송을 책임지게 됩니다.

( 4계층 - Tranport Layer )

이제 A의 컴퓨터에서 B의 컴퓨터로 가야겠죠? 데이터가 A의 컴퓨터를 나와 B의 컴퓨터

에게 가기 위해서는 IP라고 하는 정보를 사용해야 합니다. 그래서 위의 Segment라고

하는 데이터들에 각각 IP정보를 추가하여

Packet이라는 데이터 형태로 바꿔줍니다. Packet에 담긴 IP 정보를 통해

A의 컴퓨터가 있는 네트웤(source)에서 B의 컴퓨터가 있는 네트웤(destination)으로

갈 수 있는 겁니다. 이 때 전송되는 방법은 조금 후에 말씀드릴 Routing Protocol에

의해 두 네트웤사이에 연결된 많은 경로 중 가장 좋은 경로를 따라 전송되게 합니다.

이러한 동작은 Router라는 네트웤 장비에 의해 이루어 집니다. 즉, A 컴퓨터가 있는

네트웤의 라우터에서 B 컴퓨터가 있는 네트웤의 라우터로 전송됩니다.

단 주의 할 점은 이 때는 해당 네트웤으로만 전송되는 거지, 그 네트웤내에 있는

B의 컴퓨터로 바로 전송이 되는 것은 아닙니다. (3계층 - Network Layer )

그리고 B의 컴퓨터가 있는 목적지 네트웤의 라우터에에 도달하면

이제부터는 하나의 네트웤 내에서 호스트를 찾는 과정이기 때문에

이 Packet들이 가지고 있는 IP정보는 쓰이지 않고 실질적인 호스트 주소

(하드웨어 주소인 MAC 주소)를 가지고

찾게 되기 때문에 프레임이라는 데이터 형태로 변환이 됩니다.

실제로 스위치 장비(스위칭 허브)들은 자신과 연결된 각 컴퓨터들의 데이터(프레임)의

MAC 정보를 보고 목적지를 알 수 있도록 동작합니다. ( 2계층 - Data Link Layer )

마지막으로 1계층에서는 이들 데이터가 전송되는 실제 전송 매체(전송 라인)의 규격,

스펙같은 것들을 정의합니다. 실제로 이런 데이터들이 전송될 때 우리 눈에 보이는

것은 전류의 형태이기 때문입니다.

그리고 홈네트워킹에 대해서 자세히 말씀드릴 수는 없으나.. 아는 대로 얘기드리면..

우리가 현재 사용하는 IP 주소의 체계는 32비트의 이진수로 구현되는 IPv4입니다.

약 43억개( 2의 32승 = 42억 9천얼마정도..)를 사용할 수가 있는데 인터넷이 생겼을

초기에는 이렇게 많이 사용될지도 몰랐기 때문에 현재 고갈단계에 와있습니다.

이를 위해 IPv6라는 새로운 체계가 현재 시범 운영내지는 몇 군데에서 쓰이고 있는데..

이 주소 체계를 도입할 경우 약 100억개 이상의 주소를 사용할 수가 있다고 하네요..

즉 이 말은 각 가정에서 여러 개를 써도 부족하지 않을 만큼의 갯수가 됩니다.

그래서 미래에는 가정의 냉장고나 전자레인지, 세탁기, 텔레비젼등에도 IP가

할당된다고 합니다. 예를 들면 전자레인지의 경우 인터넷으로 조리할 요리를 선택한

후에 전자레인지에 재료를 넣기만 하면 인터넷에서 선택한 요리로 조리가 되는 그런

경우가 있을 수 있겠지요.

이런 환경을 홈네트워킹이라고들 합니다.

그리고 Routing Protocol에 대해 말씀드리면.. (헥헥..)

Routing Protocol이라는 것은 Source network에서 Destination network으로 데이터

(패킷)을 보낼 때 연결된 많은 경로(Route)들 중에서 가장 좋은 경로를 찾아내어

그 경로로 데이터를 보내 Destination network의 Router로 전송하도록 해줍니다.

이런 Routing Protocol에는 여러 가지가 있는데 대표적으로 RIP, RIPv2, IGRP, EIGRP,

OSPF, BGP, IS-IS등의 여러 가지가 있습니다.

위에서 말하는 가장 좋은 경로(Optimized Route)는 라우팅 프로토콜이 어떤 것이냐에

따라 다릅니다. 가령 RIP의 경우에는 거리상으로 가장 짧은 경로가 가장 좋은 경로로

정해지는 반면, OSPF같은 경우는 거리라는 요소 외에 각 경로의 대역폭등을 고려하여

가장 좋은 경로를 정합니다.

오류 제어에 대한 내용입니다. 오류 제어라는 것은 네트웤 상에서 데이터를 주고 받을

때 상대방으로 하여금 잘못된 데이터의 수신이 되는 것을 막기 위함인데요.

여러 가지 방식들이 있습니다.

TCP에서의 Sliding Windows 처럼 데이터의 흐름을 제어해가면서 오류가 생기면

그 부분부터 재전송하는 방식도 있고, 혹은

데이터의 헤더부분에 있는 'Checksum'이라고 하는 값을 통해 전송될 당시의 데이터

양과 수신됬을 때의 데이터 양을 비교하여 차이가 있을 경우 손실(loss)로 인한

오류를 찾아내는 방식도 있고, 이 밖에 CRC같은 Coding 방법들도 있습니다.

BUS는 데이터가 다니는 통로라고 생각하시면 됩니다.

MAC(Media Access Control) 이라는 것은 NIC(LAN Card)에 있는 하드웨어 주소라고

생각하시면 됩니다. IP의 경우 논리적인 주소라고 하는데 이는 변경이 가능하지만

MAC은 변경이 불가능한 Hard-Coded 정보로 된 주소입니다.

이 MAC은 하나의 네트웤 내에서의 통신에 사용되는 정보인데요..

네트웤과 네트웤들간의 통신을 Router가 담당한다면 한 네트웤내에서의 통신은

Switch가 담당합니다. 이 Switch는 자신의 포트에 연결된 컴퓨터들의 MAC 주소를

Switch내에 데이터 베이스에 저장하여 두었다가 자신의 포트에 연결된 컴퓨터들간에

통신을 할 때 Switch를 거치게 될 때 그 데이터(프레임)의 MAC 주소를 본 후에

자신이 가지고 있는 데이터 베이스에서 그 MAC 주소가 어느 포트에 있는지 확인한 후에

그 MAC 주소를 가진 컴퓨터가 연결된 포트로 데이터를 전송( Forwarding)합니다.

OSPF는 위에서 말한 것처럼 Routing Protocol 중에 하나인데요.

Routing Protocol에서도 Link State Routing에 속합니다.

기능은 위에서 말한 것처럼 Routing을 담당합니다. 이 때 Routing 하기 위해 필요한

정보는 IP이고요. 이 프로토콜은 Dijkstra Algorithm이라는 것을 이용하여

라우팅을 합니다. (RIP의 경우는 Belman Ford Algorithm)

이 프로토콜은 여러 네트워크들이 연결된 중, 대규모의 네트워크에서 사용하는

프로토콜입니다. 이를 사용함으로서 좋은 점은 RIP같은 몇몇 프로토콜보다 더 빠른

수렴(어느 한구간의 변화를 네트웤 전체가 알게 되는 시간..)이 빠르고,

라우팅으로 인해 소비되는 대역폭의 양이 크지 않으며... 등등 여러 가지가 있습니다.

조금 어려운 말들이 나오기 때문에 인터넷에 PDF 화일들을 찾아다가 보시는게 더

빠를 것 같네요.

마지막으로 UDP는 TCP와 함께 OSI 7 Layer의 4계층에 속하는 프로토콜로서..

TCP가 신뢰성 있는 데이터 전송을 한다면, UDP는 이에 비해 신뢰성이 떨어지는

전송을 합니다. TCP의 경우 데이터를 전송하면 잘 수신되었는지 확인하여 안됬으면

재전송을 하는 등의 신뢰성이 보장되지만, UDP는 일단 보내면 자신의 일은 끝났다고

생각하는 프로토콜입니다. 하지만 그렇다고 UDP가 나쁜건 아닙니다.

UDP를 사용하는 대표적인 예가 전자메일(E-mail)인데요.

TCP는 위의 처럼 신뢰성 있는 데이터를 전송하기 위해 UDP보다 더 많은 정보를

가지고 전송되기 때문에 속도가 느리며 데이터의 크기가 큽니다.

반면, UDP는 복잡한 기능이 없기 때문에 최소한의 정보만을 포함하며,

속도도 빠릅니다.

흔히 TCP는 우체국, UDP는 택배에 비유를 하죠.

글이 너무 길어져서 지루하실수도 있겠군요.. -_-;;

----------------------------------------------

또 다른 글..

 

--------------

TCP/IP[티씨피 아이피]는 인터넷의 기본적인 통신 프로토콜로서, 인트라넷이나 엑스트라넷과 같은 사설 망에서도 사용된다. 사용자가 인터넷에 접속하기 위해 자신의 컴퓨터를 설정할때 TCP/IP 프로그램이 설치되며, 이를 통하여 역시 같은 TCP/IP 프로토콜을 쓰고 있는 다른 컴퓨터 사용자와 메시지를 주고받거나, 또는 정보를 얻을 수 있게된다.

TCP/IP는 2개의 계층으로 이루어진 프로그램이다. 상위계층인 TCP는 메시지나 파일들을 좀더 작은 패킷으로 나누어 인터넷을 통해 전송하는 일과, 수신된 패킷들을 원래의 메시지로 재조립하는 일을 담당한다. 하위계층, 즉 IP는 각 패킷의 주소 부분을 처리함으로써, 패킷들이 목적지에 정확하게 도달할 수 있게 한다. 네트웍 상의 각 게이트웨이는 메시지를 어느 곳으로 전달해야 할지를 알기 위해, 메시지의 주소를 확인한다. 한 메시지가 여러 개의 패킷으로 나뉘어진 경우 각 패킷들은 서로 다른 경로를 통해 전달될 수 있으며, 그것들은 최종 목적지에서 재조립된다.

TCP/IP는 통신하는데 있어 클라이언트/서버 모델을 사용하는데, 컴퓨터 사용자(클라이언트)의 요구에 대응하여, 네트웍 상의 다른 컴퓨터(서버)가 웹 페이지를 보내는 식의 서비스를 제공한다. TCP/IP는 본래 점대점(点對点) 통신을 하는데, 이는 각 통신이 네트웍 상의 한 점(또는 호스트 컴퓨터)으로부터 시작되어, 다른 점 또는 호스트 컴퓨터로 전달된다는 것을 의미한다. TCP/IP와 TCP/IP를 이용하는 상위계층의 응용프로그램들은 모두 "커넥션리스 (connectionless)"라고 불리는데, 이는 각 클라이언트의 요구가 이전에 했던 어떠한 요구와도 무관한 새로운 요구로 간주된다는 것을 의미한다 (일상적인 전화통화가 통화시간 내내 지속적으로 연결되어 있어야 하는 것과는 다르다). 커넥션리스는 네트웍을 독점하지 않으므로, 모든 사람들이 그 경로를 끊임없이 공동으로 사용할 수 있게 한다 (사실 TCP 계층 그 자체는 어떤 한 메시지가 관계되어 있는 한 커넥션리스가 아니라는데 유의해야 한다. TCP 접속은 어떤 한 메시지에 속하는 모든 패킷들이 수신될 때까지 계속 유지된다).

많은 인터넷 사용자들이 TCP/IP를 이용하는 상위계층 응용프로토콜에 대해서는 잘 알고 있다. 이러한 상위계층 프로토콜에는 웹서비스에 사용되는 HTTP를 비롯하여, 멀리 떨어져 있는 원격지의 컴퓨터에 로그온할 수 있게 해주는 Telnet, 그리고 파일전송에 사용되는 FTP 와 메일 전송에 사용되는 SMTP 등이 있다. 이러한 프로토콜들은 종종 TCP/IP와 함께 패키지로 일괄 판매된다.

PC 사용자들은 보통 인터넷에 접속하기 위해 SLIP이나 PPP 프로토콜을 사용한다. 이러한 프로토콜들은 다이얼업 전화접속을 통해 접속서비스사업자의 모뎀으로 보내질 수 있도록 IP 패킷들을 캡슐화한다.

TCP/IP와 관련이 있는 프로토콜로 UDP가 있는데, 이것은 특별한 목적을 위해 TCP 대신에 사용되는 것이다. 라우팅 정보를 교환하기 위해 네트웍 호스트 컴퓨터에 의해 사용되는 프로토콜에는 ICMP, IGP, EGP, 그리고 BGP 등이 있다.


 

TCP와 IP에 대해 권위 있는 설명으로 Transmission Control Protocol - DARPA Internet Program Protocol Specification (ftp://ftp.isi.edu/in-notes/rfc793.txt), RFC 793, 그리고 Internet Protocol - DARPA Internet Program Protocol Specification(ftp://ftp.isi.edu/in-notes/rfc791.txt), RFC 791 등이 있습니다.
TCP/IP에 관해 배우는 방법 중에 권위 있는 또다른 정보가 A TCP/IP Tutorial, RFC 1180 이 있습니다.
Bay Networks에서 IP (Internet Protocol)와 IP를 사용하는 관련 프로토콜 셋에 관한 설명을 그림으로 나타내어 제공하고 있습니다.

'TIPs' 카테고리의 다른 글

미국 비자 받기  (0) 2005.05.23
HSDPA  (0) 2005.05.23
AT command summary  (0) 2005.05.23
bz2 압축파일  (0) 2005.05.23
REX란.  (0) 2005.05.23