Study/TIL(Today I Learned)

24.06.19 네트워크

에린_1 2024. 6. 19. 20:21
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