본문 바로가기
기타/인턴활동

네트워크 기초 교육 - 4주차(UDP, TCP , 3Way Handshake, SLB)

by Royal! 2021. 6. 24.
728x90
반응형

UDP(User Datagram Protocol)

- Universal Datagram Protocol

 

특징

- 전송 방식이 단순하다.

- 비 연결 지향형 서비스이다.

- 서비스의 신뢰성이 낮다.

☞ 정보를 송수신 할 때 송수신을 신호절차가 없다. 즉 상대방의 정보 송수신 여부를 알 수 없다.

- 상대적으로 TCP보다 전송 속도가 빠르다.

 

UDP가 사용되는 곳

- 실시간 스트리밍

- 게임

- Voice 통신

- RIP과 같은 경로 갱신 Protocol로 사용

- SNMP 같은 관리 프로세스에서 사용

(SNMP란 IP기반 네트워크상의 각 호스트로부터 정기적으로 여러 관리 정보를 자동으로 수집하거나 실시간으로 상태를 모니터링 및 설정할 수 있는 서비스 Protocol)


 

UDP Header

총 8Byte이다.

Source Port : Data를 보내는 Host의 포트 번호

Destination Port : Data를 받는 Host의 포트번호

Length : Header 와 Data를 포함한 길이

Checksum : 데이터가 전송 중에 손상되지 않고 원본과 동일하니 여부를 확인하는 기능

                만일 Checksum값이 불일치 할 경우 송신자에게 Packet 재전송 요청을 한다.

 


UDP 동작 과정

Client(수신자)가 요청 시 Server(송신자)는 끊임없이 보내기만 한다.

 


TCP(Transmission Control Protocol)

