본문 바로가기
Computer/Network

TCP/IP (Transmission Control Protocol / Internet Protocol)

by 시앙라이 2007. 1. 17.

1.TCP/IP Protocol의 개요

TCP/IP라는 Protocol은 너무나도 유명하여 네트워크를 한다는 사람뿐만 아니라 컴퓨터를 조금이라도 다룰 줄 알고 인터넷이라는 것을 접근하기 위해서 한번이라도 셋팅을 해 본 경험이 있는 사용자라면 누구나 한번쯤 들어보았을 프로토콜 중의 하나이다.

하지만 실제로 우리가 아는 것만큼 TCP/IP는 간단하지만은 않다. 지금처럼 인기있는 표준 프로토콜로 발전할 수 있었던 것은 TCP/IP가 서로 다른 여러 기종의 시스템을 연결할 수도 있고, 또 정확한 전송처리를 위해서 많은 대비책을 내포하고 있어서 네트워크에서 믿을 만한 통신을 제공하였기 때문에 가능한 일이었다. 그러한 일들을 처리하기 위해서는 당연히 많은 내부적인 요소들을 포함하고 있기 때문에 그만큼 복잡하기도 하고, 서로 다른 역할을 담당하는 몇가지 프로토콜이 포함되어서 하나의 TCP/IP라는 커다란 프로토콜 셋트를 만들어 내게 된다. 이런 연유로 일반적으로 TCP/IP를 가리킬 때 "TCP/IP Protocol Suite"라는 용어를 사용한다. Suite라는 표현을 많은 번역서들에서 '묶음, 집합, 한벌' 등의 용어를 빌어서 사용하지만 명확히 그것들을 처리해 줄 만한 용어가 부족하다. 원어 그대로 TCP/IP Protocol Suite라고 부르기로 한다.

이제 우리는 TCP/IP Protocol에 대해서 그 구조부터 차근 차근 접근해 보도록 하자. TCP/IP Protocol은 Network interface, internet, Transport, Application 등의 네 개의 계층 모델에 연결 시킬 수 있다. 계층모델의 대표적인 모델은 ISO의 OSI 7Layer Model을 들 수 있으며, TCP/IP Protocol은 그러한 OSI 7Layer의 모델을 조금 간소화하여 4개의 모델과 연결시킬 수가 있다.


[그림1] TCP/IP Protocol Suite

위의 그림에서 보면, 몇 개의 프로토콜이 각 계층에 연결되어 있는 것을 볼 수 있다. OSI 7Layer도 마찬가지지만, TCP/IP Protocol Suite 역시 하나의 흐름이라고 볼 수 있다. 가장 상위에 있는 Application에서는 데이터를 생성하게 된다. 그 데이터를 네트워크 어댑터 카드(NIC)에 실어서 다른 컴퓨터에게로 보내기까지의 하나의 흐름을 Suite에서 보여주고 있는 것이다. Application에서 데이터를 만들어서 그것을 로컬 하드디스크가 아닌 원격지의 파일서버에 저장을 해야 한다고 가정을 해 보자.

Application에서는 파일서버로 데이터를 전송하기 위해서 Network을 호출할 수 있는 방법이 필요할 것이고, 그러한 역할을 담당해 주는 것이 바로 Windows Socket과 NetBT라고 하는 Interface가 되는 것이다. NetBIOS와 WinSock은 네트워크로 전송을 하기 위해서 필요한 프로토콜을 호출할 수 있는 방법을 제시해 준다. WinSock이나 NetBIOS over TCP/IP (NetBT)를 통해서 그 아래에 존재하는 Transport계층에 해당하는 TCP나 UDP를 이용하게 되고, 결국 TCP와 UDP는 Internet계층에 해당하는 IP에게 최종적으로 데이터를 전달할 임무를 맡기게 되는 것이다. 그러면, IP는 ICMP, ARP등의 도움을 받아서 어댑터 카드에 데이터를 실을 수 있도록 준비를 한다. 그렇게 되면, 결국엔 Ethernet 혹은 TokenRing등의 네트워크에서 사용하는 그들만의 Frame이 생성되어 네트워크 상에 전송되게 되는 것이다.

단순하게 생각하면, 내가 가지고 있는 데이터를 다른 컴퓨터로 옮기는 작업이 뭐 얼마나 대단할까 하고 생각할 수도 있겠지만, 조금만 네트워크를 이해해 보면 만만치 않은 작업이라는 것을 알 수 있게 된다. 내가 원하는 컴퓨터를 찾는 방법은 무엇을 사용할 것이며, 네트워크에서 나만이 아닌 여러 사용자들이 한꺼번에 작업을 하고 있기 때문에 그들이 보내는 데이터와 섞이지 않도록 무슨 방법을 강구해야 할 것인지.. 또, 데이터가 크기가 아주 크다면, 이것을 효율적으로 보내기 위해서 작게 나누어야 할 것인데, 어떠한 방법으로 얼마만큼 작은 크기로 나눌 것인지, 데이터가 가다가 손실이 생기면 손상된 부분에 대해서는 어떻게 처리를 할 것인지 등등.. 수많은 문제들이 내포되어 있기 때문에 이러한 것들에 대한 대비책을 미리 만들어 두어야만 효율적인 네트워크를 운영할 수 있을 것이다.

이런 내용들을 정의해 둔 것이 바로 Protocol이다. TCP/IP역시 하나의 Protocol이며 네트워크를 운영하는 데 있어서 필요한 내용들을 담고 있는 것이다. 그러면, 이제부터는 TCP/IP Protocol Suite가 가지고 있는 여러 가지 Protocol에 대해서 하나씩 차례대로 정리를 해 보기로 한다.

'Computer > Network' 카테고리의 다른 글

Windows Size의 크기에 따른 영향  (0) 2007.01.17
TCP/IP Sliding Window  (0) 2007.01.17
TCP/IP Protocol Suite  (0) 2007.01.17
홈네트워크 최근동향  (0) 2007.01.17
서브넷마스크/서브넷팅  (1) 2007.01.16