<aside> 💡 TCP / IP에 대해 정리해보자

</aside>

(참고: https://ko.javascript.info/garbage-collection)

TCP / IP???

인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 사용되는 통신규약의 모음이다. 이 인터넷 프로토콜 스위트 중 TCP와 IP가 가장 많이 사용되기 때문에, TCP/IP Suite라고 불리기도 한다.

TCP/IP 프로토콜의 경우, 이름에서 알 수 있듯이, 패킷 통신방식의 인터넷 프로토콜인 IP(Internet Protocol address)와 전송조절 프로토콜인 TCP(Transmisson Control Protocol)로 이루어져 있다.

패킷통신방식의 IP는 패킷전달여부를 보증하지 못하고, 패킷을 보내고 받는 순서 또한 보증하지 못한다. TCP는 IP계층 위에서 작동하는 프로토콜로 데이터의 전달을 보증 할 뿐더러, 받는 순서또한 보증한다. HTTP, FTP, SMTP등 TCP를 기반으로 한 프로토콜들이 IP 위에서 동작하기 때문에, TCP / IP라고 묶어서 부른다. (출처: 위키백과 https://ko.wikipedia.org/wiki/인터넷_프로토콜_스위트)

즉, TCP / IP라는 것은 Network Layer(3 layer)에서 IP주소체계를 따르고, IP routing을 통해 목적지에 도달하며, Transport Layer(4 layer)에서는 TCP를 이용하여 엔드포인트(EndPoint) 간에 신뢰성 있는 연결을 유지하도록 하는 것을 의미한다.

How It Works?

그렇다면, TCP는 어떻게 신뢰성있는 연결을 유지하고, 이를 보장한다는 것 일까???

바로, 3-way handshake를 이용한다.

3 way handshake

  1. 송신자가 수신자에게 "SYN"을 날려 통신이 가능한지 확인한다. 이때 PORT가 열려 있어야 한다.
  2. 수신자가 송신자로부터 "SYN"을 받고, 송신자에게 "SYN/ACK"을 날려, 통신할 준비가 됐음을 알린다.