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 헤더가 붙은 데이터를 세그먼트(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
'공부 > Network' 카테고리의 다른 글
Sequence Number 와 Acknowledgment Number (1) | 2024.06.23 |
---|---|
TCP 3-way 와 4-way Handshake (0) | 2024.06.23 |
전송 계층의 역할 / 연결형 통신 · 비연결형 통신 (0) | 2024.06.21 |
라우터(Router)와 라우팅 테이블(Routing Table) (0) | 2024.06.06 |
서브넷(Subnet)과 서브넷 마스크 (1) | 2024.06.05 |