UDP
비연결형 서비스, 데이터그램 방식, 전송 순서 비보장, 수신 여부 비확인, N:N 통신, 신뢰성 낮음, 속도 빠름의 특징을 갖고 있습니다.
UDP는 데이터를 전송하기 전에 연결 설정 단계를 거치지 않습니다.
따라서 데이터 전송 시에는 양측 호스트 간에 계약이 없으며, 데이터 손실이 발생할 수 있습니다.
그러나 이에 따라 전송 속도가 빠르고, 오버헤드가 적으며, 대용량의 데이터 전송이 가능해집니다. UDP는 주로 게임, 멀티미디어 전송, DNS 등에 사용됩니다.
TCP
연결형 서비스, 가상 회선 방식, 전송 순서 보장, 수신 여부 확인, 1:1 통신, 신뢰성 높음, 속도 느림의 특징을 갖고 있습니다.
TCP는 데이터를 전송하기 전에 먼저 연결 설정 단계를 거칩니다.
이 과정에서 양측 호스트 간에 송수신할 수 있는 데이터의 크기, 데이터의 순서, 오류 검사 및 재전송 등에 대한 계약이 수립됩니다.
이를 통해 데이터 손실 및 손상을 줄이고 안정적인 데이터 전송이 가능해집니다.
하지만 이에 따라 연결 설정에 필요한 시간이 소요되며,
데이터 전송 시에도 일부 오버헤드가 발생할 수 있습니다.
TCP는 주로 신뢰성이 중요한 파일 전송, 이메일 전송, 웹 브라우징 등에 사용됩니다.
- TCP 3 away handshake (연결)
- 클라이언트는 서버와 커넥션을 연결하기 위해 SYN패킷을 보냅니다.
- 서버가 SYN을 받고, 받았다는 신호인 ACK와 SYN 패킷을 클라이언트로 보냅니다.
- 클라이언트는 서버의 응답으로 ACK와 SYN 패킷을 받고, 연결을 수락한다는 뜻으로 ACK패킷를 서버로 보냅니다.
여기서 SYN은 'synchronize sequence numbers', 그리고 ACK는'acknowledgment' 의 약자입니다.
- TCP 4 away handshake (해제)
- 클라이언트가 서버에게 연결 종료 요청을 보냅니다.
클라이언트가 FIN(Finish) 플래그를 설정하여 서버에게 연결 종료 요청을 보냅니다.
- 서버가 클라이언트에게 확인 응답을 보냅니다.
요청 받은 서버는 요청 확인의 의미로 클라이언트에게 ACK 플래그를 설정하여 확인 응답을 클라이언트에게 보냅니다.
- 서버가 데이터 전송을 완료합니다.
서버는 현재까지 보내지지 않은 데이터를 모두 전송하고, FIN 플래그를 설정하여 클라이언트에게 연결 종료를 요청합니다. 이로써 서버는 클라이언트에게 더 이상 데이터를 보내지 않을 것임을 알립니다.
- 클라이언트가 확인 응답을 보냅니다.
클라이언트는 서버의 연결 종료 요청을 받고, ACK 플래그를 설정하여 확인 응답을 서버에게 보냅니다. 이로써 클라이언트는 서버의 연결 종료 요청을 수락하고, 서버와의 연결을 완전히 종료합니다