
오늘부터 잦은 CS개념 복습을 위해 하루에 하나의 개념을 복습해보는 시간을 가지려고 합니다.
이는 다른 포스팅에서 다루는 내용에 비해 얕으며 의식의 흐름에 따라 아는 내용을 적어보고자 합니다.
TCP 개념 간단 복습
TCP는 (Transmission Control Protocol)로 네트워크 모델 중 Transport Layer에 위치한 프로토콜입니다.
통신계층 프로토콜이기 때문에 종단 간 위치하는 하나의 port까지의 데이터 전송을 담당합니다.( 이는 UDP와는 다르게, 신뢰성있는 전송을 위한 방식을 사용합니다.
1. TCP는 왜 연결지향 프로토콜이라고 부르는가?
TCP는 신뢰성있는 통신을 위해 통신 전에 3handshake를 통해 서버(연결 요청을 받는)와 클라이언트(연결을 요청하는) 사이의 연결 정보를 서로 교환합니다.
sequence번호(+ACK 타이머 재전송 제어 수신 윈도우 등)를 교환함으로서 데이터의 순서 보장, 재전송, 중복 제거가 가능해집니다.
초기 seq번호는 랜덤하게 설정되며 과거 세션과의 혼통을 방지하고 보안성을 높입니다.
2. 어떻게 패킷의 순서를 보장하는가?
TCP는 보내는 데이터의 순서를 보장하고자 TCP Header에 순서번호를 붙여 하나의 데이터가 조각나도 수신 측에서 조립할 수 있도록 합니다.
3. TCP의 Segment
TCP의 Header와 Payload를 합쳐 TCP Segment라고 부릅니다. TCP Segment는 일반적인 특징이 있습니다.
먼저 크기가 1460byte를 넘지 않는다는 것입니다. (MSS)
그 이유는 기본적으로 랜카드가 수용가능한 데이터 크기가 1500byte(MTU)이며 IP, Datalink계층의 Header 크기가 합쳐 40바이트이기 때문에 이를 넘지 않도록 TCP계층에서 미리 잘라줍니다.
만약에 TCP가 자르지 않고 내려보낸다면 IP계층에서 Fragmentation이 일어날터인데, 그렇다면 TCP의 헤더에 담기는 정보가 조각나는 패킷에 각각 수록될 수 없기 때문에 문제가 될 것입니다.
4. TCP의 Nagle's Algorithm
TCP의 경우 Nagle의 알고리즘이라는 규칙을 적용할 수 있습니다.
이는 보내는 데이터의 내용과 상관없이 TCP가 내부적으로 가지고 있는 데이터가 1460바이트를 채웠을 때(혹은 ACK를 받았을 때)만 전송한다는 규칙입니다.
매번 TCP에서 데이터를 수신할 때마다 이를 즉시 IP계층으로 내려주지 않기 때문에 네트워크의 전송량이 절약된다는 점을 가집니다.
3-way handshake, 4-way handshake 등은 이후에 추가적으로 다루겠습니다.
'Algorithm' 카테고리의 다른 글
| [프로그래머스] 메뉴 리뉴얼 풀어봄 (0) | 2025.01.17 |
|---|---|
| [프로그래머스] 동영상 재생기 풀어봄 (0) | 2025.01.16 |