Devsecops

[AI스쿨 리팩토링]TCP 본문

[AI스쿨] 리팩토링/TCP

[AI스쿨 리팩토링]TCP

Futurism 2022. 9. 29. 21:31
728x90

TCP 프로토콜

  연결지향 프로토콜

신뢰성을 가장 중요하게 생각하는 프로토콜, 송신자와 수신자간의 안정적인 통신을 위함

  • 물리적으로 전용회선이 연결되어 있는 것처럼 가상의 연결 통로를 설정해서 통신하는 방식
  • 논리적인 연결 통로를 통해 데이터를 주고받아 데이터 전송순서를 보장한다
  • 스트림 기반 전송방식이용

  신뢰할 수 있는 프로토콜

  • 흐름제어 : 상대방이 받을 수 있을 만큼 데이터 전송
  • 오류제어 : 데이터 오류나 누락없이 안전한 전송 보장
  • 혼잡제어 : 네트워크 혼잡정도에 따라 송신자가 데이터 전송 량 제어

구조

  • Source Port : 출발지 포트번호
  • Destination Port : 목적지 포트번호
  • Sequence Number : 송신데이터 번호
  • Acknowledgment Number : 상대방이 다음에 전송할 순서 번호
  • HLEN : 헤더의 길이
  • Reserved : 예약(사용x)
  • Control Flags : 제어 비트
더보기
  • URG : 긴급 데이터 설정, 상호간에 미리 약속 되어 있어야 작동
  • ACK : 수신 확인 응답
  • PSH : 송수신 버퍼에 있는 데이터를 즉시 처리
  • RST : 연결 중단(강제), 강제성을 가진 재시작을 가짐, 공격자가 공격을 하면서 세션을 탈취할 때 많이 사용, Out of Path 방식 에서도 사용한다.
  • SYN : 연결 설정
  • FIN  : 정상적인 연결 종료
  • Window Size : 수신버퍼의 여유 공간
  • Checksum(필수 사항) : 헤더를 포함한 전체 세그먼트에 대한 오류를 검사하기 위한 필드
  • Urgent Pointer : 제어비트 URG 설정시 이용

분할과 재조합

  MSS

  • TCP 세그먼트 데이터부의 최대 크기
  • 연결과정에서 MSS 정보 주고 받는다
  • 프레임의 MTU 영향을 받는다
  • Application 계층에서 전달된 데이터는 TCP 계층에서 MSS 크기에 따라 분할 발생, 수신측에서는 재조합하여 Application 계층으로 전달

데이터 송수신 과정

  1. 재전송 과정

  • TCP는 모든 세그먼트 전송시마다 재전송 타이머동작, 이를 이용하여 일정 시간동안 ACK 응답이 없으면 송신자는 해당 패킷이 누락된 것으로 판단하여 재전송 수행
  • 이 때  데이터 유실이 일어나면 매우 혼잡한 상태로 본다

  2. 빠른 재전송 과정​

  • Client 중복 ACK가 두 번 발생할 때까지 일시적으로 Server에 전달한 세그먼트의 순서가 맞지 않는 상태로 판단하다가 3번 발생하면 해당 세그먼트가 누락된 것으로 판단하여 재전송 수행
  • 이 때  데이터 유실이 일어나면 덜 혼잡한 상태로 본다

연결 설정 과정(3 Way Handshake)

연결 종료 과정(4 Way handshake)

728x90