Network

[네트워크]프로토콜 이란? TCP/IP 란?

a-몬드 2022. 6. 13. 09:25
반응형

1. 프로토콜이란?

  • 주고받는 곳 사이의 약속
  • 데이터를 전달하기 위한 절차 == 통신규약
  • 어떤 데이터를 먼저 보내고, 다음에는 무슨 데이터를 보낼지, 내용에 따라서 계속 전달되거나, 중단하는 등의 약속 
  • 통신의 내용 자체를 해석하는 것은 아니고, 통신 절차를 위한 것만 포함한다.'

 

2. TCP/IP란?

  • 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음
  • 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다.
  • IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다
  • TCP는 IP 위에서 동작하는 프로토콜, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다.
  • TCP/IP는 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말이다.

 

2.1. TCP/IP를 사용하겠다는 것은?

  1. IP주소 체계를 따른다.
  2. IP Rounting을 이용해 목적지에 도달
  3. TCP의 특성을 활용하여 송신자와 수신자의 논리적 연결 생성 및 신뢰성 유지

 송신자가 수신자에게 IP주소를 사용하여 데이터를 전달하고, 데이터가 제대로 갔는지, 너무 빠르지는 않은지, 제대로 받았다고 연락은 오는지에 대한 것 

OSI 7 Layer와 연관 자세한 정보는 아래 더보기 클릭

더보기

Transport Layer(4 Layer) >>TCP

  • 송신자와 수신자의 논리적 연결을 담당
  • 신뢰성 있는 연결을 유지할 수 있도록 한다. 
  • Endpoint(사용자)간의 연결을 생성하고 데이터를 얼마나 보냈는지 받았는지, 제대로 받았는지 등을 확인 
  • 대표적인 예로는 TCP, UDP

 

Network Layer(3 Layer) >> IP

  • IP(Internet Protocol)이 활용되는 부분으로, 한 Endpoint가 다른 Endpoint로 가고자 할 경우, 경로와 목적지를 찾아준다. 
  • Rounting이라고 하며 대역이 다른 IP들이 목적지를 향해 제대로 찾아갈 수 있도로 돕는 역할 

 

2.2. TCP의 개요(Transmission Control Protocol)

  • 전송 제어 프로토콜(TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜이다.
  • IP와 함께 TCP/IP라는 명칭으로 널리 불린다.
  • TCP는 근거리 통신망, 인트라넷 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로 에러 없이 교환할 수 있게 한다.
  • IP는 패킷의 관계를 이해하지 못하고 그저 목적지를 제대로 찾아가는 것에 중점을 두지만,

 

TCP Header에는 아래와 같은 정보가 담겨 있다. 

  • 데이터가 제대로 전송되었는지 점검
  • 데이터가 도중에 변질되지는 않았는지 점검
  • 수신자가 얼마나 받았고 빠진 부분은 없는지 점검
  • SYN, ACK, FIN, RST, source Port, Destination Port, Sequence Number, Window size, Checksum과 같은 신뢰성 보장과 흐름 제어, 혼잡 제어에 관여할 수 있는 요소들
  • TCP는 IP의 정보뿐만 아니라 Port를 이용하여 연결, EndPoint에 도착한 데이터가 어떤 Port로 들어가야 하는지 알아야 연결을 시도할 수 있기 때문 TCP Header의 Source Port와 Destination Port로 알 수 있다. 

 

2.3. TCP의 작동법(3-way handshake)

  1. 송신자가 수신자에게 SYN을 보내 통신이 가능한지 확인. 이때, Port가 열려 있어야 한다.
  2. 수신자가 송신자로부터 SYN을 받고 SYN/ACK를 송신자에게 보내 통신할 준비가 되어있음을 알린다.
  3. 송신자가 수신자의 SYN/ACK를 받고 ACK를 보내 전송의 시작을 알린다.

 

2.4 TCP의 특징

    2.4.1 흐름 제어

 

  • TCP Header 내에 window size, ACK Numver, Wequence Number 등으로 흐름 제어를 한다.
  • window size : 송신자는 한 번에 보낼 수 있는 데이터 크기, 수신자가 한 번에 받을 수 있는 데이터의 크기 주로 수신자가 정한다. (3-way handshake 때)
  • ACK Number : 지금까지 받은 데이터 양을 확인하여 송신자에게 보냄. (예시는 아래 더보기 클릭)
더보기
예시) 수신자가 지금 10번째 데이터를 받았으면 ACK Number에 1을 추가하여 11을 보낸다.  10까지 받았으니 11번째부터 보내라는 뜻이다.
  • Sequence Number : 데이터의 순서, 번호 표기
  • 흐름 제어 기법은 다양하게 있다. (아래 더보기 클릭)
