TCP

oyeon·2023년 9월 28일
0

컴퓨터 네트워크

목록 보기
9/15

TCP

전송 제어 프로토콜(Transmission Control Protocol)

  • Transport Layer(4L)의 연결 지향 프로토콜

특징

  • 연결지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰 가능한 프로토콜
  • 현재는 대부분 TCP 사용

TCP 3 way handshake

  • TCP/IP 프로토콜을 이용해서 통신하는 응용프로그램이 데이터를 전송하기 전에 먼저 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미 (정확한 전송을 보장하기 위해)

Client → Server: TCP SYN
Server → Client: TCP SYN ACK
Client → Server: TCP ACK

용어
SYN: Synchronize Sequence Numbers
ACK: Acknowledgement

과정

  1. Client가 Server에 접속 요청 SYN 패킷을 보낸다. 이때 Client는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 되는 것이다.
  2. Server는 SYN 요청을 받고 Client에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 발송하고 다시 Client가 ACK 응답하기를 기다린다. 이때 Server는 SYN_RECEIVED 상태가 된다.
  3. Client는 Server에게 ACK을 보내고 이후부터는 연결이 이루어지고 데이터가 오가게 된다. 이때 Server의 상태가 ESTABLISHED이다.

TCP 4 way handshake

  • 세션을 종료하기 위해 수행되는 절차

과정

  1. Client가 Server에게 연결을 종료하겠다는 FIN 플래그를 전송한다.
  2. Server는 일단 확인했다는 ACK 메시지를 보내고 자신의 통신이 끝날 때까지 기다리는데, 이 상태가 TIME_WAIT 상태이다.
  3. Server가 통신이 끝났으면 연결이 종료되었다는 FIN 플래그를 전송한다.
  4. Client는 확인했다는 ACK 메시지를 보낸다.

TCP 빠른 재전송

  • 패킷을 받는 수신자 입장에서는 세그먼트로 분할된 내용들이 순서대로 도착하지 않는 경우가 생길 수 있다.
  • 이런 상황이 발생했을 때 수신 측에서는 순서대로 잘 도착한 마지막 패킷의 다음 순번을 ACK 패킷에 실어서 보낸다.
  • 그리고 이런 중복 ACK를 3개 받으면 재전송이 이루어진다. 송신 측은 자신이 설정한 타임 아웃 시간이 지나지 않았어도 바로 해당 패킷을 재전송할 수 있기 때문에 보다 빠른 재전송률을 유지할 수 있다.

파이프라이닝 프로토콜 과정(중복 ACK, 타임 아웃)을 참고해서 본다면 좋을 듯 하다.

혼잡 제어(Congestion control)

  • 데이터의 양이 라우터가 처리할 수 있는 양을 초과하면 초과된 데이터는 라우터가 처리하지 못한다.
  • 이때, 송신 측에서는 라우터가 처리하지 못한 데이터를 손실 데이터로 간주하고 계속 재전송하여 네트워크를 혼잡하게 한다.
  • 이런 상황은 송신 측의 전송 속도를 적절히 조절하여 예방할 수 있는데, 이것을 혼잡 제어라고 한다.

정리하자면, 혼잡 제어는 전송 속도 조절을 통해 네트워크 내의 패킷 수를 제어하여 네트워크의 오버플로우를 방지하는 기능이다.

흐름 제어(Flow control)

  • 수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신 측의 속도가 빠를 경우 문제가 생긴다.
  • 수신 측에서 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실될 수 있으며, 만약 손실된다면 불필요한 추가 패킷 전송이 발생하게 된다.
  • 흐름 제어는 위와 같이 송신 측과 수신 측의 TCP 버퍼 크기 차이로 인해 생기는 데이터 처리 속도 차이를 해결하기 위한 기법이다.

정리하자면, 흐름 제어는 데이터 처리 속도를 조절하여 송/수신 사이의 패킷 수를 제어하는 기능이다.

reference
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake
https://steady-coding.tistory.com/507

profile
Enjoy to study

0개의 댓글

관련 채용 정보