[5주차] TCP/IP(흐름제어, 혼잡제어, 3way handshake, 4way handshake) , TCP vs UDP
TCP/IP
- 인터넷 프로토콜 슈트(Internet Protocol Suite)의 핵심 프로토콜로서, 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. (프로토콜: 데이터 통신을 원할하게 하기 위한 통신 규약)
- IP는 OSI 7계층에서 3계층(Network Layer)에 해당하며, 한 Endpoint가 다른 Endpoint로 가고자 하는 경우 경로와 목적지를 찾아주는 역할을 한다. (이를 Routing이라 한다.)
- IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.
- TCP는 OSI 7계층에서 4계층(Transport Layer)에 해당하며, 송신자와 수신자의 논리적 연결을 담당하며 신뢰성있는 연결을 유지할 수 있도록 도와준다. 즉 Endpoint(사용자) 간의 연결을 생성하고 데이터를 얼마나 보냈는지 얼마나 받았는지, 제대로 받았는지 등을 확인한다.
- TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.
- TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며, TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있게 하겠다는 것을 의미한다.
흐름제어 (Flow Control)
- 흐름제어는 데이터를 전송할 때, 송신측과 수신측 사이의 데이터 흐름을 조절하는 기능이다.
- TCP 프로토콜에서 사용되며, 수신측에서 받을 수 있는 데이터 양을 송신측에 알리고, 송신측은 그에 맞춰 데이터를 전송한다.
- 수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신 측의 속도가 더 빠를 경우 문제가 생긴다. 수신 측에서 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실될 위험이 있으며, 손실된다면 불필요한 추가 패킷 전송이 발생하게 된다.
- 이를 통해 수신측의 버퍼 오버플로우를 방지하고, 데이터 손실을 최소화할 수 있다.
- 즉, 송신측과 수신측 사이의 패킷 수를 제어하는 기능이라 볼 수 있다.
- Stop and Wait (정지-대기): 매번 전송한 패킷에 대해 확인 응답(ACK)을 받으면 다음 패킷을 전송하는 방법이다. 그러나 패킷을 하나씩 보내기 때문에 비효율적이다.
- Sliding Window (슬라이딩 윈도우): 수신측에서 자신이 받을 수 있는 최대 데이터 양을 알리기 위해 설정한 윈도우(window) 크기 만큼 세그먼트에 포함시켜 송신측에 전송하고, 송신측은 이를 받아 자신이 전송할 수 있는 데이터 양을 결정한다. 윈도우 크기는 수신측에서 송신측으로 확인 응답을 보낼 때 TCP 헤더(window size)에 담아서 보낸다.
혼잡제어 (Congestion Control)