본문 바로가기

Computer Science/네트워크

09. 연결지향형 TCP 프로토콜

 

TCP 프로토콜

TCP가 하는 일

  • 전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 함
  • TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(UDP)을 사용
  • TCP는 UDP보다 안전하지만 느림

TCP의 구조

안전한 연결을 지향하는 TCP 프로토콜

  • window: 데이터를 얼마나 더 보내야할 지 알려줌


TCP 플래그

TCP 플래그의 종류

어떤 플래그를 셋팅하고 보내느냐에 따라서 연결 유형이 달라짐

TCP의 주된 기능이 플래그에 따라 나뉘어 짐

  • U(Urgent Flag): 보내는 데이터에 급한 데이터가 있음
    • 밑의 Urgent Pointer 와 셋트
  • A(Acknowledgement Flag): 승인을 해주는 플래그
  • P(Push Flag): TCP 버퍼에 관계 없이 계속해서 데이터를 밀어넣음
  • R(Reset Flag): 연결을 새로고침
  • S(Synchronization Flag): 상대방과 연결을 시작할 때 무조건 사용, 보내진 다음부터 연결 동기화 시작 (가장 중요!)
  • F(Finish Flag): 종료


TCP를 이용한 통신과정

연결 수립 과정

TCP를 이용한 데이터 통신을 할 때, 프로세스와 프로세를 연결하기 위해 가장 먼저 수행되는 과정

  1. 클라이언트가 서버에게 요청 패킷을 보냄
  2. 서버가 클라이언트 요청을 받아들이는 패킷을 보냄
  3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보냄

3개 과정을 3 Way Handshake 라고 함

데이터 송수신 과정

TCP를 이용한 데이터 통신을 할 때, 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 일정한 규칙

  • 보낸 쪽에서 또 보낼 때에는 SEQ 번호와 ACK 번호가 그대로
  • 받는 쪽에서 SEQ 번호 =  받은 ACK 번호
  • 받는 쪽에서 ACK 번호 = 받은 SEQ번호 + 데이터의 크기  

위 handshake에서 이어짐


TCP 상태전이도

  • 실선: 클라이언트의 상태 변화
  • 점선: 서버의 상태 변화
  • Listen
    • 포트 번호를 열어놓고 있는 상태
    • 서버가 프로그램을 사용하고 있는 상태
    • 서버가 요청을 듣고 있는 상태
  • Established
    • 연결이 수립된 상태

TCP 상태 변화

참고자료

https://www.youtube.com/watch?v=cOK_f9_k_O0&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=21

위 강의를 보고 정리한 글입니다.