오뚝이개발자

[네트워크] CH18 TCP 본문

CS 기초/네트워크

[네트워크] CH18 TCP

땅어 2020. 11. 15. 17:22
728x90
300x250

 

학습 목차

  • TCP의 기능
    • 수송 프로토콜로서 제공하는 서비스
  • 세그먼트 형태
    • 각 필드의 의미와 주요기능
  • 연결설정과 해제
  • 흐름제어

TCP의 기능

  • TCP는 프로세스간 통신, 스트림 전달 서비스(UDP는 하나의 메시지를 만들어 전달 but TCP는 바이트의 스트림을 전송), 전이중 통신(송수신 양방향), 연결지향서비스, 신뢰성 있는 서비스를 제공
  • 연결설정과 해제 과정 존재
  • 데이터의 안전한 도착을 확인하는 ACK를 사용해 신뢰성 있는 전송을 제공
  • 프로세스 간의 통신을 위해 포트 번호 사용
  • 스트림 전달 서비스 : TCP는 데이터를 바이트의 나열로 전달함
    • 효율성을 위해 여러 바이트를 블록으로 구성된 세그먼트로 만들어 전송

TCP의 특징

TCP는 모든 바이트에 번호를 부여한다.

  • 시작번호는 0~2^32 - 1 사이의 임의의 번호를 가짐
  • 번호는 흐름제어, 에러제어에 사용
  • 세그먼트의 순서번호는 해당 세그먼트가 나르는 데이터의 첫 번째 바이트 번호이다.

ACK 번호는 수신해야 할 다음 바이트 번호이다.

  • 현재 받은 번호가 아닌 다음 수신해야 할 번호를 사용하는 것이 효율적
    • 예컨대, ACK 500신호가 사라져 도달하지 않았는데 ACK1000을 받았으면 그 이전까진 안전하게 도달했음을 알 수 있다
  • ACK번호는 누적값으로 수신자는 해당 번호 이전의 모든 바이트를 안전하게 받았음을 의미

TCP 세그먼트의 형태

TCP 세그먼트

  • 송수신자 포트 번호를 사용해 TCP 위에 올라가는 어떤 프로세스가 통신하는 건지 구분
  • TCP 헤더 : 20바이트이며 옵션이 있으면 60바이트까지 될 수 있다
  • HLEN : 헤더가 가변적이라 어디가지가 헤더 영역인지 알기 위해 필요. 헤더는 4바이트 단위로 표기
  • 체크섬
    • 데이터에 대한 오류 검사해 재전송에 의한 복구를 수행할 수 있다.
    • TCP에서 체크섬은 강제사항(UDP는 선택사항)
    • UDP에서와 같은 가상헤더를 포함해 계산
  • 제어필드(6개) : TCP 연결 설정, 해제 메시지를 구분하는 기능을 함
    • URG : 송신자는 수신자가 긴급메시지를 우선적으로 처리하길 원할 수 있다.
    • ACK
    • PSH : 송신TCP는 수신TCP가 버퍼링 하지 말고 즉시 데이터를 프로세스에게 전달할 것을 요구할 수 있다(주로 interactive service의 경우)
    • RST : TCP가 비정상적인 상황 혹은 오랫동안 통신이 없으면 연결을 끊은(Reset)
    • SYN : 연결설정
    • FIN : 연결해제

TCP 연결설정

3단계 메시지 교환(Three way handshake)을 통해 연결 설정함

TCP 연결해제

TCP는 연결해제를 위해 3-way handshake와 4-way handshake 메시지 교환을 한다.

  1. 제어필드와 FIN을 사용해 연결 해제를 함
  2. 4-way handshake를 통한 연결해제는 half-close 상태를 만들어 수신은 가능하게 할 수 있다.
  3. 3-way handshake는 즉시 연결을 종료시킬 수 있다

3-way handshake를 이용한 연결 해제
4-way handshake를 이용한 연결 해제

흐름제어

송신TCP가 목적지로부터 ACK를 수신하기 전에 보낼 수 있는 데이터의 양을 정한다.

  • TCP는 슬라이딩 윈도우 프로토콜(sliding window protocol)을 이용한다
  • TCP는 바이트 단위로 윈도우 크기(수신 가능한 데이터 양)을 명시한다
  • 윈도우 크기는 시간에 따라 변할 수 있다.

 

 

 

728x90
300x250
Comments