TCP/IP란 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약을 말합니다. 컴퓨터 네트워크에서 데이터를 전송하는 데 사용되는 프로토콜로 인터넷과 다양한 네트워크에서 표준적으로 사용되는 프로토콜의 집합입니다.
프로토콜이란?
서로다른 하드웨어와 운영체제 등이 서로 통신을 하기위해 모든 요소에 규칙이 필요합니다. 이런 규칙을 프로토콜이라고 부릅니다.
Application layer: 프로그램(브라우저)이 데이터를 처음으로 받는 곳입니다. HTTP, SMTP 등의 프로토콜을 가집니다.
Transport layer: TCP가 있는 계층입니다. 포트를 통하여 애플리케이션 계층이 TCP에게 데이터를 전송합니다. 각각의 포트에 프로토콜을 지정할 수 있습니다. 즉 사용자 간의 연결을 생성하고 데이터를 얼마나 보냈는지 얼마나 받았는지 등을 확인합니다.
Internet layer: 패킷들이 인터넷 레이어에 push됩니다. IP를 사용하여 데이터의 원천지(origin)와 목적지(destination)에 관한 정보를 첨부합니다.
Network layer: 패킷들은 네트워크 레이어로 전송됩니다. 알맞은 하드웨어로 데이터가 전달되도록 MAC 주소를 핸들링하는 것뿐 아니라, 데이터 패킷을 전기신호로 변환하여 선로를 통하여 전달할 수 있게 준비해줍니다.
IP는 컴퓨터 네트워크에서 데이터를 패킷 단위로 전송하는 프로토콜로, 데이터의 경로 선택과 패킷의 전달을 담당합니다. IP는 패킷을 주고받는 장치들 간의 주소를 정의하고, 데이터가 올바른 목적지로 전달되도록 합니다. IP 주소는 인터넷 상에서 호스트와 네트워크를 고유하게 식별하는 역할을 합니다.
하지만 IP에는 몇 가지 한계가 있습니다.
1. 먼저 클라이언트에서는 대상 서버가 패킷을 받을 수 있는 상태인지 확인할 수 없습니다. 따라서 받을 대상이 없거나 서비스가 불가능해도(연결이 되지 않은 상태) 패킷을 전송합니다(비연결성).
2. 인터넷 망 내 노드에 문제가 생기는 경우 패킷이 안전하게 도달하지 못하거나 전송 순서가 바뀔 수 있습니다(비신뢰성).
3. 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 IP만으로는 이를 구분할 수 없다는 단점이 있습니다.
-> 이런 문제를 해결해주는 것이 TCP입니다.
TCP는 많은 양의 데이터를 가져 와서 패킷으로 컴파일 한 다음 동료 TCP 계층에서 수신하도록 전송하여 패킷을 유용한 정보 / 데이터로 바꾸는 역할을 합니다. TCP는 전달받은 패킷을 재조립하고, 패킷에 손상이 있거나 손실된 패킷이 있다면 재전송을 요청하는 패킷을 전송하여 재전송 받습니다. 즉, 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 합니다.
흐름제어는 데이터 수신자의 처리 능력을 고려하여 데이터의 흐름을 제어하는 메커니즘입니다. 수신자의 처리 속도보다 전송자의 속도가 빠를 경우, 수신자는 처리하지 못하는 데이터를 저장하게 되어 메모리가 과도하게 소비될 수 있습니다. 따라서 흐름 제어는 이러한 현상을 방지하고 효율적인 데이터 전송을 보장하기 위해 사용됩니다.
해결방안
Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법
Sliding Window (Go Back N ARQ) : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법
혼잡 제어는 네트워크 혼잡 상태를 감지하고 조절하여 네트워크의 과부하를 방지하는 메커니즘입니다. 네트워크 혼잡이 발생하면 데이터 패킷이 유실되거나 지연되는 등의 문제가 발생할 수 있습니다. 따라서 혼잡 제어는 네트워크 혼잡을 감지하고 조절하여 전체적인 성능을 유지하는 역할을 합니다. 흐름제어가 송신측과 수신측 사이의 전송속도를 다루는데 반해, 혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서 전송 문제를 다루게 됩니다.
해결방안