728x90
네트워크
TCP/UDP
TCP
- 연결 지향형 서비스(reliable service)와 신뢰적 데이터 전송 서비스(data integrity)를 포함한다.
- Reliable Service
- TCP는 메시지 전송 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 한다. 즉, 패킷이 전송될것을 미리 알려준다.
- Data integrity
- TCP는 데이터를 오류 없이 올바른 순서로 전달하는 것을 보장한다.
- Congestion control(혼잡제어)
- TCP의 congestion control은 네트워크가 혼잡상태에 이르면 프로세스의 속도를 낮춘다.
- 즉, 프로세스가 우선이 아니라 네트워크의 안정성 향상을 우선한다.
- Flow control(흐름제어)
- TCP는 receiver의 buffer가 꽉 차서 데이터가 손실되지 않도록 sender의 전송을 관리한다.
- TCP는 최대한 오류 없는 신뢰성 있는 전송을 위해 많은 기능을 지원하며, 이에 따라 속도가 UDP에 비해 불리할 수 있다.
- 안정적이고 정확한 패킷 전달을 보장한다는 특징이 있다.
UDP
- 최소의 서비스 모델을 가지는 간단한 프로토콜이다.
- 비연결형임으로 핸드셰이킹을 하지 않는다.
- 비 신뢰적인 서비스이므로 데이터가 손실될 수 있다. UDP는 flow control을 하지 않으므로 프로세스는 원하는 속도로 하위 계층으로 보낼 수 있다. 그 외 올바른 패킷 전송에 필요한 여러가지 제어를 전부 하지 않는다.
- 데이터그램을 생성하며, 데이터 전송의 신뢰성을 보장하지 않는다. 비연결형이고, 데이터를 보내고 신경쓰지 않는다. 재전송도 없다.
- 그래서 TCP보다 비교적 빠르다. 연결 상태를 만들지 않으므로 유지할 필요도 없다. 또한 패킷이 순서대로 오는 것을 보장하지 않기 때문에 수신자가 헤더를 보고 조합해야 한다.
Nagle 알고리즘
- TCP 네트워크에서, 데이터는 OSI레이어를 거치면서 몇 겹의 헤더로 캡슐화되어 목적지로 보내진다. 또한, 패킷 전송에는 비용이 따른다.
- 이런 경우 데이터가 적다면 보내는 효율이 떨어지는데, 적은 데이터를 가진 패킷을 여러번 보내는 것보다는 많은 데이터를 가진 패킷을 한번에 보내는 것이 효율이 좋다.
- 이럴 경우, 상대가 받을 수 있는 사이즈(window size)가 충분하다면 크기가 작은 패킷을 모아서 보내는 것을 Nagle 알고리즘이라고 한다.
- 전송의 효율이 증가하지만, 즉각적인 반응이 필요한 네트워크 게임 등에는 적합하지 않다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.06.21 알고리즘, C (0) | 2024.06.21 |
---|---|
24.06.20 알고리즘 (2) | 2024.06.20 |
24.06.18 면접 (2) | 2024.06.18 |
24.06.17 서버 (5) | 2024.06.17 |
24.06.16 CS (1) | 2024.06.17 |