공부/네트워크

[네트워크] TCP 프로토콜 (상태,헤더,제어)

yjkim_97 2021. 12. 26. 18:21

TCP 프로토콜은 OSI 7계층이 전송계층에 속하는 프로토콜이다.


TCP (Transmission Control Protocal)

  • 양방향 연결형 서비스를 제공한다.
  • 가상 회선 연결 형태의 서비스를 제공한다.
  • 스트림 위주의 전달(패킷 단위)을 한다.
  • 신뢰성 있는 경로를 확립하고 메시지 전송을 감독한다.
  • 순서 제어, 오류 제어, 흐름 제어 기능을 한다.
  • 패킷의 분실, 손상, 지연이나 순서가 틀린 것 등이 발생할 때 투명성이 보장되는 통신을 제공한다

1. TCP 상태 전이

TCP 상태 전이도

TCP 상태 전이도
TCP 상태 설명

TCP 상태전이 과정

  1. 클라이언트 측에서 먼저 서버에 연결 요청 메시지인 SYN 신호를 보낸다.
  2. 클라이언트는 SYN-SENT 상태로 서버의 응답을 대기한다.
  3. 서버는 처음 기동시 클라이언트 상태를 연결받기 위해 LISTEN 상태에서 클라이언트 연결을 대기한다.
  4. 서버가 클라이언트의 SYN 신호를 맏으면 서버는 클라이언트에게 SYN, ACK를 전송한다.
  5. 서버는 SYN-RECEIVED 상태로 바뀌고, 클라이언트의 연결을 대기한다.
  6. 클라이언트는 서버의 SYN, ACK 신호를 받으면 ACK 신호를 서버에 전송한다.
  7. 서버가 ACK신호를 받으면 클라이언트와 서버는 모두 ESTABLISHED상태로 연결 확립 상태가 된다.

 

2. TCP header

 

tcp 헤더

항목 내용
Source Port 가상 선로의 송신 측 포트이다.
Destination Port 가상 선로의 수신 측 포트이다.
Sequence Number 송신자가 전송하는 데이터의 일련번호
Acknowledgement Number 수신자가 응답받은 데이터의 수
Header Length TCP 헤더의 길이
Reserved 예약..?
URG (Urgent) 긴급 데이터를 의미한다. 1이면 순서 상관없이 우선처리
ACK (Acknowledgement) 전송 확인 필요 여부
PSH (Push data now) 버퍼가 가득 차지 않아도 수신 즉시 전달할지 말지 설정
RST (Reset) 연결 회선 리셋 요청
SYN (Synchronization) 연결 설정 요구. 송수신 간의 순서번호를 동기화 시킨다.
FIN (Finish) 연결 해제, 회선 종결을 요구
Window size 수신측에서 수신할 수 있는 최대 바이트
Checksum 체크썸. 신뢰성 검사시 사용되는 합계에 대한 1의 보수로 계산
Urgenet Pointer URG와 같이 사용된다. 다음에 이어지는 데이터가 긴급 데이터를 의미하며, 인터럽트 메시지 대신 사용
Options & Data 기타 옵션 및 데이터가 담긴다.

ACK, SYN, FIN 패킷의 사용 방식 (연결, 종단시)

  • 연결요청 -> SYN (1), ACK (0)
  • 연결허락 -> SYN (1), ACK (1)
  • 연결설정 -> ACK (1)
  • 종결요청 -> FIN (1), ACK (0)
  • 종령응답 -> FIN (1), ACK (1)

3. TCP 흐름제어 (Flow Control)

  • 송수신측 사이의 전송 패킷의 양과 속도를 조절하여 네트워크를 효율적으로 사용한다.
  • 송수신측 사이의 처리 속도와 버퍼 크기 차이에 의해 생길 수 있는 수신측 오버플로우를 방지한다.

슬라이딩 윈도우 (Sliding Window)

슬라이딩 윈도우는 TCP가 흐름제어할때 사용하는 기법으로 수신자가 수신 받을 만큼만 데이터를 전송하는 방법이다.

Stop-and-Wait의 단점을 보완한 방식으로 수신 측의 확인 신호를 받지 않아도 우선 미리 정해진 프레임의 수 만큼 연속적으로 전송한다.

Stop-and-Wait
에러제어 방식 중 BEC(Backward Error Control) 기법 중 하나로 송신자가 데이터를 전송하고 수신응답이 오면 다음 데이터를 전송하는 기법이다.
Stop-and-Wait은 에러발생시 즉시 재전송하며 순차적으로 송신 후 수신한다. 그러나 수신응답을 기다려야하므로 대기시간이 존재해 전송 효율이 저하된다.

BEC(Backward Error Control)
BEC는 에러제어 기법중 하나로 Stop-and-Wait, Go-Back-N, Selective Repeat 방식이 존재한다.

장점

  • 송수신측 간의 네트워크 전송 효율을 극대화할 수 있다.
  • ACK를 매번 받을 수 있지만 묶어서 받을 수 도 있기 때문에 불필요한 네트워크 부하를 최소화한다.

 

4. TCP 혼잡제어 (Congestion Control)

  • 송신 단말의 전송률을 직접 제어하여 패킷 혼잡으로 인해 손실될 데이터를 최소화한다.
  • Slow Start와 Congestion Avoidance(혼잡회피) 방식이 존재한다.

Slow Start

  • TCP 통신이 시작될 때 초기값부터 지속적으로 올리는 방식이다.
  • 그러다가 데이터를 제대로 수신 받지 못하면(Duplication ACK 값 수신) 송신 속도를 초기값으로 다시 낮춘다.
  • Dupliation ACK 값 수신되기 전에 전송속도가 임계값에 도달하게 되면 임계값의 절반으로 낮춰서 다시 시작한다.

Congestion Avoidance (혼잡회피)

  • 일정시간 동안 ACK 수신이 없거나 Duplicate ACK가 수신되면 송신자는 Congestion Avoidance 상태로 전환된다.
  • 각 연결마다 상태를 제어하기 위한 Congestion Window(CWnd)와 Slow Start Threshold 두개의 변수를 유지한다.

2021.04.17 - [공부/정보처리기사] - [네트워크] OSI 7 - 전송계층 프로토콜

 

[네트워크] OSI 7 - 전송계층 프로토콜

종류 TCP UDP RTP RTCP 1. TCP (Transmission Control Protocal) 양방향 연결형 서비스를 제공한다. 가상 회선 연결 형태의 서비스를 제공한다. 스트림 위주의 전달(패킷 단위)을 한다. 신뢰성 있는 경로를 확립

yjkim97.tistory.com