TCP/IP

해시넷
leejia1222 (토론 | 기여)님의 2020년 7월 28일 (화) 11:25 판
이동: 둘러보기, 검색

TCP/IP란 Transmission Control Protocol/Internet Protocol의 약자로서, 인터넷에서 사용되는 표준 통신 프로토콜이다. TCP/IP는 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하여 데이터를 전송하기 위해 사용한다.

개요

TCP/IP는 문자 그대로는 전송제어프로토콜 (Tramission Control Protocol) 인터넷 프로토콜(Internet Protocol)을 의미한다. ISO의 7계층 구조에 의하면 TCP는 계층4에 그리고 IP는 계층3에 해당되는 프로토콜의 이름이다. 그러나 보통 우리가 TCP/IP라고 말하면 이는 계층3, 계층4 프로토콜만 얘기하는 것이 아니라 TCP/IP프로토콜 조합(protocol suit)을 의미하는 경우가 대부분이므로 여기에는 ISO의 계층5,6,7 에 해당하는 여러가지 응용 프로토콜과 계층3, 계층4에 있는 또다른 프로토콜까지 포함되며, 오늘날 인터넷을 움직이는 통신 소프트웨어의 뼈대가 되는 모든 프로토콜을 말한다. 따라서 TCP/IP와 인터넷을 따로 떼어놓고 생각하는 것은 불가능하다. 1960년대 후반과 1970년대 초의 네트워크는 각기 다른 네트워크에 속하는 사용자들이 자원을 공유하도록 지원하지 않았다. 네트워크 관리자들은 보안상의 문제로 사용자들이 자원에 마음대로 접근하는 것을 꺼려하였고 어떤 정보 시스템의 사용자가 자신의 사용 범위를 다른 네트워크로 확대하도록 하는 것이 매우 어려운 상태였다. 이러한 기간 동안 자원을 여러 사용자들이 공유하는 것이 좋다는 점을 점차 인식하게 되었다. 최종 사용자 응용 프로그램이 서로 상호 접속되기 위해서는 네트워크 관리자가 아닌 전자 우편 (Electric Mail)이나 파일 전송(File Transfer)같은 응용의 표준화가 뒤따라야 했다. TCP(Transmission Control Protocol)와IP(Internet Protocol)는 이러한 문제를 해결하기 위해서 개발되었다. 네트워크를 서로 접속하는 필요성은 이와같이 자원의 공유측면과 정보의 교환 측면에서 긴히 필요하게 되었다. 이때, 네트워크간의 접속에 필요한 프로토콜이 필요한 것이다. 이 프로토콜로서 TCP/IP 프로토콜이 존재하며 이 프로토콜을 사용하여 서로 접속된 네트워크를 인터넷(Internet)이라 한다. 즉, 여러개의 네트워크들이 서로 유기적으로 결합되어 있는 커다란 하나의 가상 네트워크를 인터넷이라고 하는 것이다. 따라서, 인터넷에 가입한다는 의미는 이 커다란 네트워크에 접속함을 의미한다.[1]


기능

TCP는 전송 제어 프로토콜로서, 근거리 통신망이나 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(octet)을 안정적으로, 순서대로, 에러 없이 전송하고, 수신된 패킷을 원래의 메시지로 조립하는 일을 담당한다.

IP는 각 패킷의 주소 부분을 처리해 패킷들이 목적지에 정확하게 도달하도록 하는 일을 담당한다.

등장 배경

  • 1960년대 DoD(미 국방성)에 의해 통신기술에 대한 연구 시작
기존에는 중앙집중식 네트워크를 사용했는데, 중앙집중식 네트워크는 회선교환기(중심부)가 공격을 당하면 모든 네트워크의 연결이 끊기기 때문에 분산형 네트워크 처럼 어느 한 부분이 공격받아도 끊기지 않는 네트워크가 필요하기 때문에 DoD에서 통신기술에 대한 연구를 진행하였다.(군사적인 목적 뿐만이 아니라 , 기존 회선 교환방식의 효율성 때문에도 통신기술에 대한 연구를 시작하였다.)
  • 1969년 패킷 교환 기술 개발 , ARPANET의 시작

