TCP(Tranmission Control Protocol) 알아보기
- 네트워크를 처음 시작하면 배우는 것이 OSI 7계층이다. 그리고 실제 통신을 할 때, 아래 사진과 같은 과정 즉, OSI 7계층을 통하여 우리는 인터넷을 사용하고 있다. 많은 계층 중에서 오늘 주목할 것은 Layer 4 계층의 전송 계층이다.
- Layer 4 계층의 주요 프로토콜은 TCP와 UDP다. 이 두 개의 프로토콜 중에서도 TCP에 대해 알아보려고 한다. TCP를 검색하면 주로 아래와 같은 도식형의 그림을 아주 많이 볼 수 있다.
- 주거니 받거니 하는 과정이 어려워 보일 수 있지만 우리도 이런 방식을 사용하고 있다.
- 상대방의 존재를 확실히 확인하기 위해서 이런 대화를 한다.
A : B씨! 거기 계세요?
B : 네, 저 여기 있어요. A씨도 거기 있는거죠?
A : 네, 저 여기 있어요.
- 이렇게, 서로의 존재를 확인하면서 대화를 할 때 신뢰성을 중점을 두고 있는 것처럼 TCP 방식이 이와 같다.
- 그래서 TCP 방식은 신뢰성 있는 전송을 보장하고 연결형 서비스, 연결 지향 전송 프로토콜이라고 불리운다.
- 위의 대화를 전문가처럼 표현할 수 있는데, 이를 3-Way Handshake라고 한다.
- 3번의 방향을 통하여 신뢰성을 쌓고 둘이 악수하는 뭐 그런 맥락으로 이해할 수 있다.
- 데이터의 전송 순서를 보장하기 때문에 순서제어와 오류 제어라는 장점이 있다.
- 다만, 3번의 절차, 패킷에 대한 응답으로 인하여 시간 지연(속도)나 성능 저하라는 단점을 피할 수 없다.
- TCP Header에는 여러 가지 Flags가 있다.
- 기억해두어야 할 Flags는 2가지다.
- SYN = 연결 요청 Flag
- ACK = 수신 확인 응답 Flag
- SYN은 SYnchronize sequence Numbers의 약자로, 연결 요청을 위해 보내는 무작위의 값이다.
- ACK는 ACKnowledgements의 축약자로, Client나 Server가 받은 SYN에 1을 더한 후, SYN를 잘 받았다는 응답이다.
- 이를 움짤(?) 로 확인해보자.
- 또한, 위 움짤에서의 각 상태에 대한 설명은 다음과 같다.
상태 | 설명 |
CLOSED | 닫혀있는 상태 |
LISTENING | 포트가 열려있는 상태 - 연결 요청을 들은 준비가 되어 있다. |
SYN-SENT | 연결 요청을 한 상태 |
SYN-RECEIVED | 연결 요청을 받은 상태 - 상대방의 요청을 기다린다. |
ESTABLISHED | 연결 확인 / 확립 상태 |
- 이를 바탕으로 TCP 프로토콜에서 가장 중요한 3-Way Hanshake에 대해 자세히 알아보자.
[TCP 3-Way Handshake]
패킷 트레이서로 알아보자
1. Web Server의 연결을 시도하는 PC0가 있다.
- PC0은 Server에게 SYN를 보내어 연결을 요청한다.
- Sequence number 와 ACK number는 각각 0이다.
- PC0은 SYN를 보내고 SYN + ACK를 기다리는 SYN_SENT가 된다.
2. Web Server는 PC0로부터 받은 SYN 에 대한 응답을 받았다.
- 그리고, SYN + ACK를 보내어 다시 확인한다.
- PC0 이 보낸 Sequence number 와 ACK number에서 ACK에 1을 더하여 보낸다.
- 큰 박스 안의 내용을 살펴보면, ACK number가 1이 늘어난 것을 확인 할 수 있다.
- Sequence number = 0 / ACK number = 1이다.
- 그와 동시에, SYN + ACK를 보낸 Web Server는 SYN-RECEIVED 상태로 전환하여, PC0으로부터의 ACK를 기다린다.
3. PC0은 Web Server로부터 SYN + ACK를 받았다.
- 그와 동시에, PC0은 ACK를 보낼 때, seqence number에 1을 더하여 ACK를 보낸다.
- Sequence number = 1 / ACK number = 1이다.
- Web Server은 Established 상태로 전환하여 PC0와 Web Server는 TCP 통신이 가능하다.
'IT > ㄴ Cisco' 카테고리의 다른 글
[CISCO] DHCP(Dynamic Host Configuration Protocol) 알아보기 [Packet Tracer] (0) | 2023.07.13 |
---|---|
[CISCO] DNS(Domain Name Service) 알아보기 [Packet Tracer] (0) | 2023.07.09 |
[CISCO] ARP (Address Resolution Protocol) 알아보기 [Packet Tracer] (0) | 2023.07.06 |
[CISCO] 네트워크 통신 방식 [ Unicast / Broadcast / Multicast ] (0) | 2023.07.06 |
[CISCO] BGP 추가 기능 (0) | 2023.07.02 |