홍카나의 공부방

[컴퓨터 네트워크] 14-1. TCP 개요 본문

Computer Network

[컴퓨터 네트워크] 14-1. TCP 개요

홍문관카페나무 2023. 4. 26. 22:06

Transmission Control Protocol(TCP)

  • TCP는 전송 계층에서 사용되는 연결지향 서비스다.
  • TCP에서는 단위 데이터를 Segment라고 부른다. ( 쉽게 이해하려면 그냥 패킷을 세그먼트라고 부른다고 이해하자. )
  • UDP와는 다르게 TCP는 Connection당 수신 버퍼를 할당한다.

UDP와 TCP의 연결 차이 - 수신 버퍼 측면에서

 

TCP - Numbering System(Sequence #)

  • 시퀀스 번호는 TCP 세그먼트에 포함된 첫번째 데이터의 번호다. 만약 시퀀스 번호가 1000이라면, 세그먼트 데이터의 첫번째 바이트 번호가 1000이라는 뜻이다. 보통 바이트 단위로 셈을 한다.
  • TCP를 통해 데이터를 전송할 때, 데이터 크기가 MSS인 1460Bytes를 넘는다면, 세그먼트는 분할(segment)되어 보내진다. 이때 전송되는 데이터의 순서를 식별하는데 시퀀스 번호가 사용된다.
  • 시퀀스 번호는 난수로 정해진다. 꼭 0부터 시작하지 않는다는 것이다. 모든 TCP 세그먼트 데이터 번호가 0으로 시작하게 되면 해킹이 쉽게 발생할 수 있기 때문이다.

 

TCP - Numbering System(Ack #)

  • Ack 번호(일명 애크)는 수신자가 받기를 원하는 다음 TCP 세그먼트 데이터 번호다.
  • 예를 들어 수신자가 1001~1100번 바이트까지 데이터를 받았으면, Ack(#1101)을 송신자에게 보내어 다음 데이터를 요구한다.
  • 만약 송신자가 data 1101~1200번, 1201~1300번 패킷을 연달아 보냈을 경우, 수신자가 ack를 일일이 보내진 않는다. Ack는 Overhead가 발생하므로, 이를 최소화하기 위해서 연속된 패킷 수신에 대해서 Ack를 하나만 보내기도 한다.

연속된 패킷에 ACK를 모두 보내진 않는다.

 

 

Segment Header - control field

  • Segment의 헤더에는 Source, Destination Port 주소, 시퀀스 번호, ACK 번호, HLEN, 체크섬 등이 들어간다.
  • 그중에서 Control Field(TCP Flags)에 주목할 필요가 있다.
  • TCP 통신의 목적이 어느 것이냐에 따라 이 컨트롤 필드의 값이 달라진다. 컨트롤 필드의 값은 다음과 같다.
  • SYN : 연결 설정때 사용하는 필드 값
  • FIN : 연결 해제때 사용하는 필드 값
  • RST : 비정상 연결을 해제할 때 사용하는 필드 값
  • PSH : 송신자가 수신자에게 버퍼링 된 데이터를 즉시 응용프로그램에 푸시하도록 요청하는 것. 잘 안 쓴다고 한다.
  • ACK : 이 필드 값이 1이면 ACK Number가 같이 전송된다. ( 단, 데이터 없이 헤더만 간다. )
  • URG : 긴급 데이터를 요청할 때 사용한다. 보통 TCP는 In-band 전송으로, 모든 것이 순서에 맞게 전송되는 방식이다. 그러나 Urgent data를 전송하면 해당 데이터를 수신 버퍼에 보내서 응용의 pulling을 기다리지 않고, 바로 수신 응용프로세스로 데이터를 전송하게 된다. 이를 Out-of-band 전송이라고 한다.

 

 

연결 설정(3-way handshake), 데이터 전송, 연결해제, 흐름제어, 오류제어, 혼잡제어는 다른 글에서 다루겠다.

UDP와 달리 TCP는 다룰 게 많아서..

반응형