TCP (vs UDP)

inshining·2023년 1월 29일
0

TCP vs UDP

TCP는 3가지 특징이 있다.

  1. 연결 유무 확인 (3way Handshake)
  2. 순서 보장
  3. 송신 보장

반면, UDP 는 3가지 모두 해당하지 않는다.

TCP WorkFlow

TCP 통신에서 소켓에서 통신이 시작된다. 소켓은 통신의 접속점으로 데이터 송수신이 소켓을 통해 이뤄진다. 소켓의 본질은 파일에 가깝다. 그렇기 때문에 소켓을 읽으면 ‘송신’이며, 소켓을 읽으면 ‘수신’이 된다. 소켓 아래 각 레이어 마다 데이터 전송 단위가 달라지며 이에 따라 용어도 달라진다. 만약 HDD에 있는 파일을 송신한다고 가정하자. HDD에 있는 파일 일부를 메모리에 가져온다. 메모리에 있는 데이터는 TCP 단에 버퍼로 이동한다. TCP 계층에서 데이터 단위는 세그먼트라고 한다. TCP 아래 IP 단에서 세그먼트를 패킷 단위로 잘라낸다. 패킷은 세그먼트로 감싼 형태라고 보면 된다. IP 계층 아래 링크 계층에서 프레임 단위로 바뀐다. 정리하자면 Socket에서 시작하여 TCP → IP → Link 순으로 계층 이동하면서 데이터 송신이 이뤄진다. 수신은 위 과정을 반대로 이뤄진다. 아래 계층에서 상위 계층으로 이동하면서 데이터를 처리한다.

통신 속도 느려진 이유?

네트워크에서 여러 변수에 의해서 속도가 저하될 수 있지만 TCP 프로토콜 한해서 많은 경우 수신 측 데이터 처리 속도가 문제될 수 있다. TCP Header에 window size 라는 것이 붙는다. 수신 측 입장에서 한번에 받을 수 있는 데이터 크기를 의미한다. window size가 클 수록 데이터를 많이 전송 받을 수 있다. window size는 현재 pc가 받을 수 있는 크기를 의미하기 때문에 데이터가 많이 적재되어 있으면 받을 수 있는 크기 양도 줄어든다. 송신 측에서 메모리에서 TCP의 버퍼로 데이터를 옮긴 것 처럼 수신 PC에서도 TCP 버퍼를 어플리케이션 계층의 메모리로 퍼올려야 window size가 커질 수 있다. 즉, 네트워크 자체 속도보다 수신 PC에서 버퍼 i/o 속도가 더 중요할 수 있다.

참조 자료

profile
가능한 최선을 다하고 싶다

0개의 댓글