3,4way handshake
Transport Layer
OSI 7 레이어중 Transport(전송) 계층은 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해주며 , 사용자들이 데이터를 주고 받을 수 있도록 해주는 계층이다.
전송 프로토콜 중 잘 알려진 것이 바로 TCP와 UDP가 있다.

TCP
- 인터넷상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- 애플리케이션에게 신뢰적이며, 연결형 서비스를 제공
- 3way h 과정을 통해 연결을 설정하고, 4way h 과정을 통해 해제한다
- UDP보다 속도가 느리다(데이터의 흐름제어와 혼잡제어 하기 때문에)
UDP
- 데이터를 단위로 처리하는 프로토콜(비연결형)
- 할당되는 경로가 없이 각각의 패킷이 다른 경로로 전송되고 독립적인 관계를 지님
- 연결 설정과 해제하는 과정이 존재하지 않음(3/4 way handshake X)
- 흐름제어 혼잡제어를 하지 않아 속도가 빠르며 네트워크 부하가 적다(=>데이터 전송 신뢰성 낮음)

3-way handshake
3-way handshake는 TCP 연결 설정 과정을 의미한다.
작동방식

Client는 서버와 연결하기 위해 3-way handshake를 통해 연결 요청을 하게 된다
Client가 연결을 먼저 시도한 요청자, 연결 요청을 받은 수신자를 Server라고 생각하자
플래그(특정 동작을 수행할지 말지 결정하는 변수)정보
SYN : 연결 설정. 시퀸스 넘버를 랜덤으로 설정하여 세션을 연결하는데 사용
ACK : 응답 확인. 패킷을 받았다는 것을 의미
No.1 [Client -> SYN -> Server]
클라이언트는 서버와 연결을 위해 SYN 연결 요청
No.2 [Server -> SYN + ACK -> Client ]
서버가 SYN을 받고, 받았다는 신호인 ACK, SYN패킷을 Server => Client로 전송
No.3 [Client -> ACK -> Server]
클라이언트는 서버의 응답 ACK와 SYN 패킷을 받고, ACK을 서버로 전송 후 연결 성립이 된다
이 과정에서 클라이언트와 서버 사이에 3번의 핸드쉐이킹을 거쳐 3번의 Segment가 교환되는 것을 확인할 수 있는데 이것을 3-way handshake 기본 매커니즘이다.
4-way handshake
4-way handshake는 TCP 연결 해제 과정을 의미한다.
작동방식

플래그 정보
FIN : 연결 해제. 세션 연결을 종료시킬 때 사용, 더 이상 전송할 데이터가 없음을 의미
No.1 [Client -> FIN -> Server]
Client는 연결을 종료하겠다는 FIN 플래그를 전송
No.2 [Server-> ACK -> Client]
Server가 FIN을 받고, 받았다는 신호인 ACK을 Client로 전송
No.3 [Server -> FIN -> Client]
Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송
No.4 [Client -> ACK-> Server]
Client는 해지 준비가 되었다는 ACK을 Server로 보내준다
연결을 해제하려는 한쪽에서 FIN (Finish) 패킷을 보내면, 상대방은 ACK 패킷을 보내고, 자신도 FIN 패킷을 보내고, 상대방은 마지막으로 ACK 패킷을 보내서 연결을 해제합니다. 이렇게 4번의 통신으로 연결이 해제되기 때문에 4-way handshake라고 부른다.
Q&A
Q1. TCP의 연결 설정 과정(3단계) 연결 종료 과정(4단계) 차이나는 이유?
Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아 있을 수 있기 때문에
일단 FIN에 대한 ACK만 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메세지를 보내기 때문
패킷 교환 방식
패킷 교환은 데이터의 단위인 패킷을 이용해 목적지의 컴퓨터로 데이터를 전달하는 방법을 의미한다. 이 방식은 데이터를 작은 조각으로 나누어서 전송하고, 각 조각은 독립적으로 전송된다.

패킷 교환 2가지 방법
회선 교환 방식