위에서 설명한 네트워크를 구현하기 위해 여러 연구를 진행한 결과 '패킷 교환기술'이 가장 적합하다고 생각되어 패킷교환기술의 실용성을 실험하기 위해 DARPA(미 국방성 고등연구 계획국)에서 ARPANET이라는 네트워크를 구축하였다. (초기 4개의 노드 연결에서 34개 노드를 연결하는 형태로 실험을 성공하여 패킷교환방식의 실용성을 증명하였다.) ARPANET은 패킷교환방식의 실용성 실험과 더불어 , PC대 PC통신의 신뢰성 높은 통신을 제공하는 프로토콜도 연구하였다. 위의 연구를 토대로 TCP/IP를 개발하였고 1982년에 TCP/IP 사양이 결정되었고 1983년에 TCP/IP를 ARPANET의 공식적인 프로토콜로 인정하였다.

  • 1980년 이후 ARPANET에서만 사용되던 TCP/IP 전파

TCP/IP의 등장에는 ARPANET이 중요한 역할을 하였지만 , TCP/IP는 ARPANET에서만 사용하였으므로 일반에게는 전파되지 않았다. 그런데 현재 TCP/IP가 전세계에 널리 보급되고 주로 사용되는 이유는 1982년 TCP/IP의 사양이 결정되었을때 , UNIX OS에서 TCP/IP를 탑제하였기 때문이다.(그 당시 대학 , 연구소 등에서는 대부분 UNIX OS를 사용하고 있었다.) UNIX OS 덕분에 대학 , 연구소 등이 NSFnet(ARPANET의 후손)에 연결되게 되었고 이때부터 TCP/IP로 연결된 세계적인 네트워크를 '인터넷'이라고 부르기 시작하였다.(이후 각 컴퓨터 제조업체에서도 TCP/IP를 지원하게 되었다.)

  • 1990년대 이후 일반인도 본격적으로 인터넷에 접속(TCP/IP가 일반인에게도 확장되었다.)

90년대 전까지는 인터넷을 (TCP/IP로 연결된 세계적인 네트워크) 대학 , 연구기관 등만 사용할 수 있었고 일반인들은 PC통신(한정된 인원끼리 커뮤니케이션)밖에 사용하지 못했다. 그러나 ISP의 등장으로 일반인도 인터넷을 사용할 수 잇게 되었다. (TCP/IP는 기존에 연구목적으로 인터넷에 오랜기간 운용되었기 때문에 일반인에게 서비스화해도 안정적으로 운용할 수 있었다.)[2]

특징

TCP와 IP 각각의 특징을 살펴보고 TCP/IP의 특징[3]에 대해 알아 보았다.

