해당 주차에서의 질문들은 네트워크의 가장 기본적인 개념인 4계층 전송 프로토콜에 대한 내용들로 구성되어 있습니다.
해당 내용들은 굳이 추가 정리할 이유가 없기 때문에 별도의 정리를 하지 않고 한번에 답변을 적는 것으로 마무리 하겠습니다.
UDP는 비신뢰성 전송 프로토콜로 OSI 7 계층 모델에서 4계층인 전송 계층의 프로토콜 중 하나입니다. 빠른 전송을 특징으로 가지고 있으며 데이터 전송의 신뢰성을 보장하지 않습니다.
UDP는 TCP와 다르게 흐름제어 혹은 혼잡제어와 같은 매커니즘을 가지고 있지 않기 때문에 빠른 전송이 가능하며, 네트워크가 혼잡한 상태에서도 전송 속도를 낮추지 않습니다.
단점으로는 빠른 전송을 위해서 별도의 매커니즘이 존재하지 않기 때문에 데이터 전송의 신뢰성을 보장하지 못합니다.
UDP 체크섬은 데이터가 손상되었는지 확인하는 매커니즘을 수행하기 위해서 UDP 데이터그램의 헤더에 같이 전송하는 것입니다.
복잡하지 않은 매커니즘을 가지고 있어서 빠르게 수행 가능하지만 확실한 오류 체킹이 불가능합니다.
전송 후 대기 프로토콜, Stop and Wait Protocol은 클라이언트가 요청을 전송했을 때 요청이 정상적으로 서버로 전송되었는지 확인하기 위해서 확인 응답을 보내어 클라이언트가 정상적으로 수신했을 때 다음 패킷을 전송하는 매커니즘을 가진 프로토콜입니다.
해당 프로토콜이 수행될 수 있도록 ARQ, Automatic Repeat Request 방식을 이용합니다.
Syn과 Ack로 이루어질 수 있으며, 실제 데이터 전송 과정에서는 헤더에 담기는 순서번호를 이용해서 수행합니다.
파이프라인 프로토콜은 데이터를 전송할 때 하나의 조각만 전송하는 것이 아니라 여러 조각들을 하나로 합친 바이트 스트림 형태로 전송하는 것을 의미합니다.
파이프라인 프로토콜을 사용하여 데이터를 빠르게 전송할 수 있도록 해줍니다.
TCP는 신뢰성 있는 전송 프로토콜로, OSI 7 계층 모델에서 전송 계층의 프로토콜 중 하나입니다.
TCP는 신뢰성 있는 전송을 보장하기 위해서, 순서번호, 흐름제어 및 혼잡제어와 같은 매커니즘 등을 가지고 있는 것이 특징입니다.
클라이언트와 서버의 연결을 위해서 3-way-handshake를 맺는 과정을 거치고, 해당 과정을 수행하여 클라이언트와 서버의 연결을 보장합니다.
3 way handshake는 TCP 전송 방식을 사용하는 클라이언트와 서버가 논리적 연결을 수행하기 위해서 사용하는 매커니즘입니다.
Syn, Ack, Syn + Ack의 조합으로 이루어지며, 클라이언트가 먼저 요청을 보내어 서버측과의 연결을 시도하는 것부터 시작합니다.
해당 매커니즘을 통해서 신뢰성 있는 전송을 보장할 수 있지만, 해당 과정으로 인해서 레이턴시가 발생합니다.
4 way handshake는 모든 전송이 완료되고 커넥션을 종료하려고 하는 매커니즘입니다.
클라이언트가 먼저 FIN 플래그를 전송하는 것부터 시작하여 모든 데이터 처리가 완료되고 서버측이 커넥션을 끊을 준비가 되었을 때 한번 더 FIN과 ACK를 주고받으며 커넥션이 종료되게 됩니다.
TCP 빠른 재전송은 패킷이 손실되거나 손상되었을 경우에 그것을 빠르게 수신측에서 확인하여 송신측에게 요구하는 매커니즘을 의미합니다.
TCP는 순서가 정해져 있는 패킷들을 전송하기 때문에 순서가 보장되어야 하기 때문에 순서번호를 사용합니다.
중복된 순서번호 3번을 받았을 때 수신측은 패킷 손실을 감지하여 송신측에게 재전송을 요구할 수 있습니다. 해당 매커니즘을 3-duplicate-ack라고 합니다.
Congestion Control은 여러 클라이언트가 네트워크를 공유하면서 발생하는 상황을 고려한 송수신 패킷 흐름 제어 시스템입니다.
혼잡 제어는 cwnd(Congestion window size)를 통해서 패킷의 전송량을 조절하고 cwnd는 패킷 손실 혹은 패킷 손상으로 인해서 timeout 혹은 3-duplicate-ack를 받았을 때 조절하는 작업을 수행합니다.
slow-start, congestion-avoidance, fast-recovery로 이루어진 3 가지 구성요소를 가지고 동작합니다.
Flow Control은 클라이언트와 서버만을 고려한 패킷 흐름 제어 시스템으로, 수신측이 받을 수 있는 윈도우 사이즈를 고려하여 송신측에서 전송량을 조절하는 매커니즘을 통해 수행됩니다.
수신측에서 받을 수 있는 윈도우 사이즈는 rwnd를 이용하여 계산을 합니다. rwnd는 응답의 헤더에 담겨서 보내고 송신측은 이것을 받아서 보낼 수 있는 양을 확인할 수 있습니다.