목차
1. 슬라이딩 윈도우란?
2. Go Back N란?
3. Selective Repeat란?
4. TCP란?
5. 3 way handshake 개념 및 동작과정
6. 4 way handshake 개념 및 동작과정
7. 흐름 제어란?
8. 혼잡 제어란?
9. 빠른 재전송이란?
전송 측에서는 N개의 프레임을 연속적으로 보낼 수 있지만, 수신 측에서는 오직 순서대로만 프레임을 수신받을 수 있다. 만약 중간에 하나라도 프레임이 손실되면, 그 이후의 프레임들은 모두 무시되고, 전송 측에서는 손실된 프레임부터 다시 전송하게 된다.
그림출처
예를들어, 5번 프레임이 응답이 NAK일때 5번부터 9번 프레임까지 전부 재전송한다.
- 장점
- 구현 간단
- 오류지점부터 다시 전송하기 때문에 효율적
- 단점
- 불필요한 재전송 발생 (손실된 프레임부터 다시 전송하므로)
오류가 발생한 프레임만 선택적으로 재전송하는 방식이다.
그림출처
예를들어, 5번 프레임 응답이 NACK이때 6번~9번 프레임은 잠시 보관하고, 5번 프레임이 재전송되어 들어오면 다시 순서대로 프레임 오류검사를 한다.
- 장점
- 잘못된 패킷만 재전송하므로, 네트워크 리소스를 절약 할 수 있는 효율성 이 좋음.
- 오류가 발생한 패킷만을 대상으로 처리하므로 빠른 응답시간을 가짐.
- 단점
- 패킷의 순서,상태를 유지하고 각 패킷에 대한 확인 응답을 처리해야하므로 복잡한 로직 필요함.
- 메모리 요구량이 많음.
TCP/IP 4 계층을 통과하며 데이터를 보낼 준비가 되면 수신 측이 받을 준비가 되었는지 확인하는 (네트워크TCP 연결 설정) 과정이다.
즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
동작과정
1. 클라이언트는 서버에게 접속을 요청하는 SYN 플래그가 설정된 패킷을 보낸다.
2. 이때 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 발송하고 응답을 기다린다.
3. 클라이언트는 서버로부터 ACK와 SYN 플래그가 설정된 패킷을 받고 ACK 플래그가 설정된 패킷을 발송한다.
4. 연결이 이루어지고 데이터가 오가게 된다.
3way handshake
Client > Server : SYN
Server > Client : SYN ACK
Client > Server : ACK
데이터 송 수신이 완료된 후 TCP 연결을 해제하는 과정이다.
동작 과정
1. 클라이언트가 서버에게 연결을 종료하겠다는 FIN 플래그가 설정된 패킷을 보낸다.
2. 서버는 확인했다고 알려주기 위해 ACK 플래그가 설정된 패킷을 보낸 후 자신의 통신이 끝날 때까지 기다린다.(TIME_WAIT). 이때, 자신이 전송할 패킷이 남아있다면 이어서 전송한다.
3. 서버의 통신이 끝났으면 연결 종료 요청에 합의한다는 의미로 클라이언트에게 FIN 플래그가 설정된 패킷을 보낸다.
4. 클라이언트는 확인했다는 의미로 ACK 플래그가 설정된 패킷을 보낸다.
5. 연결이 종료된다.
4way handshake
Client > Server : FIN
Server > Client : ACK
Server > Client : FIN
Client > Server : ACK
송신측과 수신측 사이의 데이터 처리 속도 차이(흐름)을 해결하기 위해 패킷 수를 제어하는 기법이다.
흐름제어 방식
송신측의 데이터 전달과 네트워크 상의 데이터 처리 속도 차이를 해결하기 위해 데이터의 전송 속도를 제어하는 기법이다.
송신 측에서 보내는 데이터의 양이 라우터가 처리할 수 있는 양을 초과하면 초과된 데이터는 라우터가 처리하지 못하게 된다. 송신 측은 초과된 데이터를 손실 데이터로 간주하고 계속 재전송을 하여 네트워크를 혼잡하게 한다. 이런 상황을 예방하기 위해 송신 측의 전송 속도를 적절히 조절하는 혼잡 제어 기법이 사용된다.
해결방법
혼잡 제어 정책
패킷을 받는 수신자 입장에서는 세그먼트로 분할된 내용들이 순서대로 도착하지 않는 경우가 생길 수 있다. 이런 상황이 발생했을 때 수신 측에서는 순서대로 잘 도착한 마지막 패킷의 다음 순번을 ACK 패킷에 실어서 보낸다. 그리고 이런 중복 ACK를 3개 받으면 재전송이 이루어진다. 송신 측은 자신이 설정한 타임 아웃 시간이 지나지 않았어도 바로 해당 패킷을 재전송할 수 있기 때문에 보다 빠른 재전송률을 유지할 수 있다.
참고
https://gsbang.tistory.com/entry/Network-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%94%A9-%EC%9C%88%EB%8F%84%EC%9A%B0-%EA%B8%B0%EB%B2%95
https://lordofkangs.tistory.com/58
https://github.com/alstjgg/cs-study/blob/main/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/%5BTCP%5D%203%20way%20handshake%EC%99%80%204%20way%20handshake.md
https://yeoneeds.tistory.com/25