특징
- 회선 교환 방식으로, 전용 통신 회선을 설정한 후에 데이터를 전송
- 송신자의 모든 데이터는 동일한 경로로 전송
- 전송 중인 통신에 다른 통신이 끼어들지 않아 통신 품질이 안정적
- 데이터를 전송하기 전에 먼저 회선을 예약해야 하므로 통신량이 많아질수록 회선 예약에 대한 비용 증가
- 전송 중에는 다른 사용자들이 이용하지 못하므로 효율성이 떨어짐
- 통신중 중간 경로에 문제가 발생할 경우 전체 연결이 끊어짐(새로운 경로를 통한 새로운 회선할당이 필요하기 때문)
장점
- 대용량 + 고속 데이터 처리에 우수
- 연속적인 데이터 처리에 우수
단점
- 통신 과정에서 회선 문제시 회선 할당부터 다시 시작
- 회선 이용 효율이 떯어짐
패킷 교환 방식
패킷 교환 방식은 데이터를 작은 크기인 패킷으로 분할하여, 각각의 패킷을 독립적으로 전송하는 방식
패킷이 전송될 때마다 경로에 따라 다른 노드를 거쳐 전송이 된다
회선교환과 다르게 [전용선]의 개념이 없으며 패킷을 네트워크망으로 뿌려주게 된다
이때 패킷은 해당 데이터가 몇번째 데이터인지 정보와 최종 목적지의 정보가 들어있다 해당 정보를 라우터가 보고 최적경로로 향해 전달하게 된다.
최적경로는 거리만을 계산하는게 아닌, 망의 혼잡도, 연결상태, 기타 설정등에 따라 계산한다.

패킷이 왼쪽에서 오른쪽으로 전송될 때, 패킷 경로는 각각 다르게 전송될 수 있으며
이러한 특성으로 전송되는 패킷은 순서와 다르게 수신될 수 있다.
특징
- 패킷 교환 방식으로, 데이터를 작은 패킷으로 분할하여 전송하고, 각 패킷은 독립적으로 전송
- 패킷은 각각 목적지까지 최적의 경로를 찾아 전송
- 전송 중 다른 패킷들이 이용할 수 있으므로 회선 교환 방식에 비해 효율성이 높다
- 패킷이 전송 중 다른 패킷과 충돌하여 손상되거나 분실될 수 있으므로, 오류 검사 및 복구 메커니즘이 필요
장점
- 회선 이용률이 높음
- 에러 및 장애에 강함(라우터 고장시 다른 경로를 즉각적으로 이용, 에러애 대한 특정 패킷만 재전송 가능)
- 인터넷 뿐만 아닌 다양한 통신망에서 사용
단점
- 경로 탐색과정에서 지연 발생
- 전송량 증가에 다라 지연율 상승
최근에는 대용량 데이터 전송이 증가하면서, 패킷 교환 방식이 일반적인 방식이 되어가고 있다.
TCP/IP 프로토콜은 패킷 교환 방식을 기반으로 하여, 네트워크 자원을 효율적으로 활용하며
데이터 전송 과정에서 패킷의 분실, 오류, 중복을 검사하고 처리하여 데이터 전송 신뢰성을 보장한다
이러한 이유로 TCP/IP 프로토콜은 대용량 데이터 전송과 같은 신뢰성이 중요한 통신에서 많이 사용된다
이 방식을 사용함으로써 여러 사용자들이 동시에 인터넷 사용이 가능하며, 데이터 전송의 효율성을 높일 수 있다
Q&A
Q1. UDP 프로토콜은 TCP보다 일반적인 데이터 전송 방식에 적합하지 않은가?
UDP 프로토콜은 패킷 교환 방식을 기반으로 하는 프로토콜 중 하나이지만, 데이터 전송 과정에서 신뢰성 검사를 하지 않기 때문에 데이터 전송의 신뢰성은 떨어진다. 따라서 UDP 프로토콜은 실시간 통신과 같이 신뢰성보다는 전송 속도와 대역폭을 중시하는 통신에 많이 사용된다. 예로, 비디오 스트리밍 등의 실시간 통신에서 많이 사용된다.
'주니어 개발자의 Desire! > NetWork' 카테고리의 다른 글
| TCP 대기(지연) 시간 및 패킷 손실 (0) | 2023.04.14 |
|---|---|
| TCP/IP 4 Layer 응용 계층 (0) | 2023.03.25 |
| OSI 7 layer에 알아보자 (0) | 2023.03.19 |