TCP/IP에 대해서

컴퓨터 네트워크가 서로 통신하는 경우, 특정 규칙이나 프로토콜을 사용하여 데이터를 전송 및 수신할 수 있습니다. 전세계에서 가장 일상적으로 사용되는 프로토콜 세트 중 하나가 TCP/IP 입니다.

서로 다른 컴퓨터가 통신을 할 때는 사전에 정해진 통신 규칙에 의해서 통신을 해야됩니다. 그 중 가장 기반이 되는 프로토콜은 TCP/IP입니다.

TCP

TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약자로 OSI 7계층 중 4계층인 전송 계층에 속하여 한 기기에서 다른 기기로 데이터를 전송하는 것을 담담합니다.

4계층에 속하는 또 다른 대표적인 예로 UDP가 존재합니다. TCP와 UDP의 큰 차이점은 신뢰성입니다. TCP방식은 신뢰성에 중점을 두어 데이터를 주고받을 때 데이터가 올바르게 송·수신되었는지 매번 확인합니다. UDP 방식은 데이터 통신에 신뢰성보다 속도에 중점을 둡니다. 따라서 데이터가 올바르게 송·수신되었는지 확인을 하지 않습니다. 따라서 TCP는 높은 신뢰성을 보장하는 대신 UDP에 비해 속도가 느립니다. TCP는 이메일이나 채팅 등 높은 신뢰성을 요구하는 곳에서 주로 쓰이고 UDP는 동영상 스트리밍처럼 신뢰성보다 속도가 중요한 곳에서 주로 쓰입니다.

3 Way Handshake

TCP는 데이터의 정확한 전송을 위해서 3 Way Handshake 방식으로 통신을 합니다. 클라이언트(A)와 서버(B)가 있고 서로 3 Way Handshake로 통신을 한다고 가정해 봅니다.

  1. A가 B에게 통신할 준비가 되었는지 확인을 위해 SYN 데이터를 보냅니다.
  2. B는 A에게 준비되었다는 ACK와 A도 통신할 준비가 되었는지 확인하기 위해 SYN를 같이 보냅니다.
  3. A가 B에게 통신할 준비되었다는 의미로 ACK를 보냅니다.

각 단계에서의 A와 B의 상태(State)는 위 그림에서 확인할 수 있습니다. 이런 식으로 서로 데이터를 주고받을 준비가 되었다고 확인 후 데이터 전송이 이루어지기에 높은 신뢰성을 얻을 수 있으나 속도는 UDP에 비해 느립니다.

IP

IP는 인터넷 프로토콜(Internet Protocol)의 약자로 OSI 7계층 중 3계층인 네트워크 계층에 위치한 프로토콜로 컴퓨터끼리의 통신을 담당합니다.

컴퓨터 네트워크에서 각 노드들은 굉장히 복잡하게 연결되어 있습니다. 그 중 특정 두 노드를 연결하려면 가장 빠른 경로를 찾는 것이 통신에 효율적입니다. 이때 가장 빠른 경로를 찾기 위해 사용되는 기기가 라우터이고 이들은 IP주소를 사용해서 통신을 합니다. 일반적으로 흔히 사용된 IP주소의 체계는 IPv4입니다.

IPv4 주소는 32비트로 구성된 정수(0~255) 4개를 사용하고 각 정수는 .으로 구분하여 사용합니다. 따라서 0.0.0.0부터 255.255.255.255까지 사용할 수 있습니다. 이론적으로 약 43억개의 IP주소가 존재합니다. 세계적으로 인구가 증가하고 인터넷 보급이 대중화되면서 IPv4의 주소 고갈을 지연 시키기 위해 사설IP도 사용하고 있지만 여전히 IPv4의 고갈은 멈출 수 없기에 IPv6로 전환이 이루어지고 있습니다.

TCP와 IP를 합쳐서 흔히들 TCP/IP라고 부르고 인터넷에서 가장 유명한 프로토콜 중 하나가 되었습니다.