🤔 포트포워딩에서 프로토콜 방식으로 TCP를 사용한다. TCP는 무엇일까?
TCP를 알기 위해선 같이 UDP와 비교하며 알아두면 좋을 것 같다.
TCP와 UDP는 네트워크 계층들 중 전송계층에서 사용하는, 데이터를 보내기 위해 사용하는 프로토콜이다.
일반적으로 TCP/IP를 함께 사용하는데, IP가 데이터의 배달을 처리하면 TCP는 패킷을 추적하고 관리한다. TCP는 연결형 서비스로, 발신지와 수신지를 연결해 가상회선이라는 논리적 경로로 패킷을 교환한다. 3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 이런 복잡한 과정을 통해 연결형 서비스는 신뢰성을 보장한다. 하지만 UDP보다 속도가 느린 단점이 있다. 주로 웹이나 이메일과 같이 데이터가 정확하게 전달되어야 하는 통신에서 사용한다.
위의 그림과 같이 연결된 경로를 통해 순서대로 패킷을 수신받는다.
❓ 패킷(packet)
컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. 쉽게, 데이터 조각이라고 이해하면 쉽다.
TCP와 달리 UDP는 비연결형 프로토콜이다. 각각의 패킷은 다른 경로로 전송되고, 독립적으로 처리하게 된다. 따라서 순서를 부여해 다시 데이터 조각들을 맞추는 처리를 하지 않기 때문에 TCP보다 속도가 빠르고 네트워크에 부담이 적은 장점이 있다. 하지만 그 때문에 패킷이 제대로 전송이 되었는지 혹은 오류가 없는 지 확인할 수 없어 신뢰성있는 데이터 전송을 보장하지는 않는다.
위의 그림과 같이 패킷을 순서대로 수신받지 못할 수 있다.
TCP | UDP | |
---|---|---|
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 | 데이터그램 |
전송 순서 | 순서 보장 | 바뀔 가능성 있음 |
수신 여부 확인 | 확인(에러시 재전송 요구함) | 확인하지 않음 |
신뢰성 | 높음 | 낮음 |
통신 방식 | 1:1 | 1:N 혹은 N:N |
속도 | 느림 | 빠름 |