공부/Network

TCP 와 TCP 헤더

해리누나 2024. 6. 22. 22:00
728x90
반응형

 

1. TCP(Transmission Control Protocol) | 전송제어 프로토콜

인터넷 프로토콜 스위트( Internet Protocol Suite: 인터넷에서 컴퓨터들이 서로 정보를 주고 받을 때 쓰이는 통신규약[프로토콜]의 모음)의 핵심 프로토콜 중 하나로 인터넷과 네트워크 상에서 데이터를 신뢰성있게 전송하게 해준다.

 

TCP 의 주요 기능:

 

❶ 연결 지향(Connection-oriented) 통신:

  • TCP는 연결 지향형 프로토콜로, 통신을 시작하기 전에 송신자와 수신자 간에 세션을 설정해야 한다.
  • 연결 설정 과정은 3-way Handshake과정 을 통해 이루어짐.

 

❷ 신뢰성있게 데이터 전달:

  • TCP는 데이터가 손실되거나 중복되지 않도록 보장.
  • 데이터의 순서보장: 데이터의 각 세그먼트에는 시퀀스 번호가 부여되어 올바른 순서로 재조립된다.

 

❸ 흐름 제어(Flow Control):

  • 송신측과 수신측의 데이터 처리 속도의 차이를 해결하기 위한 기능
    • 수신측은 패킷을 수신받는 버퍼의 크기가 정해져 있다. 만약 송신측의 전송 속도가 너무 빨라 한 번에 많은 패킷을 수신하게 되면, 수신 버퍼가 가득 차서 새로운 패킷을 받을 공간이 없게 된다 (오버플로우).이를 방지하기 위해 송신측의 전송 속도를 제어해주는 기능이 필요해진 것이다.
    • 흐름 제어를 위해 TCP는 수신 윈도우라는 개념을 사용한다. 수신 윈도우는 수신측이 현재 수신할 수 있는 데이터의 양을 나타내는데 이를 송신측에 알려줌으로써 송신측이 전송 속도를 조절할 수 있도록 한다. 이때 송신측은 수신 윈도우의 같거나 작은 크기로 송신 윈도우를 지정하여 흐름 제어한다.

 

혼잡 제어(Congestion Control):

  • 네트워크의 혼잡 정도에 따라 송신률을 제어

 

❺ 오류 검출(Error Detection):

  • 송신측에서 계산한 체크섬을 수신측에서 검증해 오류 여부 판단
  • 수신된 데이터가 손상된 경우, 수신자는 손상된 데이터를 다시 요청한다.

 

 

2. TCP 헤더

응용 계층부터 물리 계층까지 계층별로 데이터를 전달할 때 헤더를 붙이는 캡슐화가 이뤄진다고 얘기했었다. 이때 전송 계층에서 붙여지는 헤더가 주로 TCP 또는 UDP 프로토콜에 의해 결정되는 것이다.

 

TCP 헤더

TCP 에 의해 붙여지는 헤더를 TCP 헤더라 하며, 이 TCP 헤더가 붙은 데이터를 세그먼트(Segment)라고 한다.

 

①  Source Port (16 bits): 송신자의 포트 번호

②  Destination Port (16 bits): 수신자의 포트 번호

③  Sequence Number (32 bits): 데이터의 순서를 표시

    - 바이트 단위로 표시되며, 송신된 데이터가 몇 번째 바이트부터 시작되는지를 나타내어 데이터의 순서를 보장

    - 예) 300byte 의 데이터를 100byte 씩 나눠서 보낼 때

    - 첫 번째 세그먼트의 Sequence Number는  0, 두 번째 세그먼트는 100, 세번째 세그먼트는 200이 된다.

④  Acknowledgment Number (32 bits): 수신자가 다음에 받을 데이터의 순서를 나타내는 번호

    - 첫 번째 세그먼트(Sequence Number: 0)에서 100바이트의 데이터를 수신하면, 이는 바이트 0에서 99byte까지의 데이 터를 수신한 것을 의미한다.

    - 따라서, 수신자는 다음으로 기대하는 바이트가 100이므로 Acknowledgement Number를 100으로 설정하여 송신자에게 전송한다.

⑤ Data Offset (4 bits): TCP 헤더의 길이를 나타내는 필드. 헤더의 길이를 32bits (=4bytes) 단위로 표시

⑥ Reserved (3 bits): 예약된 필드로 현재는 사용되지 않으며, 항상 0으로 설정된다.

⑦ Control Flags (9 bits): 제어 플래그로, 각 비트가 다양한 제어 기능을 나타낸다.

  •   URG (Urgent): 긴급 비트로, 현재 보내는 데이터가 우선순위가 높은 데이터임을 의미
  •   URG 값이 1로 설정되면, 순서에 상관없이 송신된다.
  •    ACK (Acknowledgment): 수신 확인 응답 설정
  •    PSH (Push): 데이터 즉시 처리 요청
  •    RST (Reset): 연결을 재설정
  •    SYN (Synchronize): 연결 설정
  •    FIN (Finish): 연결 종료

 

⑧ Window Size (16 bits): 흐름 제어를 위해 수신자가 수신할 수 있는 데이터의 양을 나타냄.

⑨ Checksum (16 bits): 데이터의 무결성을 확인하기 위한 필드

⑩ Urgent Pointer (16 bits): 긴급 데이터의 위치값 (URG 플래그가 설정된 경우에만 유효)

Options (variable): 다양한 옵션을 포함할 수 있는 필드로, 길이는 가변적이며 패딩으로 정렬됨.

⑫ Data (Payload): 실제 전송되는 데이터

 

 

 

 

 

참고

책: 10일만에 배우는 네트워크 기초, 모두의 네트워크 | 미즈구치 카츠야 | 이승룡 옮김

https://noodles8436.tistory.com/8

https://velog.io/@haero_kim/TCP-%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4-%EA%B8%B0%EB%B2%95-%EC%82%B4%ED%8E%B4%EB%B3%B4%EA%B8%B0

https://velog.io/@combi_jihoon/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC9-TCP4%EA%B3%84%EC%B8%B5-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

 

 

 

 

 

 

 

 

728x90
반응형