Layer 4 계층에서 사용하는 Protocol로서 장치들 사이에 논리적인 접속을 성립(Establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스

 

여기서 신뢰성이란 보안적(안전하다) 의미라기 보다는 Packet의 분실, 중복, 순서 바뀜 등이 없다는 뜻으로 받아들이면 된다.

 

특징

 - 세그먼트(Segment)라는 단위를 사용한다.

- 연결형 서비스이다.

- 흐름제어를 한다. 

→ Data를 송신하는 곳과 수신하는 곳의 Data 처리 속도를 조절하여 수신자의 Data Over Flow를 방지한다.

흐름제어에는 Stop and Wait(정지-대기)방법과 Sliding Window(슬라이딩 윈도우)가 있다.


Stop and Wait(정지-대기) 방식

º 전송한 Packet에 대한 확인 응답을 받아야 다음 Packet을 전송할 수 있다.

º 구성하기 쉽고 작동원리도 파악하기 쉽다.(장점)

º 비효율적이다(단점) (송신측이 데이터를 직접 보내고 수신측이 받을 수 있는지 없는지 일일이 확인해야 하므로)

 

즉, 보냈는데 받았어? → 아니? → 다시 보낸 후 받았어? → 응 또 보내줘 → 보낼께 받았어? 

이런식으로 Data를 보낼 때 마다 확인해야한다.


Sliding Window(슬라이딩 윈도우)

º 수신측에서 설정한 윈도우(Data를 저장할 수 있는 공간이라고 생각하면 편하다/ 송, 수신 양쪽에서 만들어진 버퍼크기)

크기 만큼 송신측에서 확인 응답 없이 Segment를 전송할 수 있게 하여 Data흐름을 동적으로 조절하는 방법이다.

º Stop and Wait의 비효율성을 개선한 방법

º 송신측에서 ACK를 전송하지 않아도 여러 개의 Frame을 연속적으로 전송할 수 있다.

º 대부분 Sliding Window 방식을 사용한다

º 윈도우 크기는 3-Handshake 과정에서 결정난다

예를 들어 윈도우 크기(버퍼크기)가 3인 경우 어떻게 데이터가 흐르는지 알아보자.

일단 전송을 했지만 상대방인 윈도우의 데이터를 수신했는지 확인 할 길이 없다. 수신자가 데이터 수신 후 현재 자신의 버퍼에 남아 있는 공간의 크기를 알려준다. 내가 얼만큼 공간(버퍼)가 찼으니까 얼마 더 보낼 수 있어라고 응답을 준다.

예를 들어 0번의 Size가 가득 찼을 경우는 얼만큼 더 보낼 수 있어라고 대답해준다. 그러면 송신자는  0번 말고 1번부터 데이터를 보낼 수 있다. 즉 윈도우를 한 칸 이동하여 Data를 보낸다. 

 

 

 

Data를 전송하는 송신 측의 버퍼는 대략 3가지 상태로 나눠질 수 있다.

- 전송완료 & ACK 응답도 받음

- 전송은 했는데 ACK 응답을 못 받음

- 전송 대기중

 

즉 슬라이딩 윈도우 방식은 보내고, 응답 받고, 윈도우를 밀고를 반복하면서 현재 자신이 보낼 수 있는 데이터를 최대한 연속적으로 보내는 방법이라고 할 수 있다. 

이론적으로는 수신측의 ACK 응답이 없어도 최대 1GB의 Data를 연속으로 보낼 수 있다.

 

 


이어서 TCP 특징

- 오류제어가 가능하다

 

TCP는 기본적으로 ARQ(Automatic Repeat Request) 재전송 기반 오류 제어를 사용한다. 말 그대로 통신 중에 뭔가 오류가 발생하면 송신 측이 수신 측에게 해당 데이터를 다시 재전송하는 기능.

기본적으로 재전송이라는 작업 자체가 했던 일을 또 반복해야 하므로 비효율적인 작업이다. 따라서 재전송 과정을최대한 줄일 수 있는 방법을 사용한다.

 

기본적으로 TCP가 오류를 파악하는 방법은 2가지다.

 

수신 측이 송신 측에게 명시적으로 NACK(부정응답)을 보내는 방법, 송신 측에게 ACK(긍정응답)가 오지 않거나, 중복된 ACK가 계속해서 오면 오류가 발생했다고 추정하는 방법이다. 

 

일반적으로 NACK은 로직이 추가저으로 필요하기 때문에, ACK만을 사용하여 오류제어를 한다.

중복되 ACK를 받은 경우 오류판별하는 과정은 다음과 같다.

Packet 기반을 전송하느 TCP의 특성 상 각 Packet의 도착 순서가 무조건 보장되는 것이 아니기 때문에 위 예시처럼 중복된 ACK를 한 두번 받았다고 해서 바로 에러라고 판별하지 않고 보통 3회 정도 받았을 때 에러라고 판별하게 된다.

 

Go Back N 방법도 있다. Go Back N 방법은 데이터를 연속적으로 보내다가 그 중 어느 데이터부터 오류가 발생했는지를 검사하는 방식이다. 예를 들어 1~3번까지 ACK이면 3번부터 ACK인 통신을 모두 에러라고 판단하고 3번을 넘어선 모든 데이터를 폐기하고 3번 Data부터 다시 보내달라고 요청하는 것이다.

 

Selective Repeat 방법도 있다. Selective Repeat은 선택적인 재전송이다. Go Back N 방법과 Stop and Wait 비하면 많이 효율적인 방법이지만, 에러가 발생하면 그 이후에 정상적으로 전송되었던 데이터까지 모두 폐기 처분되어 다시 재전송해야 하므로 비효율적일 수도 있다.

 

단점이라면 사용하는 수신 측의 버퍼에 쌓인 데이터가 연속적이지 않다는 점이다.


이어 TCP 특징

- 혼잡제어 

소인측의 데이터 전달과 네트워크의 데이터 처리 속도를 해결하기 위한 기법이다. 

한 라우터에게 데이터가 몰려 모든 데이터를 처리할 수 없는 경우, 호스트들은 재전송을 하게 되고 결국 혼잡만 가중시켜 Over Flow나 Data 손실이 발생한다. 이러한 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송 속도를 제어하는 것이 혼잡 제어의 개념이다.

 

혼잡제어 방식에는 AIMD와 Slow Start가 있다.

 

AIMD(Addtie Increase Multicative Decrease) 

º 합 증가/ 곱 감소 알고리즘이다.

º 처음에 Packet 하나를 보내는 것으로 시작하여전송한 Packet이 문제 없이 도착한다면  Window Size를 1씩 증가시키며 전송하는 방법이다. 만약 Packet 전송을 실패하거나 Time_out이 발생하면 Window Size를 절반으로 감소시킨다.

º 여러 호스트가 한 네트워크를 공유하고 있으면 나중에 진입하는 쪽이 처음에 불리하지만, 시간이 흐르면 평형 상태로 수렴하는 것이 특징(모두에게 고르게 Data 분산)

º 초기 네트워크의 높은 대역폭을 사용하지 못하고 네트워크가 혼잡해지는상황을 미리 감지하지 못하여 혼잡해지고 나서야 대역폭을 줄이는 방식이다.

 

Slow Start

º AIMD가 네트워크의 수용량 주변에서는 효율적으로 동작하지만, 처음에 전송 속도를 올리는 시간이 너무 길다.

º Slow Start는 AIMD와 마찬가지로 Packet을 하나씩 보내는 것부터 시작. Packet이 문제 없이 도착하면 ACK Packet 마다 Window Size를 1씩 늘린다. 즉 한 주기가 지나면 Window Size는 2배가 된다.

º 혼잡 현상이 발생하면 Window SIze를 1로 떨어뜨린다.

 


TCP 헤더 구조

 

TCP Flag 

Flag 중 U A P R S F는 필수적으로 외어야한다.(앞글자를 따서 우아프로스펙스)

총 9Bit이며 Contol Bit(UAPRSF)가 6Bit를 차지한다. 아래 그림에는 안 나오지만 NS(1Bit)가 존재한다.

TCP와 UDP 비교


3 Way Handshake 과정

 

3 Way Handshake는 TCP/IP 프로토콜을 이용하여 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. 즉, 내가 티스토리 블로그에 자료를 업로드 할 것인데 나와 티스토리가 먼저 세션을 수립해애 한다는 뜻이다. 

 

3 Way Handshake에는 다음과 같은 과정을 거친다.

Client → Server : TCP SYN

Server → Client : TCP SYN , ACK

Client → Server: TCP ACK

해당 과정을 통해 Data를 전송할 준비가 됐다는 뜻이며, 양쪽 모두가 상대편에 대한 초기 순차일련번호를 얻을 수 있다.


3 WayHandshake Data 송/수신 과정

 

- 보내는 쪽에서 또 보낼 때는 Seq번호화 ACK 번호가 그대로다.

- 받는 쪽에서 Seq번호는 받은 ACK번호가 된다.

- 받는 쪽에서 ACK 번호는 받는 Seq번호 + Data크기이다.


4Way Handshake 


SLB

Server Load Balance를 말한다. 주로 L4 스위치에서 사용되는 기술이다. 즉 여러 대의 서버를 마치 하나의 서버처럼 동작시킴으로서 쉽게 성능을 확장하고, 서버의 장애 발생시에도 타 서버로 운영이 가능하게 함으로써 가용성을 증가시키는 방법이다.

 SLB에서 사용되는 알고리즘은 Round Robin(RR), Weight, Least-Connection이 있다.

 

※특수한 경우지만 CNAME을 통해 LB를 해줄수도 있다. 

 

SLB  작동원리

(잘 모르겠습니다.)

 

 

RR 방식은 순차적으로 서버에 LB(Load Balance)해주는 것이다.

Weight는 임의의 값을 서버에 지정하고 값에 따라 LB가 되는 것이다.

Least - Connection은 가장 연결이 적게된 서버에 LB를 해주는 것이다.

 

장점

- 서비스 응답시간의 감소

- 서버의 부하 경감

- 고가용성

 

 

- 단점

비용....


 

728x90
반응형