[우당탕탕 HTTP] 3. TCP / UDP
가볍게 넘겨왔던 http에 대해 파헤쳐보자! [우당탕탕 HTTP] 저번 블로그에서 IP에 대해 알아보았고, 그 IP만으로는 클라이언트와 서버간 통신의 한계가 있다고 했습니다.그리고, 그 한계들을 해결하기 위한 상위 프로토콜인 TCP 프로토콜이 있다고 했습니다. TCP란?TCP(Transport Control Protocol) 전송 제어 프로토콜이란, 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜이렇게 보면 TCP의 정의는 기본적으로 IP와 거의 같다고 볼 수 있습니다.둘의 큰 차이는 그 역할에 있습니다.TCP의 역할은 용어 그대로 전송을 제어하는 프로토콜입니다.IP 패킷을 전송할 때, IP로만 해결할 수 없는 것들을 제어 함으로써 패킷 교환을 돕는 프로토콜인 셈입니다.이렇게 TCP와 IP를 함께 사용해서 전달하는 패킷인 TCP/IP 패킷은전달 하고자 했던 데이터에 TCP 정보를 씌우고 그 위에 IP 정보를 씌워 패킷을 전달하는 형태입니다.IP의 한계들을 해결하는 TCP의 중요한 특징들을 살펴보면,연결성연결을 위해 3 방향 핸드셰이크를 사용한다.3 방향 핸드셰이크는 일종의 가상의 연결입니다.클라이언트가 서버에게 SYN 이라는 연결 요청을 하면, 서버는 ACK 라는 요청 수락과 함께 연결 요청을 보내고클라이언트는 요청 수락과 함께 데이터를 전송하게 됩니다.이렇게 하면 클라이언트와 서버가 연결이 되어 있기 때문에,패킷을 받을 대상이 없거나 서비스가 불가능한 대상에게 패킷을 전송하는 불상사가 일어나지 않게 됩니다. 신뢰성데이터 전달 보증TCP/IP 통신으로 클라이언트가 데이터를 전송하면, 서버는 데이터를 잘 받았다는 데이터를 전송함으로써 전달을 보증해줍니다.단순하게 대답을 해줌으로 인해 데이터 전달을 보증 하는 것입니다.만약 중간에 어딘가에서 패킷이 소실이 된다면, 대답이 오지 않게 되고 데이터가 전송이 되지 않음을 알 수 있습니다. 패킷 순서 보장데이터 전송 시 패킷을 여러개 보내는 경우가 있을 수 있습니다.이 때, TCP 세그먼트에 패킷의 순서 정보를 함께 담아 전송을 합니다.순서 정보가 다르게 들어온다면, 서버에서 다시 올바른 순서로 보내라고 할 수 있습니다. 중복 검증순서 보장과 같은 맥락으로패킷에 순서 정보를 담으면 동일 순서가 중복으로 오는 경우도 잡아낼 수 있고순서 정보가 다르게 도착하는 경우도 잡아낼 수 있습니다. 프로그램 구분TCP에는 port라는 정보가 담겨 있습니다.출발지 port와 도착지 port 정보가 담겨있는데, 이 port를 구분하여 하나의 IP주소에서 어떤 어플리케이션에 필요한 정보인지 가려내어 프로그램을 구분하고 적재적소에 통신을 할 수 있는 것입니다.TCP 프로토콜은 IP 프로토콜과 함께 대표적으로 이용되고 있는 통신 규약입니다.그러나, 이런 TCP에도 문제점은 분명히 존재합니다.IP의 한계를 해결하기 위해 필요로 했던 많은 부가적인 데이터와 연결이 시간을 지연시키고 부하를 증가시키는 것입니다.그래서 빠른 통신을 필요로하는 곳에서 UDP라는 프로토콜을 주로 사용하고 있습니다.그럼 UDP는 무엇일까요?UDP란?UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜이란, 두 컴퓨터 간 데이터 통신을 위한 네트워크 프로토콜IP TCP UDP는 정의는 기본적으로 다 같다고 볼 수 있습니다.결국엔 역할의 차이인 셈입니다.UDP는 IP + PORT + 체크섬 이라고 할 수 있습니다.이로인한 UDP의 특징은비연결성패킷을 받을 대상이 없거나 서비스가 불가능한 상태여도 패킷을 전송하지만,연결 없이 통신하여 더 빠르다. 비신뢰성패킷이 손상되거나 손실 될 수도 잇고, 순서가 보장되지도 않으며 중복 전달일 수도 있지만,그 만큼 담겨있는 데이터가 적어 부하가 적고 더 빠르다.(체크섬을 통한 약간의 오류 검증만 존재한다.) 프로그램 구분OTCP의 특징인 프로그램 구분을 담당하는 PORT 데이터는 함께 전송하기 때문에, 프로그램 구분은 가능하다.이러한 UDP의 특징을 종합하면"TCP 보다는 안정성이 떨어지지만 빠르고 부하가 적다." 입니다.그런 특징 때문에 시간에 민감한 통신에서 주로 사용되는 프로토콜입니다.예를 들면, 인터넷 기반 전화 서비스입니다.대화가 정말 뚜렷하게 지연되어 소통하는 것보다는약간은 노이즈가 있더라도 실시간으로 소통하는 것이 더욱 중요하기 때문입니다.마찬가지로, 게임이나 DNS 서버 등 속도가 생명인 곳에서도 UDP 프로토콜이 주로 사용됩니다.