웹해킹/파이썬해킹

TCP/UDP

dongok218 2024. 10. 3. 00:21

◆TCP/UDP에 대한 이해

  • TCP는 신뢰성이 있는 패킷의 전달을 위해 고안된 프로토콜이다. 통신 전에 항상 세션을 성립하며 패킷을 전송한 후 전송받은 측에서 패킷이 잘 도착했다고 알린다. 그러다보니 상대적으로 속도가 느리다.
  • UDP는 영화나 유튜브같은 영상을 시청할 때 약간의 동영사잉 깨지는 정도는 감수할 수 있는 곳에서 사용된다. 속도가 빠르며 정확도가 상대적으로 덜 하다.
TCP UDP
연결형 서비스 비연결형 서비스
신뢰성 높음 신뢰성 낮음
속도가 느림 속도가 빠름
수신 여부 확인 수신 여부 확인 x
전송 순서 보장 전송 순서 보장 x

 


◆TCP 3-Way Handshake의 3단계 설명

TCP 통신의 연결을 초기화 할 때 거치는 3단계 과정이다.

  • 1단계: 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보내고 SYN_SENT상태가 된다.
  • 2단계: 서버는 처음에 포트를 열고 LISTENING 상태로 클라이언트의 요청을 기다린다. 클라이언트의 SYN 요청을 받으면 SYN, ACK 플래그가 설정된 패킷으로 응답하며 SYN_REVD 상태로 변경된다.
  • 3단계: 클라이언트는 서버에서 SYN, ACK 패킷을 받으면 ACK 패킷으로 응답해 데이터 송수신 가능한 상태, 즉 세션이 맺어진 ESTABLISHED 상태가 된다.

◆TCP 4-Way Handshake의 4단계 설명

TCP 세션 종료에 수행되는 과정이다.

  • 1단계: 클라이언트가 연결을 종료하겠다는 FIN, ACK플래그를 전송한다.
  • 2단계: 서버는 ACK 응답을 보내며 애플리케이션을 종료하는 과정을 수행한다.
  • 3단계: 애플리케이션이 종료할 준비가 되면 FIN, ACK 패킷을 전송한다.
  • 4단계: 마지막으로 ACK 패킷을 보내고 TIME_WAIT 상태로 대기한다. TIME_WAIT 상태는 MSL(Maximum Segment Lifetime)*2, 약 120초 정도 기다린 후 완전히 종료한다. 만약 기다리지 않는다면 마지막 클라이언트의 ACK 패킷의 유실 시 서버가 다시 보내는 FIN, ACK 패킷에 대응하지 못한다. 따라서 완전히 종료하기까지 일정 시간동안 기다린다.