TCP / UDP

이리·2024년 4월 27일
0
post-thumbnail

정보처리기사 2024년 1회를 준비하며 OSI 7계층에 대해 공부하게 되었다.
그 중 네트워크 계층에 속한 TCP / UDP 에 대해 좀더 깊게 공부해보고자 한다.


우선 TCP 와 UDP를 이해하기 전에 데이터 교환 방식에 대해서 간단하게 이야기해보자

위의 그림에서 데이터그램 방식의 대표로 UDP, 가상회선 방식의 대표로 TCP 를 들 수 있다.

  • 데이터그램 방식 (비연결 지향) : 연결 없이 각 패킷을 독립적으로 전송하는 방식
    ( 빠른 데이터 전송, 패킷 손실-순서보장 X, 네트워크 지연 가능 )
  • 가상회선 방식 (연결 지향) : 데이터 전송을 시작하기전에 논리적 연결을 설정
    ( 비교적 느린 전송, 정확한 순서 보장, 흐름제어 오류제어 > 안전적 전송 )

정리하자면, TCP 는 연결 지향형 프로토콜, UDP 는 비연결 지향형 프로토콜이라 할 수 있다.


TCP 전송 방식

TCP (Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 제공하기 위해 연결 기반의 프로토콜이다. TCP 네트워크에서는 데이터를 전송하기 전에 먼저 논리적 연결을 수립하고, 데이터 전송이 완료된 후에는 이 연결을 안전하게 해제하는 과정을 거치게 된다.

우선 연결/해제 과정을 설명하기에 앞서 TCP 플래그를 간단하게 알아야한다.

  • URG : 긴급 플래그
  • ACK : 확인 응답 플래그
  • PSH : 푸시 플래그, 데이터 즉시 처리
  • RST : 재설정 플래그, 연결을 재설정
  • SYN : 동기화 플래그, 새로운 연결 요청
  • FIN : 종료 플래그, 연결 종료

1. 연결 확립 : 3 Way Handshaking

1) 클라이언트 측에서 서버 측에 연결을 요청하는 SYN 패킷를 보낸다.

  • 클라이언트 측은 응답이 오기전까지 SYN_SENT 상태 대기

2) 서버측 에서는 신호를 받았다는 확인 응답패킷(ACK)과 연결 확립을 요청하는 패킷(SYN)을 함께 응답하게 된다.

  • 서버 측은 응답이 오기전까지 SYN_RECEIVED 상태 대기

3) 이후, 클라이언트 측에서 신호를 받았다는 ACK 플래그를 보내며 연결이 확립되게 된다.

  • 서버 측은 ESTABLISH 상태

2. 연결 해제 : 4 Way Handshaking

1) 클라이언트가 연결을 종료하겟다는 패킷(FIN)을 보내게 된다.

2) 서버는 응답했다는 ACK 플래그를 보내고, 서버측의 통신이 끝날때까지 기다린다.

  • 서버 측은 본인의 통신이 끝나기까지 TIME_WAIT 상태 대기

3) 통신이 모두 마치면 마쳤다는 FIN 플래그를 클라이언트 측에 보낸다.

4) 클라이언트는 받았다는 ACK 플래그로 응답한다.


UDP 전송 방식

TCP 방식과 다르게 UDP 방식은 연결을 확립하는 과정이 필요없다.(비연결형 프로토콜)
데이터를 전송하기 전에 논리적 연결이 설정되어 있지 않기 때문에 패킷이 독립적으로 전송된다. 확립된 연결이 없다보니, 데이터 전송간 순서가 명확하지 않고 전송이 온전히 수신되었는지 여부를 확인하지 않는다.

-> 낮은 신뢰성 + 빠른 속도

profile
Bonjour!

0개의 댓글