더보기

1. Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그다음 패킷을 전

송하는 기법

2. Window : TCP/IP를 사용하는 모든 호스트들은 송신하기 위한 것과 수신하기 위한 2개의 Window를 가지고 있다. 호스트들은 실제 데이터를 보내기 전에 3-way handshake를 통해 수신 호스트의 receive window size에 자신의 send window size를 맞추게 된다. 

 

    2.4.2 혼잡 제어

  • 송신 측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법 
  • 송신 측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달된다. 만약 한 라우터에 데이터가 몰릴 경우, 자신에게 온 데이터를 모두 처리할 수 없게 된다. 다시 재전송을 하게 되고 결국 혼잡만 가중시켜 오버플로우나 데이터 손실을 발생시키게 된다. 따라서 이러한 네트워크의 혼잡을 피하기 위해 송신 측에서 보내는 데이터의 전송 속도를 강제로 줄이는 작업을 혼잡 제어라고 한다.
  • 혼잡 제어는 다양한 방식이 존재한다. 아래 더보기 클릭
더보기

AIMD(Addtive Increase/ Multiplicative Decrease)

  • 처음 패킷을 하나씩 보내고 문제 없이 도착하면 window size를 1씩 증가 시키며 전송하는 방법
  • 패킷 전송에 실패하거나 일정 시간이 넘으면 패킷의 보내는 속도를 절바느로 줄인다.
  • 공평한 방식으로, 여러 호스트가 한 네트워크를 공유하고 있으면 나중에 진입하는 쪽이 처음에는 불리하지만, 시간이 흐르면 평형 상태로 수렴하게 되는 특징

😁장점

공평한 방식, 여러 호스트가 한 네트워크를 공유하고 있으면 나중에 진입하는 쪽이 처음에는 불리하지만, 시간이 흐르면 평형 상태로 수렴하게 되는 특징

🙄단점

초기에 네트워크의 높은 대역폭을 사용하지 못하여 오랜 시간이 걸리게 되고, 네트워크가 혼잡해지고 나서야 대역폭을 줄이는 방식

 

Slow Start 

  • AIMD방식과 마찬가지로 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK패킷마다 Window size를 1씩 늘려준다. 즉, 한 주기가 지나면 window size는 2배가 된다. 
  • 전송 속도는 지수함수 꼴로 증가한다. 대신 혼잡 현상이 발생하면 window size를 1로 떨어뜨린다.
  • 처음에는 네트워크 수용량을 예상할 수 있는 정보가 없지만, 한번 혼잡 현상이 발생하고 나면 네트워크의 수용량을 예상할 수 있다.

Fast Retransmit(빠른 재전송)

  • TCP의 혼잡 조절에 추가된 정책이다. 혼잡을 감지 할 수 있다. 
  • 패킷을 받는 쪽에서 먼저 도착해야할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보내게 된다.
  • 단, 순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번을 ACK 패킷에 실어서 보내게 되므로, 중간에 하나가 손실되면 송신 측에서는 순번이 중복된 ACK 패킷을 받게 된다. 이것을 감지하는 순간 문제가 되는 순번의 패킷을 재전송 할 수 있다.
  • 중복된 순번의 패킷을 3개 받으면 재전송 하게 된다. 약간, 혼잡한 상황이 일어난 것, 혼잡을 감지하고 window size를 줄이게 된다.

Fast Recovery(빠른 회복)

  • 혼잡한 상태가 되면 window size를 1로 줄이지 않고 반으로 줄이는 선형 증가 시키는 방법
  • 혼잡 상황을 한번 겪고 나서 부터 순수한 AIMD방식으로 동작하게 된다. 

 

 

출처 

https://gyoogle.dev/blog/computer-science/network/%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%20&%20%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4.html

https://aws-hyoh.tistory.com/entry/TCPIP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

반응형