네트워크

TCP

도도.__. 2024. 1. 8. 19:09
  • TCP는 4계층에 속한다.
  OSI 계층 TCP/IP 계층
7 Application Application Application
6 Presentation FTP Telnet HTTP DNS RTSP etc..
5 Session
4 Transport Transport TCP UDP ICMP, IGMP
3 Network Network
(Internet)
IPv4 / IPv6
2 Data Link Network
Interface
(Internet
Access)
Ethernet: IEEE 802.x, Bluetooth, etc...
1 Physical

TCP

  • Transmission Control Protocol
  • 전송 제어 프로토콜이다.
  • 전송 계층이다.(4계층)
  • IP 패킷의 SDU에 포함되어 있다.
  • 연결 지향형이다.(신뢰성↑, 안정성↑)
    • 논리적 연결을 생성하고 데이터를 전송한다.
  • 흐름 제어를 위해 슬라이딩 윈도우(Sliding Window) 방식을 사용한다.
  • 최소 20 바이트의 헤더 크기를 가진다.
Source Port Destination Port
Sequence Number
Acknowledge Number
HLEN Reserve Flag Bits Window Size
URG ACK PSH RST SYN FIN
Checksum Urgent Pointer
Options
  • Source Port : 운영체제내 송신 프로세스의 주소
  • Destination Port : 수신 프로세스의 주소
  • Sequence Number : TCP 세그먼트의 일련번호
  • Acknowledge Number : 다음 번에 수신될 것으로 예상되는 세그먼트의 번호
  • HLEN : 헤더의 크기
  • Reserve : 미래를 위한 남겨둔 영역으로 현재까지 사용되지 않고 있음
  • Flag Bits : 회선, 데이터의 관리와 제어 기능 등을 수행하는 영역
    • URG(Urgent) : TCP 세그먼트에 긴급 데이터가 포함되어 있음을 나타낸다. 이 플래그가 on으로 통신된다면 이 필드는 긴급 데이터의 끝을 가리킨다.
      ex. 사용자가 급하게 [Ctrl]+[C]를 눌러 긴급하게 데이터 전송을 중단하려는 경우
    • ACK(Acknowledgment) : 수신자가 성공적으로 패킷을 받았음을 확인하는데 사용한다.
    • PSH(Push) : 수신자에게 버퍼링된 데이터를 애플리케이션에 즉시 전달하도록 요청한다.
    • RST(Reset) : 현재의 연결을 즉시 재설정하도록 요청한다. 통신 오류가 발생했을 때 주로 사용된다.
    • SYN(Synchronize) : TCP 연결을 초기화하는 데 사용한다. 연결 설정 요철에서 사용되며 초기 시퀀스 넘버를 교환하는 데 사용한다.
    • FIN(Final) : 데이터 전송이 완료되었음을 나타낸다. 연결 종료 요청에서 사용된다.
  • Window Size : 흐름 제어(송신지에 수신지의 버퍼 여유 크기를 지속적으로 통보함.)
  • Checksum : TCP 세그먼트 전체에 대한 오류 검출(에러 제어)
  • Urgent Pointer : URG 플래그가 설정된 경우 긴급 포인터 영역(응급 데이터의 위치)
  • Options : 다양한 확장 기능과 관련된 영역(옵션에 따라 TCP 헤더의 크기가 변함.)

3-Way handshake

  • 데이터 전달을 시작하기 전에 서로 통신할 준비가 되었음을 확인하는 절차이다.

1.  A는 B에게 접속을 요청하는 SYN  패킷을 보낸다. 그 후 A는 SYN_SENT 상태가 된다.

2. B는 SYN 요청을 받고 A에게 요청을 성공적으로 받았다는 ACK 와 SYN 패킷을 보낸다. 그 후 A에게 ACK 응답을 기다리며 SYN_RECEIVIED 상태가 된다.

3. A는 B에게 ACK을 보내고 그 이후부터 연결이 되어 데이터를 주고 받게 된다. 이때 B는 ESTABLISHED 상태가 된다.


4-Way handshake

1. A는 B에게 연결을 종료하겠다는 FIN 플래그를 전송한다.

2. B는 확인했다는 ACK을 A에게 보낸다. 그 후 자신의 데이터 통신이 전부 끝날 때까지 기다리는 CLOSE_WAIT 상태가 된다.

3. B가 통신을 끝내면 연결을 종료하겠다는 FIN 플래그를 A에게 전송한다.

4. A는 확인했다는 ACK을 B에게 보낸다.

여기서 바로 A가 연결을 끊어버리면 뒤늦게 도착하는 패킷이 Drop 되기 때문에 이런 상황을 대비하여 A는 B로부터 FIN을 받더라도 일정시간 동안 세션을 남겨두고 기다리다가 연결을 종료한다.


이러한 방법들로 TCP는 신뢰성 높은 통신을 할 수 있다.

'네트워크' 카테고리의 다른 글

라우팅  (0) 2024.01.15
UDP  (0) 2024.01.11
IGMP  (0) 2024.01.04
ICMP  (1) 2024.01.01
ARP와 RARP  (1) 2023.12.30