본문 바로가기
CS지식/네트워크

IP와 TCP/UDP

by 동배_ 2021. 8. 13.

오늘은 IP와 TCP/UDP에 대해 알아보자. 이 둘은 인터넷 통신을 하는데 중요한 개념이므로 통신을 사용할 일이 있다면 숙지하는 것을 추천한다.

 

먼저 이런 개념을 알기전에 우리가 먼저 기기 간의 통신은 어떻게 이루어 지는 지를 알아야 한다.

이렇게 두개의 컴퓨터가 있고 데이터를 전송하려면 그냥 선을 직접적으로 연결하여 통신하면 된다.

이렇게 그냥 통신 하면된다 . 하지만 인터넷망 즉 서울에 있는 아무개와 미국에 있는 존이 통신하려면?

아마 직접적으로 연결하려면 수천킬로미터의 전선이 필요할 것 으로 아마 불가능하다 실제로는 선을 타고 타서 해저 케이블, 인공위성을 통해 연결된다. 이때 필요한것이 IP(Internet Protocol)이다.

 

IP(Internet Protocol)

인터넷 프로토콜의 역할을 보자 

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

다시 말하면 기기는 IP 주소를 가지고 있고 IP패킷이 전송하고자 하는 데이터와 출발 IP주소, 목적IP 주소를 갖고 보낸다.

 

다음 그림과 같이 데이터를 패킷에 감싸 보내고 노드들을 거치고 거쳐 목적IP가 있는 컴퓨터에만 데이터를 전송하는 것이다. 반대로 서버에서도 클라이언트로 그렇게 보낸다.

 

하지만 이러한 방식에는 크나큰 단점이 있다. 간단히 요약하자면

 

  • 비연결성: 패킷이 받을 상대가 없어도 패킷 전송(즉 위 그림에서 서버 컴퓨터가 꺼져있어도 데이터를 보낸다)
  • 비신뢰성: 데이터를 감싼 패킷이 장거리로 노드를 거쳐가기 때문에 도중 노드가 작동이 안되는 등 오류가 일어날 수 도 있고 두개의 데이터를 보내는데 노드의 경로가 달라 나중에 보낸 패킷이 먼저 도착하여 1, 2 로 보낸것이 2,1로 잘못 보내질 수도 있다.
  • 프로그램 구분문제 : 만약 기기에서 패킷을 받는데 트위치로 영상을 보면서, 카카오톡을 하면 패킷의 주소가 겹처 트위치 영상에 카카오톡 데이터가 들어가 오류가 발생할 수 있다!

 

즉 IP는 인터넷 통신을 하는데 중요한 요소지만 현실적으로 IP만을 쓰고 통신하기에는 문제가 너무 많다. 그래서 등장한것이 TCP / UDP 이다.

 

TCP(Transmission Control Protocol)

보통 TCP는 IP와 함께 쓰이며 TCP/IP라고도 불린다(ip는 3계층(네트워크) tcp는 4계층(전송)) 

IP의 단점이였던 비연결성, 데이터 소실 , 순서 문제를 모두 해결한다 이에 대해 알아보자

 

연결지향 TCP 3 way handshake(가상 연결)

 

다음과 같은 방식을 통해 연결하려는 기기간의 연결을 확인한다 

SYN라는 값을 통해 서버로 접속 요청을 보내면 서버가 그 값을 받게 되면 SYN + ACK를 전송해 요청을 수락한다..

그러면 클라이언트에서는 다시 ACK값을 보낸 후 연결이 확인 됐다 인지해 데이터를 전송한다.

 

데이터 소실 방지

데이터 소실 방지는 클라이언트에서 서버로 데이터를 전송하면 서버는 받았다는 신호를 클라이언트에 쏴줌으로써 데이터 전송을 보장한다. 만약 받았다는 신호를 클라이언트가 받지 못한다면 다시 쏜다.

 

순서보장

순서 보장은 예를들어 클라이언트에서 1,2,3을 보냈을때 노드간 지연 시간, 거리에 의해 1,3,2같은 형태로 서버에 보내지는 경우가 있는데 그러면 서버는 패킷의 순서를 감지해 잘못 들어온 패킷부터 클라이언트에게 다시 전송하라고 신호를 보낸다.

 

포트번호를 통한 중복제거

TCP안에는 위와 데이터,패킷의 정보가 들어있고 포트번호, 전송제어, 순서 정보등이 들어 있다. 여기서 포트번호를 통해

같은 아이피주소에 여러 방면에서 데이터가 들어오더라도 포트번호를 통해 식별을 하기 때문에 트위치를 보면서 카카오톡을 할 수 있게 된다.

 

TCP/IP는 이와 같이 IP의 단점을 보완하여 자주 사용된다. 실제로 현재 웹에서 사용되는 통신 90%이상이 TCP/IP통신을 사용한다 한다.

 

하지만 TCP도 완벽해 보이지만 단점이 있다. 3 way handshake를 보면 알겠지만 전송을 연결하는데, 또 데이터를 받았다는 것에 만 신호를 여러번 보낸다. 이로 인해 속도가 느려지는 경향이 있는데 속도에 중점을 둔것이 바로  UDP이다

 

UDP(User Datagram Protocol)

 

UDP는 Ip 방법에서 포트번호와 체크섬 정도를 추가하여 속도를 늘린 방식이다. 하지만 앞서 소개한 3 way handshake나 순서 보장을 할 수 없는 단점이 있다. 

 

그래서 UDP같은 경우는 1:1대전 (ex 스타크래프트 UDP방), 영상과 같은 데이터 순서가 변경되거나 소실 되어도 영향이 크지 않는 네트워크에서 유용하게 쓰인다.(하지만 앞서 말했듯이 대부분 TCP/IP를 사용하고 있다.)

 

 

이렇게 IP TCP UDP에 관한 지식을 알아보았다. 이는 웹 개발을 하는데 중요한 지식이므로 이 글을 보는 사람들은 잘 알아두길 바란다. 

 

 

 

 

댓글