[Day55] Node.js - TCP / IP(상)

Validator·2023년 8월 31일
0

TCP , TCP/IP

인프라를 구축하거나 문제해결을 함에 있어서 TCP/IP를 알고 모르냐는 매우 차이가 크다고 할 수 있다. 또한, 기술면접에서 단골 주제로 나오기도 하는 내용이므로 반드시 숙지하고 있어야 할 내용이다. TCP/IP는 OSI 7 Layer 중에서 LAYER 3, 4를 다루는 프로토콜이라고 할 수 있다.

TCP/IP

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

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.(정확성, 신뢰성을 보장해준다) HTTP, FTP, SMTP등 TCP를 기반으로 한 많은 수의 어플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP라고도 부르는 것이다.

TCP/IP는 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말이다. 또한 TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것을 의미한다. 즉 TCP/IP를 말한다는 것은 송신자가 수신자에게 IP 주소를 사용하여 데이터를 전달하고 그 데이터가 제대로 갔는지, 너무 빠르지는 않았는지, 제대로 받았다고 연락은 오는지에 대한 이야기를 하는 것이다.

우리가 인터넷에서 무언가를 다운로드 할 때, 중간에 끊기거나 빠지는 부분 없이 완벽하게 받을 수 있는 이유도 TCP의 이러한 특성, 다시 말해 데이터가 빠지지 않고 제대로 전달됐는가를 챙기는 꼼꼼한 특성 덕분이다. 그렇기 때문에 위에서 언급된 HTTP, HTTPS, FTP, SMTP 등과 같이 데이터를 안정적으로 모두 보내는 것을 중요시하는 프로토콜들의 기반이 된 것이다!
TCP를 기반으로 하는 프로토콜들은 TCP의 3-way handshake를 거친 후 각자 프로토콜에 기반한 교환 과정을 실시한다.

위 이미지는 TCP 기반의 프로토콜인 HTTPS의 SSL handshake를 도식화 한 것이다. TCP는 L4이고 HTTPS는 L7이다. 파란색은 3-way handshake이고 노란색은 HTTPS의 SSL handshake이다.
HTTPS는 TCP 기반의 프로토콜이기 때문에 SSL handshake를 하기에 앞서 3-way handshake를 하는 것임을 알 수 있다.


TCP의 개요

전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환 할 수 있게한다.

TCP는 transport(L4) 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나이다. TCP는 웹 브라우저들이 WWW 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 이용된다!

TCP는 OSI 7 Layer에서 4 계층에 해당한다. IP가 패킷들의 관계를 이해하지 못하고 그저 목적지를 찾아가는 것에 중점을 둔다면 TCP는 통신하고자 하는 양쪽 단말(Endpoint)이 통신할 준비가 됐는지, 데이터가 제대로 전송됐는지, 데이터가 가는 도중 변질되지는 않았는지, 수신자가 얼마나 받았고 빠진 부분은 없는지 등을 점검한다.

이런 정보는 TCP Header에 담겨있으며 SYN, ACK, FIN, RST, Source Port, Destination Port등과 같은 신뢰성 보장과 흐름 제어, 혼잡 제어에 관여할 수 있는 요소들도 포함돼있다. 또한 IP Header와 TCP Header를 제외한 TCP가 실을 수 있는 데이터 크기를 Segment라고 부른다.

TCP는 IP 정보뿐만 아니라 port를 이용하여 연결한다. 한쪽 Endpoint에 도착한 데이터가 어느 port로 들어가야 하는지 알아야 연결을 시도할 수 있기 때문이다. 위의 TCP Header를보면 Source Port와 Destination Port를 확인할 수 있다. 예시로, 양쪽 Endpoint가 HTTP로 이루어진 문서를 주고받고자 할 경우 데이터를 통신하려면 port를 80으로 연결해야 한다. (만약 3306, 21등의 port를 쓰면 안 될 것이다)

0개의 댓글