TCP / UDP
이전 포스팅에서 공부한 IP 프로토콜은 문제점을 가지고 있었습니다.
이를 위한 해결책으로 TCP 가 해결 할 수 있습니다.
인터넷 프로토콜 스택의 4계층
프로토콜 계층
IP 패킷 정보
- 출발지 IP, 목적지 IP, 기타... 전송 데이터
- 위의 그림 기준 노란색 테두리
TCP/IP 패킷 정보
- IP 패킷 안에 아래와 같은 것들이 들어 갑니다.
- 위의 그림 기준 초록색 테두리
- 출발지 IP, 목적지 IP, 기타... 전송 데이터 +
- 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보...
TCP 특징
- 전송 제어 프로토콜
- 연결지향 [ TCP 3 way handshake (가상연결) ]
-상대방과 나와 연결이 되는지 안되는지 확인을 먼저 합니다. -> 그 후, 메시지 전달
- 데이터 전달 보증
- 패킷이 중간에 누락되면, 알 수 있다.
- 순서 보장
즉, 신뢰할 수 있는 프토코콜이며, 현재는 대부분 TCP 사용
TCP 3 way handshake
- 클라이언트에서 서버로 SYN 이라는 메시지를 보냅니다.
- 그 후 서버에서 메시지를 받은 것을 확인하고, ACK 라는 것을 같이 보냅니다.
-> 즉 상호 간의 응답을 합니다.
- 그 후 연결이 되었다고 확인하고, 데이터를 전송 합니다.
주의할 점은, 진짜 연결이 된 것이 아니라 논리적으로만 연결이 된 것 입니다.
정리 : TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
데이터 전달 보증
- 데이터를 전송을 하면 데이터를 잘 받았다고 서버에서 피드백을 받음으로 잘 갔는지 알 수 있습니다.
순서 보장
- 예를 들어, 패킷을 1,2,3 으로 보냈는데, 서버가 1,3,2 번 순으로 순서가 달라져서 도착하면, 잘못온 부분부터 다 버리고 패킷 2 부터 다시 보내라고 요청 합니다. ( 이는 최적화에 따라 다릅니다.)
UDP 특징
- TCP 와 같은 계층에 있는 프로토콜
- 사용자 데이터그램 프로토콜
- 기능이 거의 없습니다. ( TCP 의 기능들 포함 )
즉, IP와 거의 동일. 하지만 PORT + 체크섬 정도만 추가
- Port : 하나의 IP에서 다수의 어플리케이션이 동작 할 수 있도록
- 체크섬 : 메시지에 대해서 검증 해주는 데이터
UDP 쓰는 이유 ?
- UDP 통신 프로토콜은 신뢰성을 보장하지는 않지만 TCP에 비하여 빠른 전송 속도를 제공합니다.
- UDP는 비연결을 지향하기 때문에 데이터를 재전송할 필요도, 흐름 제어나 에러 체크도 항상 필요로 하지 않습니다.
- 그로 인하여 전송에 필요한 헤더 사이즈도 줄어들게 되고 결과적으로 데이터 송/수신 과정이 매우 빨라집니다.
참고