개발일반/도대체

도대체 TCP/IP는 어떻게 통신을 할까요?

문괜 2023. 3. 2. 12:00
반응형

저번 TCP/IP의 설명에 이어 이번에는 TCP/IP가 정확히 어떻게 통신을 하는지에 대해 설명드리겠습니다.

 

TCP/IP 통신 정리

정확히 어떻게 작동하는지 설명드리기 위해 몇 가지 정리를 하고 시작하겠습니다. 저번의 TCP/IP에 대한 설명에서 저는 총 네 가지의 Layer가 있다고 말씀드렸습니다. 하지만 이번 글에서는 2 Layers로 설명드리겠습니다. 첫 번째 Layer는 TCP이고 두 번째는 IP입니다. 

 

TCP의 역할은 요청하는 정보 혹은 요청에 대한 정보를 잘게 세분화를 합니다. Segments라고 부릅니다. 그리고 이 Segments를 IP Layer로 보냅니다.

 

IP의 역할은 내려온 Segments를 순서대로 Packet으로 요청이 온 객체(혹은 컴퓨터)로 보냅니다. 

 

이렇게 보내지는 Packet 안에는 두가지의 정보가 있습니다.

  1. Header
    • Header에는 전반적인 통신 환경에 대한 정보가 담겨있습니다. 예를 들어 어디로 가야 하는지, 어디서 왔는지, 얼마나 보내질 수 있는지에 대한 정보가 담겨 있습니다.(Destination Address, Source Address, Window size etc.)
  2. Data
    • 데이터입니다. 뭐 요청에 관한 데이터 예를들어 웹페이지면은 웹페이지 메일이면 메일입니다.

자 그럼 본격적으로 통신 과정에 대해 설명 드리겠습니다. 

 

TCP/IP 통신에서 본격적으로 통신을 하기 위해서는 가장먼저 '야 우리 통신하자' 그리고 '응 그랴 하자'가 과정이 필요합니다.

 

즉, 우리가(Client)가 웹사이트(Server)에 통신을 하고 싶다고 말을 해줘야 합니다.

그걸 우리는 'TCP 3 Way Handshake' 혹은 '3 Way Handshake'라고 합니다.

(많은 컴퓨터 관련 용어들이 뇌를 거치기 보다는 입으로 느껴지는 그대로 만들어진 경우가 많습니다.)

 

간단하게 3가지 단계로 나뉘어 집니다.

  1. Client가 Server에게 '야! 대화하자'합니다. 이걸 전문적으로 Synchronize(SYN)이라고 합니다.
  2. 그러면 Server가 Client에게 '어? 응 알았어 대화하자'라고 말하게 됩니다. 이걸 전문적으로 Synchronize + Acknowledgement를 보낸다고 합니다. Synchronize는 Server가 Client가 연결 하자는 거고 Acknowledgment는 우리의 요청을 정상적으로 받았다는 걸 알려 주기 위한 겁니다. 
  3. 그럼 마지막 Client가 Server에게 '그래 알았어!' 합니다. 그건 바로 Acknowlegment를 다시 서버에게 보내 방금 서버가 한 말을 잘 들었다는 신호입니다.

그럼 여기서 중요한 거는 바로 Client와 Server가 서로 메시지를 보낼 때 그에 해당하는 Acknowlegment(Ack) 보내야 한다는 점입니다. TCP 통신의 경우 이 Ack가 오지 않으면 통신을 멈추는 Wait이 발동됩니다.(올 때까지 기다리거나 통신을 끊어 버립니다.)

 

그래서 이와 같이 TCP 통신은 Handshake처럼 유사합니다. 즉, 보낸 Send가 있었으면 그게 왔다는 Ack가 무조건 필요합니다. TCP에서는 구체적으로 Packet이 3개가 왔고(1,2,3) 이제 다음에 Packet이 와야 하는 상황이라면 Ack 4라고 보냅니다.  4라는 게 왔으면 1,2,3 다 왔으니 4 보내라는 뜻입니다.

 

어떤가요? 생각보다 간단하지 않나요?

 

다음에는 AI관련된 글을 써볼까 합니다. 

 

그럼 도대체 Weights와 Bias는 뭘까요?

 

* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다! 

* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!

반응형