TCP의 특징

  • 신뢰성 (Reliable) : 패킷 손실, 중복, 순서바뀜 등이 없도록 보장한다. TCP 하위계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성을 제공한다.
  • 연결지향적 (Connection-oriented)
 - 같은 전송계층의 UDP가 비연결성(connectionless)인 것과는 달리, TCP는 연결지향적이다.
    (이 경우, 느슨한 연결(Loosly Connected)을 갖으므로 강한 연결을 의미하는 가상회선이라는 표현 보다는 오히려 연결지향적이라고 표현 한다.)
 - 연결 관리를 위한 연결설정 및 연결해제가 필요하다.          
    (양단간 어플리케이션/프로세스는 TCP가 제공하는 연결성 회선을 통하여 서로 통신한다.)
  • TCP 연결의 식별, 다중화, 포트번호
 - TCP 연결(회선)의 식별    : 소켓(양단 IP주소 및 포트번호 쌍)으로 회선을 식별한다.
    (2개의 IP 주소 및 2개의 포트 번호에 의한 4개가 하나의 연결(회선)을 식별한다.)
 - 여러 응용 간 다중화 가능 : 단일 연결 뿐만아니라 다수 연결의 동시적 처리도 가능하다. 
 - 응용과의 연결점 식별     : TCP는 포트 번호에 의해 어플리케이션(응용)과의 연결점을 식별한다.
  • 전이중 전송방식/양방향성 (Full-Duplex)
 - 종단간 양 프로세스가 서로 동시에 세그먼트를 전달할 수 있다.
    (양방향 각각에 대해 `송수신 버퍼` 및 `데이터흐름용 순서번호`를 유지한다.)
  • 멀티캐스트 불가능 (단대단 전송 방식 (1:1) 즉, 유니캐스트성이다.)
 - 단일 송신자와 단일 수신자 간에 단일 경로 연결이 설정된다. 
   
  • 상위 응용과는 바이트 스트림(Byte Stream)으로 주고받는다.
 - 논리적(의미를 갖는) 단위인 메세지 스트림이 아니다.
    (각 데이터 간의 구분을 의미적으로 구분하지 않고,단순히 바이트들의 연속적인 흐름으로 보고, 이들을 묶어 세그먼트화하여 전송한다.)
 - 상위 응용 개발자들이 흐름제어,회선관리,전송단위 등을 신경쓰지 않도록 한다.
  • 세그먼트화 처리 (데이터를 패키징 처리한다.)
 - 바이트들을 모아서 세그먼트화하고 이에 TCP 헤더를 붙이고, 이들을 순서제어한다.
    (TCP 세그먼트 : TCP에서 IP로 전달되는 정보 단위(통상, 수 백 바이트 정도)양 끝단의 TCP 모듈간에 서로 교환되는 데이터 단위를 TCP 세그먼트라고한다.)
   
  • 흐름제어 (Flow Control)
 - 송신(송신전송률) 및 수신(수신처리율)  속도를 일치시키는 것을 말한다.
    (주로, `순서번호`,`확인응답번호`,`수신윈도우 크기`라는 3개 변수로 흐름을 제어한다.)
  • 혼잡제어 (Congestion Control)
 - 네트워크가 혼잡하다고 판단될 때 송신률을 감속한다.
    (이에따른 여러 장치(기법)들을 다양한 TCP 버젼에서 마련하고 있다. 주요활용기능 : 느린 시작, 혼잡 회피, 수신 윈도우 및 혼잡 윈도우 크기결정 등이 있다.)
 - TCP는 혼잡제어를 위해 수신 윈도우(rwnd) 및 혼잡 윈도우(cwnd) 2개의 변수를 관리한다.
     (이 중 최소가되는 크기를 윈도우 크기로 잡게된다.)
  • 비 실시간적 응용
 - TCP는 데이터의 전달에 대한 보장을 하지만, 전달에 따른 지연에는 취약하므로 실시간적 응용에는 통상 UDP를 사용한다.
  • TCP 활용
 - 상위 프로토콜 지원 : HTTP, FTP, SMTP 등이 있다.
 - 응용 지원 : TELNET, rlogin, 웹, 전자우편 등이 있다.

IP의 특징

  • 신뢰성(에러제어)` 및 `흐름제어` 기능이 전혀 없다. (신뢰성을 확보하려면 IP 계층 위의 TCP와 같은 상위 트랜스포트 계층에 의존해야 한다.)
  • 비연결성 데이터그램 방식
  • 패킷의 완전한 전달(소실,중복,지연,순서바뀜 등이 없게하는 것)을 보장하지 않는다.
  • IP 헤더 내 수신 및 발신 주소를 포함한다.
  • IP 헤더 내 바이트 전달 순서는 최상위 바이트(MSB)를 먼저 보낸다.
  • 경우에 따라, 단편화가 필요하다.
  • 모든 상위 계층 프로토콜들(TCP,UDP,ICMP,IGMP 등)이 IP 데이타그램에 실려서 전송된다.

TCP/IP의 특징

  • 통합 주소지정 체계를 가진다.
 - 소형과 대형 네트워크 모두에서 사용할 수 있는 장비 식별/주소 지정 체계를 가진다.
 - 점점 커지는 네트워크에 적절하다.
 - 유일한 주소를 보장하기 위해 주소체계를 중앙에서 관리한다.
  • 라우팅에 용이하다.
- 장비보다는 네트워크를 연결하는데 초점이 맞춰져있다.
- 한 네트워크에서 다른 네트워크로 한 단계씩 데이터를 전달한다.
- 서로 다른 네트워크에 있는 장비 간에 데이터 교환이 가능하다.
  • 하부 네트워크에 독립적이다.
- 근거리 네트워크(LAN), 무선(WLAN), 원거리 네트워크(WAN) 같은 모든 하위 계층 네트워크에서 운영이 가능하다.
  • 표준과 개발 절차가 공개 되어 있다.
- 표준이 공개되어 있으며 RFC 절차에 따라 누구나 참여 가능하다.
  • 보편성이 높다.

각주

참고 자료

tcp/ip프로토콜 설명 인터넷 프로토콜 위키 백과 tcp/ip 개요, 역사 등